Flow
Backend creates the session
POST to /api/merchant/checkout with the USDC amount. Receive checkout_url + session_id.Redirect the customer
Send them to
checkout_url. The page shows your business name, the amount, and a deposit address.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.
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
| Field | Type | Required | Description |
|---|---|---|---|
amount | number | Yes | USDC amount (>0). Customer pays this as USDC or USDT-equivalent. |
description | string | No | Shown on the checkout page. |
external_id | string | No | Your reference (e.g., order ID). Echoed back in webhooks. |
customer_email | string | No | For receipt purposes. |
Response (201)
Using external_id
Pass your order ID asexternal_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
| Status | Meaning |
|---|---|
pending | Waiting for the customer to send |
deposit_received | Detected on-chain; settlement initiated |
settling | Conversion + payout in progress |
completed | Payout delivered |
failed | Failed post-deposit — contact support |
expired | No deposit within 30 minutes |

