A PHP library to create Swiss QR Bill payment parts (QR-Rechnung).
composer require sprain/swiss-qr-bill
Then have a look at example/example.php.
Why is my IBAN not working?
A typical QR bill (example) requires a special QR IBAN. You can get yours from your bank. A classic IBAN can be used for QR bills with a SCOR reference (example) or no reference number at all (example).
How do I recognize a QR IBAN?
In a QR IBAN, the institute id, which is defined in the 5th to 9th character, is a number in the range of 30000 to 31999. (Example: CH44 3199 9123 0008 8901 2). For how to detect it in code, see https://github.com/sprain/php-swiss-qr-bill/issues/182#issuecomment-1229539977
How do I create QR bills for international IBANs?
You can't. The QR bill by specification only supports IBANs from Switzerland and Liechtenstein.
How do I support currencies other than CHF or EUR?
You can't. The QR bill by specification only supports CHF and EUR.
How do I change translations to use my own wording?
You can't. The translations are defined in the QR bill specification and are not meant to be changed by the user. See this document, page 31.
How do I make my QR bills payable by Twint?
See https://github.com/sprain/php-swiss-qr-bill/issues/129
What PDF libraries are supported by this library?
The following libraries are currently actively supported:
FpdfOutput
and TcPdfOutput
)The output of HtmlOutput
is known to be used to generate PDFs with PrinceXML, Docraptor, and dompdf/dompdf (with some adjustments as decribed here)
Why are you using final
on most classes? I want to extend them!
This library implements the official specification of the QR bill. This implementation is not supposed to be adjusted as it might result in broken QR bills. Therefore many classes are marked as final. If you find the need to extend one of those final classes, you might have found a bug in this library. In that case it will be very helpful if you provide a bug report or even a pull request here. Thank you!
Do you need more help using this library?
Please note that the maintainer of this library will not provide any support by email. The beauty of open source software lies in the fact that everybody can benefit from each other. Therefore questions will only be answered in public.
Semantic versioning is used for this library.
In addition, a minor version will always be published if any visible change in the output of the qr code or the payment part takes place, even if it could be considered to be just a bugfix.
The repository contains the official specifications the library is based on:
For more official information see
How to generate new test data:
$regenerateReferenceFiles = true
in TestQrBillCreatorTrait
composer update --prefer-lowest
vendor/bin/phpunit
– ignore failing tests in testQrFile
composer update
vendor/bin/phpunit
– there should be no more errors$regenerateReferenceFiles = false
in TestQrBillCreatorTrait