Merchants increasingly want to accept stablecoins, and their customers want to pay in them. For a payment service provider, that means taking USDT and USDC for many merchants, matching every payment to an order, and settling funds, without running a node for every network or holding keys on your servers.
What a PSP needs
- A unique address per payment or per payer, so matching is automatic.
- A clear outcome per order: paid, underpaid or expired, including payments that arrive late.
- Settlement: customer payments collected into your treasury on a schedule.
- Refunds that go out under approval, not from a script anyone can run.
Two ways to take payments
Hosted checkouts (fastest). Create a payment link for a USD amount with the order id, and send the payer to it. Valtu hosts the page: coin and network choice, exact amount, QR code, and it follows the payment to checkout.completed, checkout.underpaid or checkout.expired. Each checkout gets its own wallet, so a payment can only belong to it. Late payments within 7 days still complete. See the Next.js checkout guide.
Your own payment screen. Give each payer a permanent deposit address, show it with the network name and amount, and mark orders paid on deposit.confirmed. Good for top-ups and repeat payers. See crypto deposits with Express.
Settlement and refunds
| Wallet | Type | Role |
|---|---|---|
| Per payer or per checkout | user | Receives payments |
| Settlement | treasury | Collects all sweeps; kept off the API for sending |
| Refunds | operational | A small float for refunds; also the gas wallet |
- Sweeps collect payments into settlement hourly, or daily for small volumes, above a minimum (for example $50) so you never pay more in fees than you move.
- The gas wallet pays the network fee each token sweep needs, within a daily cap, so payers' addresses never need TRX or ETH.
- Refunds are payouts from the refunds wallet, under your policies. A typical pair: small refunds from your API key pass automatically, and unusual refund volume in a day needs a person.
Getting the details right
- Name the network next to every address. Most lost payments are a payer sending on the wrong network.
- Credit only on confirmation. A payment seen on-chain isn't final yet.
- Review queue, not guesses. Underpayments, overpayments and payments with no open order go to a person.
- Fees by network. USDC on Base or Polygon costs cents to move; USDT on Tron costs more, depending on energy. Choose which networks to offer with that in mind.
Good to know
- Supported coins and networks: the networks page. US dollar stablecoins are counted one-for-one in checkouts.
- Screening with your own provider is available for deposits and refunds. See KYT.
- The external security audit isn't done yet; see the security page. Licensing for payment services stays with you.
More in the payment acceptance guide.