Express

POST

Send coins or tokens to one or more recipients. You can use this endpoint to schedule outgoing transactions in bulk, lowering your aggregate amount of blockchain fees.

Works with both multisignature and MPC wallets. Also supports external-signer mode.

Works with most BitGo-supported assets, but currently unavailable for: ALGO, ARBETH, AVAXC, CELO, CELO:CUSD, CSPR, DOT, EOS, HTETH:BGERCH, NEAR, OPETH, STX, TON, TRX, TRX:USDC, XLM, XRP, XTZ

Path Params

  • coin string required
    A cryptocurrency or token ticker symbol.
  • walletId string required
    The wallet ID.

    matches ^[0-9a-f]{32}$

Body Params

object

  • recipients array of objects
    A list of recipient addresses and amounts. Must be present but empty for CPFP transactions.
    recipients object
    • address string
      Destination address
    • amount string or integer
      The amount in base units (e.g. satoshis) to send. For doge, only string is allowed.
    • tokenName string
      The token name. Required for MPC wallets token transactions.
    • tokenData object
      Data set to build a transaction that involves a token interaction.
      tokenData object
      • tokenName string
        Name of token, as represented in BitGoJS Statics package.
      • tokenContractAddress string
        Address of token or smart contract. Required if token is unsupported by BitGo. Not required if passing "tokenName".
      • decimalPlaces integer
        Relevant for fungible tokens. Not required if passing "tokenName". Defaults to smallest base unit.
      • tokenType string enum
        Token standard
        ERC20ERC721ERC1155
      • tokenId string
        ID of token to use when constructing transaction or calldata. Required for NFTs.
      • tokenQuantity string
        Quantity of token to use when constructing calldata (amount to transfer).
  • otp string
    Two factor auth code to enable sending the transaction. Not necessary if using a long lived access token within the spending limit.
  • walletPassphrase string
    Passphrase to decrypt the user key on the wallet. Required if External Signer is not used to sign the transactions.
  • prv string
    The un-encrypted user private key in string form. If the key is a JSON object it must be stringified. Required if walletPassphrase is not available or encrypted private key is not stored by BitGo.
  • type string

    Required for transactions from MPC wallets. "acceleration" speeds up transactions with a certain nonce by adjusting the gas setting. "accountSet" is for XRP AccountSet transactions. "consolidate" combines multiple UTXO inputs into fewer outputs. "enabletoken" is for SOL. "fanout" splits UTXO inputs into many smaller outputs (UTXO coins only). "stakingLock" and "stakingUnlock" are for Stacks delegations. "transfer" is for native-asset transfers. "trustline" is for Stellar trustline transactions. Possible types include: [acceleration, accountSet, consolidate, enabletoken, fanout, stakingLock, stakingUnlock, transfer, transfertoken, trustline]

    For AVAX, possible types include: addValidator, export, and import.

    For XRP, possible types include: payment and accountSet. The default is payment.

    For STX, type is required.

  • messages array of objects
    [UTXO only] An array of messages that you sign with the wallet keys using the BIP322 format. If passed, the recipients array must be empty.
    messages object
    • address string
      The address for which you're proving ownership. This address must belong to the wallet.
    • message string
      Message that is being signed.
  • numBlocks integer

    (BTC only) The number of blocks required to confirm a transaction. You can use numBlocks to estimate the fee rate by targeting confirmation within a given number of blocks. If both feeRate and numBlocks are absent, the transaction defaults to 2 blocks for confirmation.

    Note: The maxFeeRate limits the fee rate generated by numBlocks.

    >= 2 · <= 1000

  • feeRate string or integer

    Custom fee rate (in base units) per kilobyte (or virtual kilobyte). For example, satoshis per kvByte.

    If the feeRate is less than the minimum required network fee, then the minimum fee applies. For example, 1000 sat/kvByte, a flat 1000 microAlgos, or a flat 10 drops of xrp. For XRP, the actual fee is usually 4.5 times the open ledger fee.

    Note: The feeRate overrides the maxFeeRate and minFeeRate.

  • maxFeeRate string or integer

    (BTC only) The maximum fee rate (in base units) per kilobyte (or virtual kilobyte). For example, satoshis per kvByte. The maxFeeRate limits the fee rate generated by both feeMultiplier and numBlocks.

    Note: The feeRate overrides the maxFeeRate.

  • feeMultiplier string or number

    (UTXO only) Custom multiplier to the feeRate. The resulting fee rate is limited by the maxFeeRate. For replace-by-fee (RBF) transactions (that include rbfTxIds), the feeMultiplier must be greater than 1, since it's an absolute fee multiplier to the transaction being replaced.

    Note: The maxFeeRate limits the fee rate generated by feeMultiplier.

  • minConfirms integer
    The unspent selection for the transaction will only consider unspents with at least this many confirmations to be used as inputs. Does not apply to change outputs unless used in combination with enforceMinConfirmsForChange.
  • enforceMinConfirmsForChange boolean
    When set to true, will enforce minConfirms for change outputs. Defaults to false.

    Defaults to false

  • gasPrice string or integer
    Custom gas price to be used for sending the transaction. Only for ETH and ERC20 tokens.
  • eip1559 object
    eip1559 object
    • maxPriorityFeePerGas string or integer
      Max priority tip price for EIP1559 transactions. Only for ETH and ERC20 tokens.
    • maxFeePerGas string or integer
      Max total gasPrice for EIP1559 transactions. Only for ETH and ERC20 tokens.
  • gasLimit string or integer
    Custom gas limit to be used for sending the transaction. Only for ETH and ERC20 tokens.
  • targetWalletUnspents integer

    Specifies the minimum count of good-sized unspents to maintain in the wallet. Change splitting ceases when the wallet has targetWalletUnspents good-sized unspents.

    Note: Wallets that continuously send a high count of transactions will automatically split large change amounts into multiple good-sized change outputs while they have fewer than targetWalletUnspents good-sized unspents in their unspent pool. Breaking up large unspents helps to reduce the amount of unconfirmed funds in flight in future transactions, and helps to avoid long chains of unconfirmed transactions. This is especially useful for newly funded wallets or recently refilled send-only wallets.

    Defaults to 1000

  • minValue string or integer
    Ignore unspents smaller than this amount of base units (e.g. satoshis). For doge, only string is allowed.
  • maxValue string or integer
    Ignore unspents larger than this amount of base units (e.g. satoshis). For doge, only string is allowed.
  • sequenceId string
    A sequenceId is a unique and arbitrary wallet identifier applied to transfers and transactions at creation. It is optional but highly recommended. With a sequenceId you can easily reference transfers and transactions—for example, to safely retry sending. Because the system only confirms one send request per sequenceId (and fails all subsequent attempts), you can retry sending without the risk of double spending. The sequenceId is only visible to users on the wallet and is not shared publicly.
  • nonce string
    (DOT only) A nonce ID is a number used to protect private communications by preventing replay attacks. This is an advanced option where users can manually input a new nonce value in order to correct or fill in a missing nonce ID value.
  • noSplitChange boolean

    Set true to disable automatic change splitting.

    Also see: targetWalletUnspents

    Defaults to false

  • unspents array of strings
    Used to explicitly specify the unspents to be used in the input set in the transaction. Each unspent should be in the form prevTxId:nOutput.
  • changeAddress string
    Specifies a custom destination address for the transaction's change output(s)
  • txFormat string enum
    [UTXO only] Format of the returned transaction hex serialization. legacy for serialized transaction in custom bitcoinjs-lib format. psbt for BIP174 serialized transaction

    Defaults to legacy

    legacypsbtpsbt-lite
  • instant boolean
    (DASH only) Specifies whether or not to use Dash's "InstantSend" feature when sending a transaction.
  • memo object

    Extra transaction information for CSPR, EOS, HBAR, RUNE, STX, TON, XLM, and XRP. Required for XLM transactions.

    Note: For XRP this is the destination tag (DT), for CSPR this is the transfer ID and for ALGO this is the message field.

    memo object
    • type string
    • value string
  • comment string
    Optional metadata (only persisted in BitGo) to be applied to the transaction. Use this to add transaction-specific information such as the transaction's purpose or another identifier that you want to reference later. The value is shown in the UI in the transfer listing page.

    up to 256 characters

  • destinationChain string
    (AVAXC and AVAXP only) Destination chain for an AVAX import/export transaction. One of [P, C].
  • sourceChain string
    (AVAXC and AVAXP only) Source chain for an AVAX import/export transaction. One of [P, C].
  • addressType string deprecated
    DEPRECATED - use changeAddressType. The type of address to create for change. One of p2sh, p2shP2wsh, p2wsh, or p2tr.
  • changeAddressType string or array of strings
    The address type for the change address. One of p2sh, p2shP2wsh, p2wsh, p2tr or p2trMusig2.

    ANY OF

    string enum
  • startTime string
    Unix timestamp in seconds.nanoseconds format, denoting the start of the validity window. Only for HBAR transactions.
  • consolidateId string
    (ALGO/TEZOS only) Consolidation ID of this consolidation transaction.
  • lastLedgerSequence integer
    (XRP only) Absolute max ledger the transaction should be accepted in, whereafter it will be rejected
  • ledgerSequenceDelta integer
    (XRP only) Relative ledger height (in relation to the current ledger) that the transaction should be accepted in, whereafter it will be rejected
  • rbfTxIds array of strings
    The list of transactions to accelerate using Replace-By-Fee (RBF) for UTXO coins (currently accelerating only one tx is supported).
  • isReplaceableByFee boolean
    It is used to mark an UTXO transaction eligible for Replace-By-Fee (RBF) later.
  • validFromBlock integer
    Optional block this transaction is valid from
  • validToBlock integer
    Optional block this transaction is valid until
  • trustlines array of objects
    List of trustlines to manage on the account. Available for Stellar.
    trustlines object
    • token string
      One of the supported coin types for Stellar tokens listed in Coin-specific-implementation
    • action object
      addremove
    • limit string
      String representation of the amount to limit in base units (stroops)
  • stakingOptions object
    Required object for staking. Only for CSPR and STX.

    ANY OF

    • amount string or integer
      Required for CSPR. String representation of the amount to stake or unstake in base units (motes).
    • validator string
      Required for CSPR. The validator address used to delegate or undelegate.
  • messageKey string
    Optional parameter that takes a hexadecimal value to set messagekey for an XRP accountSet transaction. Recipients field should be empty when messageKey is set.
  • reservation object
    Optional parameter for UTXO coins to automatically reserve the unspents that are used in the build. Useful for Cold wallets. If using, must set expireTime.
    reservation object
    • expireTime string date-time
      Required. The time that the unspent reservations should expire.
  • data string
    (ETH only) Optional data to pass to the transaction

