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