curl --request POST \
--url https://api.next.orenda.finance/v1/customers/{customerId}/batch-payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"action": "verify",
"payments": [
{
"payer": {
"account": {
"type": "uk",
"sortCode": "010203",
"accountNumber": "12345678"
}
},
"payee": {
"name": "Ada Lovelace",
"account": {
"type": "uk",
"sortCode": "040506",
"accountNumber": "87654321"
},
"accountType": "CONSUMER"
},
"reference": "Invoice 1024",
"amount": "150.00"
},
{
"payer": {
"account": {
"type": "iban",
"iban": "DE89370400440532013000"
}
},
"payee": {
"name": "Grace Hopper",
"account": {
"type": "iban",
"iban": "FR7630006000011234567890189",
"bic": "AGRIFRPP"
}
},
"reference": "Invoice 1025",
"amount": "200.00"
}
]
}
'{
"success": true,
"data": {
"requestId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "PENDING"
}
}Batch action (verify / initiate / submit)
The original single endpoint. It drives the whole flow and the action field selects the step:
verifysubmits the items for validation and a name check on the payee (Confirmation of Payee in the UK, Verification of Payee in the EU). Returns arequestIdto poll with Get verify status, plus the draft’sbatchIdandexpiresAt.initiatereturnstotalAmount,currency, and anscaChallengefor the verified set.passkey-challengereturns a passkey challenge for confirming with a passkey.submitpays the batch with aconfirmationofmethod: "passkey","totp", or"pin", plusidempotencyKeyin the body. Returns thebatchId.
The examples dropdown shows each action’s request and response. Behaviour matches the split verify and submit routes with two differences: this route doesn’t accept a file, and batchId is optional on initiate and submit (omitting it creates a new batch). It stays supported for existing integrations; new ones should use the split routes.
Items. Each item is one payment. UK programs send accountNumber and sortCode; EU programs send iban and bic. A reference (6 to 64 characters) and amount are required. Add scheduledDate (YYYY/MM/DD) to send an item on a future date.
initiatorId is ignored here; the path customerId is authoritative. Use POST /v1/batch-payments to target customers by initiatorId.
curl --request POST \
--url https://api.next.orenda.finance/v1/customers/{customerId}/batch-payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"action": "verify",
"payments": [
{
"payer": {
"account": {
"type": "uk",
"sortCode": "010203",
"accountNumber": "12345678"
}
},
"payee": {
"name": "Ada Lovelace",
"account": {
"type": "uk",
"sortCode": "040506",
"accountNumber": "87654321"
},
"accountType": "CONSUMER"
},
"reference": "Invoice 1024",
"amount": "150.00"
},
{
"payer": {
"account": {
"type": "iban",
"iban": "DE89370400440532013000"
}
},
"payee": {
"name": "Grace Hopper",
"account": {
"type": "iban",
"iban": "FR7630006000011234567890189",
"bic": "AGRIFRPP"
}
},
"reference": "Invoice 1025",
"amount": "200.00"
}
]
}
'{
"success": true,
"data": {
"requestId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "PENDING"
}
}Authorizations
The caller's access_token from authentication. Management API callers send the id_token. The program and environment come from the token.
Path Parameters
The customer id.
Query Parameters
Required on the Management API, where the token carries no program: omitting it returns 400. Customer API callers resolve the program from their token and should omit it; a value sent there is ignored.
Body
The step to run.
verify, initiate, passkey-challenge, submit The payment items. Required for verify, initiate, and submit.
Show child attributes
Show child attributes
The strong-customer-authentication challenge from initiate. Pass it back on submit.
Show child attributes
Show child attributes
Step-up confirmation (for submit). Set method to passkey, totp, or pin and include that method's fields. pin is a program capability: see Program capabilities.
- Passkey
- 2FA code
- PIN
Show child attributes
Show child attributes
Optional. Mint a fresh UUID for every batch. Not a replay key: a shared key re-runs the batch rather than returning the first result.
Optional. On verify, the draft being re-verified after edits: omit to create a new draft. On submit, the draft to pay; it is checked for expiry and ownership and cannot be paid twice. Absent keeps the pre-draft behaviour.
Legacy step-up credential. Superseded by confirmation.
Legacy TOTP step-up code. Superseded by confirmation.
Legacy passkey session id. Superseded by confirmation.
Legacy passkey assertion. Superseded by confirmation.