# Accept USDT on Ethereum (ERC20)

> Accept USDT on Ethereum (ERC20) with CryptoLike: a payment page with amount, network and time left, credit after confirmations and a signed webhook to your server.

Source: https://cryptolike.net/coins/usdt-erc20
Updated: 2026-09-28

CryptoLike credits a USDT (ERC20) payment to your balance after 12 confirmations of the Ethereum network and reports it to your server with a signed webhook. You create the payment; the payer sends USDT from their own Ethereum wallet; CryptoLike watches the address, counts confirmations and moves the status from `pending` to `paid`.

## How a USDT (ERC20) payment works

A USDT (ERC20) payment in CryptoLike goes through four steps and three statuses: `new`, `pending` and `paid`. The payment page, the API and the webhooks show the same status string, so your order logic reads one field. The payer needs no account with CryptoLike, only an Ethereum wallet that holds USDT and some ETH for gas.

1. **You create the payment** with `POST /v1/invoices`, the [WooCommerce plugin](https://cryptolike.net/integrations/woocommerce), the [PrestaShop module](https://cryptolike.net/integrations/prestashop) or a [payment link](https://cryptolike.net/use-cases/payment-links). Status: `new`.
2. **The payer sees what to send:** the exact USDT amount, the network (Ethereum), the address with a QR code and the time left.
3. **The transfer is detected.** Status: `pending`, "Payment detected. Waiting for confirmation."
4. **The payment is confirmed.** After 12 confirmations the status is `paid`, the funds are on your balance and a signed `invoice.paid` [webhook](https://cryptolike.net/docs/webhooks) arrives.

## What sets USDT on Ethereum apart

USDT is the US-dollar stablecoin issued by Tether. The same USDT also circulates on other networks, and exchanges usually offer several of them for a withdrawal, so the payer has to pick Ethereum (ERC20) on purpose. [USDT on TRON (TRC20)](https://cryptolike.net/coins/usdt-trc20) is a separate asset in CryptoLike, with its own address and a network fee paid in TRX through energy and bandwidth instead of ETH gas; [the comparison](https://cryptolike.net/blog/usdt-trc20-vs-erc20) helps to choose. On Ethereum USDT has 6 decimal places: the API refuses a USDT amount with more, and a USD price is rounded up to six. Tether can freeze an address, and a wallet on a frozen address cannot send USDT, so a payment from it never arrives.

## What the payer should know about Ethereum

CryptoLike accepts USDT on Ethereum only from the official Tether ERC20 contract, sent to an address that starts with `0x`. The payer's wallet pays the Ethereum network fee, called gas, in ETH, so the payer needs some ETH next to the USDT. The amount on the payment page must arrive in full, on Ethereum mainnet only.

- **Address.** `0x` followed by 40 hexadecimal characters. Other EVM-compatible networks use the same format: check the network name on the page.
- **Network fee.** Gas is paid in ETH and changes with network load. A wallet with USDT and zero ETH cannot send.
- **Contract.** Only USDT of the Tether contract `0xdAC17F958D2ee523a2206206994597C13D831ec7` is credited.
- **Exact amount.** If an exchange deducts its withdrawal fee, the payment arrives short and becomes `underpaid`. Send the difference to the same address before the time runs out.
- **Network.** USDT sent on another network never reaches this payment and cannot be recovered.

## Create a USDT (ERC20) payment

To create a USDT (ERC20) payment in CryptoLike, take the `id` of the asset with `ticker` USDT and `network` eth from `GET /v1/currencies` and pass it as `coin_id` to `POST /v1/invoices`. Price it in USDT, as in the example, or in USD: then CryptoLike converts at the current rate and locks the rate for the payment's time limit.

```bash
COIN_ID=$(curl -s https://api.cryptolike.net/v1/currencies \
  | jq -r '.currencies[] | select(.ticker=="USDT" and .network=="eth") | .id')

BODY='{"amount":"250.00","currency":"USDT","coin_id":"'"$COIN_ID"'","order_id":"A-1002"}'
curl -s https://api.cryptolike.net/v1/invoices \
  -H "Content-Type: application/json" -H "Idempotency-Key: order-A-1002" \
  -H "X-API-Key: $KEY_ID" -H "X-Timestamp: $TS" -H "X-Signature: $SIG" -d "$BODY"
```

The response carries `address`, `payer_amount` and `checkout_url`: send the payer there. Signing: [API authentication](https://cryptolike.net/docs/auth); every field: [API reference](https://cryptolike.net/docs/api).

## FAQ

### How many confirmations does USDT ERC20 need?

CryptoLike credits USDT (ERC20) after 12 confirmations of the Ethereum network. The threshold is set per asset, returned in `GET /v1/currencies` and shown to the payer as progress. More on [confirmations](https://cryptolike.net/glossary/confirmations).

### What if the payer sends USDT on TRON (TRC20) instead?

TRON does not use `0x` addresses, and USDT sent on another network does not reach this payment and cannot be recovered. To let the payer choose, create the payment with `currency: "USDT"` and no `coin_id`: the payer picks Ethereum or [TRON (TRC20)](https://cryptolike.net/coins/usdt-trc20) on the page.

### Can I price in USD?

Yes. Send `currency: "USD"` with the USDT `coin_id`: CryptoLike converts at the current rate and locks it for the payment's time limit. If no fresh rate is available, the API answers `503`: retry, or price the payment in USDT.

### What if the payer sends more or less than the amount?

Less: the payment becomes `underpaid`, `remaining_amount` shows what is missing, and a top-up to the same address before the time runs out completes it. More: the payment is `paid` with `overpaid_amount` above zero, and the surplus stays on your balance.

### How do payouts in USDT ERC20 work?

`POST /v1/withdrawals` with `coin_id`, `amount`, `to_address` and your `payout_id`, or a CSV of up to 1,000 rows in the cabinet ([mass payouts](https://cryptolike.net/use-cases/mass-payouts)). `POST /v1/withdrawals/estimate` first shows the platform fee, the reserved network fee (in USDT, no ETH balance needed) and the total debit. Payouts require a verified account; fees are on the [pricing page](https://cryptolike.net/pricing).
