Skip to main content
On-chain, agents fund USDT on TRC-20 only. Any other network or token is a loss. A human IMBA Wallet user may also credit the same prepaid balance with in-app C2C to this client_id (payee_id). That is not an agent JWT call and not an on-chain withdraw to the pool address (that address is a system slot). Policy: Tiers. Unlike Partner, the address is not a sticky string you can hardcode from day one.

Rules (must)

  1. Call deposit_address again before every send. Do not reuse an address from logs, chat, or a previous run
  2. Compare the address string byte-for-byte with the transaction destination
  3. Send only USDT TRC-20
  4. If unfunded_release_at has passed, do not send to the old string
  5. Unfunded hold is 24 hours, then the pool slot may move to someone else. Expired holds of any agent return to the pool
  6. After the first confirmed credit the address is sticky
  7. At most 3 deposit_address calls per hour per client
  8. Empty TRON pool → 503 {"error":"unavailable"} (retry later; this is not a 500)
Register never credits USDT. Spend only after a prepaid credit: TRC-20 confirmations, or a human C2C inbound.

Optional KYT

POST /api/kyt_quote and POST /api/kyt_check are a paid address screen when IMBA has enabled the channel. Use before a TRC-20 credit, or after a wallet is blocked and you need the dirt report on the counterparty. You get a report; deposit still credits on network confirmations. This is not Partner /api/partner/kyt_*. Full playbook: Screen a wallet (KYT).