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.

FieldRequiredFormat
amount.currencyRequired3-letter ISO currency code
amount.stringValueRequiredMust have the same number of decimals as the currency. Use a period . as the decimal point.
dateRequiredyyyy-mm-dd
schemeRequiredSee create credit-transfer.
referenceRequiredFree-form payment reference.
source.typeRequiredACCOUNT
source.idRequiredAtlar identifier of the source account (found in the Atlar Dashboard).
destination.typeRequiredACCOUNT for internal transfers, EXTERNAL_ACCOUNT for existing external accounts, or INLINE.
destination.idRequired when destination.type is EXTERNAL_ACCOUNT or ACCOUNTAtlar identifier of the destination account. For External Accounts, external IDs can also be used by prefixing with external:.
destination.externalIdOptional, only for INLINEIf the inline account creates a new External Account, it will have this external ID.
destination.marketRequired when destination.type is INLINE2-letter ISO country code.
destination.holder.legalNameRequired when destination.type is INLINELegal name of the account holder.
destination.holder.externalIdOptional, only for INLINEIf the inline account creates a new Counterparty, it will have this external ID.
destination.holder.partyTypeOptional, only for INLINEOne of: INDIVIDUAL, COMPANY.
destination.holder.address.<streetName / streetNumber / postalCode / city / country>Optional, only for INLINEAddress details for the Counterparty.
destination.identifier.typeRequired when destination.type is INLINEOne of: NUMBER, IBAN, SE_BANKGIRO, SE_PLUSGIRO.
destination.identifier.marketRequired when destination.type is INLINE2-letter ISO country code.
destination.identifier.numberRequired when destination.type is INLINENo formatting such as spaces or dashes.
destination.bicOptional8 or 11 characters.
destination.routing.typeOptionalSee create credit-transfer.
destination.routing.numberOptionalNo formatting such as spaces or dashes.
categoryPurposeOptionalISO 20022 Category Purpose Code.
chargeBearerOptionalSHARED, DEBTOR, or CREDITOR.
regulatoryReporting.CREDITOR.codeOptionalMarket-specific code for the creditor. See Regulatory Reporting.
regulatoryReporting.DEBTOR.codeOptionalMarket-specific code for the debtor. See Regulatory Reporting.
externalIdOptionalMust be unique across all your payments. See External IDs.
metadata.<key>OptionalMultiple 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 the Counterparty.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 and metadata.<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 type BIC.
  • destination.identifier and destination.routing can only represent a single account identifier and routing identifier in the CSV format.
    In contrast, the API JSON format allows arrays for destination.identifiers and destination.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.

FieldCross-border payment to GB
schemeCROSS_BORDER
amount.currencyAny valid ISO 4217 code
destination.typeINLINE
destination.marketGB
destination.holder.legalNameRequired
destination.identifier.typeIBAN
destination.identifier.marketGB
destination.identifier.numberGBddaaaaccccccnnnnnnnn (valid GB IBAN format)
destination.bicRequired

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.

FieldUK account to account Faster Payments
schemeGB_CT_FPS
amount.currencyGBP
destination.typeINLINE
destination.marketGB
destination.holder.legalNameRequired
destination.identifier.typeNUMBER
destination.identifier.marketGB
destination.identifier.number8-digit account number
destination.routing.typeGB_DSC
destination.routing.number6-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.

FieldCross border payment to the US
schemeCROSS_BORDER
amount.currencyAny valid ISO 4217 currency
destination.typeINLINE
destination.marketUS
destination.holder.legalNameRequired
destination.identifier.typeNUMBER
destination.identifier.marketUS
destination.identifier.number6–17 digit account number
destination.bicRequired
destination.routing.typeUS_ABA
destination.routing.number9-digit ABA routing number

Cross border payment to India

When making a cross-border payment to India, note that regulatory reporting is required.

FieldCross border payment to India
schemeCROSS_BORDER
amount.currencyAny valid ISO 4217 currency
destination.typeINLINE
destination.marketIN
destination.holder.legalNameRequired
destination.identifier.typeNUMBER
destination.identifier.marketIN
destination.identifier.number10–20 digit account number
destination.bicRequired
destination.routing.typeIN_FSC
destination.routing.number11-character Indian Financial System Code (IFSC)
regulatoryReporting.CREDITOR.codeRequired. 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.

FieldSEPA credit transfer
schemeSCT
amount.currencyEUR
destination.typeINLINE
destination.marketDE (example using Germany)
destination.holder.legalNameRequired
destination.identifier.typeIBAN
destination.identifier.marketDE (match the IBAN country)
destination.identifier.numberGerman IBAN, e.g. DEddccccccccnnnnnnnnnn