Create payment batches
Create, validate, and send payment batches of up to 10,000 payments using a single CSV file, or up to 3,000 payments using a single JSON request, through the Payment Batch API.How it works
To create a payment batch, use the/v2/payment-batches endpoint, which allows optional customisation such as name, visibility, and payment details. You can specify payment details while creating the payment batch, or in a separate request, upload payments to the created batch using the /v2/payment-batches/{paymentBatchId}/payments endpoint, then confirm using the /v2/payment-batches/{paymentBatchId}/confirm enpoint. Payments can be added by uploading a CSV file or by sending the data in JSON format. A blank template can also be downloaded to provide a structured format.
If you specify payment details inline when creating the payment batch, the batch will be locked and you won’t be able to update or upload additional payment details afterwards. After the batch is created, you can confirm it using /v2/payment-batches/{paymentBatchId}/confirm to initiate the payment process.
Payments in the batch will use the specified fundingBudgetId, if provided. If a fundingBudgetId is not specified, the defaultFundingBudgetId will be used instead. Orders within the batch are grouped by currency and funding budget. This structure ensures efficient processing and management of payments.
To manage and monitor the lifecycle of a payment batch, a series of webhooks are triggered at key stages, from initial validation and approval to processing, completion, or cancellation. Individual payments within the batch also emit events such as creation, dispatch, or return. These webhooks provide real-time visibility and allow you to automate actions or handle errors efficiently.
For more information about the type of details to provide depending on the country that you’re sending money to, see about preferred recipient details.
Download blank template csv
GET
/v2/payment-batch-templateRequest
Response
If your request is successful, you will receive a200 OK response with a text or CSV file for payment details.
Create a payment batch
POST
/v2/payment-batchesRequest
Use this endpoint to create a new payment batch with optional customisation, including name, visibility, and payment details. In sandbox, compliance checks are bypassed, allowing all transactions to pass automatically for faster testing. In production, compliance checks are enforced and may affect payment success.Query parameters
The ID of the account to work with.Allowable values: An existing
accountIdRequest body schema
Payment details for the batch, including default funding budget and individual payments.
Default budget to fund payments if not specified for each payment. Example:
771967a7-f0f7-4137-a6bf-494452ba6549Array of all the payments with optional fundingBudgetId. Each payment includes amount, currency, recipient, and purpose details.
Payment amount. Example:
100.00Payment currency (ISO 4217 format). Example:
USDExisting recipient (object) or New recipient (object).
Type of recipient.Allowable values:
individual, businessName of the recipient. Example:
John DoeThis represents the identifier of the recipient’s account, such as an Account Number or IBAN. Example:
55555555Name associated with the email subscription. Example:
John DoeEmail address for notifications. Example:
johndoe@example.comAddress details of the recipient.
Country code in ISO 3166-1 alpha-2 format. Example:
USBank account details of the recipient.
Country code of the recipient’s bank in ISO 3166-1 alpha-2 format. Example:
GBResponse
If your request is made without payments being specified inline, you’ll receive a201 Created. This indicates that the batch has been created but still needs payments uploaded to it before confirmation can be done.
Alternatively, you receive a 202 Accepted response when you specify the payments inline. This means the batch has been sent for validation.
Upload payments to a payment batch
POST
/v2/payment-batches/{paymentBatchId}/paymentsRequest
Use this endpoint to upload payments to a payment batch. Payments can be added by uploading a file (CSV or text) or by sending the data in JSON format.Query parameters
The ID of the account that you’re creating a recipient for.Allowable values: An existing
accountIdPath parameters
The unique ID of the Payment Batch.Allowable values: An existing
paymentBatchIdRequest body schema
The ID of the budget that will fund each payment if one isn’t specified per payment.Allowable values: An existing
BudgetIdArray of all the payments with optional fundingBudgetId. Each payment includes amount, currency, recipient, and purpose details.
Payment amount. Example:
100.00Payment currency (ISO 4217 format). Example:
USDExisting recipient (object) or New recipient (object).
Type of recipient.Allowable values:
individual, businessName of the recipient. Example:
John DoeThis represents the identifier of the recipient’s account, such as an Account Number or IBAN. Example:
55555555Name associated with the email subscription. Example:
John DoeEmail address for notifications. Example:
johndoe@example.comAddress details of the recipient.
Country code in ISO 3166-1 alpha-2 format. Example:
USBank account details of the recipient.
Country code of the recipient’s bank in ISO 3166-1 alpha-2 format. Example:
GBResponse
If your request is successful, you will receive a202 Accepted response with the following structure:
Validate a payment batch
GET
/v2/payment-batches/{paymentBatchId}/validateRequest
Use this endpoint optionally to validate if a payment batch is in a state which it can be confirmed.Query parameters
The ID of the account that you’re creating a recipient for.Allowable values: An existing
accountIdPath parameters
The unique ID of the Payment Batch.
Response
If your request is successful, you will receive a 200 OK response with the following structure:Testing validation outcomes
Use the following predefined values to simulate various validation scenarios in the sandbox.Validation by Bic and Iban
| Test Scenario | Identifier |
|---|---|
| Successful Validation - SEPA not available | IBAN: GB68SPPV00000010000001 or BIC: SPPVGB3L001 |
| Caution Validation | IBAN: GB41SPPV00000010000002 or BIC: SPPVGB3L002 |
| Failure Validation | IBAN: GB14SPPV00000010000003 or BIC: SPPVGB3L003 |
| Unsupported CHAPS Network Call - CHAPS not supported | Sort Code: 000000, Account: 00000002 |
Country Services
| Test Scenario | countryCode |
|---|---|
| Successful country services call | GB |
| Failure country services call | Non-GB |
Confirm a payment batch
POST
/v2/payment-batches/{paymentBatchId}/confirmRequest
Use this endpoint to confirm a payment batch, lock the total sum of payments, and trigger the payment processing workflow. Once a batch is confirmed, it can no longer be edited.Query parameters
The ID of the account that you’re creating a recipient for.Allowable values: An existing
accountIdPath parameters
The unique ID of the Payment Batch.
Request body schema
Name of the MFA provider.Allowable values: An existing
mfa.providerID of the successful MFA session.Allowable values: An existing
mfa.sessionIdMFA secret sent to the user’s device.Allowable values: An existing
mfa.token