Preflight an ISO 20022 pacs.009 credit transfer
POST/v1/iso20022/messages/preflight
Check, without executing anything, whether a pacs.009.001.08 message would currently pass
the platform's liquidity, mint-limit and exposure-limit checks if you submitted it. This is
the XML counterpart of POST /v1/transfers/preflight.
Required scope: connector:transfers:create (the same scope as submitting).
Request
Send exactly the message you intend to submit to
POST /v1/iso20022/messages, with
Content-Type: application/iso20022+xml. It goes through the same validation (size, node
count and depth limits, DTD and external-entity rejection, head.001.001.03 and pacs.009.001.08
XSD schemas) and the same field mapping (sender BIC, receiver BIC, currency, amount and
accounts), so the same 400 and 403 errors apply. See the submit operation for the full
mapping table. As with POST /v1/transfers/preflight, the result depends only on the two
banks, the currency and the amount: the accounts must be present in the message but are
not checked against registered accounts, so an unregistered account is only detected on
submission.
Preflight has no side effects: it does not store the message, does not claim the UETR, and
creates no operation or transfer. No Idempotency-Key header is needed and repeating a call
is always safe. The UETR is not checked for prior use.
Response
200 OK with a transfer-preflight.001.001.01 document in application/xml. This is a
platform-defined message (namespace urn:dan:xsd:transfer-preflight.001.001.01), not an
ISO 20022 registered message type. The X-ISO20022-UETR header echoes the message UETR.
| Element | Meaning |
|---|---|
Header/MessageId | Unique id of this response (PFR- followed by a UUID). |
Header/CreatedAt, Assessment/EvaluatedAt | UTC date and time of the evaluation, without a zone designator. |
Header/OriginalMessage/MessageType | Always pacs.009.001.08. |
Header/OriginalMessage/Fingerprint | Lowercase hex SHA-256 of the exact request body bytes; use it to match the result to the message you sent. |
Assessment/PreflightId | Unique id of this evaluation (PF- followed by a UUID). |
Assessment/Decision | PASS or BLOCKED. |
PreflightResult/OriginalUETR | UETR of the evaluated message. |
PreflightResult/WouldSucceed | true for PASS, false for BLOCKED. |
PreflightResult/BlockingReason | Only when blocked: INSUFFICIENT_LIQUIDITY, MINT_LIMIT_EXCEEDED or RECEIVER_EXPOSURE_LIMIT_EXCEEDED. |
PreflightResult/Mitigation | Only when blocked: ADJUST_AMOUNT_OR_RETRY_LATER, REQUEST_ISSUANCE_LIMIT_INCREASE or REQUEST_COUNTERPARTY_EXPOSURE_LIMIT_INCREASE respectively. |
PreflightResult/AvailableHeadroom | Only when blocked and the headroom is known: remaining headroom in the asset's minor units (for example cents), with the currency in @Ccy. Returned for MINT_LIMIT_EXCEEDED; for RECEIVER_EXPOSURE_LIMIT_EXCEEDED only if the network is configured to disclose counterparty headroom. |
PASS reflects the state when the request was evaluated; balances and limits can change
before you submit. It also does not predict beneficiary screening or approval workflows,
which only run after submission.
Responses are sent without indentation; the examples are indented for readability.
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 413
- 415
- 422
- 429
- 500
- 503
The eligibility assessment.
Response Headers
UETR (Unique End-to-end Transaction Reference) of the payment this response refers to: a
lowercase, hyphenated UUID version 4, taken from PmtId/UETR of the submitted pacs.009
message. The platform never assigns a UETR; it always echoes the one the sending bank chose.
The message is malformed, breaks a schema or mapping rule, or cannot be routed, for
example ISO 20022 receiver BIC is not configured or invalid ISO 20022 amount.
The same validation errors as for submission apply.
Error, returned as an XML problem document (application/problem+xml). The HTTP status
code is repeated in <status>; each <error> carries a <title> and, where one applies,
a <code> and a <detail>.
The token lacks connector:transfers:create or is not scoped to the bank, the bank is
suspended or terminated, or the sender BIC is not the calling bank's BIC
(ISO 20022 sender BIC does not match the authenticated bank).
One of the banks is not eligible for this asset, or a referenced resource was not found.
The request body is larger than 1 MiB. The body is plain text, not an XML problem document.
The Content-Type header is missing or is not application/iso20022+xml.
The transfer cannot be evaluated in the current configuration, for example
no active asset is configured for the ISO 20022 settlement currency,
ISO 20022 receiver BIC is configured for multiple active banks, or
source bank is not active.
Error, returned as an XML problem document (application/problem+xml). The HTTP status
code is repeated in <status>; each <error> carries a <title> and, where one applies,
a <code> and a <detail>.
Error, returned as an XML problem document (application/problem+xml). The HTTP status
code is repeated in <status>; each <error> carries a <title> and, where one applies,
a <code> and a <detail>.
Error, returned as an XML problem document (application/problem+xml). The HTTP status
code is repeated in <status>; each <error> carries a <title> and, where one applies,
a <code> and a <detail>.