Skip to main content

How to Accept USDT Payments (ERC20, Solana, Layer 2s)

· 6 min read
OrcaRail
Crypto payment rails for web2 apps

A USDT payment gateway lets customers pay you in Tether (USDT), the most widely held stablecoin. One USDT is meant to track one US dollar, so you get the reach of crypto without pricing your products in a volatile coin.

The catch is that USDT lives on many blockchains. "Send USDT" can mean Ethereum (ERC20), Solana, BNB Chain, Tron (TRC20), or a dozen layer-2 chains. This guide explains which networks matter, what can go wrong, and how to accept USDT on your website with OrcaRail.

What is a USDT payment gateway​

A USDT payment gateway does the work between your checkout and the blockchain. For each order it:

  1. Turns the order amount into a USDT amount.
  2. Shows the customer a payment page with an address or a wallet connection, on a specific network.
  3. Watches that network until the transfer is confirmed.
  4. Tells your backend the order is paid, usually with a webhook.
  5. Sends the funds to your own wallet address.

Without a gateway you would share one wallet address and match incoming transfers to orders by hand. That breaks as soon as two customers send the same amount, or one sends on the wrong chain.

Which USDT network should you accept​

USDT is issued on many networks, and the same symbol on two networks is two different tokens. A wallet can't receive USDT sent on a chain it doesn't watch.

When we checked the OrcaRail live API on 29 October 2026, USDT was listed on 30 of the mainnet networks OrcaRail supports, including:

NetworkToken standardNotes
EthereumERC20Widest wallet support; the highest network fees
SolanaSPLFast and low cost
BNB ChainBEP20Common on exchange withdrawals
Arbitrum, OptimismERC20 on L2Ethereum-compatible wallets, lower fees
Polygon, AvalancheERC20-styleLow fees

The full, current list is on Networks and tokens, loaded live from the API.

Tron (TRC20) is not supported yet. OrcaRail supports EVM chains, Solana and Bitcoin today. A customer who holds USDT on Tron needs to move it to a supported network first, for example by withdrawing from their exchange on Ethereum, BNB Chain, Solana or a layer-2 chain.

A practical rule: accept the networks your customers already hold USDT on. Many customers keep USDT on the exchange they bought it from, and exchanges usually offer several withdrawal networks. With OrcaRail you don't have to guess, because the customer picks the network on the pay page (see below).

Why wrong-network payments happen and how to avoid them​

Most failed USDT payments are not fraud. They are a customer sending USDT on BNB Chain to an address that expects Ethereum, or sending a little less than the amount because the exchange took a withdrawal fee.

To avoid them:

  • Show one network per payment address. Never print a bare address without the network name next to it.
  • Let the customer choose the network first, then show the address and amount for that network.
  • Quote the exact amount, including any fees the customer must cover, so the merchant still receives the full price.
  • Set an expiry on each payment so stale quotes can't be paid at an old rate.

OrcaRail's hosted pay page does all four. Payment intents also take an optional expires_at.

How to accept USDT with OrcaRail​

  1. Create a sandbox. Sign up and create a free sandbox organization with an ak_test_ API key. Sandboxes run on testnets only.
  2. Pick what you receive. Call GET /payments/networks and GET /payments/networks/:id/tokens, and choose the tokenId and networkId you want to receive, for example USDT on Arbitrum or USDC on Base.
  3. Set your withdrawal addresses for each chain you receive on, in Withdrawal Settings or per payment with withdrawal_addresses. See Withdrawal strategy.
  4. Create and confirm a payment intent, then redirect the customer to the hosted pay page. There they can pay in USDT on the network they hold, or in another token.
  5. Handle the webhook. Mark the order paid on payment_intent.completed.
  6. Go live. Switch to a live organization and an ak_live_ key.

No code? The WooCommerce plugin adds OrcaRail checkout to a WordPress store; you set the token and network you receive, such as USDT on Arbitrum, in its settings. For custom apps, the Node.js and PHP SDKs wrap the same API. Start at Getting started.

If the customer pays in a different token or network than the one you receive, the quote adds a Relay bridge fee, paid by the customer. You still receive the full amount. If you sell subscriptions, see recurring crypto payments and OrcaRail subscriptions.

What USDT payments cost​

There are two costs to compare between providers:

  • Network fee. Paid by the sender to the blockchain. It depends on the network and its load. Ethereum mainnet is usually the most expensive; Solana and layer-2 chains are cheaper.
  • Gateway fee. OrcaRail's hosted fee is 0.5% per completed transaction after the first 1,000 free transactions, and the self-hosted software is free (pricing). Quote fees are explained in Fees.

To compare OrcaRail with other gateways, see our list of crypto payment gateways.

FAQ​

Can I accept USDT TRC20?​

Not yet. USDT TRC20 is USDT on the Tron blockchain, and OrcaRail supports EVM chains, Solana and Bitcoin today. It is the same dollar-pegged token as USDT on Ethereum (ERC20), but on a different network, so it can't be sent to an Ethereum address. Customers can withdraw USDT from their exchange on a supported network and pay from there.

Can I receive USDC when the customer pays in USDT?​

Yes. You choose the token and network you receive when you create the payment intent. If the customer pays with something else, Relay converts it and the quote shows the cost before they pay.

Is there a USDT payment gateway API?​

Yes. OrcaRail's REST API creates payment intents, returns quotes, and sends webhooks. See the API reference.

Can I accept USDT on WooCommerce?​

Yes. Install the OrcaRail WooCommerce plugin and enter the token and network IDs for the USDT you want to receive. It also has a test mode that runs on testnets.

How do I test USDT payments?​

Use a sandbox organization. You can get test tokens from testnet faucets or click Simulate payment in the dashboard. See Simulate payments.


Start in the sandbox · Networks and tokens · Pricing