POST
Step 3. Send the items you’re going to pay to POST /v1/customers/{customerId}/batch-payments/submit with action: "initiate" and the batchId from verify (pick the initiate example below). You get back the totalAmount, the currency, and an scaChallenge.
batchId is required here. This route only pays a batch that was verified first, so both initiate and submit need the id verify returned. Omitting it is a 400. The older unsuffixed route keeps the previous contract, where it is optional.
Carry the scaChallenge into submit, along with a 2FA code or a passkey, to authorise the batch.
Initiate and submit share this endpoint. The challenge has to round-trip through the user — initiate issues it, the user authenticates against the amount and payee, submit presents it back — so both steps are the same privilege and the action field says which one you’re on. action is required here; "verify" is rejected with 403.Send the same items to initiate and submit. The challenge is bound to the payee account and amount of every row, in order, so adding, removing, reordering or re-pricing a row between the two calls invalidates it.
Availability. This route is rolled out per program and returns 403 until yours is enabled. Until then, send action: "initiate" to POST /v1/customers/{customerId}/batch-payments — the request and response bodies are identical. See the overview.

Authorizations

Authorization
string
header
required

The caller's id_token from authentication — the ID token, not the access_token. The program and environment come from the token.

Path Parameters

customerId
string
required

The customer id.

Body

application/json
action
enum<string>
required

Required — initiate, passkey-challenge or submit. verify is rejected with 403; it belongs to the /batch-payments/verify route.

Available options:
initiate,
passkey-challenge,
submit
payments
object[]

The payment items. Required for initiate and submit, and must be identical between them or SCA verification fails.

scaChallenge
object

The strong-customer-authentication challenge from initiate. Pass it back on submit.

confirmation
Passkey · object

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.

idempotencyKey
string<uuid>

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.

batchId
string<uuid>

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 — initiatetotalAmount/currency/scaChallenge; passkey-challengepasskeySession/fido2options; submitbatchId/status/counts.

The response is of type object.