Batch Payments & CSV Imports
Overview
Credit transfer batches can be created by uploading a CSV file via Atlar Dashboard or by sending a JSON payload using the API endpoint POST /payments/v2beta/credit-transfer-batches.
CSV format
The CSV content must include a header line (first row).
Some field names are required in the header line while others are optional.
Header field names are one-to-one mapped to JSON property names in our API
(except for the simplifications mentioned here: CSV format differences to JSON API formats).
Fields
The table below lists all supported fields and whether they are required or optional.
Some fields are conditionally required depending on the values of other fields.
If any record line in the file meets the conditions for a required field,
that field must also be included in the header line.
For example:
If any record line specifies the value INLINE
for the field destination.type
,
then the fields destination.market
, destination.holder.legalName
,
and destination.identifier.{type,market,number}
must also be present in the header line.
For detailed definitions and valid values, see the API reference documentation.
Field | Required | Format |
---|---|---|
amount.currency | Required | 3-letter ISO currency code |
amount.stringValue | Required | Must have the same number of decimals as the currency. Use a period . as the decimal point. |
date | Required | yyyy-mm-dd |
scheme | Required | See create credit-transfer. |
reference | Required | Free-form payment reference. |
source.type | Required | ACCOUNT |
source.id | Required | Atlar identifier of the source account (found in the Atlar Dashboard). |
destination.type | Required | ACCOUNT for internal transfers, EXTERNAL_ACCOUNT for existing external accounts, or INLINE . |
destination.id | Required when destination.type is EXTERNAL_ACCOUNT or ACCOUNT | Atlar identifier of the destination account. For External Accounts, external IDs can also be used by prefixing with external: . |
destination.externalId | Optional, only for INLINE | If the inline account creates a new External Account, it will have this external ID. |
destination.market | Required when destination.type is INLINE | 2-letter ISO country code. |
destination.holder.legalName | Required when destination.type is INLINE | Legal name of the account holder. |
destination.holder.externalId | Optional, only for INLINE | If the inline account creates a new Counterparty, it will have this external ID. |
destination.holder.partyType | Optional, only for INLINE | One of: INDIVIDUAL , COMPANY . |
destination.holder.address.<streetName / streetNumber / postalCode / city / country> | Optional, only for INLINE | Address details for the Counterparty. |
destination.identifier.type | Required when destination.type is INLINE | One of: NUMBER , IBAN , SE_BANKGIRO , SE_PLUSGIRO . |
destination.identifier.market | Required when destination.type is INLINE | 2-letter ISO country code. |
destination.identifier.number | Required when destination.type is INLINE | No formatting such as spaces or dashes. |
destination.bic | Optional | 8 or 11 characters. |
destination.routing.type | Optional | See create credit-transfer. |
destination.routing.number | Optional | No formatting such as spaces or dashes. |
categoryPurpose | Optional | ISO 20022 Category Purpose Code. |
chargeBearer | Optional | SHARED , DEBTOR , or CREDITOR . |
regulatoryReporting.CREDITOR.code | Optional | Market-specific code for the creditor. See Regulatory Reporting. |
regulatoryReporting.DEBTOR.code | Optional | Market-specific code for the debtor. See Regulatory Reporting. |
externalId | Optional | Must be unique across all your payments. See External IDs. |
metadata.<key> | Optional | Multiple metadata fields with different <key> values are allowed. |
Inlining destination account
As an alternative to referencing pre-existing External Accounts or Counterparties by their IDs, the destination account information can instead be inlined in the CSV file.
This is done by setting destination.type
to INLINE
and including the additional required fields such as destination.market
, destination.holder.legalName
, and other related details.
Inline data example:
amount.currency,amount.stringValue,date,scheme,reference,source.type,source.id,destination.type,destination.market,destination.holder.legalName,destination.identifier.type,destination.identifier.market,destination.identifier.number,destination.bic
USD,123.45,2024-01-23,CROSS_BORDER,invoice-no-205,ACCOUNT,d89b7f42-62b9-47d2-8969-0743f32ebc0d,INLINE,US,John Smith,NUMBER,US,123456789012,CHASUS33XXX
When a payments batch with INLINE
content is processed, the corresponding External Accounts and Counterparties are automatically created.
If the destination
fields match an existing counterparty and external account, the existing resources will be reused and no new records will be created.
For a record line to be considered a match with existing API resources, the following must be exact matches:
destination.holder.legalName
must exactly match theCounterparty.legalName
.destination
account number and routing information must match exactly (no differences in formatting, spacing, or case).
Examples
The following example demonstrates a mix of the functionality described above:
- Inline destination account information.
- Referencing existing destination account API resources.
- Specifying destination routing information (e.g., GB Sort Code, BIC, US ABA routing number).
- Using optional fields like
externalId
andmetadata.<key>
.
amount.currency,amount.stringValue,date,scheme,reference,externalId,source.type,source.id,destination.type,destination.id,destination.market,destination.holder.legalName,destination.identifier.type,destination.identifier.market,destination.identifier.number,destination.bic,destination.routing.type,destination.routing.number,metadata.comment,metadata.my-id
SEK,12.34,2024-02-20,SE_GIRO,invoice-no.119,,ACCOUNT,d73067c3-5427-40b5-b63b-76f89acb5a72,INLINE,,SE,anders andersson,SE_BANKGIRO,SE,12345678,,,,,
DKK,51.35,2024-02-20,DK_A2A,invoice-no.120,,ACCOUNT,57f6dcce-a4f9-4fc7-b496-182c4df0a60c,ACCOUNT,eb2ba9c1-ec7d-43e2-8724-9c85af870308,,,,,,,,,,
EUR,2.00,2024-02-20,SCT,invoice-no.121,,ACCOUNT,d89b7f42-62b9-47d2-8969-0743f32ebc0d,EXTERNAL_ACCOUNT,31380a97-f54b-4ae3-8f7e-3541c2914db6,,,,,,,,,,
GBP,531.42,2024-02-20,GB_CT_FPS,invoice-no.122,,ACCOUNT,5755d02f-0937-492b-adf3-c045cc4e0fa9,INLINE,,GB,John Doe,NUMBER,GB,12345678,,GB_DSC,123456,this is the payment for xyz,21743612948719284
USD,123.45,2024-02-20,CROSS_BORDER,invoice-no.123,,ACCOUNT,5755d02f-0937-492b-adf3-c045cc4e0fa9,INLINE,,US,John Smith,NUMBER,US,123456789012,BOFAUS3NXXX,US_ABA,123456789,"use the metadata fields, to set anything you would like",129572198421
See more example scenarios and which fields are required below.
Metadata fields
Creating payments with multiple metadata keys is supported by specifying multiple header fields in the form metadata.<your metadata key>
.
Example:
...,metadata.comment,metadata.my-id
...,"My comment #1",my-id-123
...,"My comment #2",my-id-456
CSV format differences to JSON API formats
destination.bic
is shorthand for adding a routing identifier (destination.routing
) of typeBIC
.destination.identifier
anddestination.routing
can only represent a single account identifier and routing identifier in the CSV format.
In contrast, the API JSON format allows arrays fordestination.identifiers
anddestination.routing
.- Only a single
regulatoryReporting
entry can be specified in the CSV format, while the API JSON format accepts an array.
Batch treatment type
When creating a payments batch, you can specify the batch treatment
, which can be either INDIVIDUAL_PAYMENTS
or BATCH
.
The difference between the two lies in how payment approvals are handled:
INDIVIDUAL_PAYMENTS
– approvals and rejections are managed per payment, just as if each payment were created individually (i.e., not part of a batch).BATCH
– approvals and rejections are managed at the batch level.
Note that if the treatment is BATCH
, payments can only be approved or rejected at the batch level and cannot be managed individually.
Conversely, if the treatment is INDIVIDUAL_PAYMENTS
, approvals and rejections cannot be managed at the batch level.
Example scenarios with inlined destination account
The tables below illustrate which optional fields must be populated for certain schemes in different scenarios when inlined destination account information is used.
These tables focus only on fields that are marked as optional in the fields table; all other required fields remain mandatory.
Cross-border payment to GB
A cross-border payment to GB when you have the IBAN of the destination account.
Field | Cross-border payment to GB |
---|---|
scheme | CROSS_BORDER |
amount.currency | Any valid ISO 4217 code |
destination.type | INLINE |
destination.market | GB |
destination.holder.legalName | Required |
destination.identifier.type | IBAN |
destination.identifier.market | GB |
destination.identifier.number | GBddaaaaccccccnnnnnnnn (valid GB IBAN format) |
destination.bic | Required |
UK account to account Faster Payments (FPS)
When making a domestic payment over Faster Payments and you have the destination account number and sort code.
Field | UK account to account Faster Payments |
---|---|
scheme | GB_CT_FPS |
amount.currency | GBP |
destination.type | INLINE |
destination.market | GB |
destination.holder.legalName | Required |
destination.identifier.type | NUMBER |
destination.identifier.market | GB |
destination.identifier.number | 8-digit account number |
destination.routing.type | GB_DSC |
destination.routing.number | 6-digit sort code (e.g. 112233 ) |
Cross border payment to the US
When making a cross-border payment to the US, an account number and an ABA routing number are required.
Field | Cross border payment to the US |
---|---|
scheme | CROSS_BORDER |
amount.currency | Any valid ISO 4217 currency |
destination.type | INLINE |
destination.market | US |
destination.holder.legalName | Required |
destination.identifier.type | NUMBER |
destination.identifier.market | US |
destination.identifier.number | 6–17 digit account number |
destination.bic | Required |
destination.routing.type | US_ABA |
destination.routing.number | 9-digit ABA routing number |
Cross border payment to India
When making a cross-border payment to India, note that regulatory reporting is required.
Field | Cross border payment to India |
---|---|
scheme | CROSS_BORDER |
amount.currency | Any valid ISO 4217 currency |
destination.type | INLINE |
destination.market | IN |
destination.holder.legalName | Required |
destination.identifier.type | NUMBER |
destination.identifier.market | IN |
destination.identifier.number | 10–20 digit account number |
destination.bic | Required |
destination.routing.type | IN_FSC |
destination.routing.number | 11-character Indian Financial System Code (IFSC) |
regulatoryReporting.CREDITOR.code | Required. A valid regulatory reporting code for the creditor must be provided. See Regulatory Reporting for the list of valid codes. |
SEPA Credit Transfer
SEPA is a Single Euro Payments Area that uses the euro (EUR) as its currency. Only payments sent and received in euro can be made as SEPA payments.
Both the sending and receiving bank accounts must be domiciled within the SEPA zone.
Field | SEPA credit transfer |
---|---|
scheme | SCT |
amount.currency | EUR |
destination.type | INLINE |
destination.market | DE (example using Germany) |
destination.holder.legalName | Required |
destination.identifier.type | IBAN |
destination.identifier.market | DE (match the IBAN country) |
destination.identifier.number | German IBAN, e.g. DEddccccccccnnnnnnnnnn |
Updated about 19 hours ago