Public developer API
POST /v1/collections
Asks a payer to approve an Africa-only mobile-money payment in CM/XAF, GH/GHS, KE/KES, RW/RWF or UG/UGX. When it completes, the amount minus the Dutch fee is credited to your wallet.
Access
A project-specific API key (Authorization: Bearer dapi_live_...) and its Business ID (X-Business-Id). Rate limited per business (120 calls a minute by default).
Requires an Idempotency-Key header.
Requires an Idempotency-Key header.
Collections use the mobile-money flow only in Cameroon (CM, XAF), Ghana (GH, GHS), Kenya (KE, KES), Rwanda (RW, RWF) and Uganda (UG, UGX). Use the matching country and currency. No named operator/network is selected by this API; the provider route handles it. Nigeria bank deposits and all other collection countries are unsupported by this endpoint.
There is no verification code: the payer simply approves the payment prompt on their phone.
The call waits up to about 20 seconds for the payer. If the payer has not approved yet, the status stays processing; a collection.received or collection.failed webhook follows.
Body
| Field | Type | Required | Description |
|---|---|---|---|
amount | number | yes | Amount to collect, in the local currency. |
currency | string | yes | Local currency matching the country, for example XAF. |
phone | string | yes | Payer mobile number in international format. |
country | string | no | CM, GH, KE, RW or UG, matching currency. Defaults to the country of the currency. |
reference | string | no | Your own unique reference (4 to 64 characters). |
description | string | no | Up to 140 characters. |
Example request
curl --request POST \
--url 'https://production.dutchapi.co/v1/collections' \
--header 'X-Business-Id: YOUR_BUSINESS_ID' \
--header 'Authorization: Bearer bsk_live_YOUR_BUSINESS_SECRET' \
--header 'Idempotency-Key: collections-0001' \
--header 'Content-Type: application/json' \
--data '{"amount":10000,"currency":"XAF","phone":"+237670000000","country":"CM","reference":"invoice-77"}'
Response 201
{
"id": "col_3b9d7e",
"object": "collection",
"kind": "collection",
"status": "processing",
"amount": 10000,
"currency": "XAF",
"fee": 200,
"description": "Collection from +237670000000",
"created_at": "2026-10-13T09:31:00.000Z",
"completed_at": null,
"failure_reason": null,
"method": "mobile_money",
"country": "CM",
"payer": "******0000"
}
Errors
| Status | error | Meaning |
|---|---|---|
| 400 | idempotency_key_required | Send an Idempotency-Key header. |
| 400 | valid_amount_required | amount must be a positive number. |
| 422 | collection_not_priced | There is no published collection rate for that country or method. |
| 403 | limits_not_set | No live limit is enabled for this currency (Dashboard, Limits & safety). |
| 423 | money_movement_paused | The kill switch is on. |
| 400 | network_not_supported | Do not send a named mobile-money network. |
| 400 | valid_phone_required | phone must be an international mobile number. |
| 422 | unsupported_collection_currency | Collections are available only in CM/XAF, GH/GHS, KE/KES, RW/RWF and UG/UGX. |
| 422 | below_minimum | The amount is below the minimum for that currency. |
| 422 | amount_below_fee | The amount is not larger than the fee. |
| 422 | collection_rejected | Dutch API could not complete the collection. |