Skip to main content
EZQR

Swish QR Code

Free Swish QR Code Generator — Amount and Message

Build a Swish QR that opens the Swish app with your number, and optionally the amount and reference, already filled in. Follows the official Swish C2B format.

Quick answer

A Swish QR code encodes your Swish number so a payer scanning it opens the Swish app with the payment ready. The amount and a reference message are optional — leave the amount blank and the payer enters it, or set it and the code carries it. Enter the number, add your colours and logo, and download a free PNG, with SVG and PDF on the paid plans. No watermark. Swish is a Swedish service and these codes only work for payers with the Swish app.

Optional. In SEK. Leave blank to let the payer enter it.

Free static QR codes. Sign up to unlock dynamic codes & analytics.

Your QR code will appear here

About Swish QR Codes

Swish is the dominant mobile payment method in Sweden, and the QR code is how a printed surface reaches it — a market stall sign, an invoice, a counter card, a parish collection box.

This generator produces a code in the official Swish C2B format, not a link to a web page. That matters: the code is a structured payment instruction the Swish app reads directly, so there is no redirect, no landing page and nothing in the middle. It also means the code only does anything for someone with Swish installed, which in practice means a payer in Sweden.

What you need is the receiving Swish number — the corporate number for a business, or a personal number for private use. Amount and message are optional, and whether you set them changes what the payer can edit.

What a Swish QR code actually contains

Unlike most codes on this site, a Swish code is not a URL. It is a short structured string that the Swish app parses, defined in Swish's own QR code specification as the C2B format:

C<payee>;<amount>;<message>;<lock_mask>

Taking the specification's own worked example — a company with Swish number 1237856901 invoicing 100 SEK against OCR 12229445 — the encoded string is:

C1237856901;100,00;12229445;0

Four things are worth knowing about that string:

FieldWhat it carriesRule
CRequired prefixA capital C, always
payeeThe receiving Swish numberDigits only
amountSEKTwo decimals, comma separator — 100,00, never 100.00
messageReference, order ID or OCRURL-encoded
lock_maskWhat the payer may editBitmask: payee 1, amount 2, message 4

An omitted field is an empty string, and an omitted lock mask is read as 0. The comma decimal separator is the detail most hand-built Swish codes get wrong — a full stop is not valid in this format.

The lock mask, and why leaving the amount blank matters

The last field decides what the payer can change before confirming. It is a bitmask where a set bit means editable: payee is bit 0 (value 1), amount bit 1 (value 2), message bit 2 (value 4). A mask of 0 means everything is fixed, which the specification notes will be the case most of the time.

This generator sets it for you, and the logic is the obvious one:

  • Amount set, message set → mask 0. Everything is fixed, which is what an invoice wants.
  • Amount blank → the amount bit is set, so the payer can enter one. A code with a fixed-but-empty amount would be unusable.
  • Message blank → the message bit is set, so the payer can add their own reference.

So a bare "pay me" code with no amount and no message comes out as C1237856901;;;6 — 4 + 2, both fields editable, matching the example the specification itself gives for that case.

The practical rule is the same as for every other payment code: fix the amount only when there is exactly one thing being paid for. On a market stall, a collection box or a counter, leave it open.

  • Print the Swish number as readable text beside the code. A payer can then confirm who they are paying, and anyone whose camera fails has a way to continue.
  • Scan the printed proof with a phone that actually has Swish installed. A code that decodes to the right string in a generic scanner still tells you nothing about how the app handles it.
  • Swish only exists in Sweden. If some of your customers are elsewhere, pair it with another payment path rather than assuming the code covers everyone.

Walkthrough

How to Create a Swish QR Code

  1. Enter the Swish number

    The receiving number — a corporate Swish number for a business, or a personal one. Spaces and dashes are stripped automatically, so 123 456 78 90 and 1234567890 produce the same code.

  2. Set an amount, or leave it blank

    Blank means the payer types the amount, which is what you want on a tip jar, a collection box or a till. A set amount suits an invoice or a single-price item. Amounts are in SEK and are formatted to two decimals with a comma, as the Swish specification requires.

  3. Add a reference if you need to reconcile

    The message field carries a reference number, order ID or OCR number, and it arrives with the payment. This is how an invoice payment gets matched back to the invoice.

  4. Brand it, download and proof it

    Set colours and a logo, then download a free PNG, with SVG and PDF on the paid plans. Scan the printed proof with a phone that has Swish installed before the code goes anywhere.

Swish QR Code FAQ

Common questions about generating, printing, and deploying these codes.

What does a Swish QR code encode?

Not a web link. It encodes a structured string in Swish's C2B format — C<payee>;<amount>;<message>;<lock_mask> — which the Swish app reads directly. The specification's own example for a 100 SEK invoice with OCR 12229445 is C1237856901;100,00;12229445;0. Because there is no URL involved, nothing sits between the scan and the Swish app, and equally the code does nothing for someone without Swish.

Why is the amount written with a comma?

Because the Swish specification requires it: the amount is in SEK with two decimals and a comma as the decimal separator. 100,00 is valid; 100.00 is not. This generator formats the amount for you, so entering 100, 100.0 or 100.00 all produce 100,00.

Can the payer change the amount I set?

Only if you leave it blank. The final field in the format is a lock mask where a set bit means a field is editable. If you set an amount, this generator fixes it; if you leave it blank, it marks the amount editable so the payer can enter one. That is why a blank-amount code is right for a tip jar or collection box and a fixed amount is right for an invoice.

Do I need a corporate Swish number?

For business use, yes — the specification describes the payee as the corporate Swish number, and a business receiving payments should be using a business agreement rather than a personal one. A personal number works in the format for private use, such as splitting a cost, but using a personal number to take customer payments is the same mistake as using a personal profile on any other payment platform.

Does a Swish QR code work outside Sweden?

No. Swish is a Swedish service and the code only means anything to a phone with the Swish app installed. A scanner without Swish will decode the string and have nothing to do with it. If you sell internationally, treat this as the Swedish path and provide another one alongside it — UPI for Indian customers, PayPal or a payment page URL for everyone else.

Can I put a logo in the middle of a Swish QR code?

Yes, and the encoded string is short enough to take it comfortably. Swish publishes its own design guidance for branded codes, including the Swish symbol on a white circular background at about a quarter of the code width. Whatever mark you use, keep it at or below a quarter of the width, let error correction rise to compensate, and proof-scan the printed result — the same rules as any logo QR code.

Ready to create your Swish QR code?

Free, no watermarks. Generate and download in seconds.

Generate Free QR Code