Responses

200
OK

Response Body

ANY OF

  • transfer object
    transfer object
    • coin string required
      A cryptocurrency or token ticker symbol.
    • id string required

      matches ^[0-9a-f]{32}$

    • wallet string required

      matches ^[0-9a-f]{32}$

    • enterprise string

      matches ^[0-9a-f]{32}$

    • txid string required

      The on-chain transaction id.

      Go Account / OFC wallets: For ofc_withdrawal transfers the top-level txid (and normalizedTxHash) is the internal front-transfer hash, not the on-chain transaction hash. The on-chain hash is available in metadata[].onChainTxId once the transfer reaches state confirmed. For standard ofc_deposit transfers (non-lightning) all three values are identical. For OFC lightning deposits the payment hash is in metadata[].lightningPaymentHash; onChainTxId is absent.

    • normalizedTxHash string

      A normalized form of txid used for deduplication. For most coins this is identical to txid. For account-model coins (e.g. ETH and its tokens) it may differ from txid when the transaction is regenerated. For lightning transfers, normalizedTxHash is identical to txid (no transformation is applied).

      Go Account / OFC withdrawals: Like txid, this field holds the internal front-transfer hash, not the on-chain hash. Use metadata[].onChainTxId for the on-chain transaction hash.

    • txidType string enum
      The type of the transaction id
      transactionHashblockHash
    • height integer required
      The height of the block this Transfer was confirmed in (999999999 if unconfirmed)
    • heightId string
      The unique height id of the block
    • date string date-time required
      The date this Transfer was last updated
    • confirmations integer required
      The number of blocks that have been confirmed since this Transfer's block was confirmed
    • type string enum required
      Defines whether or not this Transfer was sent or received by the user
      sendreceive
    • value integer
      The total value (in base units) sent by this Transfer (may be approximate for ETH and other coins where amounts in base units can exceed 2^53 - 1)
    • valueString string required
      The total value (in base units) sent by this Transfer represented as a String
    • intendedValueString string
      A string representation (in base units) of the initial value for the transfer. This is present because when a transaction fails on chain, its value is mutated to be zero. This string is immutable and will always be the intended value of the initial transfer regardless of the final state of the transaction.
    • baseValue integer
      The value (in base units) sent by this transfer, excluding network fees. BitGo is deprecating this field in the future. Instead, use baseValueWithoutFees.
    • baseValueString string
      The value (in base units) sent by this transfer, excluding network fees represented as a string. BitGo is deprecating this field in the future. Instead, use baseValueWithoutFees.
    • baseValueWithoutFees integer
      The value (in base units) sent by this transfer excluding network fees.
    • baseValueWithoutFeesString string
      The value (in base units) sent by this transfer, excluding network fees, represented as a string
    • feeString string
      The Transfer's fee (in base units) represented as a String
    • payGoFee integer
      The Transfer's BitGo fee (in base units)
    • payGoFeeString string
      The Transfer's BitGo fee (in base units) represented as a String
    • usd number required
      The amount of USD of this Transfer (will be negative if it's a send)
    • usdRate number required
      The USD price at the time this Transfer was created
    • state string enum required

      The state of the transfer. Includes the following:

      • confirmed: The transfer is confirmed on chain.
      • failed: BitGo failed to confirm the transfer on chain. You must retry the transaction.
      • initialized: The initial state when creating a transfer.
      • pendingApproval: The transfer requires admin approval to proceed.
      • rejected: The transfer was rejected by an admin.
      • removed: A network re-org occurred, causing the confirmed transfer to be removed from the blockchain.
      • replaced: The transfer was stuck due to having a low fee and was replaced by a new transfer with a higher fee.
      • signed: The transfer was approved by an admin (if required) and then signed by BitGo.
      • unconfirmed: The signed transaction was sent to the network, and is pending on-chain validation.
      confirmedfailedinitializedpendingApprovalrejectedremovedreplacedsignedunconfirmed
    • tags array of strings required
      The tags to be used on this Transfer (used in Policies)
    • history array of objects required
      An audit log of events that have happened to the Transfer during its lifecycle
      history object
      • date string date-time
        The date of this history object
      • user string

        matches ^[0-9a-f]{32}$

      • action string enum
        createdsignedunconfirmedconfirmedapprovedcommentedremovedfailedrejected
      • comment string
        If this history object is of action commented, this is the comment from the user
    • comment string required
      A comment from the user
    • vSize integer
      The size of the transaction
    • coinSpecific object required
      Transfer fields specific to each coin type
    • sequenceId string
      A sequenceId is a unique and arbitrary wallet identifier applied to transfers and transactions at creation. It is optional but highly recommended. With a sequenceId you can easily reference transfers and transactions—for example, to safely retry sending. Because the system only confirms one send request per sequenceId (and fails all subsequent attempts), you can retry sending without the risk of double spending. The sequenceId is only visible to users on the wallet and is not shared publicly.
    • consolidateId string
      Consolidation ID if this transfer is part of a consolidation
    • txRequestId string
      Associated transaction request ID
    • goStakingRequestId string
      Associated GO staking request ID
    • subType string enum
      Transfer subtype
      ofc_withdrawalofc_depositofc_unstakeofc_stakeofc_book_transfer
    • feeCoin string
      The coin used to pay the fee (for cross-chain transactions)
    • instant boolean
      Whether this is an instant transaction
    • instantId string
      The instant transaction ID if applicable
    • isFee boolean
      Whether this transfer represents a fee
    • isReward boolean
      Whether this transfer represents a staking reward
    • isUnlock boolean
      Whether this transfer represents an unlock operation
    • metadata array of objects

      Key-value pairs carrying additional metadata about the transfer. The same key may appear more than once.

      Known keys (alphabetical). This list reflects all keys defined in the current server release; additional keys may be added in future releases without a breaking-change notice.

      • backingTransferBroadcastTimestamp — Timestamp (ISO 8601) at which the backing on-chain transaction was broadcast to the network.
      • lightningPaymentHash(OFC lightning transfers only) The Lightning Network payment hash for the transfer. Present on both ofc_withdrawal and ofc_deposit lightning transfers; for ofc_deposit lightning transfers this key is used instead of onChainTxId.
      • onChainTxId(Go Account / OFC non-lightning transfers only) The on-chain transaction hash of the backing transfer. For ofc_withdrawal transfers this key is absent while the transfer is in state signed; it is populated once the transfer reaches state confirmed (i.e. once the backing on-chain transaction is confirmed). Poll until state === 'confirmed' before reading this field. Use this value — not the top-level txid — when reconciling against a block explorer or external ledger. For standard ofc_deposit transfers (non-lightning) this value equals the top-level txid.
      • replacedBy — Transfer ID of the transfer that replaced this entry.
      • replaces — Transfer ID of the transfer this entry replaces.
      • reversedBy — Transfer ID of the transfer that reversed this entry.
      • reverses — Transfer ID of the transfer this entry reverses.
      • rtId — Internal routed-transaction ID linking a front transfer to its backing Go Account routed transaction.
      • stablecoinTxType — Transaction type for stablecoin transfers (e.g. mint, reward, burn).
      • tokenizationUniquenessId(Tokenization withdrawals only) Internal identifier used to prevent double-spends on a tokenization withdrawal. Derived from the tokenization order ID; not guaranteed to equal the order ID in rare same-merchant/same-amount/same-instant collisions.
      metadata object
      • key string
        The metadata key name. See the metadata array description for documented values. Additional keys may be present.
      • value string
    • sendAccounting array of objects
      Accounting breakdown for send transactions
      sendAccounting object
      • type string
      • amountString string
      • nOuts integer
      • amount integer
      • id string
    • createdTime string date-time
      The time this transfer was created
    • approvedTime string date-time
      The time this transfer was approved
    • rejectedTime string date-time
      The time this transfer was rejected
    • signedTime string date-time
      The time this transfer was signed
    • unconfirmedTime string date-time
      The time this transfer became unconfirmed
    • confirmedTime string date-time
      The time this transfer was confirmed
    • removedTime string date-time
      The time this transfer was removed
    • commentedTime string date-time
      The time this transfer was commented on
    • failedTime string date-time
      The time this transfer failed
    • regeneratedTime string date-time
      The time this transfer was regenerated
    • replacedTime string date-time
      The time this transfer was replaced
    • replacingTime string date-time
      The time this transfer started replacing another
    • abandonedTime string date-time
      The time this transfer was abandoned
    • signedDate string date-time
      The date this transfer was signed (legacy field)
    • customerApprovedTime string date-time
      The time this transfer was approved by the customer (trust transfers)
    • idVerificationTime string date-time
      The time identity verification was completed (trust transfers)
    • trustSignedTime string date-time
      The time this transfer was signed by trust (trust transfers)
    • trustFinalApprovalTime string date-time
      The time this transfer received final trust approval (trust transfers)
    • walletLabel string
      Label of the wallet associated with this transfer
    • enterpriseName string
      Name of the enterprise associated with this transfer
    • elliptic string
      Elliptic risk score information (trust transfers)
    • senderInformationVerified boolean
      Whether sender information has been verified (trust transfers)
    • buildParams map
      Parameters used to build the transaction
    • entries array of objects
      An array of objects describing the change in address balances made as a result of this Transfer
      entries object
      • address string
        An address affected by this Transfer
      • wallet string
        Only visible when the user has access to the wallet
      • value integer
        The change (in base units) in the address's balance
      • valueString string
        The change (in base units) in the address's balance represented as a String
      • isChange boolean
        True if this address is a change address (only exists for UTXO coins) and if this is a sent Transfer
      • isPayGo boolean
        True if this address is the BitGo PayGo wallet
      • token string
        If this is a token entry, the token's symbol
      • label string
        Names of addresses given by the user.
      • failed boolean
        true if this entry is failed.
      • associatedNativeCoinAddress string
        The native coin receive address associated with the solana ATA address. This is currently present only for BitGo addresses.
      • memo string
        Memo associated with this entry. Only available for STX, EOS, SOL, NEAR, and POLYX. For other coins (XLM, XRP, Cosmos-based, TON, Tempo), memo is stored at the transaction level or appended to the address.
      • type string
        The type of this entry (e.g., transfer, fee, contract_call).
      • nftId string
        NFT ID associated with this entry. Only present for NFT transfers.
      • nftSymbol string
        NFT symbol associated with this entry. Only present for NFT transfers.
    • usersNotified boolean
      Whether BitGo already sent notifications to the users of the transfer wallet
    • label string
      Address labels (if any) from entries concatenated.
    • replaces array of strings
      Transaction IDs that this transfer replaces.
    • replacedBy array of strings
      Transaction IDs that replace this transfer.
    • riskIndicators array of string enums
      Risk indicators detected on this transfer (e.g. SELFDESTRUCT opcode). Transfers with risk indicators will not trigger webhook or email notifications.
      SELFDESTRUCT
  • txid string
    Unique transaction identifier
  • tx string
  • status string enum
    Transfer status
    signedsigned (suppressed)pendingApproval
202
Accepted

Response Body

ANY OF

  • transfer object
    transfer object
    • coin string required
      A cryptocurrency or token ticker symbol.
    • id string required

      matches ^[0-9a-f]{32}$

    • wallet string required

      matches ^[0-9a-f]{32}$

    • enterprise string

      matches ^[0-9a-f]{32}$

    • txid string required

      The on-chain transaction id.

      Go Account / OFC wallets: For ofc_withdrawal transfers the top-level txid (and normalizedTxHash) is the internal front-transfer hash, not the on-chain transaction hash. The on-chain hash is available in metadata[].onChainTxId once the transfer reaches state confirmed. For standard ofc_deposit transfers (non-lightning) all three values are identical. For OFC lightning deposits the payment hash is in metadata[].lightningPaymentHash; onChainTxId is absent.

    • normalizedTxHash string

      A normalized form of txid used for deduplication. For most coins this is identical to txid. For account-model coins (e.g. ETH and its tokens) it may differ from txid when the transaction is regenerated. For lightning transfers, normalizedTxHash is identical to txid (no transformation is applied).

      Go Account / OFC withdrawals: Like txid, this field holds the internal front-transfer hash, not the on-chain hash. Use metadata[].onChainTxId for the on-chain transaction hash.

    • txidType string enum
      The type of the transaction id
      transactionHashblockHash
    • height integer required
      The height of the block this Transfer was confirmed in (999999999 if unconfirmed)
    • heightId string
      The unique height id of the block
    • date string date-time required
      The date this Transfer was last updated
    • confirmations integer required
      The number of blocks that have been confirmed since this Transfer's block was confirmed
    • type string enum required
      Defines whether or not this Transfer was sent or received by the user
      sendreceive
    • value integer
      The total value (in base units) sent by this Transfer (may be approximate for ETH and other coins where amounts in base units can exceed 2^53 - 1)
    • valueString string required
      The total value (in base units) sent by this Transfer represented as a String
    • intendedValueString string
      A string representation (in base units) of the initial value for the transfer. This is present because when a transaction fails on chain, its value is mutated to be zero. This string is immutable and will always be the intended value of the initial transfer regardless of the final state of the transaction.
    • baseValue integer
      The value (in base units) sent by this transfer, excluding network fees. BitGo is deprecating this field in the future. Instead, use baseValueWithoutFees.
    • baseValueString string
      The value (in base units) sent by this transfer, excluding network fees represented as a string. BitGo is deprecating this field in the future. Instead, use baseValueWithoutFees.
    • baseValueWithoutFees integer
      The value (in base units) sent by this transfer excluding network fees.
    • baseValueWithoutFeesString string
      The value (in base units) sent by this transfer, excluding network fees, represented as a string
    • feeString string
      The Transfer's fee (in base units) represented as a String
    • payGoFee integer
      The Transfer's BitGo fee (in base units)
    • payGoFeeString string
      The Transfer's BitGo fee (in base units) represented as a String
    • usd number required
      The amount of USD of this Transfer (will be negative if it's a send)
    • usdRate number required
      The USD price at the time this Transfer was created
    • state string enum required

      The state of the transfer. Includes the following:

      • confirmed: The transfer is confirmed on chain.
      • failed: BitGo failed to confirm the transfer on chain. You must retry the transaction.
      • initialized: The initial state when creating a transfer.
      • pendingApproval: The transfer requires admin approval to proceed.
      • rejected: The transfer was rejected by an admin.
      • removed: A network re-org occurred, causing the confirmed transfer to be removed from the blockchain.
      • replaced: The transfer was stuck due to having a low fee and was replaced by a new transfer with a higher fee.
      • signed: The transfer was approved by an admin (if required) and then signed by BitGo.
      • unconfirmed: The signed transaction was sent to the network, and is pending on-chain validation.
      confirmedfailedinitializedpendingApprovalrejectedremovedreplacedsignedunconfirmed
    • tags array of strings required
      The tags to be used on this Transfer (used in Policies)
    • history array of objects required
      An audit log of events that have happened to the Transfer during its lifecycle
      history object
      • date string date-time
        The date of this history object
      • user string

        matches ^[0-9a-f]{32}$

      • action string enum
        createdsignedunconfirmedconfirmedapprovedcommentedremovedfailedrejected
      • comment string
        If this history object is of action commented, this is the comment from the user
    • comment string required
      A comment from the user
    • vSize integer
      The size of the transaction
    • coinSpecific object required
      Transfer fields specific to each coin type
    • sequenceId string
      A sequenceId is a unique and arbitrary wallet identifier applied to transfers and transactions at creation. It is optional but highly recommended. With a sequenceId you can easily reference transfers and transactions—for example, to safely retry sending. Because the system only confirms one send request per sequenceId (and fails all subsequent attempts), you can retry sending without the risk of double spending. The sequenceId is only visible to users on the wallet and is not shared publicly.
    • consolidateId string
      Consolidation ID if this transfer is part of a consolidation
    • txRequestId string
      Associated transaction request ID
    • goStakingRequestId string
      Associated GO staking request ID
    • subType string enum
      Transfer subtype
      ofc_withdrawalofc_depositofc_unstakeofc_stakeofc_book_transfer
    • feeCoin string
      The coin used to pay the fee (for cross-chain transactions)
    • instant boolean
      Whether this is an instant transaction
    • instantId string
      The instant transaction ID if applicable
    • isFee boolean
      Whether this transfer represents a fee
    • isReward boolean
      Whether this transfer represents a staking reward
    • isUnlock boolean
      Whether this transfer represents an unlock operation
    • metadata array of objects

      Key-value pairs carrying additional metadata about the transfer. The same key may appear more than once.

      Known keys (alphabetical). This list reflects all keys defined in the current server release; additional keys may be added in future releases without a breaking-change notice.

      • backingTransferBroadcastTimestamp — Timestamp (ISO 8601) at which the backing on-chain transaction was broadcast to the network.
      • lightningPaymentHash(OFC lightning transfers only) The Lightning Network payment hash for the transfer. Present on both ofc_withdrawal and ofc_deposit lightning transfers; for ofc_deposit lightning transfers this key is used instead of onChainTxId.
      • onChainTxId(Go Account / OFC non-lightning transfers only) The on-chain transaction hash of the backing transfer. For ofc_withdrawal transfers this key is absent while the transfer is in state signed; it is populated once the transfer reaches state confirmed (i.e. once the backing on-chain transaction is confirmed). Poll until state === 'confirmed' before reading this field. Use this value — not the top-level txid — when reconciling against a block explorer or external ledger. For standard ofc_deposit transfers (non-lightning) this value equals the top-level txid.
      • replacedBy — Transfer ID of the transfer that replaced this entry.
      • replaces — Transfer ID of the transfer this entry replaces.
      • reversedBy — Transfer ID of the transfer that reversed this entry.
      • reverses — Transfer ID of the transfer this entry reverses.
      • rtId — Internal routed-transaction ID linking a front transfer to its backing Go Account routed transaction.
      • stablecoinTxType — Transaction type for stablecoin transfers (e.g. mint, reward, burn).
      • tokenizationUniquenessId(Tokenization withdrawals only) Internal identifier used to prevent double-spends on a tokenization withdrawal. Derived from the tokenization order ID; not guaranteed to equal the order ID in rare same-merchant/same-amount/same-instant collisions.
      metadata object
      • key string
        The metadata key name. See the metadata array description for documented values. Additional keys may be present.
      • value string
    • sendAccounting array of objects
      Accounting breakdown for send transactions
      sendAccounting object
      • type string
      • amountString string
      • nOuts integer
      • amount integer
      • id string
    • createdTime string date-time
      The time this transfer was created
    • approvedTime string date-time
      The time this transfer was approved
    • rejectedTime string date-time
      The time this transfer was rejected
    • signedTime string date-time
      The time this transfer was signed
    • unconfirmedTime string date-time
      The time this transfer became unconfirmed
    • confirmedTime string date-time
      The time this transfer was confirmed
    • removedTime string date-time
      The time this transfer was removed
    • commentedTime string date-time
      The time this transfer was commented on
    • failedTime string date-time
      The time this transfer failed
    • regeneratedTime string date-time
      The time this transfer was regenerated
    • replacedTime string date-time
      The time this transfer was replaced
    • replacingTime string date-time
      The time this transfer started replacing another
    • abandonedTime string date-time
      The time this transfer was abandoned
    • signedDate string date-time
      The date this transfer was signed (legacy field)
    • customerApprovedTime string date-time
      The time this transfer was approved by the customer (trust transfers)
    • idVerificationTime string date-time
      The time identity verification was completed (trust transfers)
    • trustSignedTime string date-time
      The time this transfer was signed by trust (trust transfers)
    • trustFinalApprovalTime string date-time
      The time this transfer received final trust approval (trust transfers)
    • walletLabel string
      Label of the wallet associated with this transfer
    • enterpriseName string
      Name of the enterprise associated with this transfer
    • elliptic string
      Elliptic risk score information (trust transfers)
    • senderInformationVerified boolean
      Whether sender information has been verified (trust transfers)
    • buildParams map
      Parameters used to build the transaction
    • entries array of objects
      An array of objects describing the change in address balances made as a result of this Transfer
      entries object
      • address string
        An address affected by this Transfer
      • wallet string
        Only visible when the user has access to the wallet
      • value integer
        The change (in base units) in the address's balance
      • valueString string
        The change (in base units) in the address's balance represented as a String
      • isChange boolean
        True if this address is a change address (only exists for UTXO coins) and if this is a sent Transfer
      • isPayGo boolean
        True if this address is the BitGo PayGo wallet
      • token string
        If this is a token entry, the token's symbol
      • label string
        Names of addresses given by the user.
      • failed boolean
        true if this entry is failed.
      • associatedNativeCoinAddress string
        The native coin receive address associated with the solana ATA address. This is currently present only for BitGo addresses.
      • memo string
        Memo associated with this entry. Only available for STX, EOS, SOL, NEAR, and POLYX. For other coins (XLM, XRP, Cosmos-based, TON, Tempo), memo is stored at the transaction level or appended to the address.
      • type string
        The type of this entry (e.g., transfer, fee, contract_call).
      • nftId string
        NFT ID associated with this entry. Only present for NFT transfers.
      • nftSymbol string
        NFT symbol associated with this entry. Only present for NFT transfers.
    • usersNotified boolean
      Whether BitGo already sent notifications to the users of the transfer wallet
    • label string
      Address labels (if any) from entries concatenated.
    • replaces array of strings
      Transaction IDs that this transfer replaces.
    • replacedBy array of strings
      Transaction IDs that replace this transfer.
    • riskIndicators array of string enums
      Risk indicators detected on this transfer (e.g. SELFDESTRUCT opcode). Transfers with risk indicators will not trigger webhook or email notifications.
      SELFDESTRUCT
  • txid string
    Unique transaction identifier
  • tx string
  • status string enum
    Transfer status
    signedsigned (suppressed)pendingApproval
400
Bad Request

Response Body

ONE OF

  • error string required
    Human-readable error message
  • requestId string required
    Client request id
  • context object
    Properties that apply to a specific error name
  • name string required
    Error code