curl --request POST \
--url https://api.next.orenda.finance/v1/batch-payments/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"action": "initiate",
"batchId": "3f1c8f9e-1d2b-4a3c-9e5f-6a7b8c9d0e1f",
"payments": [
{
"payer": {
"account": {
"type": "uk",
"sortCode": "010203",
"accountNumber": "12345678"
}
},
"payee": {
"name": "Ada Lovelace",
"account": {
"type": "uk",
"sortCode": "040506",
"accountNumber": "87654321"
}
},
"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": "275.50"
}
]
}
'{
"success": true,
"totalAmount": "350.00",
"currency": "GBP",
"scaChallenge": {
"hash": "9f86d0...",
"nonce": "b1946ac9",
"timestamp": "2026-06-05T10:00:00Z"
}
}Pay a batch (multi-customer)
Pay a verified batch. The SCA challenge round-trips through the caller’s authentication, so this is a multi-step exchange against this same route:
initiate— returnstotalAmount,currencyand anscaChallengefor the items you send.- (optional)
passkey-challenge— FIDO2 options, if the user authenticates with a passkey rather than TOTP or PIN. submit— send the same items back with aconfirmationcarrying the challenge. Returns thebatchId.
This route rejects verify with 403 — use the /batch-payments/verify route for that.
Access: this route is gated separately from the one that verifies a batch. The unsuffixed batch routes remain available and still accept every action, including submit.
Back-office only, multi-customer. No customerId in the path: each item’s payer account is resolved globally and authorized per item against the caller, so one batch can pay from the accounts of any customers the caller is responsible for. An account the caller is not responsible for — including an unassigned account — is rejected with 401, as is a back-office role that resolves to no customers.
A verified batch is required. batchId — the id returned by verify — is required on both initiate and submit here, so this route can only pay a batch that went through verification. It is checked for expiry and ownership and can only be paid once; a second submit of the same draft is rejected. passkey-challenge needs no batchId, as it touches no batch.
The unsuffixed batch routes keep the older contract, where batchId is optional and omitting it creates a new batch.
curl --request POST \
--url https://api.next.orenda.finance/v1/batch-payments/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"action": "initiate",
"batchId": "3f1c8f9e-1d2b-4a3c-9e5f-6a7b8c9d0e1f",
"payments": [
{
"payer": {
"account": {
"type": "uk",
"sortCode": "010203",
"accountNumber": "12345678"
}
},
"payee": {
"name": "Ada Lovelace",
"account": {
"type": "uk",
"sortCode": "040506",
"accountNumber": "87654321"
}
},
"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": "275.50"
}
]
}
'{
"success": true,
"totalAmount": "350.00",
"currency": "GBP",
"scaChallenge": {
"hash": "9f86d0...",
"nonce": "b1946ac9",
"timestamp": "2026-06-05T10:00:00Z"
}
}Authorizations
The caller's id_token from authentication — the ID token, not the access_token. The program and environment come from the token.
Body
Required — initiate, passkey-challenge or submit. verify is rejected with 403; it belongs to the /batch-payments/verify route.
initiate, passkey-challenge, submit The payment items. Required for initiate and submit, and must be identical between them or SCA verification fails.
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 UUID. Reuse the same key to make submit safe to retry — batch and item IDs are then derived deterministically, so a retry cannot double-pay.
Required. The draft returned by verify. This route only pays a batch that was verified first, so initiate and submit both need it. It is checked for expiry and ownership and cannot be paid twice.
Response
Result for the requested step — initiate → totalAmount/currency/scaChallenge; passkey-challenge → passkeySession/fido2options; submit → batchId/status/counts.
The response is of type object.