Skip to content

Paying sellers

Automatic payouts and the reserve for Lite merchants, and paying many sellers at once for Relay.

How a seller gets their money depends on the connection's mode. A direct merchant runs their own account and withdraws from it themselves; nothing on this page applies to them. A lite merchant has no dashboard to withdraw from, so Wajub pays them. A relay marketplace collects everything and pays its sellers from its own balance.

Lite: Wajub pays the merchant

A Lite merchant is paid on the cadence you set on the connection. Each payout is a sweep: what is available on their balance, less the reserve, less room for the payout's own fee.

payout_scheduleWhat happens
manual (default)Nothing, until you ask with POST /accounts/{id}/payouts
dailyPaid once a day
weeklyPaid once a week
monthlyPaid once a month

Set it with POST /accounts or PUT /accounts/{id} at any time. Unlike capabilities and pricing it changes outright: when a merchant gets their own money takes nothing from them. It only exists on a lite account: sending it for a direct or relay account is refused with 400, since Wajub pays nobody there.

Pay a Lite merchant now
curl -X POST https://api.wajub.com/accounts/acc_7Yh2MpL4tRb3nP8sZcXv/payouts \
  -H "Authorization: sk.xxxxxxxxxxxxxxxx…"
You getWhen
200 and the transferThe payout was sent
400 Payouts are only sent in live mode.You called it with a sandbox key
409 There is nothing to pay out yet.The sweep is below payout_min_amount, or below 1 000 in the merchant's currency when the connection has none
422 with a reasonThe connection is not lite, is not active, has no merchant yet or no destination declared, or a payout limit is reached

A connection is swept at most once a day, whoever asks. A second call the same day sends nothing and returns that day's sweep, whatever its status: check transfer.status, it can be failed, and the next sweep is the next day's. Only the sweeps count: a payout you sent yourself with X-Sync is never returned here. The amount is never yours to choose: it is what the merchant can be paid.

Why the payout is a little under the balance

A payout's fee is held alongside its amount, so sweeping the entire balance would leave the payout short of its own fee. The sweep sends the largest amount whose fee still fits. A merchant paid into another Wajub account pays no fee, and is swept in full. Only the balance in the merchant's own currency is swept; a balance they hold in another currency waits for them to withdraw it.

Every payout goes to the destination the merchant declared in their portal, and passes the same checks as any other transfer, the cooling-off period on a destination that was just declared or changed included.

The reserve

A Lite merchant is paid without asking, so money can leave while the buyer can still be refunded. The reserve keeps a slice of every sale back until that window closes: 10% for 30 days by default.

ThenWhat happens to the reserve
A payout runsIt sends everything except what is held
A sale is refunded, or a dispute on it lostThe refund or the loss eats into the reserve first
The window closesThat slice is released and joins the next payout

The reserve is not a charge and not a separate balance. The money stays the merchant's; the reserve only says how much of it may not leave yet. The rate and duration are set by Wajub for a connection, not by the platform.

When a merchant goes negative

If a refund or a lost dispute lands after a merchant has been paid and the reserve is not enough, their balance goes below zero. You cover it. The shortfall moves from your balance to the merchant's, the same moment the refund or the loss is processed, and is recorded against it, up to the amount it took.

When your commission cannot be taken at once

A direct merchant can collect on their own provider contracts. Those sales never touch a Wajub balance, so there is nothing to take your commission out of when they happen. It is owed instead:

ThenWhat happens
The sale happensThe commission is recorded as owed, and account.commission_receivable_recorded is sent
The sale is refundedWhat is owed is reduced by the connection's commission_refund_policy, as a commission taken would be
The merchant's Wajub balance can cover itIt is collected in full, and account.commission_receivable_collected is sent

Collection never pushes the merchant below zero: an unpaid commission waits for money to arrive. GET /accounts/{id}/commission-receivables lists what a connection owes you and totals what is still outstanding.

Relay: paying many sellers at once

