Remittance
Initiate Remittance
Create a remittance request.
POST
Overview
Use the Remittance API to send cross-border payouts. Remittances are asynchronous: you receive an acceptance response immediately, then a final outcome via webhook. This call is idempotent. Reuse the sametransaction.reference to safely retry the same logical remittance.
Authentication and signature
Required headers| Header | Required | Notes |
|---|---|---|
Authorization | Yes | Bearer <remittance_token> |
X-Custom-Signature | Yes | Base64 RSA signature. See Signature generation. |
Content-Type | Yes | application/json |
Request body
Top-level fields| Field | Type | Required | Notes |
|---|---|---|---|
transaction | object | Yes | Remittance details and idempotency reference. |
originator | object | Yes | Sender details. |
recipient | object | Yes | Recipient details. |
callback_url | string | Yes | HTTPS URL for final status callbacks. |
meta | object | No | Arbitrary key/value metadata echoed in callbacks. |
| Field | Type | Required | Notes |
|---|---|---|---|
reference | string | Yes | Client-generated unique reference (idempotency key). |
amount | integer | Yes | Amount in major units (e.g., 100 = 100 KES). |
currency | string | Yes | ISO 4217 currency code (e.g., KES, USD). |
description | string | Yes | Short narrative for the remittance. |
service_code | string | Yes | Corridor/payout rail code. |
timestamp | string | Yes | Format: YYYY-MM-DD HH:mm:ss. |
| Field | Type | Required | Notes |
|---|---|---|---|
originator_type | string | No | Individual or Corporate. |
first_name | string | No | Originator first name. |
other_names | string | No | Originator other/last names. |
dob | string | No | Date of birth (YYYY-MM-DD). |
nationality | string | Yes | Originator nationality (e.g., UK). |
id_type | string | No | Identification type (e.g., Passport). |
id_number | string | No | Identification number. |
id_expiry_date | string | No | Identification expiry date (YYYY-MM-DD). |
address | string | Yes | Originator address. |
company_name | string | No | Company name (for Corporate originators). |
company_registration | string | No | Company registration number (for Corporate originators). |
service_provider | string | No | Sending provider name (corridor-specific). |
msisdn | string | Yes | MSISDN format (e.g., 2547XXXXXXXX). |
channel | string | No | Initiation channel (e.g., USSD, API). |
country | string | Yes | Country code (ISO-2 or ISO-3 as configured on your account). |
purpose | string | Yes | Purpose of sending the funds. |
| Field | Type | Required | Notes |
|---|---|---|---|
recipient_type | string | No | Individual or Corporate. |
first_name | string | No | Recipient first name. |
other_names | string | No | Recipient other/last names. |
id_type | string | No | Identification type (e.g., Passport). |
id_number | string | No | Identification number. |
id_expiry_date | string | No | Identification expiry date (YYYY-MM-DD). |
dob | string | No | Date of birth (YYYY-MM-DD). |
address | string | Yes | Recipient address. |
company_name | string | No | Company name (for Corporate recipients). |
company_registration | string | No | Company registration number (for Corporate recipients). |
msisdn | string | No | MSISDN format. If provided, cannot be empty. |
country | string | Yes | Country code. |
nationality | string | No | Recipient nationality. |
relationship | string | Yes | Recipient’s relationship to the originator. |
reference | string | No | Client-generated reference for recipient context. |
account_type | string | Yes | MOMO or BANK. |
account | string | Yes | Recipient account identifier. |
bank_code | string | No | Bank code (for BANK account types). |
Example request (Individual originator, BANK recipient)
Example request (Corporate originator, MOMO recipient)
Example response (accepted)
Notes
- Final outcome is delivered via webhook. See Webhooks overview.
- Errors follow the standard error shape. See Errors.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Base64 RSA signature over: transaction.reference + transaction.amount + originator.country + transaction.service_code
Body
application/json
