> For the complete documentation index, see [llms.txt](https://developer.branta.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.branta.pro/setup/wallets/example-qr-codes.md).

# Example QR Codes

Reference QR codes for [wallet developers](/setup/wallets.md) (and the [Branta scanner](https://scan.branta.pro/scan)) to confirm a Branta integration handles each destination type correctly — on-chain, Lightning, ZK variants, and not-found. Scan them with your wallet to verify counterparty info renders before broadcast.

Pages are split by [environment](/tech/environments.md):

* [**Production**](/setup/wallets/example-qr-codes/production.md) — points at `guardrail.branta.pro`.
* [**Staging**](/setup/wallets/example-qr-codes/staging.md) — points at `staging.guardrail.branta.pro`.

Each page exposes the QR variants as tabs:

* **On-chain** vs **Lightning** — the destination network.
* **ZK** vs non-ZK — [Zero-Knowledge](/tech/api/v2/adding-payments.md#zero-knowledge) destinations encrypt the payment destination so it never reaches Branta in plain text. On-chain ZK QRs carry `branta_id` + `branta_secret` query params alongside the address; Lightning ZK relies on the SDK encrypting the invoice itself before lookup. Non-ZK destinations are plain addresses or invoices.
* **Not found** — an unregistered destination. Per the [wallet integration pattern](/setup/wallets.md), wallets should render nothing on a miss.
