# 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**

![WinUI RadBarcode A Swiss QR-bill](https://www.telerik.com/winui/documentation/assets/df30b84823f0baeecdb7dfe206558619/qr-bill.png)

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**

```XAML
<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**

```C#
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**

```C#
string errors = qrCodeValue.Validate();

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

**A SwissQR Barcode**

![WinUI RadBarcode The generated Swiss Barcode](https://www.telerik.com/winui/documentation/assets/2bfe6fe4643e1e360d90d29e8a5750e3/swiss-barcode.png)

## See Also

* [2D Barcodes Overview](https://www.telerik.com/winui/documentation/controls/radbarcode/2d-barcodes/2dbarcode-overview)
