When Keystone won’t sign
Your wallet shows a QR code, and the Keystone either throws up a red face or does nothing at all. There are usually three causes, and the message on the screen tells you which one you have.
Which one are you seeing?
These failures look similar but have nothing in common underneath. What is written on the device decides where to go.
“Incongruent Transaction”
Incongruent Transaction The transaction doesn't belong to the current wallet. Please check the transaction information.
What the device is actually doing
The Keystone walks through every input in the PSBT asking one question: is there anything in here I can sign? It answers that from the PSBT’s BIP32_DERIVATION field, which carries three things per input.
- The master fingerprint — four bytes identifying which seed this wallet came from
- The derivation path — a position such as
m/84'/0'/0'/0/5 - The public key — what should come out at that position
If any one of the three disagrees with what the device holds, that input belongs to somebody else as far as the Keystone is concerned. When every input fails that test there is nothing left to sign, and you get this message.
So this error does not mean the QR was read badly. The QR was read perfectly, understood, and then rejected. That distinction matters — a reading problem would have surfaced as a parse error long before this screen.
How to narrow it down
Eliminate the three in order. It is the fastest route.
- Is the account type right? If your wallet selected an
m/84'account (addresses startingbc1q) but the Keystone was paired onm/49'(starting3), the paths will never line up. This is the most common cause and the easiest to check — compare the first address your wallet shows against the first address on the device. - Is a passphrase involved? A passphrase produces an entirely different wallet. The device has to be in the same state it was in when you paired it.
- Does the device hold more than one seed? The Keystone can carry several wallets. The name in the top-left corner is the one currently open — make sure it is the one you paired.
- Is the wallet software writing the fingerprint wrong? If the first three all check out and it still fails, this is where you are. It gets its own section below.
A PSBT built by this site hit exactly this error on a Keystone 3 Pro. Right account, no passphrase, single wallet on the device. The cause was a bug in the software creating the PSBT.
Byte order in the fingerprint — an easy place to get it wrong
BIP174 states that derivation path elements are written as 32-bit little-endian integers. About the master fingerprint that sits immediately before them, it says only “the master key fingerprint as defined by BIP 32”. And BIP32 defines that fingerprint not as a number but as the first four bytes of a hash160 — bytes, in the order they appear.
So one field uses two different conventions back to back. The official test vectors make it obvious once you look:
… a5877110 | d90c6a4f | 00000080 | 00000080 | 04000080 …
pubkey fingerprint path path path
(tail) (as-is) (reversed) (reversed) (reversed)The fingerprint d90c6a4f is not reversed. The path element 00000080 is 0x80000000 — hardened zero — written backwards.
Reverse the fingerprint along with the path and the device looks for a value that is no longer there. In our case the wallet fingerprint was 37b5eed4 and what went out was d4eeb537. The Keystone could not find itself, so it concluded — correctly, from its point of view — that this transaction belongs to someone else.
Once fixed, the identical transaction produced Confirm Transaction on the first try, with the right amount and the right input addresses.
Export the PSBT as base64 and look at the BIP32_DERIVATION value. The master fingerprint shown in your device’s settings (eight hex characters) and the four bytes in the PSBT have to appear in the same order. If they are mirrored, the fault is in the wallet software and not something you can fix from the device — try building the transaction in a different wallet, and tell whoever wrote the first one.
The QR loops forever, or the device gives up
No error text — the animated QR just keeps cycling, or the device freezes, or the scan never completes. More often than not this is a size problem rather than a failure.
Why it grows
Save a little every month for a few years and you end up with hundreds of UTXOs. Move them all at once and every one of them becomes an input in a single transaction, which overruns the device’s memory.
But the format matters more than the count. When a wallet builds a PSBT the legacy way, each input has to carry the entire previous transaction along with it. SegWit only needs the amount. The same hundred inputs can differ by an order of magnitude because of that alone.
- SegWit, 100 inputs — roughly 13 KB
- Legacy, 100 inputs — can pass 1 MB
Which is why the first thing to check is not “how do I split this” but what the wallet is set to. Changing the format alone often removes the need to split at all.
The order to work in
- Work out why it got big — count, or format
- If it is the format, fix only that
- If it really is the count, measure how many the device tolerates, then split
Do not guess at step three. The limit moves with firmware and input type even on the same model. Measuring it is the only answer you can rely on.
Give it a pairing QR or the PSBT that won’t sign and it works out why the transaction blew up, and how many inputs per batch if splitting is genuinely needed. It can build the signable PSBTs for you as well.
Open the UTXO consolidation toolThe QR never registers at all
If the device does not react in the slightest, the problem is delivery rather than content.
- Wrong format. Keystone expects a PSBT wrapped as
ur:crypto-psbt. A raw base64 string rendered as a QR code means nothing to it. - The QR is too dense. Packing more into each frame shrinks the modules past what the camera can resolve. Splitting into more frames is usually faster overall.
- The screen is too bright, or too dim. Turn the monitor brightness down and wipe the fingerprints off. This fixes it more often than it has any right to.
- The animation is too fast. With many frames, a fast cycle means the device spends its time waiting for the one frame it keeps missing. Slow it down.
If microSD is an option, it is the more reliable path. QR is convenient, but for large transactions the card wins.
Signed, and still stuck
When the Keystone finishes signing it shows you a QR code. That QR is not a finished transaction — it is a PSBT with the signatures filled in. Before it can go to the network, those signatures have to be assembled into scriptSig and witness fields, and normally the companion wallet is what does that.
Which is how people end up holding a valid signature with no idea where to put it. You have signed, and you still need another wallet to finish the job.
Hand it a signed PSBT and it assembles a transaction you can broadcast. No private key is involved — the signatures are already in there, this only puts them together — and it verifies that those signatures are actually valid before you send.
Signed transaction toolThree things that always hold
- Never type your seed phrase into anything. There is no signing problem whose solution involves entering a seed. Anything that asks for one is theft.
- Read the amount and address off the device screen. Whatever software built the PSBT, the device display is the last thing you can trust. That is the entire point of owning one.
- Send a small amount first. Watch the whole path work end to end before you move the rest.
We can work through it together over a screen share. Your private keys and seed phrase never reach me under any circumstance — I watch your screen and tell you what to press. Anyone who asks to see your seed is stealing from you.
What you send passes through a server once so it can be delivered as email, and is not stored. Unlike the tools on this site, contact needs a server — there has to be somewhere to reply to.