Skip to main content
Mavapay provides a USDT wallet that you can use to collect stablecoin deposits from customers and send USDT to external addresses.

Overview

USDT balances live in your Mavapay USDT wallet, separate from your BTC and fiat wallets. You can:
  1. Generate a deposit address on a supported network
  2. Share that address with your customer
  3. Receive a payment.received webhook when the deposit is credited (or FAILED if it cannot be credited)
  4. Withdraw USDT to any address on a supported network
Check your USDT balance with the Get wallets endpoint (currency=USDT).

Supported Networks

Use lowercase network values in requests (erc20, trc20). Address objects may return the network in uppercase (ERC20); webhook metadata uses lowercase (erc20).
Send USDT only on the network the address was generated for. USDT sent on the wrong chain cannot be recovered.

Amounts

USDT amounts in API requests, wallet balances, and webhooks are in cents (2 decimal places). 1 USDT = 100 cents: Deposit address minAmount and maxAmount are returned in USDT, not cents. For example, "minAmount": "5" means deposits below 5 USDT may not be credited. "maxAmount": "0" means there is no maximum.

Deposit USDT

1. Generate a deposit address

Call Generate a stablecoin deposit address with a label so you can identify the address later. You can create multiple addresses per network.
Sample response:

2. List existing addresses

Retrieve previously generated addresses with List stablecoin deposit addresses:
Sample response:

3. Wait for the deposit webhook

After the transfer confirms on-chain, Mavapay core credits your USDT wallet and sends a payment.received webhook with currency: "USDT" and type: "DEPOSIT".
  • status: "SUCCESS" — the deposit is available in your USDT wallet
  • status: "FAILED" — the deposit was not credited. This can happen if the sending address is blacklisted, or in rare undocumented cases
Use the transaction id for idempotency. Match the deposit to a customer with stablecoinTransactionMetadata.address or reference. See USDT webhook examples.

Withdraw USDT

Withdraw from your USDT wallet to any address on a supported network.
The destination address must be valid for the network you pass. A Tron address will fail on erc20, and an Ethereum address will fail on trc20.
You receive two payment.sent webhooks for a withdrawal:
  1. Initiatedstatus: "PENDING" and hash is null
  2. Completedstatus: "SUCCESS" and hash is populated
See USDT webhook examples.

Webhooks

Register your webhook endpoint before going live. See Webhook integration and USDT webhook examples.

Testing

Use the staging environment while you integrate:

Next steps

Generate deposit address

Create a USDT address on a supported network

Withdraw USDT

Send USDT from your Mavapay wallet

Get wallets

Check your USDT wallet balance

Webhook examples

Handle deposit and withdrawal events