Credit transfer instruction endpoint.
This is a unified interface for submitting Credit Transfer Instructions. It consolidates and is intended to replace several existing payment endpoints under a single resource, using content-negotiated request and response formats. The endpoints listed in the table below are planned for deprecation and will be supported through this endpoint.
From the start of November 2026, applicable payment schemes will require Town Name and Country Code in dedicated address fields. Existing address requirements continue to apply.
| Legacy Endpoint | Format | Supported on new unified endpoint |
|---|---|---|
| POST /api/v1/payments/iso20022/customer-credit-transfer-initiation [DEPRECATED] | PAIN.001.001.03 (XML) | Yes - Upgrade to PAIN.001.001.09 required |
| POST /api/v1/payments/iso20022/fi-to-fi-customer-credit-transfer | PACS.008.001.08 (XML) | Future planned |
| POST /api/v1/payments/fi-to-fi-customer-credit-transfer-initiation | JSON | Future planned |
| POST /api/v1/payments/bulks | CSV | Future planned |
| POST /api/v1/payments/singles | JSON | Future planned |
Currently supported formats
| Request Format | Content-Type | Accept | Response Format |
|---|---|---|---|
| PAIN.001.001.09 (XML file) | multipart/form-data | */* | PAIN.002.001.10 (application/xml) |
PAIN.001.001.03 is not supported via this endpoint. Integrations currently using the deprecated /api/v1/payments/iso20022/customer-credit-transfer-initiation endpoint must additionally upgrade to PAIN.001.001.09 to migrate to this endpoint.
See PAIN.001.001.03 to PAIN.001.001.09 Migration Guide for further instructions.
Content negotiation
The endpoint uses standard HTTP content negotiation to determine the request format and select the appropriate response format. As new formats are added (JSON, CSV, etc.), the Content-Type and Accept headers will be the mechanism by which the client selects the desired behavior — the URL stays the same.
ISO 20022 Formats
For ISO 20022 formats (e.g. PAIN, PACS), the payload must be provided as a file using multipart/form-data as the Content-Type. The message format is determined based on the namespace tag in the file.
HTTP Request Headers
| Header | Required | Description |
|---|---|---|
Content-Type | Yes | Used to describe the format provided. |
Accept | No | Desired response format. Defaults to deriving the response format from the request format. |
Idempotency-Key | No | A unique key to ensure idempotent processing More info |
Truncate | No | Set to true to allow us to truncate fields that exceed internal length limits (instead of validation failure). It is however recommended that clients truncate on their side to avoid unexpected data loss. See section Truncation section below for more details. |
HTTP Status Codes
| Status | Meaning | Response Format |
|---|---|---|
| 201 Created | All credit transfer instructions accepted and sent for processing. | Depends on request format (i.e. PAIN.002 for PAIN.001 request format) |
| 400 Bad Request | Malformed request (e.g. invalid XML / JSON). | JSON |
| 406 Not Acceptable | The Accept header does not match a supported response format for this request type. | JSON |
| 409 Conflict | Idempotency-key violation (duplicate submission). | JSON |
| 415 Unsupported Media Type | The Content-Type is not supported. | — |
| 422 Unprocessable Entity | Request was parsed but one or more credit transfer instructions failed validation. No credit transfer instructions was sent for processing. | Depends on request format (i.e. PAIN.002 for PAIN.001 request format) |
| 500 Internal Server Error | An unexpected server fault occurred | — |
Note: 400 Bad Request was formerly used for a range of different errors including validation errors. If a request has validation errors the response code will instead be a 422 indicating that request was understood but failed validation.
Note: Partial processing is not supported. 201 Created means all credit transfer instructions was accepted and sent for processing. Any other response code means that no credit transfer instructions was sent for processing.
Fields
Truncation
On some legacy endpoints, field content exceeding length limits was truncated on the Banking Circle side. This behaviour no longer applies unless explicitly enabled via the Truncate header.
When the header is set to true, fields exceeding internal length limits are truncated instead of causing a validation failure. It is recommended to perform truncation prior to submission to avoid unexpected data loss.
The truncation functionality is only supported on fields where we have a length limitation that is stricter than the official ISO 20022 limitation. Look for "Opt-In Truncation Supported" in field description table below.
Descriptions
The table below describes the instruction fields across formats (currently only PAIN.001.001.09). The limits such as max length, allowed characters etc. and whether they are mandatory or not are based on Banking Circle requirements. It may be that a field is listed as optional though it may be required by a certain ISO 20022 format etc.
Some fields has a requirement it terms of allowed characters. Fields marked with Allowed characters only must begin with an alphanumeric character or one of
/,?,(,),.,,,_,',+. Subsequent characters may additionally include-and:. All other characters are rejected.
| Name | PAIN.001.001.09 (Document/CstmrCdtTrfInitn) | Description |
|---|---|---|
| MessageReference | GrpHdr/MsgId | Unique message identifier.
|
| RequestedExecutionDate | PmtInf/ReqdExctnDt/D | Requested execution date.
|
| Debtor | PmtInf/Dbtr | Debtor (payer). See the Party Identification block.
|
| DebtorAccount | PmtInf/DbtrAcct/Id/IBAN OR | Debtor IBAN or account number.
|
| PmtInf/DbtrAcct/Id/Othr/Id | ||
| InstrId | PmtInf/CdtTrfTxInf[x]/PmtId/InstrId | Unique instruction identification.
|
| EndToEndId | PmtInf/CdtTrfTxInf[x]/PmtId/EndToEndId | End-to-end identification.
|
| Amount | PmtInf/CdtTrfTxInf[x]/Amt/InstdAmt OR | Amount to be transferred.
|
| PmtInf/CdtTrfTxInf[x]/Amt/EqvtAmt/Amt | ||
| AmountCurrency | PmtInf/CdtTrfTxInf[x]/Amt/InstdAmt/@Ccy OR | Amount currency.
|
| PmtInf/CdtTrfTxInf[x]/Amt/EqvtAmt/Amt/@Ccy | ||
| TransferCurrency | PmtInf/CdtTrfTxInf[x]/Amt/EqvtAmt/CcyOfTrf | Target transfer currency.
|
| ChargeBearer | PmtInf/CdtTrfTxInf[x]/ChrgBr | Charge bearer.
|
| ServiceLevel | PmtInf/CdtTrfTxInf[x]/PmtTpInf/SvcLvl[s]/Cd OR | Service level.
|
| PmtInf/CdtTrfTxInf[x]/PmtTpInf/SvcLvl[s]/Prtry | ||
| CategoryPurposeCode | PmtInf/CdtTrfTxInf[x]/PmtTpInf/CtgyPurp/Cd OR | Category purpose code.
|
| PmtInf/CdtTrfTxInf[x]/PmtTpInf/CtgyPurp/Prtry | ||
| PurposeCode | PmtInf/CdtTrfTxInf[x]/Purp/Cd OR | Payment purpose.
|
| PmtInf/CdtTrfTxInf[x]/Purp/Prtry |
| |
| ClientCustomerId | PmtInf/CdtTrfTxInf[x]/InstrForDbtrAgt | This is a client internal reference that follows the ultimate debtor’s name and is used for tracking and reconciliation.
|
| RemittanceInformation | PmtInf/CdtTrfTxInf[x]/RmtInf/Ustrd[1] | Remittance information.
|
| Creditor | PmtInf/CdtTrfTxInf[x]/Cdtr | Creditor (beneficiary). See the Party Identification block.
|
| CreditorAccount | PmtInf/CdtTrfTxInf[x]/CdtrAcct/Id/IBAN OR | Creditor IBAN or account number.
|
| PmtInf/CdtTrfTxInf[x]/CdtrAcct/Id/Othr/Id | ||
| CreditorAgent | PmtInf/CdtTrfTxInf[x]/CdtrAgt/FinInstnId | Creditor agent (beneficiary bank). See the Financial Institution block.
|
| UltimateDebtor | PmtInf/CdtTrfTxInf[x]/UltmtDbtr | Ultimate debtor. See the Party Identification block.
|
Party Identification block
Used by Debtor, Creditor and Ultimate Debtor. Paths are relative to the party's base path.
| Name | PAIN.001.001.09 | Description |
|---|---|---|
| Name | Nm | Party name.
|
| PostalAddress | PstlAdr | Postal address. See the Postal Address block.
|
Postal Address block
Used by the Party Identification block. Paths are relative to the party's PostalAddress.
| Name | PAIN.001.001.09 | Description |
|---|---|---|
| AddressLine1 | AdrLine[1] | Unstructured address line 1.
|
| AddressLine2 | AdrLine[2] | Unstructured address line 2.
|
| AddressLine3 | AdrLine[3] | Unstructured address line 3.
|
| CountryCode | Ctry | Country Code.
|
| Department | Dept | Department.
|
| SubDepartment | SubDept | Sub-department.
|
| StreetName | StrtNm | Street name.
|
| BuildingNumber | BldgNb | Building number.
|
| BuildingName | BldgNm | Building name.
|
| Floor | Flr | Floor.
|
| PostBox | PstBx | Post office box.
|
| Room | Room | Room.
|
| PostalCode | PstCd | Postal code.
|
| TownName | TwnNm | Town or city.
|
| TownLocationName | TwnLctnNm | Location within a town.
|
| DistrictName | DstrctNm | District.
|
| CountrySubDivision | CtrySubDvsn | Country sub-division (state/province).
|
Financial Institution block
Used by Creditor Agent. Paths below are relative to the CreditorAgent property
(PmtInf/CdtTrfTxInf[x]/CdtrAgt/FinInstnId).
| Name | PAIN.001.001.09 | Description |
|---|---|---|
| BIC | BICFI | Financial institution BIC.
|
| NCC | ClrSysMmbId/MmbId | National clearing code.
|
| CountryCode | ClrSysMmbId/ClrSysId/Cd OR | Clearing system code (first 2 chars = CountryCode).
|
| ClrSysMmbId/ClrSysId/Prtry | CountryCode. |
Validation Errors
See Error Codes
