Skip to main content
GET

Intro

Returns everything you need to know about one sub-merchant in your marketplace — profile, commission, payout readiness, KYC status, and product count — in a single call.

Context

This is the detail view in the merchant lifecycle: use List Merchants to find a merchant_id, then call this endpoint for the full picture, or Update Merchant / Remove Merchant to change or suspend the relationship. The payout.charge_eligible field here is the same check Create Charge runs before accepting a marketplace charge for this merchant — check it here first rather than discovering it via a failed charge.

Hows

Path Parameters

string
required
The ID of the sub-merchant to retrieve.

Response

payout.details.account_number and, for international transfers, the Stripe account identifier are returned unmasked — this is the real bank account number / account ID, not a redacted placeholder. Handle this response as sensitive data: avoid logging it in plaintext or surfacing it directly in client-facing UI.

Response Fields

profile

marketplace

payout

payout.details (Bank Transfer — NG, GH, ZA, KE)
payout.details (International Transfer — US, GB, etc.)
The bank fields on the international shape (bank_name, last4, country, currency, routing_number, account_holder_name) are fetched live from Stripe when a connected account exists, and are omitted if that lookup fails or no bank is on file yet.

kyc

kyc.verification_status values

settings

stats

Full setup flow

Before a sub-merchant can receive charges, complete the following steps:
For local bank countries (NG, GH, ZA, KE), submitting KYC with full bank details can auto-verify payout in one step — no separate payout setup call needed if kyc.verification_status comes back as kyc_approved and payout.charge_eligible is already true.

Error Codes

Whys

charge_eligible is deliberately separate from status and payout_ready because “linked to the marketplace” and “KYC approved” are each necessary but not sufficient for “can actually receive money right now.” A merchant can have an active relationship and approved KYC and still be missing the real-time payout account (a local transfer account for NGN, Stripe connected account for international) that a charge actually settles into. Exposing one boolean that mirrors the exact check Create Charge runs means you can validate readiness before attempting a charge instead of parsing a payment failure to figure out why it was blocked. KYC status and payout status are read from the same underlying KYC submission record rather than two independently-updated fields, so they can’t drift out of sync with each other.

Why nots

This endpoint does not let you modify anything — it’s read-only. Use Update Merchant for profile/commission changes, the KYC endpoints for identity verification, and the payout endpoints for bank/Stripe configuration. It does not mask sensitive payout details (account numbers, Stripe account IDs) — treat the response accordingly in your own logging and UI. settlement_currency reflects the currency locked by the merchant’s KYC submission, not a currency you can set directly through this or the merchant-update endpoint.