Skip to main content
A checkout session is a payment intent created from your backend. You get a hosted checkout URL, redirect the customer, and receive a webhook on settlement. Use checkout sessions when you have a developer and want payments embedded in your existing app.

Flow

1

Backend creates the session

POST to /api/merchant/checkout with the USDC amount. Receive checkout_url + session_id.
2

Redirect the customer

Send them to checkout_url. The page shows your business name, the amount, and a deposit address.
3

Customer sends USDC or USDT

Any of 19 USDC chains or 14 USDT chains. Same address.
4

Minisend normalises and settles

USDC on non-Base → CCTP bridge. USDT → swap to USDC on Base (30–50s). Then conversion to local currency, then payout.
5

You receive the result

Webhook on completed, failed, or expired. Or poll the status endpoint at any time.
Customers paying in KES can also choose M-Pesa on the checkout page. The payment prompt includes the 1% fee, and the equivalent USDC is credited to your wallet when the payment completes.

Create a session

POST https://merchant.minisend.xyz/api/merchant/checkout Auth: Authorization: Bearer ms_live_...

Request fields

Response (201)

Sessions expire after 30 minutes. Create them at the moment of checkout, not earlier.

Using external_id

Pass your order ID as external_id when you create the session. Minisend echoes it back in every webhook so you can reconcile without maintaining a session-to-order mapping.

Check session status

GET https://merchant.minisend.xyz/api/merchant/checkout/{session_id} — no auth.

Status values

Full example

See Webhook verification for the signature check.