Live in 6+ countries across AfricaSee coverage

Start collecting and disbursing payments in 5 minutes.

Plug us into your app or website. Collect from across Africa and the world, and pay anyone out across the continent.

  • collect/charge
  • collect/checkout
  • disburse
  • webhooks
  • providers
Both directions

Money in, and money back out.

The same rail, the same settlement, the same webhook. What changes is which way it runs.

POST /v1/collect/chargePOST /v1/collect/checkout

Collect

Push a prompt straight to a number you already have, or hand the payer a hosted page and let them choose. The money settles the same way either way.

You collect the number, or nothing at all.

POST /v1/disburse

Disburse

Settle a seller, pay a supplier, send a refund. You name the network and the number exactly as you do for a charge — the endpoint is what changes.

Needs a key carrying the Disburse permission.

The request

A payment is one request.

Flat body, no nesting, nothing inferred. You name the country, the network and the number — we never guess which, because a guessed network sends a prompt nobody can answer.

202
Returns immediately. The prompt is on its way.
collect.succeeded
Arrives at your webhook the moment it clears.
charge.sh
curl -X POST https://connect.tchokopay.com/v1/collect/charge \
  -H "Authorization: Bearer tchoko_live_..." \
  -H "Idempotency-Key: order-4821" \
  -d '{
    "amount": 5000,
    "currency": "XAF",
    "country": "CM",
    "provider": "mtn_cm",
    "phone": "670000000"
  }'
Disbursing

The same body, the other direction.

Settle a seller, pay a supplier, send a refund. You name the network and the number exactly as you do for a charge — the endpoint is what changes.

POST /v1/disburse
Money leaves your balance for any number on a supported network.
disburse.succeeded
Fires when the recipient is credited, not when we accept the request.
disburse.sh
curl -X POST https://connect.tchokopay.com/v1/disburse \
  -H "Authorization: Bearer tchoko_live_..." \
  -H "Idempotency-Key: payout-4417" \
  -d '{
    "amount": 25000,
    "currency": "XAF",
    "country": "CM",
    "provider": "mtn_cm",
    "phone": "670000000"
  }'
What you get
Idempotency-Key

A retry is never a second payment

Send the same key again and you get the original back — not a second prompt on your customer’s phone, and never a second disbursement.

X-TchokoPay-Signature

Webhooks you can trust

Every delivery is HMAC-signed with the timestamp bound in, so a captured payload cannot be replayed at you later.

GET /v1/providers

Nothing to hardcode

Ask which countries, networks and amounts are live. Your integration keeps working as we open new markets.

scopes

A key that cannot spend

Keys carry fixed permissions. The one in your checkout collects and nothing else — it can never move money out.

Your first payment is about five minutes away.

Generate a key from your dashboard, then follow the quickstart.