wallet-cli tx broadcast

August 5, 2026 · View on GitHub

Broadcast a presigned transaction.

Synopsis

wallet-cli tx broadcast (--hex <hex> | --file <path> | --transaction <json> | --tx-stdin)
                        [--dry-run] --network <id> [options]

Description

Submits a transaction that was signed elsewhere. No wallet unlock is needed; the transaction is already signed. The signed input can be hex--hex inline or --file from a file (the format emitted by --sign-only and tx sign) — or JSON--transaction inline or --tx-stdin from stdin. Exactly one of the four; prefer --file for long hex.

A presigned transaction carries no network of its own, so pass --network to say which network to broadcast to (falls back to the config default network when omitted).

Validation before submission

Broadcasting is not blind. Whatever form the transaction arrives in, it is decoded and checked first, and a transaction that cannot succeed is rejected locally instead of being sent:

  • expiredtx_expired
  • insufficient signature weightnot_authorized, naming the missing weight

That check is what makes this safe as the last step of a multi-signature workflow: a transaction that has not yet reached its permission threshold never reaches the node.

A transaction with more than one signature incurs an extra 1 TRX multi-sig fee on-chain at broadcast; it is reported as multiSignFeeSun in both dry-run and real broadcasts.

Options

OptionDescription
--hex <hex>Signed transaction hex inline
--file <path>File containing the signed transaction hex (size-capped at just over 1 MiB)
--transaction <string>Signed TRON transaction JSON inline
--tx-stdinRead the signed transaction JSON from stdin (fd 0)
--dry-runValidate signatures, threshold, expiration, and the dynamic multi-sig fee without broadcasting; cannot be combined with --wait
--wait / --wait-timeout <ms>Poll after broadcast until confirmed/failed (cap default 60000)

Plus the global options.

Examples

Broadcast a signed hex from a file:

wallet-cli tx broadcast --file tx.signed.hex --network tron:nile
⏳ Broadcast
  TxID    72a315303323125708f426c77b94c5215afd8964ed27d67e49c29b56e29078f5
  Status  pending — not yet on-chain
! Track it: wallet-cli tx info --network tron:nile --txid 72a315303323125708f426c77b94c5215afd8964ed27d67e49c29b56e29078f5

Or inline hex, and the JSON receipt:

wallet-cli tx broadcast --hex 0a02...9f31 --network tron:nile -o json
{"schema":"wallet-cli.result.v1","success":true,"command":"tx.broadcast","data":{"kind":"broadcast","stage":"submitted","txId":"72a315303323125708f426c77b94c5215afd8964ed27d67e49c29b56e29078f5"},"meta":{"durationMs":926,"warnings":[]},"chain":{"family":"tron","network":"tron:nile","chainId":"nile"}}

Output

data varies by stage:

StageFields
default (submit)kind, stage: "submitted", txId
--wait (confirmed/failed)above, plus confirmed, blockNumber, failed, and result fields

As with tx send, the default return point is submission — confirm via --wait or tx status.

Exit status

0 submitted · 1 execution failure (node rejected the tx, timeout) · 2 usage error (more than one, or none, of the input sources).

See also

tx send --sign-only · tx status · Scripting guide