How to accept USDT payments on your website
Choose the USDT network and token, connect a receiving address for your website, show exact payment details, and distinguish a sent transfer from a paid order.
Updated:
To accept USDT on your website, prepare a receiving address on the selected network, connect it to the appropriate Cryptanio service, and show the buyer the details for their specific payment. For a one-off payment, you can publish a payment link. A store that tracks orders automatically is better served by a separate invoice for each purchase.
This guide focuses on USDT: how to distinguish the network, token, and pricing currency, then verify the receipt correctly. The general website integration process is covered in a separate guide.
First decide which version of USDT you accept
USDT exists on multiple blockchains. A “Pay with USDT” label is therefore not enough: the network must also be clear. The same address format and ticker in two applications do not prove that the transfer is compatible.
For your chosen option, check all three conditions:
- the recipient's wallet supports USDT on that network and provides a suitable receiving address;
- Cryptanio allows that network and asset pair in the required project service;
- the sender's wallet or service can send that specific version of USDT.
Check the token identifier against Tether's official directory, rather than relying only on its name and logo. The directory includes historical information about discontinued support: an old section does not mean the protocol is still supported. Availability in Cryptanio must be checked separately. The directory was checked on November 14, 2026.
Prepare the address and connect the correct asset
In the dashboard, select your website's project with an active Payments service for invoices or Links for payment links. Add a public receiving address or select it from the address book, then connect it to the chosen service. Saving an entry in the book alone does not enable that service to receive payments.
In the address usage settings, check the “Asset” field. For USDT, it must identify the supported token on the selected network. An empty field means the native coin, rather than USDT. Supported names such as USDT are resolved through the service's catalog; when specifying a contract or mint, use the exact identifier for that network. Do not enter a token address from a different network.
This connection does not require a seed phrase or a private key that allows funds to be spent. Check that the address belongs to your wallet and that you will be able to manage the received USDT yourself.
Choose a link or an invoice
If your website presents a service and you confirm payments manually, open “Payment links” and click “New payment link.” Set a fixed amount and keep the required USDT option among the available payment methods. Publish the resulting permanent link on your website. The project must have available addresses connected specifically to Links.
For an automated store, create invoices through API v1 on your server. With a preselected asset, supply project, chain, asset, and a string amount in USDT units. The order price in dollars and the expected cryptocurrency amount serve different purposes: a USD quote does not mean accepting dollars or exchanging the tokens received.
Store the relationship between the order and invoice ID. Use a unique Idempotency-Key for a new operation, and keep the original one when retrying the same request after a failure. The secret API key must stay on your server.
Show payment details without rounding or substitution
The buyer needs the network, asset, address, exact amount, and payment deadline from the current page or invoice response. Include any required memo, destination tag, or other additional payment details. For the QR code, use the returned payment_uri when available: do not rebuild it from the address alone or drop additional payment information.
Do not replace the exact amount with a rounded storefront price. Do not promise that USDC or another token will be accepted instead of USDT because of a similar value. When changing payment methods, the buyer must use the current details of their attempt, rather than a previously saved address.
Separately check the USDT transfer fee: which asset the wallet needs to pay the fee and how much the seller will actually receive. The fee must not silently reduce the amount expected for the order.
Verify payment through the invoice
A screenshot, a buyer's message, and a detected transaction do not confirm that an order is fully paid. For automatic processing, check the invoice's current status: success is paid. An underpayment, partial payment, overpayment, or late transfer may require a separate decision.
Your server can receive a signed webhook and verify the result through the API, or check the status through the API without a webhook. A repeated event or check must not deliver the product twice. If you need a notification handler, use the webhook guide.
What to check before the first order
Open the payment flow as a buyer and check the network, asset, and payment details. When testing with a real transfer, account for fees and use your own funds: opening the page alone does not verify receipt.
If the transfer has been sent but the order remains unpaid, save the TXID, then check the network, exact token, amount received, and confirmations. The unpaid-order guide explains how to investigate underpayments and website errors.