New to Telerik UI for WinUI? Download free 30-day trial

SwissQR Code Overview

The QR-bill makes issuing and paying invoices simpler, and is being introduced throughout Switzerland to modernize payment transactions. Its most striking feature is the SwissQR Code, which contains all the payment information in a digital format, which can be read using a smartphone or a slip scanner.

A SwissQR Code bill

A Swiss QR-bill

The SwissQR Code encodes all the information necessary for a payment in specific format and structure. Along with the printed information, the SwissQR Code forms the payment part of the QR-bill. The allowed currencies for payments are CHF and EUR. The QR-Bill also guarantees you compliance with the regulatory requirements arising from the revised Anti-Money Laundering Ordinance.

Requirements

The SwissQR Code symbol requires an error correction level "M", which means a redundancy or assurance of around 15%.

In addition, the measurements of the SwissQR Code for printing must always be 46x46mm without the surrounding quiet space regardless of the SwissQR Code version. Depending on the printer resolution, the SwissQR Code produced might require size adjustments.

Generating a SwissQR Barcode

To generate a SwissQR Barcode with Telerik UI for WinUI, add a SwissQRCode element to the Symbology property of RadBarcode.

Set the SwissQR Code symbology

<telerikDataViz:RadBarcode x:Name="Barcode" Width="200" Height="200"> 
    <telerikDataViz:RadBarcode.Symbology> 
        <telerikDataViz:SwissQRCode Module="4" SizingMode="Manual" /> 
    </telerikDataViz:RadBarcode.Symbology> 
</telerikDataViz:RadBarcode> 
The SwissQR Code standard mandates that the input provided for the generation of the barcode is strictly formatted. Both validating and generating this input are complex processes and to facilitate them you can use the SwissQRCodeValueStringBuilder helper class. Its purpose is to hold the information needed for a SwissQR Code in a type-safe manner, to validate this information and to generate the input.

Through its constructor, you need to set the following properties:

  • Iban—The IBAN of the Account/Payable to.
  • Currency—The currency of the payment, whether CHF or EUR.
  • Creditor—The information of the contact that receives the payment.
  • Reference—The reference information for the payment.
  • AdditionalInformation—The additional information for the payment.
  • Debtor—The information of the contact that makes the payment.
  • Amount—The amount of the payment.
  • AlternativeProcedure—The alternative procedures for the payment.

Create the SwissQR Code ValueStringBuilder

SwissQRCodeValueStringBuilder qrCodeValue = new SwissQRCodeValueStringBuilder( 
        new Iban("CH4431999123000889012", IbanType.QRIBAN), 
        SwissQRCodeCurrency.EUR, 
        new Contact("Max Muster &amp; Söhne", 
        new StructuredAddress("CH", "8000", "Seldwyla", "Musterstrasse", "123")), 
        new Reference(ReferenceType.QRR, "210000000003139471430009017"), 
        new AdditionalInformation("Order from 15.03.2021", "//S1/10/1234/11/201021/30/102673386/32/7.7/40/0:30"), 
        new Contact("Simon Muster", new StructuredAddress("CH", "8000", "Seldwyla", "Musterstrasse", "1")), 
        (decimal)1949.75, 
        new AlternativeProcedure("Name AV1: UV;UltraPay005;12345", "Name AV2: XY;XYService;54321")); 
Once you've set up the SwissQRCodeValueStringBuilder, call its Validate method which validates all its fields and the relations between them. The method returns a string which contains the accumulated errors. If no errors are thrown, the barcode returns null. In this case, call the BuildValue method of the string builder which will build the string value that will be provided to the RadBarcode.

Validate and build the barcode value

string errors = qrCodeValue.Validate(); 
 
if (string.IsNullOrEmpty(errors)) 
{ 
    this.Barcode.Value = qrCodeValue.BuildValue(); 
} 
A SwissQR Barcode

The generated Swiss Barcode

See Also

In this article
Not finding the help you need?