QR QR Studio

QR code type

Bitcoin QR code

Published 7 September 2026 · 2 min read

Raw payload

bitcoin:bc1qexampleexampleexampleexampleexampleexamp?amount=0.001&label=Shop
  1. bitcoin: The URI scheme. Wallet apps register it and open on scan
  2. bc1qexampleexampleexampleexampleexampleexamp The receiving address. This one is a placeholder and is not valid; use one from your wallet
  3. ?amount=0.001 Optional amount in BTC, not satoshis. 0.001 BTC is 100,000 sats
  4. &label=Shop Optional name shown by the wallet so the payer knows who they are paying
How a Bitcoin payment request payload is put together. Scanners read the prefix, then each field in turn.
QR code encoding bitcoin:bc1qexampleexampleexampleexampleexampleexamp?amount=0.001&label=Shop
A real Bitcoin payment request code. Scan it with your phone.

When to use it

Shops and cafés that accept Bitcoin, donation pages and posters, a freelancer’s invoice, a conference booth. A code removes the one thing nobody should ever do with a Bitcoin address: type it by hand.

The example code on this page uses a placeholder address that no wallet will accept. Never encode an address you have not copied directly from your own wallet.

How it behaves on phones

iPhone: the built in Camera app recognises the bitcoin: scheme only if a wallet app has claimed it, in which case it offers to open that wallet. Otherwise it shows the raw text. In practice people open their wallet app and use its scanner, which reads the address, amount and label and shows a confirmation screen.

Android: most Android scanners hand bitcoin: to an installed wallet or show a chooser. Without a wallet the text is shown with a copy button. Wallet apps’ own scanners behave as on iPhone.

Common mistake

Encoding an address you retyped from a screen, or one copied from a chat where a character was autocorrected. Bitcoin addresses have a checksum so a wallet will usually refuse a mistyped one, but not always, and a payment to a valid wrong address is gone. Copy straight from the wallet’s receive screen, then scan your own code and compare every character.

Gotchas

BIP 21 format. bitcoin: then the address, then optional ?amount=, &label=, &message=. Amount is in BTC with a decimal point. Label and message must be percent encoded if they contain spaces.

Typos are unrecoverable. There is no bank to call. Modern bech32 addresses starting bc1 detect most typos and a wallet will refuse them, but the safe habit is copy, encode, scan back, compare.

Uppercase trick. Bech32 addresses are valid in all capitals, and the BIP 173 standard mentions this exact use: BITCOIN:BC1Q... fits the compact alphanumeric mode and makes a smaller code. The ?, = and & in the query part break it, so it only helps for a bare address.

Address reuse. A printed code means one address for every payer. That is fine for a donation tin and poor for a shop that wants tidy accounts. Point of sale systems generate a fresh code per sale for that reason.

Lightning. Lightning invoices use a different scheme, lightning:, and are single use, so they are not printable. Some wallets accept a unified code with both; that is beyond a static poster.

Size. The example payload is 78 characters and fits version 5 at level Q, 37 modules wide.

Try it in QR Studio

QR Studio has a Bitcoin type that takes an address, optional amount and label, encodes them as a BIP 21 URI, and shows the decoded result so you can check it against your wallet before you export.

Level Q. A payment code that fails to scan costs a sale, and one that scans wrongly cannot happen with error correction, only with a wrong payload. 4 cm on a counter card, 8 cm on a poster. Print the first and last six characters of the address in text beside the code so a payer can check the wallet shows the same ones.

Try it yourself

Upload the code you made and read the address back, character by character, before it goes to print.

Decode your own code

Frequently asked questions

Why does my iPhone camera not do anything when I scan a Bitcoin code?

iOS only knows what to do with a bitcoin: link if a wallet app has registered for it. Open the wallet and use its own scanner, which is what most people do anyway.

Should I put the amount in the code?

For a fixed price item yes, in BTC. Remember the exchange rate moves, so a printed amount in BTC is a moving price in pounds or dollars. For donations leave it off.

Can I reuse one address on a poster?

You can, and a poster has to. But every payment to it is visible on the public blockchain, linked together. For privacy and accounting, wallets recommend a fresh address per payment where possible.

Is the example address on this page real?

No. It is deliberately invalid so that no wallet will send to it. A real address from your wallet has a checksum that this one fails.

Related reading

Make a Bitcoin payment request QR code in QR Studio

Pick Bitcoin payment request from the type list, fill in the fields, and the payload below is written for you. Free, no watermark.

Download on the App Store