Skip to content

Coins & networksGuide

How to accept USDT TRC20 payments: setup, confirmations, fees

Accept USDT on TRON with CryptoLike: pick the asset, create a payment, show the right network, wait for confirmations, pay out. Fees and errors explained.

CryptoLike accepts USDT on the TRON network (TRC20) through the same payment API, plugins and payment links as every other asset. You create a payment, the payer sends USDT to a TRON address starting with «T», and the payment turns paid once the confirmation threshold for the asset is reached. A signed webhook then tells your server.

What USDT TRC20 is for CryptoLike

For CryptoLike, USDT on TRON is its own asset: the same ticker on another network — USDT on Ethereum (ERC20) — is a different asset with its own address format, confirmations and fees. Payments, static addresses and payouts all work with USDT TRC20, and the funds are credited to a USDT TRC20 balance in your account.

Fact USDT TRC20 on CryptoLike
Asset · network USDT · TRON (TRC20); network in the API is tron
Address format TRON address starting with «T»
Confirmations Set per asset: confirmations in GET /v1/currencies, shown on the USDT TRC20 page
Platform fee Per asset and direction, on the pricing page
Payer's network fee Paid by the sender's wallet in TRX (energy and bandwidth)
Ways to receive Payment (invoice), static address, payment link, CMS plugins
Payouts Yes, with a fee estimate before you confirm

Choosing between the two USDT networks is covered in USDT TRC20 vs ERC20.

Before you start

CryptoLike needs an account with USDT TRC20 enabled, an API key with create_invoice and read (or a CMS plugin, or just the cabinet for payment links) and a webhook endpoint on your server. Test with a ck_test_ key and the test API URL from CryptoLike support first: test keys work with test networks, where test USDT has no value; CryptoLike support can send you test coins.

If you use a plugin, nothing changes for USDT: the payer chooses USDT TRC20 on the payment page, and the order follows the payment status. See the integrations page.

1. Find USDT TRC20 in the catalogue

CryptoLike lists every asset enabled for your account in GET /v1/currencies: take the entry with ticker USDT and network tron. Its id is the coin_id you pass when creating payments or payouts, and the entry also carries decimals, the confirmations threshold and a maintenance flag.

If the entry is missing, the asset is switched off for your account: turn it on in the cabinet on the Coins page, and ask support only if it is not offered there. If maintenance is true, the asset cannot be chosen for new payments for now; offer the payer another asset or try later.

2. Create a payment in USDT TRC20

CryptoLike creates a USDT TRC20 payment in one call to POST /v1/invoices. Price it in USD or another enabled fiat and pass the coin_id of USDT TRC20: the rate is locked at creation, and the response already carries the TRON address and the exact USDT amount. Without coin_id the payer picks the asset on the payment page.

json
{
  "amount": "49.90",
  "currency": "USD",
  "coin_id": "<id of USDT on tron from GET /v1/currencies>",
  "order_id": "A-1002",
  "idempotency_by_order_id": true
}

Do not rely on currency: "USDT" alone: the ticker exists on two networks, and coin_id names exactly one. A retry with the same Idempotency-Key returns the same payment instead of a second one. A 503 unavailable means no fresh rate was available: retry, or create the payment in USDT.

3. Show the payer the right network

CryptoLike's payment page shows the amount, the network, a TRON address with a QR code and the time left, next to the warning «Send only USDT on the TRON (TRC20) network to this address. Funds sent on another network cannot be recovered.» Send the payer there with checkout_url, or embed the page with the checkout widget.

The QR code holds the bare address; the payer copies the amount shown next to it. A self-custody wallet also needs TRX: on TRON, a TRC20 transfer consumes energy and bandwidth, paid in TRX when the wallet has not staked for them. The payer pays that network fee; it is not part of your amount. If a transfer was sent on another network, it never reaches the payment — ask the payer to send again on TRON.

4. Wait for confirmations and ship on paid

CryptoLike moves the payment to pending («Payment detected. Waiting for confirmation.») as soon as the USDT transfer is in a TRON block, and to paid when the asset's confirmation threshold is reached. At that moment the funds are credited to your balance and your endpoint receives the signed invoice.paid webhook.

