Skip to main content

Transatron Extension Objects

When one of the following API methods is called — /wallet/triggersmartcontract, /wallet/broadcasttransaction, or /wallet/broadcasthex — Transatron injects a transatron object into the standard TRON node response. This object contains important data for managing transaction fees. The structure of the object is:

transatron: {
"code": "<code>",
"message": "<hex_message>",
"user_account_balance_rtrx": <Number>,
"user_account_balance_rusdt": <Number>,
"tx_fee_rtrx_account": <Number>,
"tx_fee_rusdt_account": <Number>,
"tx_fee_rtrx_instant": <Number>,
"tx_fee_rusdt_instant": <Number>,
"tx_fee_burn_trx": <Number>
}
info

On charge responses (code is CHARGED), the field for the currency you did not pay with is 0 — only the currency actually charged carries a non-zero value. See the field reference below for the full charge-vs-estimate split, and the release note for background.

Field Reference

  • code → Decision code (see Codes).
  • message → Hex-encoded string with extra info (error reason, etc.).
    info

    Message is UTF-8 text converted to a byte array, then hex-encoded — the same way TRON encodes text responses.

  • user_account_balance_rtrx, user_account_balance_rusdt → User balances in TFN (former RTRX) and TFU (former RUSDT) (includes decimals, e.g. 1000000 = 1 TFN).
  • tx_fee_rtrx_account, tx_fee_rusdt_account → Fee when paying from an internal account. Behavior differs by response type:
    • Charge responses (/broadcasttransaction, /broadcasthex, when code is CHARGED) → the field for the currency actually charged holds the fee amount; the field for the currency you did not pay with is 0. On FREE responses both fields are already forced to 0.
    • Estimate responses (/triggersmartcontract) → unaffected by this change — both fields are always returned as numbers, exactly as before. This is why Using Coupons can safely read tx_fee_rtrx_account / tx_fee_rusdt_account on the estimate path.
  • tx_fee_rtrx_instant, tx_fee_rusdt_instant → Fees when paying via instant transactions. Behavior differs by response type:
    • Charge responses (/broadcasttransaction, /broadcasthex, when code is CHARGED) → only the currency you paid with carries a non-zero value; the field for the currency you did not pay with is 0.
    • Estimate responses (/triggersmartcontract) → unaffected by this change — both fields are always returned as numbers, exactly as before.
  • tx_fee_burn_trx → Fee when TRX is burned because no coverage was applied. Provided for reference only. For covered-type multisig transactions (TransferContract, TriggerSmartContract, CreateSmartContract), this value also includes the MultiSignFee that Transatron covers on your behalf.

Codes

  • CHARGED (Success) → Transaction covered with resources (energy + bandwidth).
  • FREE (Success) → FREE does not mean "no money moved". It means the sender did not pay. A coupon-paid transaction: the coupon issuer paid. A deposit / forced / exchange transaction: the system user paid. In both cases a user_charge is correctly written with amount > 0, and /broadcasttransaction correctly reports "committed for free" — because from the sender's side, it was.
  • PENDING (Success) → Delayed transaction accepted, cached, and bundled later.
  • LIMIT_EXCEED (Error) → No free transactions left and no internal balance. Transaction bypassed.
  • NOT_ENOUGH_FUNDS (Error) → Internal account balance is positive but insufficient. Transaction bypassed.
  • INSTANT_PAYMENT_UNDERPRICED (Error) → Instant payment provided, but insufficient to cover transaction. Not broadcast.
  • ERROR (Error) → Generic error. See message for details.

Examples

  • Example 1
  transatron: {
"code": "CHARGED",
"message": "",
"tx_fee_burn_trx": 27359850,
"tx_fee_rtrx_account": 13028500,
"tx_fee_rusdt_account": 0,
"tx_fee_rtrx_instant": 13296500,
"tx_fee_rusdt_instant": 0,
"user_account_balance_rusdt": 13916666,
"user_account_balance_rtrx": 139000000
}

In this response, the user has balances in both TFN and TFU.

  • TFN will be used for the fee.

  • The transaction costs 13.02 TFN.

  • The fee is charged from the internal account if no coupon or instant payment is applied.

  • Example 2

transatron: {
"code": "CHARGED",
"message": "",
"user_balance_rusdt": 20000000,
"user_balance_rtrx": 0,
"tx_fee_rtrx": 6773500,
"tx_fee_burn_trx": 13844850
}

In this response, the user only has TFU available.

  • TFU is used for the fee.

  • The transaction is covered successfully from the internal account.

  • Example 3

transatron: {
"code": "LIMIT_EXCEED",
"message": "4461696c79206c696d697420657863656564656420666f722061646472657373205441366341793954427964616b4c467a3551537962414875583158764274443936472e",
"tx_fee_rtrx_account": 0,
"tx_fee_rusdt_account": 0,
"tx_fee_rtrx_instant": 13296500,
"tx_fee_rusdt_instant": 4187933,
"user_account_balance_rusdt": 0,
"user_account_balance_rtrx": 0
}

In this response, the user has no internal funds and no free quota.

  • The transaction is not covered.
  • The user must use an instant payment to succeed.