For the complete documentation index, see llms.txt. This page is also available as Markdown.

Example QR Codes

Reference QR codes for testing wallet and scanner integrations.

Reference QR codes for wallet developers (and the Branta scanner) to confirm a Branta integration handles each destination type correctly — on-chain, Lightning, unified BIP-21, ZK variants, and not-found. Scan them with your wallet to verify counterparty info renders before broadcast.

Pages are split by environment:

  • Production — points at guardrail.branta.pro.

  • Staging — 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 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.

  • ZK Testnet (staging) — same as ZK on-chain, using a Bitcoin testnet (tb1q…) address.

  • ZK Unified — a BIP-21 URI with on-chain address, lightning= invoice, and branta_id / branta_secret. This is the QR POS like BTCPay show when both rails are enabled. Assembled from the ZK On-chain and ZK Lightning examples; pass the full string to getPaymentsByQrCode.

  • Not found — an unregistered destination. Per the wallet integration pattern, wallets should render nothing on a miss.

  • Tampered — a ZK on-chain QR whose visible address doesn't match the address its branta_id/branta_secret decrypt to (e.g. an attacker swapped the address but left the ZK params pointing at a real payment). The SDK rejects this instead of returning it as verified — wallets should show a hard warning, not treat it like a miss.

Last updated