Bitcoin Tools

Payment request decoder

Paste a bitcoin: link or a Lightning invoice and get a plain-English summary: how much, what for, when it expires, and whether the signature checks out. Entirely offline.

Runs entirely in your browser No tracking Never asks for your keys

🔒 Decoded locally. Optional USD/EUR conversion fetches only the price from mempool.space — your invoice is never sent.

On-chain links and Lightning invoices

People ask to be paid in two common ways. An on-chain request is usually a BIP-21 link: bitcoin: plus an address and, optionally, an amount and a note. A Lightning request is a BOLT11 invoice: a long string starting with lnbc (or lntb on testnet) that a Lightning wallet can pay in seconds.

Both can look intimidating. This tool unpacks them in your browser: how much is asked, what it claims to be for, which network it is on, and — for Lightning — when it expires and whether its signature is valid. It never opens a connection to a Lightning node, so it cannot spy on you and cannot tell whether an invoice was already paid.

BIP-21 details

The address is checked with the same rules as the address checker. Amounts are BTC decimals. Labels and messages are percent-decoded. If the link includes a lightning= parameter, both the on-chain and Lightning parts are shown — pay only one of them. Parameters that start with req- are required by BIP-21; if this tool does not understand one, it tells you the whole request must be treated as invalid.

BOLT11 details

A Lightning invoice carries a timestamp, an expiry (default one hour if omitted), a payment hash, usually a human description (or a hash of one), and a signature from the payee’s node public key. Amounts use multipliers: m (milli), u (micro), n (nano), p (pico) bitcoin, converted here to sats and millisats. Route hints and feature bits are listed under technical details for those who need them.

Expired means stop

Once the expiry time has passed, do not pay the invoice. Ask for a new one. Paying an expired invoice is a common source of confusion and stuck payments.

Worked example

The classic BOLT11 donation invoice from the specification (prefix lnbc1pvjluez…, no amount) decodes as a mainnet Lightning request for any amount, description “Please consider supporting this project”, created 1 June 2017, with a recoverable payee public key and a valid signature. A BIP-21 link such as bitcoin:bc1q…?amount=0.01&label=Tips shows a 0.01 BTC on-chain request to that address, labelled “Tips”.

Frequently asked questions

What is a BIP-21 URI?

A link that starts with bitcoin: and carries an on-chain address plus optional amount, label and message. Some also include a lightning= parameter with a Lightning invoice as a preferred option.

What is a BOLT11 invoice?

The standard Lightning payment request. It starts with lnbc (mainnet), lntb (testnet), lntbs (signet) or lnbcrt (regtest), optionally preceded by lightning:. It encodes amount, expiry, a payment hash, a description and a signature from the payee’s node.

Does this tool talk to any Lightning node?

No. Decoding and signature checks happen entirely in your browser. It cannot tell whether an invoice has already been paid, and it never contacts LNURL or Lightning Address servers.

What does a valid signature mean?

It means the invoice was produced by the node whose public key is shown and has not been altered since. It does not tell you who runs that node or whether you should trust them.

Why is an expired invoice a hard stop?

After the expiry time, honest recipients will not settle the payment. Paying it usually fails and can leave funds in limbo in buggy wallets. Always ask for a fresh invoice.

Can it decode LNURL, BOLT12 or Lightning addresses?

Not yet. Those formats need contacting a server. This tool sticks to what can be verified offline: BIP-21 and BOLT11.