6. Collect and send
Calls are identical to the individual's (collect, track, cancel, refund): POST /transactions, GET /transactions, GET /transactions/{uuid}, POST /transactions/{uuid}/cancel, POST /transactions/{uuid}/refund, with Authorization: Bearer sk_live_… and X-Application-ID: {id}.
Business specifics
X-Application-IDis required: choose the application the operation belongs to.- Until KYC is verified, a payment with a live key is refused with 422 (
kycerror). - Sending money from the balance:
POST /transactionswith"type": "disbursement". In production the amount is held on the balance before calling the network; insufficient balance = 422INSUFFICIENT_BALANCE, nothing is created. In test, no balance is required. - List filters:
status,type,provider,date_from,date_to,amount_min,amount_max,application_id,per_page. Response:data.items+data.pagination. - From the dashboard (without API key):
GET /merchant/transactionsandGET /merchant/transactions/{uuid}with the session token. - Asynchronous CSV export:
POST /transactions/export, thenGET /transactions/exports/{uuid}until "ready", and download through the link received by email. - Bank cards: use
provider: "mastercard"for both Mastercard and Visa, withoutphone_number; creation returns a securecheckout_url. Business KYC must be verified before live payments.
Bodies, responses and errors: Individual merchant, steps 5, 6 and 9.
Send money (disbursement)
POST/transactionsAPI key + X-Application-ID
Sends an amount from the application balance to the recipient's Mobile Money wallet. phone_number is required, without a country code, and must match the provider country. In production, the amount is held before calling the network; insufficient balance returns 422 INSUFFICIENT_BALANCE. Use a unique idempotency_key and keep the response uuid.
Request body
{
"type": "disbursement",
"provider": "mtn_momo_cm",
"amount": 2000,
"currency": "XAF",
"phone_number": "677895412",
"idempotency_key": "paiement-fournisseur-42"
}Response 201
{
"success": true,
"data": {
"uuid": "018f1a2b-3c4d-7e5f-a6b7-c8d9e0f1a2b4",
"type": "disbursement",
"provider": "mtn_momo",
"status": "pending",
"amount": "2000.00",
"currency": "XAF",
"reference": "MP240101.1235.B12345",
"phone_number": "677895412",
"created_at": "2026-11-02T08:05:00Z",
"updated_at": "2026-11-02T08:05:00Z"
},
"meta": {
"request_id": "...",
"timestamp": "..."
}
}| Code | When |
|---|---|
| 422 | INSUFFICIENT_BALANCE, invalid amount/currency, unavailable network or phone number not matching the provider's country. |
| 401 | Invalid, inactive or wrong-environment API key. |
- The initial status is usually
pending. Wait for thetransaction.successortransaction.failedwebhook, or fetchGET /transactions/{uuid}; do not infer success from the creation response alone. - In test (
sk_test_), no real balance is required and no funds move.