CryptoQR Maker

BIP21 explained: the format inside every Bitcoin payment QR

Updated · 6 min read

Scan a Bitcoin payment QR and your wallet often fills in the address, the amount and a note. That works because the QR holds a BIP21 URI, a small, strict text format that wallets have agreed on for years.

The anatomy

bitcoin:bc1q…f3t4?amount=0.0015&label=Corner%20Cafe&message=Order%2042
Part Example Meaning
Scheme bitcoin: Tells the device this is a Bitcoin payment
Address bc1qw508… Where the coins go
amount 0.0015 How much, in BTC
label Corner%20Cafe Who is being paid
message Order%2042 What the payment is for

Everything after the ? is optional. bitcoin:bc1q… on its own is a valid BIP21 URI.

Rules that trip people up

The amount is in BTC. Not satoshis, not dollars. 50,000 sats is 0.0005. Use a dot for decimals, never a comma, and no thousands separators.

Text must be percent-encoded. A space becomes %20, an ampersand becomes %26. An unencoded & inside a message splits it into a broken parameter.

Unknown "required" parameters. Parameters beginning with req- are marked as required. A wallet that doesn't understand one must refuse the payment, so don't invent them.

Case. The scheme is case-insensitive. bech32 addresses can be all lowercase or all uppercase (uppercase makes slightly smaller QR codes), but never mixed.

Label versus message

Wallets typically show the label as the recipient name and may store it in the address book. The message describes the payment and may appear in the transaction notes. Neither is written to the blockchain. They only live in the payer's wallet.

Other coins borrow the format

Litecoin (litecoin:) and Dogecoin (dogecoin:) use the same shape with their own prefixes and units. Ethereum uses a different standard, EIP-681, and Solana uses Solana Pay.

Unified QR codes

Some wallets add a Lightning invoice to a BIP21 link with a lightning= parameter. Wallets that understand Lightning pay the invoice; others fall back to the on-chain address. You need a Lightning wallet to create the invoice part.

Build a BIP21 code with every part labeled. Open the Bitcoin QR generator

Keep reading