Technical reference
Bitcoin payment links: read the request behind the QR code
A bitcoin: link carries payment instructions. Its label is not a verified identity and scanning it is not payment confirmation.
Research articles and reference entries are published in English. Navigation is available in seven languages.
In this article
A QR code is just a carrier
A payment QR can encode a bitcoin: URI with a destination and parameters. BIP 21 established the familiar format; BIP 321 replaces it with rules reflecting modern addresses and payment instructions. The visible image does not authenticate whoever supplied the underlying text.
The amount parameter uses decimal BTC, not satoshis and not the wallet’s preferred display unit. For example, amount=0.001 means 100,000 satoshis. A label or message helps describe the request but is chosen by its author. Neither establishes the recipient’s identity.
One link can offer different payment paths
BIP 321 accommodates instructions such as Lightning invoices, BOLT 12 offers and silent payments. It can also carry an onchain fallback. Wallet support varies, so inspect which path the wallet actually selected instead of assuming every scanner interprets the link identically.
Unknown required parameters, prefixed req-, make the URI invalid for a client that cannot handle them. Unknown optional parameters can be ignored. This distinction matters when a request depends on a feature absent from an older wallet.
Check the final payment view
Compare the recipient, network or payment path, amount and fee in the wallet with the request you intended to pay. Opening the app, loading a payment screen or returning to the merchant page is not by itself evidence of settlement. Do not send again merely because the website appears stuck; check the wallet’s result first.
For your own integration, test the supported link variants with the wallets you advertise. Include a missing optional parameter, an unsupported required parameter and an amount displayed in different units. Keep the original request and the confirmed payment record separate. That makes a support case easier to investigate without asking someone for a seed phrase.
