What is a PSBT?
A Partially Signed Bitcoin Transaction (PSBT) is a standard format defined in BIP-174 for representing Bitcoin transactions that may not yet have all required signatures. PSBTs enable secure collaboration between multiple parties or devices when creating transactions, making them essential for hardware wallets, multisig setups, and complex signing workflows.
Unlike raw transactions, PSBTs carry metadata about each input and output, including UTXO information, public keys, derivation paths, and partial signatures. This metadata allows different signers to contribute without needing access to the full wallet state.
PSBT Structure Explained
Every PSBT contains three main sections:
Global Data
Contains the unsigned transaction and optional extended public keys (xpubs) that apply to the entire PSBT. The unsigned transaction defines the inputs being spent and outputs being created, but without any signatures.
Input Data
Each input has its own map containing: the UTXO being spent (witness or non-witness), partial signatures from different signers, redeem/witness scripts for P2SH/P2WSH, BIP32 derivation paths for hardware wallets, sighash type, and finalized scripts when signing is complete.
Output Data
Each output can include: redeem/witness scripts if spending to P2SH/P2WSH, BIP32 derivation paths for change outputs, and Taproot-specific data like internal keys and leaf scripts.
Common PSBT Use Cases
Hardware Wallet Signing
Hardware wallets like Ledger, Trezor, and Coldcard use PSBTs to receive transaction proposals from software wallets. The PSBT contains the derivation paths needed for the hardware wallet to sign without exposing private keys.
Multisignature Transactions
In a 2-of-3 multisig setup, one party creates the PSBT and adds their signature, then passes it to the second signer. Each signer adds their partial signature until the threshold is met and the transaction can be finalized.
CoinJoin and Collaborative Transactions
Multiple parties can contribute inputs to a single PSBT without revealing their private keys to each other. Each participant signs only their own inputs, enabling privacy-preserving collaborative transactions.
Airgapped Signing
PSBTs can be transferred via QR codes or USB drives between an online watch-only wallet and an offline signing device. This airgap provides maximum security for cold storage.
Frequently Asked Questions
What is the difference between PSBT and a raw transaction?
A raw transaction is a fully signed, serialized transaction ready for broadcast. A PSBT is a container format that includes an unsigned (or partially signed) transaction along with metadata needed for signing, such as UTXO data, public keys, and derivation paths. PSBTs become raw transactions after finalization.
How do I know if a PSBT is ready to broadcast?
A PSBT is ready when all inputs are "finalized," meaning they have all required signatures and the scriptSig/witness data is complete. This tool shows the signing status for each input and indicates when the PSBT is complete. For multisig, all required signatures (M of N) must be present.
What are BIP32 derivation paths in a PSBT?
BIP32 derivation paths tell hardware wallets which private key to use for signing. They include a master fingerprint (first 4 bytes of the master public key hash) and a path like m/84'/0'/0'/0/5, which identifies the specific key in the wallet's HD tree.
What is the witness UTXO field?
The witness UTXO contains the value and scriptPubKey of the output being spent. For SegWit inputs, this is sufficient for signing. Non-SegWit inputs require the full previous transaction (non-witness UTXO) to prevent fee attacks where a malicious PSBT creator lies about input values.
Can I edit a PSBT after it has been partially signed?
Modifying the unsigned transaction (changing outputs, amounts, or fee) after signing invalidates existing signatures. However, you can add more partial signatures, derivation paths, or UTXO information without affecting existing signatures.
What is PSBT finalization?
Finalization is the process of combining all partial signatures and metadata into the final scriptSig and witness data. Once finalized, the input can no longer accept new signatures. A finalized PSBT with all inputs complete can be extracted as a raw transaction for broadcast.
How does PSBT support Taproot?
PSBT version 0 was extended (and later PSBT v2 formalized) to support Taproot fields including: tap internal keys, tap key signatures, tap script signatures with leaf hashes, and tap BIP32 derivation paths. These enable key-path and script-path spending for P2TR outputs.
What format should I use - base64 or hex?
Both formats encode the same PSBT data. Base64 is more compact and commonly used by wallets for QR codes and clipboard sharing. Hex is useful for debugging and manual inspection. This tool accepts either format and automatically detects which one you're using.
Instant Bitcoin Transactions
Spark processes Bitcoin transactions instantly. Build faster payment experiences with our Bitcoin L2.