The payment page shows the progress as «n of N confirmations». CryptoLike credits only the USDT contract listed in its catalogue; a token with the same name from another contract is not credited. If a reorganisation reverts a confirmed transfer, you receive invoice.reverted — stop fulfilment until a new invoice.paid. Details: crypto payment confirmations.

5. Handle underpaid, overpaid and late payments

CryptoLike handles wrong amounts by status, not by refusing funds. Less than the amount: the payment is underpaid, the page shows the rest and the payer can top up to the same address until the deadline. More: the payment is paid with overpaid_amount. Funds after the deadline are credited too, with late_payment: true and an invoice.late_payment webhook.

A small shortfall within your account's underpayment tolerance still counts as paid. For a final underpaid or a late payment, decide with the customer: ship, ask for the rest or send a refund as a payout. More in underpaid payment.

6. Pay out USDT TRC20

CryptoLike sends USDT TRC20 payouts from your available balance with POST /v1/withdrawals. Call POST /v1/withdrawals/estimate first: it returns the platform fee, the reserved network fee and total_debit, all in USDT — the TRON network fee is converted into the payout asset — before anything is created.

The network fee charged depends on the mode the platform sets for your account: the reserved estimate by default, or the fee actually paid with the unused reserve returned. A TRON destination that is a smart contract comes back with an address_warning; check it before confirming. For many payouts at once see mass crypto payouts.

Fees: who pays what

CryptoLike separates three fees on a USDT TRC20 payment, and each is shown as an amount with its unit: to you in the API response or the payout estimate, to the payer in their wallet. Your platform fee is charged only when the payment is confirmed; the payer's network fee is paid in TRX by the sender's wallet; a payout adds its own platform and network fee in USDT.

Fee Who pays In what Where you see it
Platform fee on a payment You by default, or the payer with fee_paid_by: payer USDT Pricing; the API response; the cabinet. The payment page shows no fee line: when the payer pays it, it is included in the amount
Network fee of the payer's transfer The payer's wallet TRX (energy, bandwidth) The payer's wallet
Platform and network fee of a payout You USDT POST /v1/withdrawals/estimate, the cabinet

How the pieces add up: crypto payment fees explained.

Errors and what to do

CryptoLike returns API errors in one envelope: an HTTP status, a machine-readable code, a message for people and details that name the field or the reason. For USDT TRC20 payments and payouts these are the ones to handle; each has a recovery step, and the full list is in the API reference.

HTTP · code What happened What to do
400 validation_error A field is wrong, e.g. more decimals than USDT has (details.field) Fix the field and resend
409 conflict on a payment The payment's state does not allow it, e.g. cancelling a paid one Read the current state first
409 conflict, insufficient_funds The USDT TRC20 balance does not cover total_debit Wait for credits or pay out less
422 address_refused The platform does not accept this destination Use another TRON address
403 kyb_required Payouts need a verified account Complete account verification in the cabinet
503 unavailable No fresh rate, or the asset is paused Retry with backoff, or price the payment in USDT

FAQ

How many confirmations does USDT TRC20 need?

CryptoLike sets the threshold per asset. The current number for USDT TRC20 is in the confirmations field of GET /v1/currencies and on the USDT TRC20 page; the payment page shows the progress as «n of N confirmations».

What if the payer sends USDT on Ethereum instead?

A transfer on another network never reaches a TRON payment, and the payment page warns about this next to the address. Ask the payer to send again on TRON, or create a payment in USDT ERC20 — a different asset with an Ethereum address.

Why does the payer need TRX to send USDT?

On TRON, a TRC20 transfer consumes energy and bandwidth. A wallet without staked resources pays for them in TRX, so a USDT balance alone is not enough.

Can I price a USDT TRC20 payment in dollars?

Yes. Create the payment in USD or another enabled fiat; CryptoLike locks the rate when the asset is known and keeps it for the payment's lifetime, so the USDT amount the payer sees does not change.

Terms used here

Read next

Start with a test payment

Create an account, ask support for the test environment and see a payment go from pending to paid on a test network.