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
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>
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 & 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"));
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();
}