Accelerate Transaction

post/api/v2/{coin}/wallet/{walletId}/acceleratetx

Send a new transaction to accelerate the targeted unconfirmed transaction either by using Child-Pays-For-Parent (CPFP) or Replace-By-Fee (RBF).

Background:

  1. In Bitcoin, a transaction can only be included in a block when all its inputs are confirmed. This requirement can be used to increase the effective fee rate of a stuck low-fee transaction. One of the stuck transaction's outputs is spent in a child transaction with a much higher fee. Miners include the transactions with the highest fees first to maximize their revenue, but the high-fee child transaction can only be included once the parent transaction is confirmed. The miners are therefore incentivized to include both the parent and the child transaction together in a block. A Child-Pays-For-Parent transaction can be created by a recipient of the transaction or by the sender if the target transaction has a change output.
  2. In Bitcoin, a transaction can be replaced by a new transaction with a higher fee as long as the new transaction spends few or all of the same inputs used by the original transaction that's being replaced. Unlike CPFP, only the sender of the transaction can create a Replace-By-Fee transaction, and only either of the transactions can be confirmed. More often than not, the replacement transaction with the higher fee will be accepted by the miners.

Notes:

  1. As other coins do not have a blockspace market, this route is only available for Bitcoin at this time.
  2. Using CPFP, if a target transaction depends on other unconfirmed transactions, this route also adds sufficient fees to elevate the entire transaction ancestry's effective fee rate to the cpfpFeeRate.

Path Parameters

  • coinstringRequired
    This route is only available for Bitcoin.
    Enum: btc tbtc4
  • walletIdstringRequired
    Example: 59cd72485007a239fb00282ed480da1f
    Pattern: ^[0-9a-f]{32}$

Request Body

cpfpTxIds array[string]
The on-chain transaction id
Example: b8a828b98dbf32d9fd1875cbace9640ceb8c82626716b4a64203fdc79bb46d26
cpfpFeeRate integer
Desired effective feerate of the bumped transactions and the CPFP transaction in satoshi per kilobyte
maxFee integer
Maximum allowed fee for the CPFP transaction in satoshi **Note**: A CPFP transaction accelerates the target transactions and all of the unconfirmed transactions the target transactions depends on. As it can be difficult to discern the complete transaction ancestry at times, we recommend limiting the total fee for each CPFP attempt as a safety net to prevent CPFP transactions that exceed your cost expectations.
rbfTxIds array[string]
The list of transactions to accelerate using Replace-By-Fee (RBF) for UTXO coins (currently accelerating only one tx is supported).
feeMultiplier 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`.
Minimum: >= 1
Example: 1.5
walletPassphrase string
(Hot wallet only) Passphrase to decrypt the user key on the wallet to sign the transaction.

200 Response

Any of
transfer object
coin string required
A cryptocurrency or token ticker symbol.
Example: btc
id string required
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
wallet string required
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
enterprise string
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
txid string required
The on-chain transaction id
Example: b8a828b98dbf32d9fd1875cbace9640ceb8c82626716b4a64203fdc79bb46d26
txidType string
The type of the transaction id
Allowed values: transactionHash blockHash
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 required
Defines whether or not this Transfer was sent or received by the user
Allowed values: send receive
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
Example: 2000000
Match pattern: ^-?\d+$
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.
Example: 2000000
Match pattern: ^-?\d+$
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.
Example: 2000000
Match pattern: ^-?\d+$
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
Example: 2000000
Match pattern: ^-?\d+$
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 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.
Allowed values: confirmed failed initialized pendingApproval rejected removed replaced signed unconfirmed
Example: confirmed
tags array[string] required
The tags to be used on this Transfer (used in Policies)
Example: 59cd72485007a239fb00282ed480da1f
history array[object] required
An audit log of events that have happened to the Transfer during its lifecycle
comment string required
A comment from the user
vSize integer
The size of the transaction
nSegwitInputs integer
DEPRECATED. Number of segwit inputs on the transfer.
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&mdash;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
Example: 59cd72485007a239fb00282ed480da1f
Match pattern: ^[0-9a-f]{32}$
txRequestId string
Associated transaction request ID
goStakingRequestId string
Associated GO staking request ID
subType string
Transfer subtype
Allowed values: ofc_withdrawal ofc_deposit ofc_unstake ofc_stake
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[object]
Additional metadata associated with the transfer
sendAccounting array[object]
Accounting breakdown for send transactions
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 object
Parameters used to build the transaction
entries array[object]
An array of objects describing the change in address balances made as a result of this Transfer
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[string]
Transaction IDs that this transfer replaces.
replacedBy array[string]
Transaction IDs that replace this transfer.
txid string
Unique transaction identifier
txOne of
Encoded transaction hex (or base64 for XLM)
status string
Transfer status
Allowed values: signed signed (suppressed) pendingApproval

400 Response

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