---
title: "Send a half-signed transaction"
method: POST
path: "/api/v2/{coin}/wallet/{walletId}/tx/send"
tags: ["Wallet"]
---

# Send a half-signed transaction

`POST /api/v2/{coin}/wallet/{walletId}/tx/send`

Send a half-signed transaction to BitGo for final signing (using the BitGo key)
and broadcasting.

## Path parameters

- `coin` string, required — A cryptocurrency symbol or token ticker symbol
- `walletId` string, required

## Request body

- object — Request body for sending a half-signed transaction. Combines BuildParams with send-specific fields.
  - `type` string, nullable — 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` object[]
    - `address` string, required — The address for which you're proving ownership. This address must belong to the wallet.
    - `message` string, required — Message that is being signed.
  - `numBlocks` number — (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`.
  - `feeRate` number — 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` number — (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` union — (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`.
    - number
    - string
  - `minConfirms` number — 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.
  - `gasPrice` number — Custom gas price to be used for sending the transaction. Only for ETH and ERC20 tokens.
  - `eip1559` object — EIP-1559 transaction parameters. Only for ETH and ERC20 tokens.
    - `maxFeePerGas` number, required
    - `maxPriorityFeePerGas` number, required
  - `gasLimit` number — Custom gas limit to be used for sending the transaction. Only for ETH and ERC20 tokens.
  - `targetWalletUnspents` number — 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.
  - `minValue` number — Ignore unspents smaller than this amount of base units (e.g. satoshis). For doge, only string is allowed.
  - `maxValue` number — 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.
  - `noSplitChange` boolean — Set `true` to disable automatic change splitting. Also see: `targetWalletUnspents`
  - `unspents` string[]
  - `changeAddress` string — Specifies a custom destination address for the transaction's change output(s)
  - `txFormat` 'legacy' | 'psbt' | 'psbt-lite' — [UTXO only] Format of the returned transaction hex serialization. `legacy` for serialized transaction in custom bitcoinjs-lib format. `psbt` for BIP174 serialized transaction
  - `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.
    - `type` string
    - `value` string, nullable
  - `comment` string, nullable — An optional memo for the transaction.
  - `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 - use `changeAddressType`. The type of address to create for change. One of `p2sh`, `p2shP2wsh`, `p2wsh`, or `p2tr`.
  - `changeAddressType` union — The address type for the change address. One of `p2sh`, `p2shP2wsh`, `p2wsh`, `p2tr` or `p2trMusig2`, or an ordered array of those address types (`ChangeAddressTypes`).
    - 'p2sh' | 'p2shP2wsh' | 'p2wsh' | 'p2tr' | 'p2trMusig2' — platform.yaml `components/schemas/AddressType`
    - string[]
  - `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.
  - `invoice` string — Lightning invoice to pay. Accepted by the controller but not forwarded to coin-level build code (absent from buildParamsWhitelist) — included here only to match the shape clients actually send.
  - `lastLedgerSequence` number — (XRP only) Absolute max ledger the transaction should be accepted in, whereafter it will be rejected
  - `ledgerSequenceDelta` number — (XRP only) Relative ledger height (in relation to the current ledger) that the transaction should be accepted in, whereafter it will be rejected
  - `cpfpTxIds` string[]
  - `cpfpFeeRate` number — The desired effective fee rate of the accelerated transaction in base units per kilobyte (e.g. satoshi/kB), the unconfirmed transactions it depends on, and the newly created Child-Pays-For-Parent transaction. Must be higher than the current effective fee rate of the target transaction.
  - `rbfTxIds` string[]
  - `maxFee` number — Limits the amount of satoshis that can be used for fees in a Child-Pays-For-Parent (CPFP) transaction. CPFP transactions accelerate the targeted transaction and all of the unconfirmed transactions the targeted transaction depends on. `maxFee` is required for all CPFP transactions as it allows users to set a safety net that will halt CPFP attempts that exceed the expected cost.
  - `strategy` string — Optional unspent selection strategy to use. One of `RANDOM`, `FIFO` or `BNB`.
  - `validFromBlock` number — Optional block this transaction is valid from
  - `validToBlock` number — Optional block this transaction is valid until
  - `trustlines` object[]
    - `action` 'add' | 'remove'
    - `limit` string — platform.yaml `components/schemas/IntegerString`
    - `token` string — One of the supported coin types for Stellar tokens listed in Coin-specific-implementation
  - `stakingOptions` union — Required object for staking. Only for CSPR and STX.
    - SendTransactionCSPRStakingOptions — CSPR staking options for delegate or undelegate transactions.
      - `amount` number, required
      - `validator` string, required
    - SendTransactionSTXStakingOptions — STX staking options for delegate or revoke-delegate transactions.
      - `contractName` string, required — The STX staking contract name. Use pox-3.
      - `functionName` string, required — STX staking contract function.
      - `functionArgs` union[], required
        - union — The 4 Objects are required and in the order expressed.
          - STXStakingFunctionArgUint128 — STX staking function argument with type uint128.
            - `type` 'uint128', required — Type of argument. Use the default.
            - `val` string, required — Amount in micro-stx
          - STXStakingFunctionArgPrincipal — STX staking function argument with type principal.
            - `type` 'principal', required — Type of argument. Use the default.
            - `val` string, required — Address of the validator
          - STXStakingFunctionArgOptional — STX staking function argument with type optional.
            - `type` 'optional', required — Type of argument. Use the default.
            - `val` union, required — Value for an optional STX staking function argument.
              - …
  - `unstakingOptions` object — Options needed to unstake EOS assets
    - `from` string — The name or address of the account that originally staked assets
    - `receiver` string — The name or address of the account that had assets staked to
    - `unstakeCpuQuantity` string — The string amount of assets to unstake from CPU and asset symbol separated by a space (e.g. '100 EOS')
    - `unstakeNetQuantity` string — The string amount of assets to unstake from Net and asset symbol separated by a space (e.g. '100 EOS')
  - `refundOptions` object — Options needed to refund unstaked EOS assets if automatic refund fails
    - `address` string — The name or address of the account that originally unstaked assets
  - `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.
    - `expireTime` string, date-time, required — Required. The time that the unspent reservations should expire.
  - `halfSigned` HalfSigned
    - `txHex` string, nullable — The half-signed transaction hex.
    - `recipients` unknown[], nullable
      - unknown
    - `expireTime` number
    - `contractSequenceId` number
    - `operationHash` string, nullable
    - `signature` string, nullable
  - `txHex` string, nullable — The half-signed, serialized transaction hex. Alternative to sending halfSigned.
  - `txRequestId` string — The transaction request id.
  - `suppressBroadcast` boolean — Do not broadcast the transaction after signing.
  - `videoApprovers` string[]
  - `recipients` unknown[]
    - unknown
  - `isTestTransaction` boolean — When true, gates `validateTestTransaction()` and skips video/liveness verification checks. Passed through `buildParamsWhitelist` to coin-level build code.
  - `previewPendingTxs` boolean — When present, overrides automatic preview of pending transactions during `validateAndParseTransaction`. Auto-injected by the controller when a `pendingApproval` exists.
  - `goStakingRequestId` string — GO Staking request identifier. Validated against wallet type before pipeline entry. Must be present for internal staking requests on trading wallets.
  - `stakingParams` object — Staking metadata passed to `createTransferRecord`. Contains `requestId` and `actionType`; distinct from `stakingOptions` (which holds coin-level staking parameters).
    - `actionType` string
    - `requestId` string
  - `attestation` unknown

## Response `200`

OK

- TransactionResponse1
  - `transfer` Transfer1
    - `baseValue` number — The value (in base units) sent by this transfer, excluding network fees. BitGo is deprecating this field in the future.
    - `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.
    - `coin` string, required — A cryptocurrency symbol or token ticker symbol
    - `comment` string, nullable — A comment from the user
    - `date` string, date-time, required — The date this Transfer was last updated
    - `enterprise` string
    - `organization` string
    - `bitgoOrg` 'BitGo Trust' | 'BitGo New York' | 'BitGo Germany' | 'BitGo Switzerland' | 'BitGo Europe ApS' | 'Frankfurt DE Trust' | 'BitGo Singapore' | 'BitGo Korea' | 'BitGo Custody MENA FZE' | 'BitGo India' | 'BitGo Sister Trust 1' | 'BitGo Inc'
    - `entries` object[], required
      - `address` string, required — An address affected by this Transfer
      - `valueString` string — The change (in base units) in the address' 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 "send" transfer
      - `wallet` string — Only visible when the user has access to the wallet
      - `walletLabel` string — The label of the wallet referenced by `wallet`. Only visible when the user has access to that wallet. Useful for displaying a human-readable destination name (e.g. for sibling enterprise wallets) instead of a generic external-address fallback.
      - `value` number — The change (in base units) in the address' balance
      - `nftSymbol` string
      - `type` 'flushForwarderTokens' | 'walletFunding' | 'walletInitialization' | 'addressInitialization' | 'importedOutput' | 'onchainidWalletLinked' | 'onchainidClaimAdded' | 'onchainidClaimRemoved' | 'AccountCreateContract'
      - `isPayGo` boolean — True if this address is the BitGo PayGo wallet
      - `token` string — If this is a token entry, the token's symbol
      - `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. This change was done so that there is a mapping between the two addresses in the transfer entries.
      - `isFee` boolean — Indicates if this entry is a fee
      - `isInternal` boolean — Indicates if this entry is internal
      - `memo` string — Memo associated with this entry
      - `rewardAddress` string — Reward address associated with this entry
      - `subtype` string — Subtype of this entry
      - `backingFeeString` string — Backing fee represented as a string
      - `nftId` string — NFT ID associated with this entry
      - `tokenContractHash` string — Token contract hash associated with this entry
      - `isReward` boolean — Indicates if this entry is a reward
      - `activityMetadata` object — Cosmos group governance metadata (e.g. MsgSubmitProposal details) emitted by the Generic Indexer
    - `history` object[], required
      - `action` 'created' | 'approved' | 'rejected' | 'signed' | 'unconfirmed' | 'confirmed' | 'removed' | 'commented' | 'failed' | 'regenerated' | 'replaced' | 'replacing' | 'reversed' | 'abandoned', required
      - `comment` string, nullable — If this history object is of action "commented", this is the comment from the user
      - `date` string, date-time, required — The date of this history object
      - `transferId` string — The ID of the transfer that this history object is associated with
      - `txid` string — The transaction ID of the transaction that this history object is associated with
      - `user` string
    - `id` string, required
    - `pendingApproval` string
    - `state` 'initialized' | 'pendingApproval' | 'rejected' | 'signed' | 'unconfirmed' | 'confirmed' | 'removed' | 'failed' | 'replaced' | 'reversed' | 'deleted', 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. - `reversed`: The transfer was reversed (e.g., when a withdrawal offer is rejected in multi-step transfers). - `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.
    - `stakingParams` object
      - `actionType` string, required
      - `amount` string
      - `coreDao` object
        - `amount` string, number, required
        - `expiration` string, date-time, required
        - `fee` number, required
        - `rewardAddress` string, required
        - `validator` string, required
        - `version` number, required
      - `receiverAddress` string
      - `requestId` string, required
      - `resource` string
      - `source` 'external' | 'internal'
      - `validator` string
    - `txid` string — The on-chain transaction id
    - `type` 'send' | 'receive', required
    - `usd` number — The amount of USD of this Transfer (will be negative if it's a send)
    - `usdRate` number — The USD rate at the time this Transfer was created
    - `medianUsdValue` number — The median USD value of this Transfer
    - `medianUsdRate` number — The median USD rate at the time this Transfer was created
    - `feeUsd` number — The fee USD value for token transfers
    - `feeUsdRate` number — The fee coin USD rate for token transfers
    - `value` number — 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
    - `wallet` string, required
    - `walletType` 'backing' | 'cold' | 'custodial' | 'custodialPaired' | 'hot' | 'advanced' | 'trading' — Wallet type
    - `replaces` string[]
    - `replacedBy` string[]
    - `replacedByTransferId` string[]
    - `riskIndicators` string[]
    - `baseValueWithoutFeesString` string — The value (in base units) sent by this transfer, excluding network fees, represented as a string
    - `baseValueWithoutFees` number — The value (in base units) sent by this transfer excluding network fees.
    - `coinSpecific` unknown
    - `confirmations` number — The number of blocks that have been confirmed since this Transfer's block was confirmed
    - `consolidateId` string — Consolidation ID if this transfer is part of a consolidation
    - `feeString` string, nullable — The Transfer's fee (in base units) represented as a String
    - `feeCoin` string — The coin used to pay the fee (for cross-chain transactions)
    - `sequenceId` string — Unique wallet identifier for preventing double-spends
    - `subType` 'ofc_deposit' | 'ofc_withdrawal' | 'ofc_book_transfer' | 'ofc_exchange' | 'ofc_bn_settlement_transfer' | 'ofc_bn_allocation' | 'ofc_trading_order' | 'ofc_trading_settlement' | 'ofc_margin_collateral' | 'ofc_margin_position' | 'ofc_direct_trade' | 'ofc_routed' | 'ofc_fee' | 'ofc_other' | 'ofc_unstake' | 'ofc_financing_liquidation' | 'receive_from_gastank' | 'reserved_amount' | 'utxo_message_signing' | 'pending_deposit' | 'pending_deposit_activity' | 'internal_transfer' | 'pending_withdrawal_offer' | 'pending_deposit_offer' | 'offer_accepted' | 'offer_rejected' | 'confirmed_deposit' | 'confirmed_withdrawal' | 'deposit_offer_expired' | 'withdrawal_offer_expired' | 'withdrawal_offer_rejected' | 'utxo_expired' | 'offer_cancelled' | 'cancel_withdrawal_offer' | 'mint_request' | 'mint_offer' | 'mint_accept' | 'mint_deposit' | 'mint_reject' | 'burn_request' | 'burn_offer' | 'burn_accept' | 'burn_withdraw' | 'burn_reject' | 'pending_participant_onboarding_request' | 'participant_onboarding_accepted' | 'pending_dtcc_end_investor_invite' | 'end_investor_invite_offer' | 'end_investor_invite_accepted' | 'end_investor_invite_rejected' | 'pending_allocation' | 'allocation_accepted' | 'cosign_delegation_offer' | 'cosign_delegation_accepted' | 'cash_dvp_settled' | 'repo_dvp_open_leg_settled' | 'repo_dvp_close_leg_settled' | 'staking_eth_withdrawal' | 'staking_eth_partial_withdrawal' | 'staking_eth_full_withdrawal' | 'staking_eth_mev_reward' | 'staking_eth_block_reward' | 'staking_bera_withdrawal' | 'staking_bera_block_reward' | 'defi_deposit' — Transfer subtype
    - `txRequestId` string — Associated transaction request ID
    - `goStakingRequestId` string — Associated GO staking request ID
    - `height` number — The height of the block this Transfer was confirmed in (999999999 if unconfirmed)
    - `heightId` string — The unique height id of the block
    - `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
    - `nSegwitInputs` number — DEPRECATED. Number of segwit inputs on the transfer.
    - `outputs` object[]
      - `address` string — The address of the UTXO
      - `blockHeight` number — The block this Unspent was created in
      - `chain` number — The chain of the UTXO
      - `coinbase` boolean — True if this unspent came from the coinbase transaction
      - `id` string — The ID of the UTXO
      - `index` number — The index of the UTXO
      - `redeemScript` string — The redeem script of the UTXO
      - `value` number — The value of the UTXO
      - `witnessScript` string — The witness script of the UTXO
    - `payGoFee` number — The Transfer's BitGo fee (in base units)
    - `payGoFeeString` string — The Transfer's BitGo fee (in base units) represented as a String
    - `inputs` object[]
      - `address` string — The address of the UTXO
      - `blockHeight` number — The block this Unspent was created in
      - `chain` number — The chain of the UTXO
      - `coinbase` boolean — True if this unspent came from the coinbase transaction
      - `id` string — The ID of the UTXO
      - `index` number — The index of the UTXO
      - `redeemScript` string — The redeem script of the UTXO
      - `value` number — The value of the UTXO
      - `witnessScript` string — The witness script of the UTXO
    - `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.
    - `label` string — Address labels (if any) from entries concatenated.
    - `metadata` object[]
      - `key` string, required
      - `value` string, required
    - `sendAccounting` object[]
      - `amount` number
      - `amountString` string, required
      - `id` string
      - `nOuts` number, required
      - `type` string, required
    - `tags` string[]
    - `txidType` string — The type of the transaction id
    - `usersNotified` boolean — Whether BitGo already sent notifications to the users of the transfer wallet
    - `vSize` number — The size of the transaction
    - `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` object — Parameters used to build the transaction
    - `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)
  - `txid` string — The transaction's unique identifier.
  - `tx` string — The encoded transaction, either base64 for XLM or hex for other coins.
  - `status` union — The state of the transfer.
    - 'initialized' | 'pendingApproval' | 'rejected' | 'signed' | 'unconfirmed' | 'confirmed' | 'removed' | 'failed' | 'replaced' | 'reversed' | 'deleted' — 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. - `reversed`: The transfer was reversed (e.g., when a withdrawal offer is rejected in multi-step transfers). - `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.
    - 'signed (suppressed)'
  - `signedMessages` object[]
    - `address` string, required — The address for which ownership was proved.
    - `message` string, required — The original message that was signed.
    - `signedProofTxHex` string, required — The BIP-322 signed proof transaction hex.
  - `sendQueue` SendQueueEntry
    - `tx` string — Encoded transaction hex queued for broadcast.
    - `id` string
  - `transfers` object[]
    - `baseValue` number — The value (in base units) sent by this transfer, excluding network fees. BitGo is deprecating this field in the future.
    - `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.
    - `coin` string, required — A cryptocurrency symbol or token ticker symbol
    - `comment` string, nullable — A comment from the user
    - `date` string, date-time, required — The date this Transfer was last updated
    - `enterprise` string
    - `organization` string
    - `bitgoOrg` 'BitGo Trust' | 'BitGo New York' | 'BitGo Germany' | 'BitGo Switzerland' | 'BitGo Europe ApS' | 'Frankfurt DE Trust' | 'BitGo Singapore' | 'BitGo Korea' | 'BitGo Custody MENA FZE' | 'BitGo India' | 'BitGo Sister Trust 1' | 'BitGo Inc'
    - `entries` object[], required
      - `address` string, required — An address affected by this Transfer
      - `valueString` string — The change (in base units) in the address' 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 "send" transfer
      - `wallet` string — Only visible when the user has access to the wallet
      - `walletLabel` string — The label of the wallet referenced by `wallet`. Only visible when the user has access to that wallet. Useful for displaying a human-readable destination name (e.g. for sibling enterprise wallets) instead of a generic external-address fallback.
      - `value` number — The change (in base units) in the address' balance
      - `nftSymbol` string
      - `type` 'flushForwarderTokens' | 'walletFunding' | 'walletInitialization' | 'addressInitialization' | 'importedOutput' | 'onchainidWalletLinked' | 'onchainidClaimAdded' | 'onchainidClaimRemoved' | 'AccountCreateContract'
      - `isPayGo` boolean — True if this address is the BitGo PayGo wallet
      - `token` string — If this is a token entry, the token's symbol
      - `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. This change was done so that there is a mapping between the two addresses in the transfer entries.
      - `isFee` boolean — Indicates if this entry is a fee
      - `isInternal` boolean — Indicates if this entry is internal
      - `memo` string — Memo associated with this entry
      - `rewardAddress` string — Reward address associated with this entry
      - `subtype` string — Subtype of this entry
      - `backingFeeString` string — Backing fee represented as a string
      - `nftId` string — NFT ID associated with this entry
      - `tokenContractHash` string — Token contract hash associated with this entry
      - `isReward` boolean — Indicates if this entry is a reward
      - `activityMetadata` object — Cosmos group governance metadata (e.g. MsgSubmitProposal details) emitted by the Generic Indexer
    - `history` object[], required
      - `action` 'created' | 'approved' | 'rejected' | 'signed' | 'unconfirmed' | 'confirmed' | 'removed' | 'commented' | 'failed' | 'regenerated' | 'replaced' | 'replacing' | 'reversed' | 'abandoned', required
      - `comment` string, nullable — If this history object is of action "commented", this is the comment from the user
      - `date` string, date-time, required — The date of this history object
      - `transferId` string — The ID of the transfer that this history object is associated with
      - `txid` string — The transaction ID of the transaction that this history object is associated with
      - `user` string
    - `id` string, required
    - `pendingApproval` string
    - `state` 'initialized' | 'pendingApproval' | 'rejected' | 'signed' | 'unconfirmed' | 'confirmed' | 'removed' | 'failed' | 'replaced' | 'reversed' | 'deleted', 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. - `reversed`: The transfer was reversed (e.g., when a withdrawal offer is rejected in multi-step transfers). - `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.
    - `stakingParams` object
      - `actionType` string, required
      - `amount` string
      - `coreDao` object
        - `amount` string, number, required
        - `expiration` string, date-time, required
        - `fee` number, required
        - `rewardAddress` string, required
        - `validator` string, required
        - `version` number, required
      - `receiverAddress` string
      - `requestId` string, required
      - `resource` string
      - `source` 'external' | 'internal'
      - `validator` string
    - `txid` string — The on-chain transaction id
    - `type` 'send' | 'receive', required
    - `usd` number — The amount of USD of this Transfer (will be negative if it's a send)
    - `usdRate` number — The USD rate at the time this Transfer was created
    - `medianUsdValue` number — The median USD value of this Transfer
    - `medianUsdRate` number — The median USD rate at the time this Transfer was created
    - `feeUsd` number — The fee USD value for token transfers
    - `feeUsdRate` number — The fee coin USD rate for token transfers
    - `value` number — 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
    - `wallet` string, required
    - `walletType` 'backing' | 'cold' | 'custodial' | 'custodialPaired' | 'hot' | 'advanced' | 'trading' — Wallet type
    - `replaces` string[]
    - `replacedBy` string[]
    - `replacedByTransferId` string[]
    - `riskIndicators` string[]
    - `baseValueWithoutFeesString` string — The value (in base units) sent by this transfer, excluding network fees, represented as a string
    - `baseValueWithoutFees` number — The value (in base units) sent by this transfer excluding network fees.
    - `coinSpecific` unknown
    - `confirmations` number — The number of blocks that have been confirmed since this Transfer's block was confirmed
    - `consolidateId` string — Consolidation ID if this transfer is part of a consolidation
    - `feeString` string, nullable — The Transfer's fee (in base units) represented as a String
    - `feeCoin` string — The coin used to pay the fee (for cross-chain transactions)
    - `sequenceId` string — Unique wallet identifier for preventing double-spends
    - `subType` 'ofc_deposit' | 'ofc_withdrawal' | 'ofc_book_transfer' | 'ofc_exchange' | 'ofc_bn_settlement_transfer' | 'ofc_bn_allocation' | 'ofc_trading_order' | 'ofc_trading_settlement' | 'ofc_margin_collateral' | 'ofc_margin_position' | 'ofc_direct_trade' | 'ofc_routed' | 'ofc_fee' | 'ofc_other' | 'ofc_unstake' | 'ofc_financing_liquidation' | 'receive_from_gastank' | 'reserved_amount' | 'utxo_message_signing' | 'pending_deposit' | 'pending_deposit_activity' | 'internal_transfer' | 'pending_withdrawal_offer' | 'pending_deposit_offer' | 'offer_accepted' | 'offer_rejected' | 'confirmed_deposit' | 'confirmed_withdrawal' | 'deposit_offer_expired' | 'withdrawal_offer_expired' | 'withdrawal_offer_rejected' | 'utxo_expired' | 'offer_cancelled' | 'cancel_withdrawal_offer' | 'mint_request' | 'mint_offer' | 'mint_accept' | 'mint_deposit' | 'mint_reject' | 'burn_request' | 'burn_offer' | 'burn_accept' | 'burn_withdraw' | 'burn_reject' | 'pending_participant_onboarding_request' | 'participant_onboarding_accepted' | 'pending_dtcc_end_investor_invite' | 'end_investor_invite_offer' | 'end_investor_invite_accepted' | 'end_investor_invite_rejected' | 'pending_allocation' | 'allocation_accepted' | 'cosign_delegation_offer' | 'cosign_delegation_accepted' | 'cash_dvp_settled' | 'repo_dvp_open_leg_settled' | 'repo_dvp_close_leg_settled' | 'staking_eth_withdrawal' | 'staking_eth_partial_withdrawal' | 'staking_eth_full_withdrawal' | 'staking_eth_mev_reward' | 'staking_eth_block_reward' | 'staking_bera_withdrawal' | 'staking_bera_block_reward' | 'defi_deposit' — Transfer subtype
    - `txRequestId` string — Associated transaction request ID
    - `goStakingRequestId` string — Associated GO staking request ID
    - `height` number — The height of the block this Transfer was confirmed in (999999999 if unconfirmed)
    - `heightId` string — The unique height id of the block
    - `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
    - `nSegwitInputs` number — DEPRECATED. Number of segwit inputs on the transfer.
    - `outputs` object[]
      - `address` string — The address of the UTXO
      - `blockHeight` number — The block this Unspent was created in
      - `chain` number — The chain of the UTXO
      - `coinbase` boolean — True if this unspent came from the coinbase transaction
      - `id` string — The ID of the UTXO
      - `index` number — The index of the UTXO
      - `redeemScript` string — The redeem script of the UTXO
      - `value` number — The value of the UTXO
      - `witnessScript` string — The witness script of the UTXO
    - `payGoFee` number — The Transfer's BitGo fee (in base units)
    - `payGoFeeString` string — The Transfer's BitGo fee (in base units) represented as a String
    - `inputs` object[]
      - `address` string — The address of the UTXO
      - `blockHeight` number — The block this Unspent was created in
      - `chain` number — The chain of the UTXO
      - `coinbase` boolean — True if this unspent came from the coinbase transaction
      - `id` string — The ID of the UTXO
      - `index` number — The index of the UTXO
      - `redeemScript` string — The redeem script of the UTXO
      - `value` number — The value of the UTXO
      - `witnessScript` string — The witness script of the UTXO
    - `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.
    - `label` string — Address labels (if any) from entries concatenated.
    - `metadata` object[]
      - `key` string, required
      - `value` string, required
    - `sendAccounting` object[]
      - `amount` number
      - `amountString` string, required
      - `id` string
      - `nOuts` number, required
      - `type` string, required
    - `tags` string[]
    - `txidType` string — The type of the transaction id
    - `usersNotified` boolean — Whether BitGo already sent notifications to the users of the transfer wallet
    - `vSize` number — The size of the transaction
    - `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` object — Parameters used to build the transaction
    - `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)

## Other responses

- `202` — Accepted
- `400` — Bad Request
- `423` — Locked

---

[API](https://skmtc.net/bitgo/apis/bitgo-api.md) · [All operations](https://skmtc.net/bitgo/apis/bitgo-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bitgo/bitgo-api/revisions/e445c15e5bee/schema)
