[{"data":1,"prerenderedAt":253},["ShallowReactive",2],{"\u002Fblog\u002Fcommon-qr-rechnung-mistakes-and-how-to-avoid-them":3},{"id":4,"title":5,"body":6,"description":244,"extension":245,"lastUpdatedAt":246,"meta":247,"navigation":248,"path":249,"publishedAt":246,"seo":250,"stem":251,"__hash__":252},"blog\u002Fblog\u002F0006.common-qr-rechnung-mistakes-and-how-to-avoid-them.md","Common QR-Rechnung mistakes and how to avoid them",{"type":7,"value":8,"toc":233},"minimark",[9,13,16,21,41,44,53,57,68,71,84,99,103,106,112,126,132,136,151,165,171,175,178,181,206,210,213,216,220,223,226],[10,11,12],"p",{},"The QR-Rechnung has been Switzerland's standard payment format since June 2020, replacing the old orange and red ESR slips. For most companies the migration went smoothly, but a consistent set of errors keeps appearing in QR-bills — errors that either prevent automated processing, cause payment failures, or irritate customers who cannot scan the code correctly.",[10,14,15],{},"Some of these mistakes come from incorrect software configuration. Others come from misunderstanding the rules. Here is a rundown of the most common ones and what to do about each.",[17,18,20],"h2",{"id":19},"using-a-regular-iban-instead-of-a-qr-iban-or-vice-versa","Using a regular IBAN instead of a QR-IBAN (or vice versa)",[10,22,23,24,28,29,32,33,36,37,40],{},"This is the most fundamental error in QR-bill generation, and it has an obvious visible consequence: a QR-bill with a regular IBAN must use the ",[25,26,27],"strong",{},"NON"," (no reference) or ",[25,30,31],{},"SCOR"," (Creditor Reference ISO 11649) reference type. A QR-bill with a ",[25,34,35],{},"QR-IBAN"," must use the ",[25,38,39],{},"QRR"," (QR Reference) reference type. Mixing these up produces an invalid QR-bill.",[10,42,43],{},"A QR-IBAN looks similar to a regular Swiss IBAN but has a specific institution identifier range (30000–31999 in positions 5–9). It is issued by your bank specifically for QR-bill payments and is linked to a separate processing system that handles the 27-digit QR references. If you try to use a regular IBAN with a QR reference, the payment will be rejected by the bank's processing system.",[10,45,46,47,52],{},"The fix: check your bank documentation to confirm whether you have been issued a QR-IBAN or a regular IBAN for QR-bills, and configure your invoicing software accordingly. If you want to use invoice-level references for automated reconciliation, you need a QR-IBAN — contact your bank if you have not been issued one. We go into more detail on the difference between the two in ",[48,49,51],"a",{"href":50},"\u002Fblog\u002Fqr-iban-vs-iban-which-one-should-you-use","QR-IBAN vs IBAN: which one should you use",".",[17,54,56],{"id":55},"invalid-qr-reference-number","Invalid QR reference number",[10,58,59,60,63,64,67],{},"The ",[25,61,62],{},"QR Reference"," (QRR) is a 27-digit number where the last digit is a check digit calculated using the ",[25,65,66],{},"Modulo 10 recursive"," algorithm. If the check digit is wrong — because someone typed the reference manually, truncated it, or generated it incorrectly — the bank rejects the payment.",[10,69,70],{},"Common causes of an invalid check digit:",[72,73,74,78,81],"ul",{},[75,76,77],"li",{},"The invoicing system calculates the reference correctly but the printing or export process drops leading zeros, shifting the digit positions.",[75,79,80],{},"Someone creates a \"test\" invoice with a made-up reference number without generating the check digit.",[75,82,83],{},"A reference number is copy-pasted from one invoice to another (duplicate references also cause reconciliation problems even if the check digit is valid).",[10,85,86,87,93,94,98],{},"To validate a QR reference before printing, calculate the Modulo 10 recursive check digit on the first 26 digits and confirm it matches the 27th. Most invoicing libraries do this automatically. If you are generating references manually or with a custom script, test your check digit logic against known-good examples from the ",[48,88,92],{"href":89,"rel":90},"https:\u002F\u002Fwww.paymentstandards.ch",[91],"nofollow","Swiss Payment Standards documentation",". The ",[48,95,97],{"href":96},"\u002Fblog\u002Fhow-the-qr-referenz-check-digit-works","how the QR-Referenz check digit works"," post covers the algorithm in full.",[17,100,102],{"id":101},"missing-or-incorrect-creditor-information","Missing or incorrect creditor information",[10,104,105],{},"The QR code encodes the creditor's name, address, and IBAN. All three are mandatory for a valid QR-bill. The errors that appear most often:",[10,107,108,111],{},[25,109,110],{},"Truncated name."," The creditor name field has a maximum of 70 characters. Company names with legal entity suffixes (AG, GmbH, Genossenschaft) can approach this limit. If your software truncates silently rather than throwing an error, the name in the QR code will differ from what is printed on the invoice, which can confuse e-banking validation.",[10,113,114,117,118,121,122,125],{},[25,115,116],{},"Wrong address type."," The QR-bill spec supports two address types: ",[25,119,120],{},"S"," (structured, with separate fields for street, building number, postal code, and city) and ",[25,123,124],{},"K"," (combined, with two free address lines). Using combined format when structured is expected, or populating structured fields with combined data, produces validation errors. Check which address type your software generates and whether it is consistent with what your bank's processing system expects.",[10,127,128,131],{},[25,129,130],{},"Missing country code."," The country code field (CH for Switzerland) is required. If your invoicing system is configured for a generic European invoice format, it may omit the country code or use a non-standard value.",[17,133,135],{"id":134},"amount-field-errors","Amount field errors",[10,137,138,141,142,146,147,150],{},[25,139,140],{},"Wrong decimal format."," The amount in the QR code must use a period as the decimal separator (e.g. ",[143,144,145],"code",{},"1250.00","), never a comma. Some older billing systems or export scripts use locale-specific formatting and produce ",[143,148,149],{},"1250,00",", which is not valid.",[10,152,153,156,157,160,161,164],{},[25,154,155],{},"Rounding to the wrong precision."," Swiss franc amounts on QR-bills must be expressed to two decimal places. An amount like ",[143,158,159],{},"1250"," without the decimal (or ",[143,162,163],{},"1250.5"," with only one decimal place) is technically non-conformant, though some banks are lenient. The safest approach is to always format amounts as two-decimal-place values in the QR code generation step, regardless of how the amount is stored internally.",[10,166,167,170],{},[25,168,169],{},"Amount of zero."," It is valid to issue a QR-bill with no amount specified (leaving the field empty) when the payer determines the amount — for donations, for example. But leaving the amount empty by accident on a regular invoice is a common mistake that results in e-banking systems prompting the payer to enter the amount manually, which delays payment and often leads to errors.",[17,172,174],{"id":173},"qr-code-quality-and-placement-errors","QR code quality and placement errors",[10,176,177],{},"The QR code on a printed QR-bill must meet specific size and print quality requirements from SIX. The minimum size is 46 × 46 mm. The code must have a quiet zone (white border) of at least 5 mm on all sides. The Swiss cross in the centre of the QR code is part of the specification and must be present at the correct size (7 × 7 mm).",[10,179,180],{},"Print quality matters because the code needs to be scannable by mobile banking apps under variable lighting conditions. Common problems:",[72,182,183,189,195],{},[75,184,185,188],{},[25,186,187],{},"Low resolution rendering."," If the QR code is generated as a raster image at low DPI and then scaled up in the invoice template, the modules become blurry and scanning fails. Generate the QR code at the final print size, or use a vector renderer.",[75,190,191,194],{},[25,192,193],{},"Wrong colours."," The QR code must be black on white. A dark grey on light grey combination that looks fine on screen may fail to decode in print. Use pure black (#000000) on pure white (#FFFFFF).",[75,196,197,200,201,205],{},[25,198,199],{},"Placement outside the payment section."," The QR code must appear within the defined payment section of the QR-bill layout. Placing it elsewhere — even slightly shifted — is non-compliant. See ",[48,202,204],{"href":203},"\u002Fblog\u002Fprinting-qr-bills-layout-rules-and-compliance-tips","the QR-bill printing layout rules"," for the full specification.",[17,207,209],{"id":208},"language-and-character-encoding-issues","Language and character encoding issues",[10,211,212],{},"The QR-bill data fields are transmitted in UTF-8. Certain special characters — particularly German umlauts (ä, ö, ü, Ü, Ä, Ö) and the Swiss franc symbol — must be encoded correctly. Systems that produce the QR code data in a different encoding (Latin-1, Windows-1252) can generate codes that decode incorrectly in some banking apps, resulting in garbled names or addresses.",[10,214,215],{},"Test your QR codes by scanning them with the bank's official validator app and checking that the decoded fields match what is printed on the invoice. SIX provides a reference validator; some cantonal banks also offer free checking tools.",[17,217,219],{"id":218},"the-best-way-to-catch-these-errors-before-they-reach-customers","The best way to catch these errors before they reach customers",[10,221,222],{},"The Swiss Payment Standards consortium publishes official validation tools and test vectors. Run your QR-bill generation through a validator during development and again whenever you change your invoicing software or templates. Most errors are caught quickly in testing but become expensive once they are embedded in invoices that have already been sent.",[10,224,225],{},"If you process a high volume of QR-bills, consider adding a validation step to your invoice generation pipeline: generate the QR code data, validate it programmatically before rendering, and fail loudly rather than silently if any field is non-conformant. A failed validation at generation time costs nothing to fix. A failed payment costs time, customer goodwill, and potentially late fees.",[10,227,59,228,232],{},[48,229,231],{"href":230},"\u002Fblog\u002Fhow-to-validate-a-swiss-qr-code","how to validate a Swiss QR code"," post covers the validation options in more detail, including the open-source libraries available for Swiss developers.",{"title":234,"searchDepth":235,"depth":235,"links":236},"",2,[237,238,239,240,241,242,243],{"id":19,"depth":235,"text":20},{"id":55,"depth":235,"text":56},{"id":101,"depth":235,"text":102},{"id":134,"depth":235,"text":135},{"id":173,"depth":235,"text":174},{"id":208,"depth":235,"text":209},{"id":218,"depth":235,"text":219},"The most frequent errors found on QR-bills — wrong IBAN type, missing fields, incorrect amounts — and how to fix them.","md","2026-05-10",{},true,"\u002Fblog\u002Fcommon-qr-rechnung-mistakes-and-how-to-avoid-them",{"title":5,"description":244},"blog\u002F0006.common-qr-rechnung-mistakes-and-how-to-avoid-them","ob0VJpFehiI9X14zee-0ArPvsVVtdxr5YsRc_QUtdOA",1778402084414]