How to accept USDT payments online
Learn how to accept Tether (USDT) payments safely: choose the right network, create invoices, confirm payments, handle fees, and reconcile orders.
Why businesses accept USDT
Tether (USDT) is a stablecoin designed to track the value of the US dollar. Customers often use it when they already hold crypto but do not want the price movement of assets such as Bitcoin or Ether during checkout. For an online business, a stable unit can make product pricing, invoice expiry, and payment reconciliation easier to understand.
Accepting USDT is still not the same as receiving a bank-card dollar payment. USDT exists as a token on several blockchains, each with its own wallet format, fees, confirmation behavior, and operational risks. The merchant also needs a process for custody, refunds, bookkeeping, compliance, and eventual settlement or withdrawal.
A payment gateway packages those steps into an invoice workflow. BluPay creates the customer-facing payment request, identifies the selected asset and network, watches for a transaction, and sends the final status to your website through a signed webhook. Merchants can use payment links, invoices, the API, a payment button, POS, or the WooCommerce plugin.
Choose the USDT network before showing an address
“Pay with USDT” is incomplete unless the checkout also names the network. USDT on Tron is a different token rail from USDT on Ethereum or BNB Smart Chain. A customer who sends on the wrong network may lose access to the funds, even when the address looks valid. Never assume the wallet will infer the intended chain.
BluPay currently lists USDT on these networks, depending on the merchant shop configuration:
- Tron (TRC20): commonly selected for USDT transfers and represented explicitly as TRC20 in checkout.
- Ethereum (ERC20): USDT on Ethereum, where the customer needs ETH to pay the network transaction fee from a self-custodied wallet.
- BNB Smart Chain (BEP20): USDT on BNB Smart Chain, where BNB is typically used for the network fee.
Build an invoice-based USDT payment flow
Create a new invoice for each order instead of publishing one permanent wallet address. A unique invoice ties the expected amount, fiat currency, exchange-rate window, enabled networks, order reference, and callback URLs to one purchase. It also prevents the merchant from guessing which customer sent a transfer to a shared address.
- Create the order in your commerce system and keep it in a pending-payment state.
- Create a BluPay invoice server-side using a shop-scoped API key. Include the amount, currency, order reference, return URL, and webhook URL.
- Redirect the customer to the returned hosted invoice link.
- Let the customer select USDT and one of the enabled networks. The checkout presents the exact payment instructions.
- Wait for BluPay to detect and confirm the blockchain transaction.
- Use the signed webhook—not the browser redirect—to mark the order as paid.
Create invoices from your backend. An API key embedded in browser JavaScript can be copied and abused. Use an idempotency key when creating an invoice so a retry caused by a timeout does not produce multiple active payment requests for one order. The BluPay API documentation covers invoice creation and status fields.
Confirm the payment before fulfilment
Seeing a transaction in a wallet or block explorer does not automatically mean the order is ready. A transaction may be detected before it reaches the confirmation policy for that network. It may also be for the wrong token, amount, address, or network. Fulfil only after the invoice status sent by the gateway reaches the paid state your integration expects.
Webhook handlers should verify the HMAC signature using the raw request body, check that the timestamp falls within an accepted window, and reject events without the required headers. Save the event identifier and make processing idempotent because reliable webhook delivery commonly includes retries. Return a successful HTTP response after the event is safely recorded so the provider does not retry unnecessarily.
The customer’s return to your success page is useful for experience but not for security. A user can close the tab, lose connectivity, or open a crafted URL. The server-to-server webhook is what should update inventory, trigger fulfilment, send a receipt, or grant digital access.
Explain USDT fees before checkout
There are normally two different costs: the gateway service fee and the blockchain network fee. BluPay lists a flat 1% service fee on paid invoices, with network fees passed through at cost. The shop can decide whether these are added for the customer or deducted from the merchant settlement balance.
Show customers the final crypto amount they must send. Do not ask them to estimate and subtract a wallet withdrawal fee themselves; receiving less than the invoice amount can create an underpayment. If the customer pays from a centralized exchange, the exchange may charge its own withdrawal fee and may delay the transfer independently of your payment gateway.
Network costs and congestion vary. Avoid marketing a fixed on-chain fee unless it is actually guaranteed for that invoice. BluPay’s pricing page separates the gateway charge from network cost and explains the customer-versus-merchant fee setting.
Plan refunds, support, and reconciliation
Blockchain payments do not have the card network’s automatic chargeback mechanism, but merchants still need a clear refund policy. Validate the original order, refund amount, destination token, network, and address. A refund is a new outbound transfer, so sending it to the wrong network or address can be irreversible. For high-value refunds, consider a second-person approval step.
For reconciliation, retain the merchant order ID, invoice ID, quoted fiat amount, crypto amount, token, network, transaction hash, payment timestamps, gateway and network fees, and settlement entry. Those records make it possible to match a blockchain payment to the customer order and explain balance changes later.
Stablecoins also carry issuer, custody, sanctions, and jurisdiction-specific regulatory risks. Publish accurate terms and privacy disclosures, collect only the customer data needed for the payment, and obtain legal or tax advice for the markets where you operate. A “stable” price target does not eliminate operational or legal risk.
Frequently asked questions
What is the easiest way for a business to accept USDT?
A hosted USDT payment gateway is usually the quickest option because it creates a unique invoice, shows the correct network and address, monitors confirmations, and notifies the merchant system when payment completes.
Which USDT network should a merchant support?
Support the networks your customers already use and make the network explicit at every step. BluPay currently offers USDT on Tron (TRC20), Ethereum (ERC20), and BNB Smart Chain (BEP20), subject to shop configuration.
Can USDT payments be reversed?
A confirmed blockchain transfer cannot be reversed like a card chargeback. A merchant can still issue a separate refund transfer after validating the order and the customer’s destination address.
Is accepting USDT the same as accepting dollars?
No. USDT is a crypto token designed to track the US dollar, but it is not a bank deposit or legal tender in every jurisdiction. Businesses must account for custody, issuer, network, compliance, and local tax risks.
Ready to accept crypto?
Create a BluPay shop, test in sandbox, and move to production when your flow is ready.