Skip to main content
PATCH

Intro

Updates bank account details for a sub-merchant that already has payout configured, or issues a fresh Stripe onboarding session for international merchants who need to change their details.

Context

This is the maintenance counterpart to Setup Merchant Payout — use Setup for the first configuration, Update afterward. It’s the endpoint you reach for when a merchant changes banks, corrects an account number, or needs to redo Stripe onboarding without going through the create-account flow again.

Hows

Path parameters

string
required
The ID of the sub-merchant to update payout for.

Request body — NG, GH, ZA, KE

Provide any subset of the bank fields — at least one is required.
string
New bank name. Must match a name from Get Supported Payout Banks.
string
New bank account number.
string
New account holder name.

Request body — everywhere else

string
required
Where the merchant is redirected after completing (or exiting) a fresh round of Stripe onboarding.
callback_url is required for non-African countries — without it, the merchant has no way back to your platform after updating their Stripe details.

Response — African countries

Bank details update immediately:
This response confirms the update succeeded and returns payout_ready/settlement_currency/country — it does not echo back the new bank name or account number. Check Get Merchant Details if you need to confirm the values that were stored.

Response — everywhere else

Returns a fresh Stripe onboarding session for the merchant to update their own details:
For international merchants, bank accounts and identity details are managed through Stripe’s hosted flow — this endpoint can only hand you a new session for the merchant to update their own information there.

Error cases

Whys

PATCH semantics for African bank details, session-reissue for Stripe. Local bank details are just data Khaime stores directly, so updating them is a straightforward partial update. Stripe-managed accounts don’t expose a “just change the bank account” API in the same way — the merchant has to go back through Stripe’s flow — so the endpoint’s only lever there is generating a new onboarding session. Requires payout to already exist. Update assumes there’s something to update. Splitting first-time setup (Setup Merchant Payout) from maintenance keeps each endpoint’s validation focused — setup can assume nothing exists yet, update can assume something does.

Why nots

  • Not for first-time setup. If payout hasn’t been configured yet, this returns an error pointing you at Setup Merchant Payout.
  • Can’t change country. There’s no field to move a merchant from a local bank rail to Stripe Connect (or vice versa) — that requires a fresh setup and, likely, a conversation with support.
  • Doesn’t re-verify KYC. Changing bank details doesn’t reset or re-trigger identity verification — if the merchant’s KYC was already approved, it stays approved.
  • Doesn’t return the values you just set. For African merchants, confirm the new bank details landed correctly via Get Merchant Details rather than trusting the update response body.