Marketplace
Setup Merchant Payout
Configure payout settings for a sub-merchant so they can receive funds.
POST
Intro
Configures how a sub-merchant gets paid — local bank transfer or Stripe Connect, depending on their country — and is the step that unlockscharge_eligible for that merchant.
Context
This sits alongside KYC in the onboarding flow, not after it: for African markets, the bank details you send here can independently make a merchant charge-eligible even before (or instead of) sending bank details through Submit KYC — the two write to the same underlying verification record. For everywhere else, this endpoint is what actually creates the Stripe Connect account and starts onboarding.Until payout is configured (and, for African merchants, approved) or Stripe onboarding is complete, any charge attempt using this merchant’s
sub_merchant_id is blocked. Check payout.charge_eligible on Get Merchant Details to confirm readiness before charging.Hows
Path parameters
string
required
The ID of the sub-merchant to configure payout for.
Request body
string
required
2-letter ISO country code (e.g.,
US, NG, GB). Determines which payout rail is used and the merchant’s settlement currency.For NG, GH, ZA, KE — local bank transfer
string
required
Bank name. For
NG specifically, this must exactly match a name from Get Supported Payout Banks — Khaime resolves it against that list to wire up the transfer rail.string
required
Bank account number.
string
required
Account holder name.
For everywhere else — Stripe Connect
string
required
Merchant’s email address, used to create their Stripe Connect account.
string
required
Where the merchant is redirected after completing (or exiting) Stripe’s onboarding flow. Stripe uses this for both outcomes.
Response — African countries (immediate)
Response — everywhere else (onboarding required)
Country → currency mapping
How funds are split at charge time
Once payout is configured, every charge made with this merchant’ssub_merchant_id is split automatically:
No manual disbursement step is needed; the split happens in real time as the payment clears.
Checking readiness before charging
- NGN/African merchants:
charge_eligibleistrueas soon as this endpoint returnspayout_ready: true, no further action needed. - International merchants:
charge_eligiblebecomestrueonly once the merchant completes Stripe onboarding viaonboarding_url. Poll Get Merchant Details until it flips.
Error cases
Whys
Country decides the rail, not a separate flag. African markets settle over local bank transfer rails that Khaime already integrates with directly (so setup is synchronous); everywhere else routes through Stripe Connect, which owns bank verification and payout compliance for those geographies. Branching oncountry avoids asking partners to know which underlying rail a given country uses.
NGN specifically validates the bank name against a fixed list. Khaime resolves the settlement bank against its own supported-institution list (rather than accepting any free-text bank name) so it can pick the correct transfer rail per bank at approval time, instead of failing silently at payout time.
Immediate approval for African bank setups. Unlike Stripe Connect’s multi-step hosted flow, a local bank account paired with an already-verified business identity doesn’t need an additional onboarding round trip — so payout_ready can be true in the same response.
Why nots
- Not for merchants who already have payout configured. Calling this a second time returns
Payout is already set up for this merchant— use Update Merchant Payout to change bank details afterward. - Doesn’t verify identity. This endpoint is about payout mechanics (where money goes), not who the merchant is — that’s Submit KYC’s job, and for NGN specifically,
charge_eligiblestill requires an approved KYC submission in addition to bank details. - Not a way to change country after the fact. If a merchant’s country changes (e.g., they relocate), this endpoint doesn’t support switching rails on an already-configured account — contact support.
Next Steps
Oncecharge_eligible is true:
- Process charges on behalf of the merchant using the Create Charge endpoint with
sub_merchant_id - View the merchant’s products using List Merchant Products
