Developers
Decaf Disbursements API
Send money to anyone with a phone number. Recipients claim funds directly on WhatsApp.
Disbursements
Send money by recipient phone or email. Recipients receive WhatsApp notifications and claim funds without app download.
Create a Disbursement
POST /v1/disbursements
{
"recipientPhone": "+527775551234",
"amountUsd": "250.00",
"currency": "USD",
"reference": "payroll-march-2026-emp-042",
"note": "March salary payment",
"idempotencyKey": "payroll-2026-03-emp-042-attempt-1"
}Batch Disbursements
POST /v1/disbursements/batch
Max 10,000 recipients per batch request.
{
"disbursements": [
{ "recipientPhone": "+527775551234", "amountUsd": "250.00", "reference": "emp-042", "idempotencyKey": "batch-mar-2026-emp-042" },
{ "recipientPhone": "+573001234567", "amountUsd": "180.00", "reference": "emp-091", "idempotencyKey": "batch-mar-2026-emp-091" },
{ "recipientEmail": "worker@example.com", "amountUsd": "320.00", "reference": "emp-103", "idempotencyKey": "batch-mar-2026-emp-103" }
],
"batchReference": "payroll-march-2026",
"note": "March salary payment"
}Read, List, Cancel
GET /v1/disbursements/:idGET /v1/disbursements?status=<status>&reference=<ref>&batchId=<id>&limit=25&after=<cursor>DELETE /v1/disbursements/:id(only while status ispending)
Status Reference
| status | meaning |
|---|---|
| pending | Created, recipient hasn't claimed |
| claimed | Recipient started claim flow |
| processing | Payout in process |
| delivered | Funds delivered |
| failed | Delivery failed, funds returned |
| expired | Not claimed in 30 days, funds returned |
| cancelled | Cancelled before claim, funds returned |
Recipients API
POST /v1/recipientsGET /v1/recipients/:idGET /v1/recipients/by-phone/:phoneGET /v1/recipients/by-external-id/:externalIdGET /v1/recipients?limit=25&after=<cursor>