Skip to main content
Manual UTXO selection lets you control which unspent transaction outputs (UTXOs) are spent in a transaction, instead of relying on the default selection logic. Use it to send only from UTXOs that match criteria such as label, amount, or address, or to manage funds across multiple clients with precision.
Beta endpoints — The UTXO labeling and listing endpoints, and the utxoSelectionParams field on Create Transaction, are in beta and may change. Supported assets: BTC, LTC, DOGE, BCH. To request access, contact your Customer Success Manager.

How UTXO selection works

UTXO selection has three building blocks. You can use them independently or in combination:
  • Labels are arbitrary strings you attach to UTXOs (for example, client-a or counterparty). You can use them later as filter criteria.
  • Filters narrow a set of UTXOs by label, amount, address, and other attributes. Filters work both in the listing endpoint and inside utxoSelectionParams when you create a transaction.
  • Explicit selection lets you specify exact UTXOs to spend by txHash and vout.
When you create a transaction with utxoSelectionParams, you can pass either filters, an explicit selection, or both. When you pass both, Fireblocks spends the explicit picks first and uses filters to select any additional UTXOs needed to cover the fee, if fillFeeForSelectedInputs is set to true.

API reference

Label UTXOs

Attach or detach labels by identifying UTXOs with {txHash, vout} or {txId}.

List UTXOs

Retrieve a paginated list of unspent outputs for a vault account and asset. Filter by labels, amount range, address, status, and change/coinbase.

Select UTXOs in a transaction

The utxoSelectionParams field on Create Transaction has two subfields:
  • filters — server-side filter criteria. Fireblocks selects UTXOs that match.
  • inputSelection — an explicit list of UTXOs to spend. Set fillFeeForSelectedInputs: true to let Fireblocks add more UTXOs (subject to filters) if the selected inputs don’t cover the fee.
utxoSelectionParams replaces the previous extraParameters.inputsSelection field. You can still use extraParameters.inputsSelection in requests, but you cannot use both fields together or the transaction will fail.

Example: Send from labeled UTXOs above a minimum amount

When you manage funds for multiple clients using labels, you can send from UTXOs labeled for specific clients without picking them manually. Filters alone are enough — Fireblocks selects matching UTXOs that cover the transaction amount.

Example: Drain a specific address and pay fees from another address (same vault)

A common pattern for omnibus vault operators: transfer the full balance of a specific customer address and have the network fee paid by a different address in the same vault (a dedicated “gas station” address). This keeps the customer’s transaction clean on the block explorer — no extra fee-related transfers. The flow:
  1. Call List UTXOs filtered by the customer’s address to get all their unspent outputs.
  2. Sum the UTXO amounts to get the transfer amount.
  3. Call Create Transaction with inputsToSpend set to those UTXOs and fillFeeForSelectedInputs: true. Fireblocks automatically picks additional UTXOs from other addresses in the vault to cover the fee.
Optionally, use filters to restrict which UTXOs Fireblocks can pick for fee coverage (for example, only UTXOs labeled gas-station).
Key points:
  • fillFeeForSelectedInputs: true tells Fireblocks to use the specified UTXOs for the transfer amount, and to automatically select additional UTXOs from the vault to cover the network fee.
  • Without this flag, if the specified UTXOs don’t have enough to cover both the amount and the fee, the transaction fails.

Field reference