---
title: "POST /funds-confirmations"
canonical: "https://openfinanceguide.com/en/stet/1.6.3/endpoints/cbpii/funds-confirmations-post"
edition: "STET PSD2 API 1.6.3.1"
source: "https://openfinanceguide.com/docs/stet/1.6.3/pdf/api-dsp2-stet-v1.6.3.2-openapi.yaml"
pdf: "https://openfinanceguide.com/docs/stet/1.6.3/pdf/api-dsp2-stet-v1.6.3.1-part-2-functional-model.pdf"
section: "4.11"
pdf_pages: "54"
language: "en"
normative: "The normative text is the English PDF and OpenAPI file published by STET. This Markdown reproduces it for reading; where they differ, the PDF prevails."
license: "CC BY 3.0 FR (https://creativecommons.org/licenses/by/3.0/fr/), STET. Converted to Markdown by Open Finance Guide."
---

# POST /funds-confirmations

Payment coverage check request (CBPII)

Operation: `fundsConfirmationsPost` · Tags: CBPII · Scopes: `cbpii`, `cbpii` · Source: [§ 4.11 Payment coverage check request (CBPII), PDF p. 54](https://openfinanceguide.com/docs/stet/1.6.3/pdf/api-dsp2-stet-v1.6.3.1-part-2-functional-model.pdf#page=54)

### Description
The CBPII can ask an ASPSP to check if a given amount can be covered by the liquidity that is available on a PSU cash account or payment card.
### Prerequisites
- The TPP was registered by the Registration Authority for the CBPII role
- The TPP and the PSU have a contract that was registered by the ASPSP
  - At this step, the ASPSP has delivered an "Authorization Code", a "Resource Owner Password" or a "Client Credential" OAUTH2 access token to the TPP (cf. paragraph  3.4.2).
  - Each ASPSP has to implement either the "Authorization Code"/"Resource Owner Password" or the "Client Credential" OAUTH2 access token model.
  - Doing this, it will edit the [security] section on this path in order to specify which model it has chosen
- The TPP and the ASPSP have successfully processed a mutual check and authentication
- The TPP has presented its OAUTH2 "Authorization Code", "Resource Owner Password" or "Client Credential" access token which allows the ASPSP to identify the relevant PSU.
### Business flow
The CBPII requests the ASPSP for a payment coverage check against either a bank account or a card primary identifier.
This request cannot handle exchange rate and must be specified with the relevant account currency.
The ASPSP answers with a structure embedding the original request and the result as a Boolean.

## Parameters

- `Authorization`, in header, `string`, required — Access token to be passed as a header
- `paymentCoverage`, in body, [`PaymentCoverageRequestResource`](#paymentcoveragerequestresource), required — parameters of a payment coverage request
- `PSU-IP-Address`, in header, `string` — IP address used by the PSU's terminal when connecting to the TPP
- `PSU-IP-Port`, in header, `string` — IP port used by the PSU's terminal when connecting to the TPP
- `PSU-HTTP-Method`, in header, `string` — Http method for the most relevant PSU's terminal request to the TTP
- `PSU-Date`, in header, `string` — Timestamp of the most relevant PSU's terminal request to the TTP
- `PSU-GEO-Location`, in header, `string` — Geographical location of the PSU as provided by the PSU mobile terminal if any to the TPP
- `PSU-User-Agent`, in header, `string` — "User-Agent" header field sent by the PSU terminal when connecting to the TPP
- `PSU-Referer`, in header, `string` — "Referer" header field sent by the PSU terminal when connecting to the TPP.
  Notice that an initial typo in RFC 1945 specifies that "referer" (incorrect spelling) is to be used. The correct spelling "referrer" can be used but might not be understood.
- `PSU-Accept`, in header, `string` — "Accept" header field sent by the PSU terminal when connecting to the TPP
- `PSU-Accept-Charset`, in header, `string` — "Accept-Charset" header field sent by the PSU terminal when connecting to the TPP
- `PSU-Accept-Encoding`, in header, `string` — "Accept-Encoding" header field sent by the PSU terminal when connecting to the TPP
- `PSU-Accept-Language`, in header, `string` — "Accept-Language" header field sent by the PSU terminal when connecting to the TPP
- `PSU-Device-ID`, in header, `string` — UUID (Universally Unique Identifier) for a device, which is used by the PSU, if available.
  UUID identifies either a device or a device dependant application installation.
  In case of installation identification this ID need to be unaltered until removal from device.
- `Digest`, in header, `string` — Digest of the body
- `Signature`, in header, `string` — [http-signature of the request](https://datatracker.ietf.org/doc/draft-cavage-http-signatures/)
  The keyId must specify the way to get the relevant qualified certificate. It is requested that this identifier is an URL aiming to provide the relevant Qualified Certificate.
- `X-Request-ID`, in header, `string`, required — Correlation header to be set in a request and retrieved in the relevant response
  Constraints: maxLength 70.
- `X-JWS-Signature`, in header, `string` — [JSON WEB signature of the request](https://www.openbankingeurope.eu/media/2095/obe-json-web-signature-profile-for-open-banking.pdf)
- `Idempotency-Key`, in header, `string`, required — Key provided by the API client to ensure idempotency in case of retry of a given request

## Request body

[`PaymentCoverageRequestResource`](#paymentcoveragerequestresource)

## Responses

### 200

payment coverage request

Body: [`HalPaymentCoverageReport`](#halpaymentcoveragereport)

Headers:

- `X-Request-ID`, `string` — Correlation header to be set in a request and retrieved in the relevant response
- `Digest`, `string` — Digest of the body
- `Signature`, `string` — [http-signature of the response ](https://datatracker.ietf.org/doc/draft-cavage-http-signatures/) The keyId must specify the way to get the relevant qualified certificate. It is requested that this identifier is an URL aiming to provide the relevant Qualified Certificate.
- `Warning`, `string` — Warning header. This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.

### 400

Invalid status value

Body: [`ErrorModel`](#errormodel)

Headers:

- `X-Request-ID`, `string` — Correlation header to be set in a request and retrieved in the relevant response
- `Warning`, `string` — Warning header. This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.

### 401

Unauthorized, authentication failure.

Body: [`ErrorModel`](#errormodel)

Headers:

- `X-Request-ID`, `string` — Correlation header to be set in a request and retrieved in the relevant response
- `Warning`, `string` — Warning header. This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.

### 403

Forbidden, authentication successful but access to resource is not allowed.

Body: [`ErrorModel`](#errormodel)

Headers:

- `X-Request-ID`, `string` — Correlation header to be set in a request and retrieved in the relevant response
- `Warning`, `string` — Warning header. This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.

### 405

Method Not Allowed.

Body: [`ErrorModel`](#errormodel)

Headers:

- `X-Request-ID`, `string` — Correlation header to be set in a request and retrieved in the relevant response
- `Warning`, `string` — Warning header. This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.

### 406

Not Acceptable.

Body: [`ErrorModel`](#errormodel)

Headers:

- `X-Request-ID`, `string` — Correlation header to be set in a request and retrieved in the relevant response
- `Warning`, `string` — Warning header. This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.

### 408

Request Timeout.

Body: [`ErrorModel`](#errormodel)

Headers:

- `X-Request-ID`, `string` — Correlation header to be set in a request and retrieved in the relevant response
- `Warning`, `string` — Warning header. This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.

### 429

Too many requests.

Body: [`ErrorModel`](#errormodel)

Headers:

- `X-Request-ID`, `string` — Correlation header to be set in a request and retrieved in the relevant response
- `Warning`, `string` — Warning header. This header can be used by the server to inform the client of a deprecated entry-point through the value "299" value and a descriptive message.

### 500

Internal server error.

Body: [`ErrorModel`](#errormodel)

Headers:

- `X-Request-ID`, `string` — Correlation header to be set in a request and retrieved in the relevant response

### 503

Service unavailable.

Body: [`ErrorModel`](#errormodel)

Headers:

- `X-Request-ID`, `string` — Correlation header to be set in a request and retrieved in the relevant response

## Example

Built from the specification: every documented header and field.

```bash
curl -X POST 'https://api.aspsp.example/v1/funds-confirmations' \
  -H 'Authorization: Bearer {access_token}' \
  -H 'PSU-IP-Address: 192.0.2.1' \
  -H 'PSU-IP-Port: 443' \
  -H 'PSU-HTTP-Method: GET' \
  -H 'PSU-Date: Tue, 03 Oct 2022 10:15:30 GMT' \
  -H 'PSU-GEO-Location: {PSU-GEO-Location}' \
  -H 'PSU-User-Agent: {PSU-User-Agent}' \
  -H 'PSU-Referer: {PSU-Referer}' \
  -H 'PSU-Accept: {PSU-Accept}' \
  -H 'PSU-Accept-Charset: {PSU-Accept-Charset}' \
  -H 'PSU-Accept-Encoding: {PSU-Accept-Encoding}' \
  -H 'PSU-Accept-Language: {PSU-Accept-Language}' \
  -H 'PSU-Device-ID: {PSU-Device-ID}' \
  -H 'Digest: SHA-256=X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=' \
  -H 'Signature: keyId="...",algorithm="rsa-sha256",headers="(request-target) date digest",signature="..."' \
  -H 'X-Request-ID: a1b2c3d4-e5f6-4a3b-8c2d-1e2f3a4b5c6d' \
  -H 'X-JWS-Signature: {X-JWS-Signature}' \
  -H 'Idempotency-Key: {Idempotency-Key}' \
  -H 'Content-Type: application/json' \
  -d '{
  "paymentCoverageRequestId": "MyCoverage123456",
  "instructedAmount": {
    "amount": 12345,
    "currency": "EUR"
  },
  "accountId": {
    "iban": "YY13RDHN98392489481620896668799742"
  }
}'
```

Response 200:

```json
{
  "request": {
    "paymentCoverageRequestId": "MyCoverage123456",
    "instructedAmount": {
      "amount": 12345,
      "currency": "EUR"
    },
    "accountId": {
      "iban": "YY13RDHN98392489481620896668799742"
    }
  },
  "result": true,
  "_links": {
    "self": {
      "href": "v1/funds-confirmations"
    }
  }
}
```

## Schemas

Every schema this endpoint uses, each once; fields name the schema they hold.

### AccountIdentification

Type: `object` · Kind: ISO20022 · Source: [§ 4.1.1, PDF p. 2](https://openfinanceguide.com/docs/stet/1.6.3/pdf/api-dsp2-stet-v1.6.3.1-part-2-functional-model.pdf#page=2)

Unique and unambiguous identification for the account between the account owner and the account servicer.
Card accounts must provide the identification of the card through the "other" substructure by giving, for instance, the masked PAN (MPAN).
The currency used for the account, when needed, can be specified through the [currency] field.

Fields:

- `workspace`, `string` — Workspace to which the account is linked.
  This workspace might be specified by the AISP when forwarding the consent on accounts.
  If not provided, the default workspace is computed from the authentication that was used for getting the OAuth2 Access Token.
  Constraints: maxLength 32.
- `iban`, `string` — ISO20022: International Bank Account Number (IBAN) - identification used internationally by financial institutions to uniquely identify the account of a customer.

  Further specifications of the format and content of the IBAN can be found in the standard ISO 13616 "Banking and related financial services - International Bank Account Number (IBAN)" version 1997-10-01, or later revisions.
  Constraints: pattern `^[A-Z]{2,2}[0-9]{2,2}[a-zA-Z0-9]{1,30}$`.
- `other`, [`GenericIdentification`](#genericidentification)
- `currency`, [`CurrencyCode`](#currencycode)

### AmountType

Type: `object` · Kind: ISO20022 · Source: [§ 4.1.2, PDF p. 2](https://openfinanceguide.com/docs/stet/1.6.3/pdf/api-dsp2-stet-v1.6.3.1-part-2-functional-model.pdf#page=2)

Structure aiming to embed the amount and the currency to be used.

Fields:

- `amount`, `number (float)`, required — ISO20022: Amount of money to be moved between the debtor and creditor, before deduction of charges, expressed in the currency as ordered by the initiating party.
  Constraints: pattern `^\-{0,1}[0-9]{1,13}(\.[0-9]{0,5}){0,1}$`.
- `currency`, [`CurrencyCode`](#currencycode), required

### CurrencyCode

Type: `string` · Kind: ISO20022 · Constraints: pattern `^[A-Z]{3,3}$`

Specifies the currency of the amount or of the account.
A code allocated to a currency by a Maintenance Agency under an international identification scheme, as described in the latest edition of the international standard ISO 4217 "Codes for the representation of currencies and funds".

### ErrorDetail

Type: `object` · Kind: Technical

detailed error description

Fields:

- `location`, `string` — Location of the erroneous parameter when not in request body
  Values:
  - `header`
  - `query`
- `name`, `string` — Name of the erroneous parameter when not in request body
- `path`, `string` — JsonPath of the erroneous request body property
- `erroneousValue`, `string` — Erroneous parameter value
- `message`, `string` — Relevant message for the erroneous parameter
- `expectedPattern`, `string` — Expected pattern, if any, that the erroneous parameter does not match with
- `expectedValueRange`, `object` — Expected value range, if any, that the erroneous parameter does not match with
  - `minValue`, `integer`
  - `maxValue`, `integer`
- `expectedValueCount`, `object` — Expected value count, in the case of an array item, that the erroneous parameter does not match with
  - `minValue`, `integer`
  - `maxValue`, `integer`
- `expectedEnumeration`, array of `string` — Expected enumeration, if any, that the erroneous parameter do not match with

### ErrorModel

Type: `object` · Kind: Technical

Generic error report structure

Fields:

- `timestamp`, `string (date-time)` — current timestamp
- `status`, `integer (int32)`, required — HTTP error code
- `error`, `string` — HTTP error text
  Constraints: maxLength 140.
- `message`, `string`, required — HTTP textual reason phrase
  Constraints: maxLength 140.
- `path`, `string` — Relevant path that was used
  Constraints: maxLength 140.
- `details`, array of [`ErrorDetail`](#errordetail) — list of detailed errors that were encountered

### GenericIdentification

Type: `object` · Kind: ISO20022 · Source: [§ 4.1.6, PDF p. 14](https://openfinanceguide.com/docs/stet/1.6.3/pdf/api-dsp2-stet-v1.6.3.1-part-2-functional-model.pdf#page=14)

ISO20022: Unique identification of an account, a person or an organisation, as assigned by an issuer.
API: The ASPSP will document which account reference type it will support.

Fields:

- `identification`, `string`, required — API: Identifier
  Constraints: maxLength 70.
- `schemeName`, `string`, required — Name of the identification scheme.
  Possible values for the scheme name, partially based on ISO20022 external code list, are the following:
  | Code | Name | Description |
  | ---- | ---- | ----------- |
  | BANK | BankPartyIdentification | Unique and unambiguous assignment made by a specific bank or similar financial institution to identify a relationship as defined between the bank and its client. |
  | BBAN | BBANIdentifier | Basic Bank Account Number (BBAN) - identifier used nationally by financial institutions, ie, in individual countries, generally as part of a National Account Numbering Scheme(s), to uniquely identify the account of a customer. |
  | COID | CountryIdentificationCode) : Country authority given organisation identification (e.g., corporate registration number) |
  | SREN | SIREN | The SIREN number is a 9 digit code assigned by INSEE, the French National Institute for Statistics and Economic Studies, to identify an organisation in France. |
  | SRET | SIRET | The SIRET number is a 14 digit code assigned by INSEE, the French National Institute for Statistics and Economic Studies, to identify an organisation unit in France. It consists of the SIREN number, followed by a five digit classification number, to identify the local geographical unit of that entity. |
  | NIDN | NationalIdentityNumber | Number assigned by an authority to identify the national identity number of a person. |
  Other values are also permitted, for instance:
  | Code | Name | Description |
  | ---- | ---- | ----------- |
  | OAUT | OAUTH2 | OAUTH2 access token that is owned by the PISP being also an AISP and that can be used in order to identify the PSU |
  | CPAN | CardPan | Card PAN |
  | MPAN | MaskedPan | Card PAN where some digits were replaced for security reason |
  | TPAN | TokenizedPan | Token which was provided by a Token Service Provider (TSP) in order to obfuscate a real card PAN. The TSP must be identified in the issuer field |
  | TBAN | TokenizedIBAN | Token which was provided by a Token Service Provider (TSP) in order to obfuscate an IBAN. The TSP must be identified in the issuer field |
  Each implementation of the STET PSD2 API must specify in its own documentation which schemes can actually been used
  Constraints: maxLength 70.
- `issuer`, `string` — ISO20022: Entity that assigns the identification. this could a country code or any organisation name or identifier that can be recognized by both parties
  Constraints: maxLength 35.

### GenericLink

Type: `object` · Kind: Hal · Source: [§ 4.1.7, PDF p. 15](https://openfinanceguide.com/docs/stet/1.6.3/pdf/api-dsp2-stet-v1.6.3.1-part-2-functional-model.pdf#page=15)

hypertext reference

Fields:

- `href`, `string`, required — URI to be used. HREF stands for Hypertext REFerence.
  Constraints: maxLength 2000.
- `templated`, `boolean` — This field must be set with "true"  when [href] is an URI template, i.e. with parameters that will be set by the client afterwards. Parameter fields must be included by the API server according to RFC6570.
  Otherwise, this property must be absent or set to false
  default value: false

### HalPaymentCoverageReport

Type: `object` · Kind: Hal

HYPERMEDIA structure used for returning the payment coverage report to the CBPII

Fields:

- `request`, [`PaymentCoverageRequestResource`](#paymentcoveragerequestresource), required
- `result`, `boolean`, required — Result of the coverage check :
  - true: the payment can be covered
  - false: the payment cannot be covered
- `_links`, [`PaymentCoverageReportLinks`](#paymentcoveragereportlinks), required

### PaymentCoverageReportLinks

Type: `object` · Kind: Hal

links that can be used for further navigation to post another coverage request.

Fields:

- `self`, [`GenericLink`](#genericlink), required

### PaymentCoverageRequestResource

Type: `object` · Kind: Resources

Payment coverage request structure.
The request must rely either on a cash account or a payment card.
The [instructedAmount] property is the payment account on wihich the request is processed. This amount must be positive.
Amounts must always be set as positive values.

Fields:

- `paymentCoverageRequestId`, `string`, required — Identification of the payment Coverage Request
  Constraints: maxLength 35.
- `payee`, `string` — The merchant where the card is accepted as information to the PSU.
  Constraints: maxLength 70.
- `instructedAmount`, [`AmountType`](#amounttype)
- `accountId`, [`AccountIdentification`](#accountidentification), required
