Swiss QR-bill

The Swiss domestic payment-slip format — SPC v0200, QR-code-encoded payload, A6 payment part.

The Swiss QR-bill replaced the legacy red and orange payment slips in 2020. The format is defined by the SIX Interbank Clearing "Swiss Implementation Guidelines: QR-bill" and encodes a fixed 31-line payload as a Swiss QR Code (a QR Code variant with a Swiss cross overlay in the centre).

The payload is called *Swiss Payments Code v0200* (SPC v0200). It is a 31-line, CRLF-delimited text blob containing: header (3 lines including "SPC"/version/coding), creditor info (7 lines including IBAN), ultimate creditor block (7 lines), payment amount and currency (2 lines), ultimate debtor block (7 lines), reference type and reference (2 lines), unstructured message (1 line), trailer ("EPD"), and optional bill information (1 line). Total payload capped at 997 bytes after UTF-8 encoding.

The A6 paper layout has two halves separated by a perforation: a *receipt strip* (62 mm wide, left) the debtor keeps, and a *payment part* (right) the debtor presents at the post office or scans via mobile banking. Both halves are mandatory and have fixed-width layouts to the millimetre per the SIX style guide.

iso-compliant ships the SPC encoder and renderer (PDF / SVG / PNG / payload) at POST /v1/qr-bill. The encoder is at apps/api/src/lib/spc.ts; the PDF / SVG renderers under apps/api/src/lib/qrbill-pdf.ts and qrbill-svg.ts. The free browser-side renderer at /qrbill uses the same payload-construction logic — see lib/spc-parse.ts.

Related terms

← All terms