Accept USDD (TRC-20)
on Tron with an API.

Take USDD payments from customers and pay out in USDD on Tron: a deposit address for every customer, deposits credited once they're final, and payouts your own team approves. The keys stay in hardware enclaves you can verify.

USDD on Tron

The details.

NetworkTron · TRC-20 token
ContractTXDk8mbtRbXeYuMNS83CfKPaYYT8XWv9Hz View on explorer
Only this contract is accepted as USDD on Tron: look-alike tokens sent to your customers' addresses are ignored.
Decimals18 (amounts in the API are whole numbers of the smallest unit)
DepositsValtu reads only solidified Tron blocks, so a deposit is final when it's seen.
Minimum withdrawal10 USDD
Network feesTRC-20 transfers spend energy. Without staked energy they burn TRX, or rent energy through your own provider key when that's cheaper. Your gas wallet can top up the TRX they need.
AddressesTron addresses start with T. Each wallet has its own.
Asset id in the APIUSDD-TRC20

For developers

Deposit addresses and payouts in a few lines.

import { Valtu, depositAddress } from "@valtu/wallet-kit";
const valtu = Valtu.fromEnv();

// A deposit address for one of your customers (idempotent).
const wallet = await valtu.wallets.forCustomer("cus_42");
const address = depositAddress(wallet, "tron");

// A payout of 25.50 USDD: retries never send twice.
const amount = await valtu.assets.toBaseUnits("USDD-TRC20", "25.50");
await valtu.transfers.create({ walletId: payoutWalletId, asset: "USDD-TRC20", amount, to, externalId: "payout_981" });

Python: pip install valtu, same calls (valtu.wallets.for_customer, valtu.transfers.create). Full guide: integration.

Related

More on Valtu.

Start with a test workspace today.

Same dashboard, same API, free test coins. Go live when your team is ready.