Taking stablecoin payments looks simple: show an address, wait for the money. Doing it reliably for thousands of customers takes a little more structure. This is the setup we recommend.
The fastest path: hosted checkouts
If you don't need your own payment screen, use a checkout. Create one per order with an amount and your externalId, and redirect the customer to its URL. The payer picks a network, pays to a fresh address, and you get a webhook when it's paid, underpaid or expired. Everything below is done for you.
Build it yourself when you want your own screen. Here's how.
Wallet layout
| Wallet | Type | Purpose |
|---|---|---|
| One per paying customer | user | Receives payments; the same address every time for that customer |
| Settlement | treasury | Collects all sweeps; kept off the API for sending |
| Refunds | operational | A small float for refunds, and the gas wallet |
Per customer or per order? Per customer is simpler: one wallet, reused, and you match payments to open orders. If customers pay many invoices at once, or amounts are ambiguous, create a wallet per invoice instead. Wallets are free to create.
Showing the payment details
Always show the network name next to the address and QR code, along with the exact amount. Paying USDT on the wrong network is the most common customer mistake, and it's avoidable with clear labelling.
Matching payments to orders
Mark an order paid only on deposit.confirmed. Then:
- Exact amount: mark it paid.
- Less than due: mark it underpaid and ask for the rest, or refund.
- More than due, or no open order: send it to a review queue.
Never guess. A review queue costs minutes; a wrong credit costs money.
Settlement
Sweeps collect funds from customer wallets into your settlement wallet. Hourly suits most volumes, daily if payments are small. Set a minimum, for example $50, so you never pay more in network fees than you sweep. Turn on an alert for when the gas wallet runs low or a sweep fails.
Refunds under approval
Refunds are payouts from the refunds wallet, so your policies apply. A typical pair of rules: small refunds made by your API key go through automatically, and unusual refund volume in a day needs a person to approve.
Before going live
- Network name and coin shown next to every address and QR code
- Orders marked paid only on
deposit.confirmed - A review queue for under-, over- and unmatched payments
- A sweep minimum so fees never exceed what's swept
- A funded gas wallet on every network you accept, with a low-balance alert
- Customer screening and a refund policy in place
The full guide, with code, is in Payment acceptance.