Web Rabbit MediaDocs
Disbursements

Disbursements (payouts to third parties)

Batch payouts to drivers, vendors and couriers, with release tiers and review.

Disbursements pay money out of your settled Web Rabbit balance to third parties — drivers, couriers, vendors, restaurants, affiliates — in batches of up to 500 recipients, over mobile money or bank transfer. This is the payout rail for platforms; the split payments API decides who is owed what, and disbursements move that money.

!Switched on per business
Disbursements are off by default. An admin enables them on your business after review. Until then every call returns 403 disbursements_not_enabled. Ask us in the dashboard or by email and we will review your volumes, your recipient list and your model.

Release tiers

A disbursement is never released the moment you create it. Money leaving a balance to arbitrary recipients is the highest-risk flow we operate, so each business sits in a tier that sets how long a batch settles for and how much human review it passes through.

FieldTypeDescription
individualT+7 · reviewedSole proprietors and creators. Every batch is reviewed by a person. One batch per rolling 7 days. Minimum batch GHS 100.
businessT+3 · reviewedRegistered entities with completed business verification. Every batch is reviewed. One batch per rolling 7 days. Minimum batch GHS 50.
poweredT+1 · automaticBusinesses built and vetted end to end by Web Rabbit Media. Approved automatically, no weekly cap, minimum batch GHS 20. Still subject to holds and clawback.

The tier on your business is returned on every list call as tier, alongside disbursements_enabled. We may hold or reverse a batch at any point if activity looks like fraud, money laundering, or payouts to people your platform cannot account for.

Create a disbursement

POST/v1/disbursements
FieldTypeDescription
channelenummomo (default) or bank. One channel per batch.
referencestringYour own label for the batch, e.g. "friday-riders".
recipientsarray · required1–500 transfers. Each needs a name and an amount.
recipients[].namestring · requiredName of the person or business being paid.
recipients[].msisdnstringWallet number for channel=momo, e.g. 0244000000.
recipients[].networkenumRequired for momo: MTN · TELECEL · AT · GMONEY.
recipients[].account_numberstringAccount number for channel=bank.
recipients[].bank_codestringRequired for channel=bank.
recipients[].amountnumberGHS. Send this or amount_minor, not both.
recipients[].amount_minorintegerPesewas. Exact — preferred machine to machine.
recipients[].referencestringYour reference for this transfer. Generated if omitted.
recipients[].narrationstringOptional text shown to the recipient where the rail supports it.

Send an Idempotency-Key header (or idempotency_key in the body). A retry with the same key returns the original batch instead of paying anyone twice.

shell
curl -X POST https://api.webrabbitmedia.com/v1/disbursements \
  -H "Authorization: Bearer wr_test_..." \
  -H "Idempotency-Key: friday-riders-2026-09-11" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "momo",
    "reference": "friday-riders",
    "recipients": [
      { "reference": "driver_8814", "name": "Kwame Mensah", "msisdn": "0244000000", "network": "MTN", "amount": 120 },
      { "reference": "driver_8815", "name": "Ama Boateng", "msisdn": "0559876543", "network": "TELECEL", "amount_minor": 8500 }
    ]
  }'
201 Created
{
  "id": "94afd213-8dbe-450e-958d-53b6d8f852f8",
  "object": "disbursement",
  "status": "pending_review",
  "mode": "live",
  "channel": "momo",
  "tier": "business",
  "currency": "GHS",
  "amount": 205,
  "amount_minor": 20500,
  "fee": 3.08,
  "item_count": 2,
  "reference": "friday-riders",
  "scheduled_for": "2026-09-14T09:12:04.000Z",
  "released_at": null,
  "created_at": "2026-09-11T09:12:04.000Z",
  "recipients": [
    {
      "id": "6f1a...",
      "reference": "driver_8814",
      "status": "queued",
      "name": "Kwame Mensah",
      "account_number": "0244000000",
      "network": "MTN",
      "amount": 120,
      "amount_minor": 12000,
      "fee": 1.8
    }
  ]
}
iFees
Each transfer costs 1.5% of its amount, at least GHS 1 and at most GHS 50. You're only charged for transfers that go through, so failed transfers are free. The fee on each recipient is the fee quoted when you submitted the batch.
iWorking days only
Disbursements are released on working days only — Monday to Friday, excluding Ghana public holidays. A batch whose release date lands on a weekend or holiday moves to the next working day; scheduled_for on the batch always shows the actual release date. Batch amounts also count toward your daily and monthly payout limits, same as withdrawals.

Statuses

FieldTypeDescription
pending_reviewbatchWaiting for a person to approve it. Individual and business tiers.
approvedbatchCleared, waiting for its release date.
declinedbatchRejected on review. See decision_reason. Nothing was paid.
heldbatchPaused while we look into it. See hold_reason.
processingbatchReleased and being paid out recipient by recipient.
completedbatchEvery recipient succeeded.
partially_completedbatchSome recipients failed. Check each recipient.
failedbatchEvery recipient failed. Funds return to your balance.
cancelledbatchYou cancelled it before release.
queued / processing / succeeded / failedrecipientPer-transfer status inside the batch.

List, retrieve and cancel

GET/v1/disbursements

Newest first, in the key's mode, with opaque cursors — pass ?cursor= from next_cursor. The response also carries your tier and disbursements_enabled.

GET/v1/disbursements/{id}
POST/v1/disbursements/{id}/cancel

A batch can be cancelled any time before it is released. Once it is processing, cancellation returns an error — individual failed transfers are returned to your balance automatically.

Test mode

Test disbursements are fully simulated: no rail is contacted and no money moves. Wallet numbers ending 0000 succeed, 1111 fail, and the GHS 10 test-mode amount cap applies per recipient. Test batches skip the tier clock so you can see the whole lifecycle immediately. See Test data.

Webhook events

FieldTypeDescription
payout.queuedeventA batch was created and is awaiting review or its release date.
payout.completedeventA transfer succeeded. Sent per recipient.
payout.failedeventA transfer failed, with the mapped provider code and reason.

Events are signed exactly like every other Web Rabbit webhook — see Webhooks for verification.