Skip to main content
GET

Intro

Returns a sub-merchant’s current KYC verification status and latest submission details — whether they can accept payments and receive payouts right now — for both Khaime KYC (African markets) and Stripe Connect (everywhere else).

Context

This is the read side of the KYC lifecycle: call it after Submit KYC to see the outcome, poll it while a merchant is mid-onboarding, and check it before deciding whether to send traffic to Resubmit KYC. It’s also the cheapest way to confirm a merchant is ready before you attempt a charge with their sub_merchant_id.

Hows

Path parameters

number
required
The ID of the sub-merchant.

Response — Khaime KYC merchant

Response — Stripe Connect merchant

Response fields

verification_status values

khaime_submission object (African markets)

Present when the merchant is on Khaime KYC (NG, GH, ZA, KE).
This status endpoint returns a smaller, summary view — it does not echo back legal_name, id_country, or bank account details. If you need those, they’re in the response from Submit KYC or Resubmit KYC, or from Get Merchant Details.

stripe_connect object (non-African markets)

Present when the merchant is on Stripe Connect.

Determining readiness

That single check is provider-agnostic and is the one to use before attempting a charge. The provider-specific objects (khaime_submission, stripe_connect) are for showing merchants and your own team more detail — you shouldn’t need to branch on provider just to decide if a merchant is chargeable.

Error cases

Whys

A single normalized status on top of two providers’ native statuses. Khaime KYC and Stripe Connect model verification completely differently internally (a review queue status vs. charges_enabled/payouts_enabled flags plus outstanding requirements). Rather than making you learn both models, the endpoint reduces both down to the same handful of status values and two booleans you can act on immediately. verification_status kept alongside status. It predates the normalized status field and is retained so existing integrations built against the kyc_-prefixed values keep working.

Why nots

  • Not a KYC submission or update endpoint. This is read-only — use Submit KYC or Resubmit KYC to change anything.
  • Doesn’t return bank account details. For bank details on file, use Get Merchant Details or the response from the submit/resubmit endpoints.
  • Not a live poll of Stripe. The Stripe fields reflect the last state Khaime received via webhook (or, occasionally, an on-demand refresh) — not necessarily this exact second’s state on Stripe’s side. For most integrations the lag is immaterial, but don’t treat this as a real-time Stripe API proxy.