OnLink
API reference

Send N transfers under one confirmation

A loop over POST /v1/transfers behind a single confirmation code (spec §2.3). Each item is validated exactly as a single transfer would be; a failed item is reported with its refusal reason and the rest proceed. Nothing reaches the bank until the one code is verified via POST /v1/confirmations/:id.

POST
/v1/transfers/batch

Authorization

partner-key
X-OnLink-Key<token>

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/v1/transfers/batch" \  -H "Content-Type: application/json" \  -d '{    "idempotencyKey": "batch-2026-09-16-000001",    "items": [      {        "rail": "mpesa",        "destination": {          "accountNumber": "254712345678",          "accountName": "Jane Wanjiku"        },        "amount": {          "currency": "KES",          "value": "1500.00"        },        "idempotencyKey": "trf-2026-09-11-000123"      }    ]  }'
{  "id": "be9f1e6a-0000-4000-8000-000000000040",  "status": "awaiting_confirmation",  "itemCount": 0,  "acceptedCount": 0,  "failedCount": 0,  "items": [    {      "transferId": "bd9f1e6a-0000-4000-8000-000000000010",      "idempotencyKey": "trf-2026-09-16-000123",      "accepted": true,      "failureCode": "TRANSFER_NAME_MISMATCH"    }  ],  "createdAt": "2026-09-16T00:00:00.000Z",  "confirmedAt": "2026-09-16T00:02:00.000Z",  "confirmation": {    "id": "df9f1e6a-0000-4000-8000-000000000030",    "channel": "email",    "deliveredTo": "o***@partner.co.ke",    "expiresAt": "2026-09-11T00:15:00.000Z",    "resendAvailableAt": "2026-09-11T00:00:15.000Z"  }}