> ## Documentation Index
> Fetch the complete documentation index at: https://developers.stellar.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Submit a Transaction Asynchronously

> This endpoint submits transactions to the Stellar network asynchronously. It is designed to allow users to submit transactions without blocking them while waiting for a response from Horizon. At the same time, it also provides clear response status codes from stellar-core to help understand the status of the submitted transaction. You can then use Horizon's [GET transaction endpoint](https://developers.stellar.org/docs/data/apis/horizon/api-reference/retrieve-a-transaction) to wait for the transaction to be included in a ledger and ingested by Horizon.



## OpenAPI

````yaml openapi/horizon/bundled.yml POST /transactions_async
openapi: 3.1.0
info:
  title: Horizon
  version: 0.0.1
  summary: >-
    Horizon provides an HTTP API to data in the Stellar network. It ingests and
    re-serves the data produced by the Stellar network in a form that is easier
    to consume by the average application relative to the performance-oriented
    data representations used by Stellar Core. This API serves the bridge
    between apps and Stellar Core. Projects like wallets, decentralized
    exchanges, and asset issuers use Horizon to submit transactions, query an
    account balance, or stream events like transactions to an account.
  description: >
    Horizon provides an HTTP API to data in the Stellar network. It ingests and
    re-serves the data produced by the Stellar network in a form that is easier
    to consume by the average application relative to the performance-oriented
    data representations used by [Stellar
    Core](https://developers.stellar.org/network/core-node). This API serves the
    bridge between apps and Stellar Core. Projects like wallets, decentralized
    exchanges, and asset issuers use Horizon to submit transactions, query an
    account balance, or stream events like transactions to an account.


    Horizon can be accessed via cURL, a browser, or one of the [Stellar
    SDKs](https://developers.stellar.org/docs/tools/sdks). To reduce the
    complexity of your project, we recommend you use an SDK instead of making
    direct API calls.


    This guide describes how to administer a production Horizon instance (refer
    to the [Developers'
    Blog](https://stellar.org/blog/developers/a-new-sun-on-the-horizon) for some
    background on the performance and architectural improvements of this major
    version bump). For information about developing on the Horizon codebase,
    check out the [Development
    Guide](https://github.com/stellar/stellar-horizon/blob/main/DEVELOPING.md).


    Before we begin, it's worth reiterating the sentiment echoed in the [Core
    Node](https://developers.stellar.org/network/core-node) documentation: **we
    do not endorse running Horizon backed by a standalone Stellar Core
    instance**, and especially not by a _validating_ Stellar Core. These are two
    separate concerns, and decoupling them is important for both reliability and
    performance. Horizon instead manages its own, pared-down version of Stellar
    Core optimized for its own subset of needs (we'll refer to this as a
    "Captive Core" instance).
  termsOfService: https://stellar.org/terms-of-service
  contact:
    name: Stellar Development Foundation
    url: https://stellar.org
    email: hello@stellar.org
  license:
    name: Apache 2.0
    identifier: Apache-2.0
servers:
  - url: https://horizon-testnet.stellar.org
    description: The Testnet Network
  - url: https://horizon-futurenet.stellar.org
    description: The Futurenet network
security: []
tags:
  - name: Accounts
    description: >-
      Users interact with the Stellar network through accounts. Everything else
      in the ledger—assets, offers, trustlines, etc. are owned by accounts, and
      accounts must authorize all changes to the ledger through signed
      transactions.
  - name: Assets
    description: >-
      Assets are representations of value issued on the Stellar network. An
      asset consists of a type, code, and issuer.
  - name: Claimable Balances
    description: >-
      A Claimable Balance represents the transfer of ownership of some amount of
      an asset. Claimable balances provide a mechanism for setting up a payment
      which can be claimed in the future. This allows you to make payments to
      accounts which are currently not able to accept them.
  - name: Effects
    description: >-
      Effects represent specific changes that occur in the ledger as a result of
      successful operations, but are not necessarily directly reflected in the
      ledger or history, as transactions and operations are.
  - name: Fee Stats
    description: >-
      Fee stats are used to predict what fee to set for a transaction before
      submitting it to the network.
  - name: Liquidity Pools
    description: >-
      Liquidity Pools provide a simple, non-interactive way to trade large
      amounts of capital and enable high volumes of trading.
  - name: Ledgers
    description: >-
      Each ledger stores the state of the network at a point in time and
      contains all the changes - transactions, operations, effects, etc. - to
      that state.
  - name: Offers
    description: >-
      Offers are statements about how much of an asset an account wants to buy
      or sell.
  - name: Operations
    description: >-
      Operations are objects that represent a desired change to the ledger:
      payments, offers to exchange currency, changes made to account options,
      etc. Operations are submitted to the Stellar network grouped in a
      Transaction.
  - name: Order Books
    description: An order book is a collections of offers for a specific pair of assets.
  - name: Paths
    description: >-
      Paths provide information about potential path payments. A path can be
      used to populate the necessary fields for a path payment operation.
  - name: Payments
    description: >-
      Payments are objects that represent balance transfer from one address to
      another. Payments are submitted to the Stellar network grouped in a
      Transaction.
  - name: Trade Aggregations
    description: >-
      A trade aggregation represents aggregated statistics on an asset pair
      (base and counter) for a specific time period. Trade aggregations are
      useful to developers of trading clients and provide historical trade data.
  - name: Trades
    description: >-
      When an offer is fully or partially fulfilled, a trade happens. Trades can
      also be caused by successful path payments, because path payments involve
      fulfilling offers. A trade occurs between two parties—base and counter.
      Which is which is either arbitrary or determined by the calling query.
  - name: Transactions
    description: >-
      Transactions are commands that modify the ledger state and consist of one
      or more operations.
paths:
  /transactions_async:
    post:
      tags:
        - Transactions
      summary: Submit a Transaction Asynchronously
      description: >-
        This endpoint submits transactions to the Stellar network
        asynchronously. It is designed to allow users to submit transactions
        without blocking them while waiting for a response from Horizon. At the
        same time, it also provides clear response status codes from
        stellar-core to help understand the status of the submitted transaction.
        You can then use Horizon's [GET transaction
        endpoint](https://developers.stellar.org/docs/data/apis/horizon/api-reference/retrieve-a-transaction)
        to wait for the transaction to be included in a ledger and ingested by
        Horizon.
      operationId: SubmitAsyncTransaction
      parameters:
        - in: query
          name: tx
          schema:
            type: string
            description: The base64-encoded XDR of the transaction.
          required: true
      responses:
        '201':
          description: Transaction has been received by core and is in pending status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncTransactionSubmissionResponse'
              examples:
                TransactionPending:
                  summary: Transaction Pending
                  value:
                    tx_status: PENDING
                    hash: >-
                      6cbb7f714bd08cea7c30cab7818a35c510cbbfc0a6aa06172a1e94146ecf0165
        '400':
          description: Transaction is malformed; ERROR status from core.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/AsyncTransactionSubmissionResponse'
                  - $ref: '#/components/schemas/Problem'
              examples:
                TransactionMalformed:
                  summary: Transaction Malformed
                  value:
                    type: transaction_malformed
                    title: Transaction Malformed
                    status: 400
                    detail: >-
                      Horizon could not decode the transaction envelope in this
                      request. A transaction should be an XDR
                      TransactionEnvelope struct encoded using base64. The
                      envelope read from this request is echoed in the
                      `extras.envelope_xdr` field of this response for your
                      convenience.
                    extras:
                      envelope_xdr: ''
                TransactionError:
                  summary: ERROR Status from core
                  value:
                    error_result_xdr: AAAAAAAAAGT////7AAAAAA==
                    tx_status: ERROR
                    hash: >-
                      6cbb7f714bd08cea7c30cab7818a35c510cbbfc0a6aa06172a1e94146ecf0165
        '403':
          description: Transaction submission has been disabled for Horizon.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                TransactionSubmissionDisabled:
                  summary: Transaction Submission Disabled
                  value:
                    type: transaction_submission_disabled
                    title: Transaction Submission Disabled
                    status: 403
                    detail: >-
                      Transaction submission has been disabled for Horizon. To
                      enable it again, remove env variable DISABLE_TX_SUB.
                    extras:
                      envelope_xdr: ''
        '409':
          description: Transaction is a duplicate of a previously submitted transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncTransactionSubmissionResponse'
              examples:
                TransactionDuplicate:
                  summary: Transaction Duplicate
                  value:
                    tx_status: DUPLICATE
                    hash: >-
                      6cbb7f714bd08cea7c30cab7818a35c510cbbfc0a6aa06172a1e94146ecf0165
        '500':
          description: >-
            Transaction submission failure, exception or invalid status from
            core.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Problem'
              examples:
                TransactionFailed:
                  summary: Transaction Submission Failed
                  value:
                    type: transaction_submission_failed
                    title: Transaction Submission Failed
                    status: 500
                    detail: >-
                      Could not submit transaction to stellar-core. The
                      `extras.error` field on this response contains further
                      details. Descriptions of each code can be found at:
                      https://developers.stellar.org/api/errors/http-status-codes/horizon-specific/transaction-submission-async/transaction_submission_failed
                    extras:
                      envelope_xdr: ''
                      error: Error details here
                TransactionException:
                  summary: Transaction Submission Exception
                  value:
                    type: transaction_submission_exception
                    title: Transaction Submission Exception
                    status: 500
                    detail: >-
                      Received exception from stellar-core. The `extras.error`
                      field on this response contains further details.
                      Descriptions of each code can be found at:
                      https://developers.stellar.org/api/errors/http-status-codes/horizon-specific/transaction-submission-async/transaction_submission_exception
                    extras:
                      envelope_xdr: ''
                      error: Exception details here
                TransactionInvalidStatus:
                  summary: Transaction Submission Invalid Status
                  value:
                    type: transaction_submission_invalid_status
                    title: Transaction Submission Invalid Status
                    status: 500
                    detail: >-
                      Received invalid status from stellar-core. The
                      `extras.error` field on this response contains further
                      details.  Descriptions of each code can be found at:
                      https://developers.stellar.org/api/errors/http-status-codes/horizon-specific/transaction-submission-async/transaction_submission_invalid_status
                    extras:
                      envelope_xdr: ''
                      error: Error details here
        '503':
          description: History DB is stale; core is unavailable for transaction submission.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/AsyncTransactionSubmissionResponse'
                  - $ref: '#/components/schemas/Problem'
              examples:
                HistoryDBStale:
                  summary: Historical DB Is Too Stale
                  value:
                    type: stale_history
                    title: Historical DB Is Too Stale
                    status: 503
                    detail: >-
                      This horizon instance is configured to reject client
                      requests when it can determine that the history database
                      is lagging too far behind the connected instance of
                      Stellar-Core or read replica. It's also possible that
                      Stellar-Core is out of sync. Please try again later.
                    extras:
                      envelope_xdr: ''
                TransactionTryAgainLater:
                  summary: TRY_AGAIN_LATER Status from core
                  value:
                    tx_status: TRY_AGAIN_LATER
                    hash: >-
                      6cbb7f714bd08cea7c30cab7818a35c510cbbfc0a6aa06172a1e94146ecf0165
components:
  schemas:
    AsyncTransactionSubmissionResponse:
      type: object
      properties:
        error_result_xdr:
          type: string
          nullable: true
          description: >-
            TransactionResult XDR string which is present only if the submission
            status from core is an ERROR.
        tx_status:
          type: string
          enum:
            - ERROR
            - PENDING
            - DUPLICATE
            - TRY_AGAIN_LATER
          description: Status of the transaction submission.
        hash:
          type: string
          description: Hash of the transaction.
    Problem:
      type: object
      properties:
        type:
          type: string
          description: Identifies the problem type.
        title:
          type: string
          description: A short, human-readable summary of the problem type.
        status:
          type: integer
          description: The HTTP status code for this occurrence of the problem.
        detail:
          type: string
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
        extras:
          type: object
          additionalProperties: true
          description: >-
            Additional details that might help the client understand the
            error(s) that occurred.

````