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/:id
  • GET /v1/disbursements?status=<status>&reference=<ref>&batchId=<id>&limit=25&after=<cursor>
  • DELETE /v1/disbursements/:id (only while status is pending)

Status Reference

statusmeaning
pendingCreated, recipient hasn't claimed
claimedRecipient started claim flow
processingPayout in process
deliveredFunds delivered
failedDelivery failed, funds returned
expiredNot claimed in 30 days, funds returned
cancelledCancelled before claim, funds returned

Recipients API

  • POST /v1/recipients
  • GET /v1/recipients/:id
  • GET /v1/recipients/by-phone/:phone
  • GET /v1/recipients/by-external-id/:externalId
  • GET /v1/recipients?limit=25&after=<cursor>
Decaf API | Disbursements | Decaf