Skip to main content
USDC and USDT, each on six networks, all to the same address.We pay you in KES, NGN, GHS, or UGX, through M-Pesa, Buy Goods, Paybill, mobile money, or bank transfer, depending on the currency. Set it up once in Settings.
Base, Ethereum, Polygon, Arbitrum, Optimism, and Avalanche. Both USDC and USDT work on all six, to the same address.These are the networks where we hold an address for you, so ask your customers to pay on one of them. If you need a network that isn’t on the list, talk to us. See supported networks.
  • USDC on Base is the fastest. We start paying you out straight away.
  • USDC on another network is moved to Base first. That takes a few minutes.
  • USDT on any network is converted to USDC on Base in 30 to 50 seconds.
After that, the M-Pesa, bank, or mobile money transfer takes as long as that service usually takes. When it’s done, you get a checkout.completed webhook and see completed in the dashboard.
No. Customers send stablecoins; you receive local currency. Your only interactions are the Minisend dashboard and your existing bank or mobile money account.
If nothing is paid within 30 minutes, the session expires. It shows as Expired, and you aren’t charged anything. We also send you a checkout.expired webhook.
If a customer says they paid but the session expired, ask them for the transaction hash (the ID of their transfer) and the address they sent to. Usually it went to a different address or a network we don’t support yet, and we can help you track it down.
Your own reference, such as order-4821, that you add when creating a session. We send it back in every webhook for that session, so you can match payments to your orders without keeping your own list of session IDs.It’s optional, but we recommend it if you keep order records.
It’s rare. The status changes to Failed and we send checkout.failed. Send the session_id to support.
Your customer’s money is not lost. We’ll look into it and get back to you.
Yes. Set a slug in Settings and share your payment link:
Customers visit, enter an amount, send USDC or USDT. You receive local currency.
  1. Create a session through the API with amount: 1.00.
  2. Open the checkout_url.
  3. Pay from a real wallet.
  4. Check your webhook receives checkout.completed.
  5. Check the dashboard shows Completed.
  6. Check the money reached your payout account.
There’s no test mode, so tests use real money. Keep the amount as small as you can.
The general limit is 60 requests a minute from one IP address, and endpoints that move money have their own limits per account on top. See rate limits for the details.If you keep getting 429 errors, get in touch and we’ll raise your limits.