Swiss QR Code Generator

Generate Swiss QR Code barcodes in your browser with live preview, validation, and PNG/SVG export.

Advanced options
Enter a value to see a live preview.
Options

These map directly to real generator options; anything not listed here is available under Advanced options above.

What the Swiss QR Code is

The Swiss QR Code is a standard QR Code (ISO/IEC 18004) carrying the structured Swiss payment data used on Swiss QR-bill invoices, per the Swiss payment standards body SIX.

Generate it now

Enter your Swiss QR-bill payment fields to see a live preview.

Valid input

Input follows the Swiss QR-bill structured data format (IBAN, amount, reference, etc.), beginning with SPC, version 0200, and coding type 1. Fields in these examples use the literal ^CR^LF escape token; bwip-js decodes it to line breaks only when parse is enabled.

Key options

For a QR-bill, error correction is fixed at M by the SIX specification; it is not a workflow choice. parse must be true for the seeded caret-escaped example so literal "^CR^LF" tokens become real line breaks. Omitting parse encodes the token text instead and is non-conformant.

Output and printing

Export SVG, then size the Swiss QR Code itself to 46x46mm in the payment-part artwork without removing its required surrounding quiet space.

Common uses

Swiss QR Code is used on Swiss QR-bill invoices for structured, scannable payment initiation.

Example

See the live preview above, seeded with a value that passes both the repository's Swiss QR-bill structure checks and the pinned encoder.

Size guidance

SIX requires the printed Swiss QR Code area to be 46x46mm and requires surrounding quiet space; preserve both when placing the SVG.

Troubleshooting

If the payment app cannot read the fields, verify the structured data follows the exact Swiss QR-bill field order.

Related formats

Related formats: plain QR Code.

FAQ

Why does my QR code look wrong even though bwip-js did not reject my input?

bwip-js does not validate Swiss QR-bill field semantics -- it only encodes whatever text it is given. If parse is left off, the literal "^CR^LF" text is encoded instead of real line breaks between fields, which most payment apps will not parse correctly even though bwip-js itself renders a valid QR Code. Set parse: true.