OnLink
API reference

Send money from your KES account

Validates the destination, verifies the beneficiary name where the rail supports it, checks your caps and balance, then writes the instruction and sends a confirmation code to your registered person. Nothing reaches the bank until that code is verified via POST /v1/confirmations/:id.

POST
/v1/transfers

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

application/json

application/json

curl -X POST "https://example.com/v1/transfers" \  -H "Content-Type: application/json" \  -d '{    "rail": "mpesa",    "destination": {      "accountNumber": "254712345678",      "accountName": "Jane Wanjiku"    },    "amount": {      "currency": "KES",      "value": "1500.00"    },    "idempotencyKey": "trf-2026-09-11-000123"  }'
{  "id": "bd9f1e6a-0000-4000-8000-000000000010",  "status": "awaiting_confirmation",  "rail": "mpesa",  "amount": {    "currency": "KES",    "value": "1500.00"  },  "fee": {    "currency": "KES",    "value": "1500.00"  },  "destination": {    "accountNumber": "254712345678",    "accountName": "Jane Wanjiku",    "bankCode": "11"  },  "nameVerification": "verified",  "verifiedAccountName": "JANE WANJIKU",  "partnerReference": "PS-TRF-000123",  "failureCode": "PROVIDER_REJECTED",  "createdAt": "2026-09-11T00:00:00.000Z",  "confirmedAt": "2026-09-11T00:02:00.000Z",  "settledAt": "2026-09-11T00:05: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"  }}