Skip to main content


Submit a real transaction to the Stellar network. This is the only way to make changes "on-chain".

Unlike Horizon, this does not wait for transaction completion. It simply validates and enqueues the transaction. Clients should call getTransactionStatus to learn about transaction success/failure.

This supports all transactions, not only smart contract-related transactions.

  • TODO: Decide on submit-vs-send for naming
  • TODO: Add a return value that would represent the minimal amount of time the client would need to wait before calling getTransactionStatus


  • <xdr.TransactionEnvelope> - The signed transaction to broadcast (serialized in base64)


  • <object>
    • id: <hash> The transaction hash (in an hex-encoded string), and the initial transaction status, ("pending" or something), unless we can reject it immediately.
    • status: <status> - the current status of the transaction by hash, one of:
      • pending
      • success
      • error
    • error: <object> - (optional) If the transaction was rejected immediately, this will be an error object. See getTransactionStatus for format.

Possible Errors

  • TODO: Fewer than existing txsub as not waiting for completion



The following example request uses a transaction to invoke the increment method of the increment example contract.

"jsonrpc": "2.0",
"id": 8675309,
"method": "sendTransaction",
"params": {


"jsonrpc": "2.0",
"id": 8675309,
"result": {
"id": "d70916f8b8aa55c13d5974a38e32a3efe440ef6870c0f0a07075d1c128d23698",
"status": "pending",
"error": null