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>
}
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.).infoMessage 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, whencodeisCHARGED) → the field for the currency actually charged holds the fee amount; the field for the currency you did not pay with is0. OnFREEresponses both fields are already forced to0. - Estimate responses (
/triggersmartcontract) → unaffected by this change — both fields are always returned as numbers, exactly as before. This is why Using Coupons can safely readtx_fee_rtrx_account/tx_fee_rusdt_accounton the estimate path.
- Charge responses (
tx_fee_rtrx_instant,tx_fee_rusdt_instant→ Fees when paying via instant transactions. Behavior differs by response type:- Charge responses (
/broadcasttransaction,/broadcasthex, whencodeisCHARGED) → only the currency you paid with carries a non-zero value; the field for the currency you did not pay with is0. - Estimate responses (
/triggersmartcontract) → unaffected by this change — both fields are always returned as numbers, exactly as before.
- Charge responses (
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) →FREEdoes 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 auser_chargeis correctly written withamount > 0, and/broadcasttransactioncorrectly 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. Seemessagefor 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.