A Relay marketplace collects every payment and pays its sellers from its own balance. Each seller is a beneficiary, and a payout run is one call.

A payout run
curl -X POST https://api.wajub.com/transfers/batch \
  -H "Authorization: sk.xxxxxxxxxxxxxxxx…" \
  -H "Idempotency-Key: payout-run-2026-09-30" \
  -H "Content-Type: application/json" \
  -d '{
    "transfers": [
      { "beneficiary": "ben_LRQqYvlhrgUOE225KMKU", "amount": 125000, "reference": "seller-42" },
      { "beneficiary": "ben_7Hn2Qw9Xk4Lp3Rv8Tb6MzD", "amount": 48000, "reference": "seller-43" }
    ]
  }'
RuleWhy
Up to 500 lines per callBeyond that, split the run
Idempotency-Key is requiredRetrying a run after a timeout sends only the lines that did not land
Each reference is unique in the batchEach line is deduplicated by its reference
Lines succeed or fail on their ownOne seller without a verified destination does not stop the others

The answer lists every line with accepted or rejected and the reason. Each transfer keeps your reference and the run's batch_reference, which is what ties it back to your own records.

Sellers are checked before their first payout

Wajub pays sellers you recruited, so on a Relay account each new beneficiary's wallet is matched against the name its operator has on file before it can be paid. Declare the seller's full name exactly as it appears on their wallet.

verification on the beneficiaryWhat it means
verifiedThe names match; the seller can be paid
name_mismatchThe operator knows this wallet under another name; payouts to it are refused
lookup_unavailableThe operator could not be asked; try again later

verified is true or false on every beneficiary you read. Retry a check with POST /beneficiaries/{id}/verify, after the operator was down or once you have corrected the name. Here the call is a gate, not a lookup: it answers 422 unless the result is verified, and it never returns the name the operator holds. A line in a batch that pays an unverified seller is rejected on its own, and the rest of the batch goes through.

Only on Relay accounts

An account that does not run Relay keeps creating beneficiaries that are payable at once, as it always has, and the same call only informs it. Contact Wajub if this check does not fit your marketplace.

When a paid seller owes money back

A sale is refunded after you paid the seller for it. The refund comes out of your balance, and nobody can pull money back out of a Mobile Money wallet, so the seller now owes it. Only you know which seller the order belonged to, so you declare it:

Declare what a seller owes
curl -X POST https://api.wajub.com/beneficiaries/ben_LRQqYvlhrgUOE225KMKU/receivables \
  -H "Authorization: sk.xxxxxxxxxxxxxxxx…" \
  -H "Content-Type: application/json" \
  -d '{ "amount": 12500, "reference": "order-9981-refund" }'

Declaring the same reference again returns the first debt. Wajub records it and sends beneficiary.receivable_recorded. What happens next depends on your account:

NettingWhat happens
Off (default)Nothing else. You recover it however you like, then mark it with POST /beneficiaries/{id}/receivables/{receivable}/settle
OnYour next payout run to that seller is reduced by what they owe, and beneficiary.receivable_recovered is sent

With netting on, each batch line reports recovered. A line whose payout is smaller than the debt sends nothing, answers status: recovered, and the rest stays owed. Recovering only happens in POST /transfers/batch; a single POST /transfers always sends what you asked. Ask Wajub to turn netting on for your account.

A failed line owes the debt again

If a line's payout is refused, whatever it would have recovered goes back on the debt. Retrying the run never recovers twice.

Statements

GET /beneficiaries/{id}/statement?from=2026-09-01&to=2026-09-30 returns everything paid to one seller over a period, up to a year. Totals are split into paid, in_progress and failed: a payout that failed is on the statement, but never counted as paid.

Payout velocity

Every account has an hourly ceiling on payouts, built for a merchant paying suppliers rather than for a marketplace paying two hundred sellers. Contact Wajub to have yours raised before your first run. It is set by Wajub for your account and cannot be raised through the API.

What did you think of this content?