[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs:country-ch":3},{"versions":4,"version":26,"nav":28,"path":82,"kind":106,"page":107},[5,10,13,16,18,20,22,24],{"name":6,"label":7,"prefix":8,"channel":9},"0.7","0.7 (latest)","","latest",{"name":11,"label":12,"prefix":11,"channel":11},"next","next (unreleased)",{"name":14,"label":14,"prefix":14,"channel":15},"0.6","old",{"name":17,"label":17,"prefix":17,"channel":15},"0.5",{"name":19,"label":19,"prefix":19,"channel":15},"0.4",{"name":21,"label":21,"prefix":21,"channel":15},"0.3",{"name":23,"label":23,"prefix":23,"channel":15},"0.2",{"name":25,"label":25,"prefix":25,"channel":15},"0.1",{"name":6,"label":7,"prefix":8,"channel":9,"base":27},"\u002Fdocs",[29,33,36,39,42,45,48,51,54,57,60,63,66,69,72,75,78,81,84,87,91,94,97,100,103],{"slug":30,"title":31,"preview":32},"index","Home",false,{"slug":34,"title":35,"preview":32},"getting-started","Getting started",{"slug":37,"title":38,"preview":32},"concepts","E-invoicing basics",{"slug":40,"title":41,"preview":32},"examples","Examples",{"slug":43,"title":44,"preview":32},"building-invoices","Building invoices",{"slug":46,"title":47,"preview":32},"formats","Formats and profiles",{"slug":49,"title":50,"preview":32},"validation","Validation",{"slug":52,"title":53,"preview":32},"templates","Templates and design",{"slug":55,"title":56,"preview":32},"documents","Quotes and other documents",{"slug":58,"title":59,"preview":32},"reading","Reading incoming invoices",{"slug":61,"title":62,"preview":32},"laravel","Laravel integration",{"slug":64,"title":65,"preview":32},"configuration","Configuration",{"slug":67,"title":68,"preview":32},"commands","Artisan commands",{"slug":70,"title":71,"preview":32},"testing","Testing",{"slug":73,"title":74,"preview":32},"country-packs","Country packs",{"slug":76,"title":77,"parent":74,"preview":32},"country-at","Austria",{"slug":79,"title":80,"parent":74,"preview":32},"country-be","Belgium",{"slug":82,"title":83,"parent":74,"preview":32},"country-ch","Switzerland",{"slug":85,"title":86,"parent":74,"preview":32},"country-fr","France",{"slug":88,"title":89,"preview":90},"managed","Managed layer (preview)",true,{"slug":92,"title":93,"preview":32},"troubleshooting","Troubleshooting",{"slug":95,"title":96,"preview":32},"faq","FAQ",{"slug":98,"title":99,"preview":32},"compatibility","Versioning and compatibility",{"slug":101,"title":102,"preview":32},"field-reference","Field reference",{"slug":104,"title":105,"preview":32},"ai","AI assistants","page",{"title":83,"description":108,"html":109,"headings":110,"editUrl":191,"markdownUrl":192,"prev":193,"next":194},"The Swiss pack implements the invoice requirements of the Swiss VAT act (MWSTG, Mehrwertsteuergesetz) and of its ordinance (MWSTV, Mehrwertsteuerverordnung), the Swiss QR bill and the rule on default interest of the …","\u003Ch1 id=\"switzerland-quittiocountry-ch\">Switzerland (\u003Ccode>quittio\u002Fcountry-ch\u003C\u002Fcode>)\u003C\u002Fh1>\n\u003Cblockquote class=\"q-doc-note\">\n\u003Cp>\u003Cstrong>Not reviewed by a tax adviser yet.\u003C\u002Fstrong> The legal wording, rules and defaults of this pack follow the law and the official sources as of October 2026, but have not been reviewed by a Swiss tax adviser. Check the mentions and rates of your invoices before you rely on them. Quittio is no tax or legal advice; the business that issues an invoice remains responsible for it.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>The Swiss pack implements the invoice requirements of the Swiss VAT act (MWSTG, Mehrwertsteuergesetz) and of its ordinance (MWSTV, Mehrwertsteuerverordnung), the Swiss QR bill and the rule on default interest of the Swiss Code of Obligations (OR, Obligationenrecht). Its class is \u003Ccode>Quittio\\Country\\CH\\CountryCH\u003C\u002Fcode> (code \u003Ccode>CH\u003C\u002Fcode>, translation namespace \u003Ccode>quittio-ch\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cp>Switzerland has no e-invoicing obligation. The focus of the pack is therefore the payment: an invoice of a Swiss seller in CHF or EUR with a Swiss or Liechtenstein bank account gets the QR bill, a payment part with receipt whose code banking apps can scan.\u003C\u002Fp>\n\u003Cp>This page writes Swiss legal references in English form: &quot;Art. 26 (2) lit. a MWSTG&quot; stands for &quot;Art. 26 Abs. 2 Bst. a MWSTG&quot;. Texts that the pack prints keep their German, French or Italian form; the French and Italian texts name the act LTVA and LIVA.\u003C\u002Fp>\n\u003Ch2 id=\"installation\">Installation\u003Ca class=\"q-doc-anchor\" href=\"#installation\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>bash\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FFA657\">composer\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> require\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> quittio\u002Fcountry-ch\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>The pack is not part of \u003Ccode>quittio\u002Fquittio\u003C\u002Fcode>. Install it next to \u003Ccode>quittio\u002Fquittio\u003C\u002Fcode> (Laravel) or next to \u003Ccode>quittio\u002Fcore\u003C\u002Fcode>. It is developed in \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FQuittio\u002Fquittio\u002Ftree\u002Fmaster\u002Fpackages\u002Fcountry-ch\">\u003Ccode>packages\u002Fcountry-ch\u003C\u002Fcode>\u003C\u002Fa> of the monorepo and published as the read-only repository \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FQuittio\u002Fcountry-ch\">Quittio\u002Fcountry-ch\u003C\u002Fa>; please open issues and pull requests in the monorepo.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Laravel.\u003C\u002Fstrong> The pack declares itself in its \u003Ccode>composer.json\u003C\u002Fcode> (\u003Ccode>extra.quittio.country-packs\u003C\u002Fcode>), so Laravel finds it after the installation; there is nothing to register (\u003Ca href=\"\u002Fdocs\u002Fcountry-packs#registering-packs\">Registering packs\u003C\u002Fa>). The pack has no service provider and no configuration file of its own. Its one setting goes into \u003Ccode>config\u002Fquittio.php\u003C\u002Fcode> (\u003Ca href=\"#meta-flags-and-settings\">Meta flags and settings\u003C\u002Fa>). \u003Ccode>php artisan quittio:countries\u003C\u002Fcode> lists it (\u003Ca href=\"\u002Fdocs\u002Fcommands#quittiocountries\">Artisan commands\u003C\u002Fa>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Without Laravel.\u003C\u002Fstrong> Pass the pack to \u003Ccode>Quittio::create()\u003C\u002Fcode>:\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$quittio \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">create\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">([\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'country'\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> 'CH'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">], [\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">countries\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">()\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">get\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CH'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F the registered CountryCH\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>\u003Ccode>'country' =&gt; 'CH'\u003C\u002Fcode> makes Switzerland the default country for invoices whose seller has no country code; it is optional.\u003C\u002Fp>\n\u003Ch2 id=\"when-it-applies\">When it applies\u003Ca class=\"q-doc-anchor\" href=\"#when-it-applies\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>The pack leads every invoice whose seller has the country code \u003Ccode>CH\u003C\u002Fcode> (BT-40). It then checks the \u003Ca href=\"#rules\">MWSTG rules\u003C\u002Fa>, prints the \u003Ca href=\"#qr-bill\">QR bill\u003C\u002Fa>, applies the \u003Ca href=\"#rounding-to-5-rappen\">rounding to 5 Rappen\u003C\u002Fa> when asked for, and provides its \u003Ca href=\"#defaults\">defaults\u003C\u002Fa>: the locale \u003Ccode>de_CH\u003C\u002Fcode> (unless the invoice or the configuration sets one), A4 paper and the Swiss VAT labels. How Quittio chooses the leading pack is described in \u003Ca href=\"\u002Fdocs\u002Fcountry-packs#how-a-pack-is-selected\">How a pack is selected\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Currencies.\u003C\u002Fstrong> The rules apply to invoices in any currency. The QR bill is printed for invoices in CHF and EUR only; the rounding to 5 Rappen applies to CHF only.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Liechtenstein.\u003C\u002Fstrong> Switzerland and Liechtenstein form one area of application of the VAT (treaty of 28 November 1994); Liechtenstein takes over the material provisions of the Swiss VAT law into its own law. The pack therefore also leads the invoices of sellers with the country code \u003Ccode>LI\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Fcountry-packs#how-a-pack-is-selected\">\u003Ccode>VatTerritory::vatCountry()\u003C\u002Fcode>\u003C\u002Fa>), and an invoice between Switzerland and Liechtenstein is domestic. The rules cite the Swiss MWSTG. The QR bill accepts bank accounts of Liechtenstein (IBAN \u003Ccode>LI…\u003C\u002Fcode>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Buyers in Switzerland.\u003C\u002Fstrong> The pack defines no rules for buyers, so it adds nothing to an invoice of a foreign seller to a Swiss buyer.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Formats.\u003C\u002Fstrong> The pack defines no profiles and no format rules. The automatic choice of Quittio gives an invoice between two Swiss businesses the format \u003Ccode>zugferd\u003C\u002Fcode> (a PDF with embedded EN 16931 XML) and an invoice to a buyer in another country usually a plain \u003Ccode>pdf\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Fformats#automatic-choice\">Automatic choice\u003C\u002Fa>). Request \u003Ccode>-&gt;format('pdf')\u003C\u002Fcode> when your customers want no XML in the PDF.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"common-tasks\">Common tasks\u003Ca class=\"q-doc-anchor\" href=\"#common-tasks\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>You want to\u003C\u002Fth>\n\u003Cth>Read\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Set the VAT rate or an exemption on a line\u003C\u002Ftd>\n\u003Ctd data-label=\"Read\">\u003Ca href=\"#tax-presets\">Tax presets\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Invoice without VAT registration\u003C\u002Ftd>\n\u003Ctd data-label=\"Read\">\u003Ca href=\"#sellers-not-registered-for-vat\">Sellers not registered for VAT\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Look up a validation code such as \u003Ccode>CH-MWSTG-02\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Read\">\u003Ca href=\"#rules\">Rules\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Print the QR bill with a QR reference or a Creditor Reference\u003C\u002Ftd>\n\u003Ctd data-label=\"Read\">\u003Ca href=\"#qr-bill\">QR bill\u003C\u002Fa>, \u003Ca href=\"#references\">References\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Create or check a QR reference or a Creditor Reference\u003C\u002Ftd>\n\u003Ctd data-label=\"Read\">\u003Ca href=\"#the-classes-qrreference-and-creditorreference\">The classes \u003Ccode>QrReference\u003C\u002Fcode> and \u003Ccode>CreditorReference\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Round the amount due to 5 Rappen\u003C\u002Ftd>\n\u003Ctd data-label=\"Read\">\u003Ca href=\"#rounding-to-5-rappen\">Rounding to 5 Rappen\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Send a reminder with default interest\u003C\u002Ftd>\n\u003Ctd data-label=\"Read\">\u003Ca href=\"#late-payment\">Late payment\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Change a label such as &quot;MWST-Nr.&quot;\u003C\u002Ftd>\n\u003Ctd data-label=\"Read\">\u003Ca href=\"#languages\">Languages\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>See a complete invoice\u003C\u002Ftd>\n\u003Ctd data-label=\"Read\">\u003Ca href=\"#complete-example\">Complete example\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"tax-presets\">Tax presets\u003Ca class=\"q-doc-anchor\" href=\"#tax-presets\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>A tax preset is a ready-made VAT treatment for an invoice line: it sets the VAT category (BT-151), the rate and, for supplies without VAT, the exemption reason code (BT-121) and text (BT-120). The categories are the codes of EN 16931 (\u003Ccode>S\u003C\u002Fcode> standard rate, \u003Ccode>E\u003C\u002Fcode> exempt, \u003Ccode>G\u003C\u002Fcode> export, \u003Ccode>O\u003C\u002Fcode> not subject to VAT; see \u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#categories\">Categories\u003C\u002Fa>). How presets work in general is described in \u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#tax-presets\">Building invoices: Tax presets\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Ccode>Quittio\\Country\\CH\\Tax\\VatPreset\u003C\u002Fcode> is a string-backed enum. Apply it per line:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Builder\\InvoiceBuilder\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Enums\\UnitCode\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\Tax\\VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$builder \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> InvoiceBuilder\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">make\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#8B949E\">    \u002F\u002F ... seller, buyer, payment\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">line\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Software development'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">netPrice\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'145.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">quantity\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">12\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">unit\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">UnitCode\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Hour\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">vat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Standard\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F 8.1 %\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">line\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Specialist book'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">netPrice\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'39.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">quantity\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">2\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">unit\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">UnitCode\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Piece\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">vat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Reduced\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)           \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F 2.6 %\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">line\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Hotel room'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">netPrice\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'180.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">quantity\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">2\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">unit\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">UnitCode\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Day\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">vat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Accommodation\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)           \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F 3.8 %\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#8B949E\">    \u002F\u002F an excluded supply with its legal reference;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#8B949E\">    \u002F\u002F the invoice prints \"Von der Steuer ausgenommen nach Art. 21 Abs. 2 Ziff. 11 MWSTG\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">line\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Course fee'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">netPrice\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'400.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">vat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">excluded\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Art. 21 Abs. 2 Ziff. 11 MWSTG'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">));\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Case\u003C\u002Fth>\n\u003Cth>Key\u003C\u002Fth>\n\u003Cth>Category\u003C\u002Fth>\n\u003Cth>Rate\u003C\u002Fth>\n\u003Cth>Code (BT-121)\u003C\u002Fth>\n\u003Cth>Use\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Standard\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Key\">\u003Ccode>ch.standard\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Category\">\u003Ccode>S\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Rate\">8.1 (of the supply date)\u003C\u002Ftd>\n\u003Ctd data-label=\"Code (BT-121)\">–\u003C\u002Ftd>\n\u003Ctd data-label=\"Use\">Standard rate (Art. 25 (1) MWSTG)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Reduced\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Key\">\u003Ccode>ch.reduced\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Category\">\u003Ccode>S\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Rate\">2.6 (of the supply date)\u003C\u002Ftd>\n\u003Ctd data-label=\"Code (BT-121)\">–\u003C\u002Ftd>\n\u003Ctd data-label=\"Use\">Reduced rate (Art. 25 (2) MWSTG), e.g. food, books, medicines\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Accommodation\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Key\">\u003Ccode>ch.accommodation\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Category\">\u003Ccode>S\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Rate\">3.8 (of the supply date)\u003C\u002Ftd>\n\u003Ctd data-label=\"Code (BT-121)\">–\u003C\u002Ftd>\n\u003Ctd data-label=\"Use\">Special rate for accommodation (Art. 25 (4) MWSTG)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Excluded\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Key\">\u003Ccode>ch.excluded\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Category\">\u003Ccode>E\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Rate\">0\u003C\u002Ftd>\n\u003Ctd data-label=\"Code (BT-121)\">–\u003C\u002Ftd>\n\u003Ctd data-label=\"Use\">Supply excluded from the tax, without input tax deduction (Art. 21 MWSTG)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>VatPreset::excluded(string $paragraph, $code = null)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Key\">\u003Ccode>ch.excluded\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Category\">\u003Ccode>E\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Rate\">0\u003C\u002Ftd>\n\u003Ctd data-label=\"Code (BT-121)\">\u003Ccode>$code\u003C\u002Fcode> (enum, raw code or string)\u003C\u002Ftd>\n\u003Ctd data-label=\"Use\">An excluded supply that names its case, e.g. \u003Ccode>Art. 21 Abs. 2 Ziff. 3 MWSTG\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Export\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Key\">\u003Ccode>ch.export\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Category\">\u003Ccode>G\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Rate\">0\u003C\u002Ftd>\n\u003Ctd data-label=\"Code (BT-121)\">\u003Ccode>VATEX-EU-G\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use\">Supply exempt from the tax with input tax deduction, e.g. an export (Art. 23 MWSTG)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>NotTaxableInSwitzerland\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Key\">\u003Ccode>ch.not_taxable\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Category\">\u003Ccode>O\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Rate\">none\u003C\u002Ftd>\n\u003Ctd data-label=\"Code (BT-121)\">\u003Ccode>VATEX-EU-O\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use\">Supply whose place is abroad (Art. 7 and 8 MWSTG), not taxable in Switzerland\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>NotRegistered\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Key\">\u003Ccode>ch.not_registered\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Category\">\u003Ccode>O\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Rate\">none\u003C\u002Ftd>\n\u003Ctd data-label=\"Code (BT-121)\">\u003Ccode>VATEX-EU-O\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Use\">Seller not registered for VAT, e.g. below a turnover of CHF 100,000 (Art. 10 (2) MWSTG); see \u003Ca href=\"#sellers-not-registered-for-vat\">below\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>The codes in column BT-121 are VATEX codes, the standard codes for the reason of an exemption. \u003Ccode>VatPreset::excluded()\u003C\u002Fcode> returns a \u003Ccode>Quittio\\Country\\CH\\Tax\\CustomVatPreset\u003C\u002Fcode> with the key \u003Ccode>ch.excluded\u003C\u002Fcode>; it carries a code only when you pass one.\u003C\u002Fp>\n\u003Ch3 id=\"rates-by-supply-date\">Rates by supply date\u003Ca class=\"q-doc-anchor\" href=\"#rates-by-supply-date\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>\u003Ccode>Standard\u003C\u002Fcode>, \u003Ccode>Reduced\u003C\u002Fcode> and \u003Ccode>Accommodation\u003C\u002Fcode> take the rate that applied on the supply date of the line (\u003Ccode>Quittio\\Country\\CH\\Tax\\TaxTables\u003C\u002Fcode>). The supply date is determined by the core (\u003Ccode>Quittio\\Core\\Tax\\SupplyDate\u003C\u002Fcode>), as described for the \u003Ca href=\"\u002Fdocs\u002Fcountry-packs#tax-presets\">German presets\u003C\u002Fa>: the end of the line period, its start, the VAT point date, the delivery date, the end of the invoicing period or the issue date, in this order.\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>From\u003C\u002Fth>\n\u003Cth>\u003Ccode>Standard\u003C\u002Fcode>\u003C\u002Fth>\n\u003Cth>\u003Ccode>Reduced\u003C\u002Fcode>\u003C\u002Fth>\n\u003Cth>\u003Ccode>Accommodation\u003C\u002Fcode>\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>1 January 2011\u003C\u002Ftd>\n\u003Ctd data-label=\"Standard\">8.0\u003C\u002Ftd>\n\u003Ctd data-label=\"Reduced\">2.5\u003C\u002Ftd>\n\u003Ctd data-label=\"Accommodation\">3.8\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>1 January 2018\u003C\u002Ftd>\n\u003Ctd data-label=\"Standard\">7.7\u003C\u002Ftd>\n\u003Ctd data-label=\"Reduced\">2.5\u003C\u002Ftd>\n\u003Ctd data-label=\"Accommodation\">3.7\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>1 January 2024\u003C\u002Ftd>\n\u003Ctd data-label=\"Standard\">8.1\u003C\u002Ftd>\n\u003Ctd data-label=\"Reduced\">2.6\u003C\u002Ftd>\n\u003Ctd data-label=\"Accommodation\">3.8\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>The first row also applies to supplies before 2011. A supply of December 2023 invoiced in 2024 therefore gets 7.7 %:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Builder\\InvoiceBuilder\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\Tax\\VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#79C0FF\">InvoiceBuilder\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">make\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">issueDate\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2024-02-01'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">deliveryDate\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2023-12-15'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">line\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Consulting'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">netPrice\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'100.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">vat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Standard\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F 7.7 %\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>\u003Ccode>VatPreset::Standard-&gt;rate()\u003C\u002Fcode> returns the rate of today in the time zone \u003Ccode>Europe\u002FZurich\u003C\u002Fcode>. \u003Ccode>TaxTables::standardRateOn(Date $date)\u003C\u002Fcode>, \u003Ccode>reducedRateOn()\u003C\u002Fcode> and \u003Ccode>accommodationRateOn()\u003C\u002Fcode> return the rate of a date.\u003C\u002Fp>\n\u003Cp>Not included: the increase of the standard rate to 8.5 % and of the accommodation rate to 4.0 % (the reduced rate stays at 2.6 %), on which the vote of 29 November 2026 decides; the Federal Council sets the date, at the earliest 2028. The law limits the accommodation rate to the end of 2027; an extension until 2031 is not yet in force. The tables keep the current rates after these dates until a new release changes them.\u003C\u002Fp>\n\u003Ch3 id=\"sellers-not-registered-for-vat\">Sellers not registered for VAT\u003Ca class=\"q-doc-anchor\" href=\"#sellers-not-registered-for-vat\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>A seller that is not registered for VAT uses \u003Ccode>VatPreset::NotRegistered\u003C\u002Fcode> on every line. The invoice then shows no VAT, and the PDF prints the note &quot;Nicht im MWST-Register eingetragen; keine Mehrwertsteuer&quot;. The rule \u003Ca href=\"#rules\">\u003Ccode>CH-MWSTG-05\u003C\u002Fcode>\u003C\u002Fa> reports VAT on an invoice that has such a line.\u003C\u002Fp>\n\u003Cp>Such a seller has no VAT identifier. EN 16931 still requires an identifier of the seller in the XML (BR-CO-26: BT-29, BT-30 or BT-31), so give one, e.g. the company's UID number as registration number:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Builder\\Party\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$seller \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Party\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">make\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Atelier Gerber'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">legalRegistration\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CHE-109.322.551'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F BT-30\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">address\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Rue du Marché 4'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'1204'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Genève'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CH'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>The pack names \u003Ccode>ch.not_registered\u003C\u002Fcode> as the preset for small businesses (\u003Ccode>CountryDefaults::$smallBusinessVatPreset\u003C\u002Fcode>). An invoice with the flag \u003Ccode>Meta::FLAG_SMALL_BUSINESS\u003C\u002Fcode> (in Laravel \u003Ccode>quittio.seller.small_business = true\u003C\u002Fcode>, see \u003Ca href=\"\u002Fdocs\u002Fconfiguration#seller\">Seller\u003C\u002Fa>) therefore gives lines without \u003Ccode>vat()\u003C\u002Fcode> the preset \u003Ccode>NotRegistered\u003C\u002Fcode>. The flag itself triggers no Swiss rule; \u003Ccode>CH-MWSTG-05\u003C\u002Fcode> looks at the presets of the lines.\u003C\u002Fp>\n\u003Ch3 id=\"default-vat-and-lookup\">Default VAT and lookup\u003Ca class=\"q-doc-anchor\" href=\"#default-vat-and-lookup\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Lines without \u003Ccode>vat()\u003C\u002Fcode> take the \u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#default-vat\">default VAT\u003C\u002Fa>. With \u003Ccode>CountryDefaultVat\u003C\u002Fcode> (installed by the Laravel integration, or by \u003Ccode>InvoiceBuilder::useDefaultVat(new CountryDefaultVat($quittio-&gt;countries()))\u003C\u002Fcode> without Laravel) that is \u003Ccode>VatPreset::Standard\u003C\u002Fcode> for a Swiss seller and \u003Ccode>VatPreset::NotRegistered\u003C\u002Fcode> for an invoice flagged as small business. In Laravel, \u003Ccode>quittio.defaults.vat\u003C\u002Fcode> can name another key, e.g. \u003Ccode>'ch.reduced'\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>A stored key is resolved with \u003Ccode>VatPreset::from('ch.standard')\u003C\u002Fcode>, \u003Ccode>VatPreset::fromKey($key)\u003C\u002Fcode> (null for keys of other packs), \u003Ccode>(new CountryCH)-&gt;taxPresets()-&gt;get('ch.standard')\u003C\u002Fcode> or, across all installed packs, \u003Ccode>$quittio-&gt;countries()-&gt;taxPreset('ch.standard')\u003C\u002Fcode>. The key stays on the line (\u003Ccode>$line-&gt;vat-&gt;presetKey\u003C\u002Fcode>); \u003Ccode>CH-MWSTG-05\u003C\u002Fcode> relies on it.\u003C\u002Fp>\n\u003Ch3 id=\"exemption-texts\">Exemption texts\u003Ca class=\"q-doc-anchor\" href=\"#exemption-texts\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>\u003Ccode>Standard\u003C\u002Fcode>, \u003Ccode>Reduced\u003C\u002Fcode> and \u003Ccode>Accommodation\u003C\u002Fcode> carry no text, because EN 16931 allows no exemption reason for category \u003Ccode>S\u003C\u002Fcode>. The other presets print an exemption reason (BT-120) from \u003Ccode>resources\u002Flang\u002F{de,fr,it,en}\u002Ftax.php\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Key\u003C\u002Fth>\n\u003Cth>German\u003C\u002Fth>\n\u003Cth>French\u003C\u002Fth>\n\u003Cth>Italian\u003C\u002Fth>\n\u003Cth>English\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ch.excluded\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"German\">Von der Steuer ausgenommene Leistung (Art. 21 MWSTG)\u003C\u002Ftd>\n\u003Ctd data-label=\"French\">Prestation exclue du champ de l'impôt (art. 21 LTVA)\u003C\u002Ftd>\n\u003Ctd data-label=\"Italian\">Prestazione esclusa dall'imposta (art. 21 LIVA)\u003C\u002Ftd>\n\u003Ctd data-label=\"English\">Supply excluded from VAT (Art. 21 MWSTG)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ch.excluded_by\u003C\u002Fcode> (\u003Ccode>VatPreset::excluded()\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"German\">Von der Steuer ausgenommen nach :paragraph\u003C\u002Ftd>\n\u003Ctd data-label=\"French\">Exclue du champ de l'impôt selon :paragraph\u003C\u002Ftd>\n\u003Ctd data-label=\"Italian\">Esclusa dall'imposta secondo :paragraph\u003C\u002Ftd>\n\u003Ctd data-label=\"English\">Excluded from VAT under :paragraph\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ch.export\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"German\">Von der Steuer befreite Ausfuhr (Art. 23 MWSTG)\u003C\u002Ftd>\n\u003Ctd data-label=\"French\">Exportation exonérée de l'impôt (art. 23 LTVA)\u003C\u002Ftd>\n\u003Ctd data-label=\"Italian\">Esportazione esente dall'imposta (art. 23 LIVA)\u003C\u002Ftd>\n\u003Ctd data-label=\"English\">Export exempt from VAT (Art. 23 MWSTG)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ch.not_taxable\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"German\">Nicht im Inland steuerbare Leistung (Ort der Leistung im Ausland)\u003C\u002Ftd>\n\u003Ctd data-label=\"French\">Prestation non imposable sur le territoire suisse (lieu de la prestation à l'étranger)\u003C\u002Ftd>\n\u003Ctd data-label=\"Italian\">Prestazione non imponibile in territorio svizzero (luogo della prestazione all'estero)\u003C\u002Ftd>\n\u003Ctd data-label=\"English\">Not taxable in Switzerland (place of supply abroad)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>ch.not_registered\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"German\">Nicht im MWST-Register eingetragen; keine Mehrwertsteuer\u003C\u002Ftd>\n\u003Ctd data-label=\"French\">Non inscrit au registre des assujettis à la TVA ; pas de TVA\u003C\u002Ftd>\n\u003Ctd data-label=\"Italian\">Non iscritto nel registro dei contribuenti IVA; nessuna IVA\u003C\u002Ftd>\n\u003Ctd data-label=\"English\">Not registered for Swiss VAT; no VAT charged\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cul>\n\u003Cli>\u003Cstrong>Language.\u003C\u002Fstrong> The text is taken in the invoice locale (\u003Ccode>-&gt;locale()\u003C\u002Fcode> on the builder) when the invoice is built. Without a locale, the presets use German. The enum presets also find the text of a regional locale such as \u003Ccode>fr_CH\u003C\u002Fcode> (it takes the French text). \u003Ccode>VatPreset::excluded()\u003C\u002Fcode> behaves the same.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>PDF.\u003C\u002Fstrong> The PDF lists the texts in its legal notes, below the totals.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Your own texts.\u003C\u002Fstrong> The texts come from the translation files of the pack and can be overridden like its labels (\u003Ca href=\"#languages\">Languages\u003C\u002Fa>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"rules\">Rules\u003Ca class=\"q-doc-anchor\" href=\"#rules\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>The pack checks the elements of an invoice that Art. 26 (2) MWSTG requires, as far as the data shows them. The rules are of level L3 (\u003Ca href=\"\u002Fdocs\u002Fvalidation#validation-levels\">Validation levels\u003C\u002Fa>) and apply independent of the format. An error stops rendering in the default validation mode \u003Ccode>error\u003C\u002Fcode>; a warning does not (\u003Ca href=\"\u002Fdocs\u002Fvalidation#errors-while-rendering\">Errors while rendering\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Code\u003C\u002Fth>\n\u003Cth>Severity\u003C\u002Fth>\n\u003Cth>Field\u003C\u002Fth>\n\u003Cth>Check\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CH-MWSTG-01\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Severity\">error\u003C\u002Ftd>\n\u003Ctd data-label=\"Field\">BT-37 (\u003Ccode>seller.address.city\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Check\">The place of the seller must be given (Art. 26 (2) lit. a MWSTG). The rule checks the city; the name is required by EN 16931 anyway (BR-6).\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CH-MWSTG-02\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Severity\">error\u003C\u002Ftd>\n\u003Ctd data-label=\"Field\">BT-31 (\u003Ccode>seller.vatId\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Check\">An invoice that charges VAT (a VAT amount other than zero in the VAT breakdown) must state the UID number under which the seller is registered for VAT (Art. 26 (2) lit. a MWSTG). The VAT identifier of a tax representative (BT-63) is accepted as well.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CH-MWSTG-03\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Severity\">warning\u003C\u002Ftd>\n\u003Ctd data-label=\"Field\">BT-31 (\u003Ccode>seller.vatId\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Check\">A UID number (a VAT identifier that starts with \u003Ccode>CHE\u003C\u002Fcode>) should carry the note of the VAT registration, e.g. \u003Ccode>CHE-123.456.789 MWST\u003C\u002Fcode>. Accepted are the notes \u003Ccode>MWST\u003C\u002Fcode>, \u003Ccode>TVA\u003C\u002Fcode> and \u003Ccode>IVA\u003C\u002Fcode>, in any case. VAT identifiers of other countries are not checked.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CH-MWSTG-04\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Severity\">error\u003C\u002Ftd>\n\u003Ctd data-label=\"Field\">BT-52 (\u003Ccode>buyer.address.city\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Check\">The place of the buyer must be given (Art. 26 (2) lit. b MWSTG). Exception: a till receipt up to CHF 400 (Art. 57 MWSTV), see below.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CH-MWSTG-05\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Severity\">error\u003C\u002Ftd>\n\u003Ctd data-label=\"Field\">BT-117 (\u003Ccode>vatBreakdown[].taxAmount\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Check\">A seller that is not registered for VAT must not charge VAT; VAT shown is owed by reason of the invoice (Art. 27 (2) MWSTG). The rule applies when any line uses \u003Ccode>VatPreset::NotRegistered\u003C\u002Fcode> and reports every row of the VAT breakdown with a VAT amount other than zero.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cul>\n\u003Cli>\u003Cstrong>Till receipts.\u003C\u002Fstrong> \u003Ccode>MwstgRules::isTillReceipt(InvoiceData $invoice)\u003C\u002Fcode> is true for a calculated invoice in CHF whose total including VAT (BT-112) is at most CHF 400 (\u003Ccode>TaxTables::TILL_RECEIPT_LIMIT\u003C\u002Fcode>). Such an invoice may leave out the buyer's place. EN 16931 still requires a buyer name (BR-7), e.g. &quot;Barverkauf&quot; (cash sale).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>UID numbers.\u003C\u002Fstrong> The builder removes spaces from VAT identifiers, but keeps one before the note of the VAT registration of a UID number (\u003Ccode>MWST\u003C\u002Fcode>, \u003Ccode>TVA\u003C\u002Fcode> or \u003Ccode>IVA\u003C\u002Fcode>): \u003Ccode>-&gt;vatId('CHE-123.456.789 MWST')\u003C\u002Fcode> and \u003Ccode>-&gt;vatId('CHE-123.456.789MWST')\u003C\u002Fcode> are both stored and printed as &quot;CHE-123.456.789 MWST&quot;. \u003Ccode>CH-MWSTG-03\u003C\u002Fcode> accepts both forms.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Other elements.\u003C\u002Fstrong> Art. 26 (2) MWSTG also names the date or period of the supply, the kind and extent of the supply, the amount and the rate. Quittio's EN 16931 rules and the \u003Ca href=\"\u002Fdocs\u002Ftemplates#mandatory-field-guard\">mandatory field guard\u003C\u002Fa> cover these values; the pack has no rule of its own for them.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Messages.\u003C\u002Fstrong> The messages exist in German, French, Italian and English (\u003Ccode>resources\u002Flang\u002F{de,fr,it,en}\u002Frules.php\u003C\u002Fcode>, keys such as \u003Ccode>quittio-ch::rules.CH-MWSTG-02.message\u003C\u002Fcode>); other locales get English. Most German and English messages have a hint with the builder method that fixes the error.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Switching rules off.\u003C\u002Fstrong> Like every rule, a Swiss rule can be switched off or changed in severity with \u003Ccode>validation.rules\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Fvalidation#switching-rules-off-and-changing-their-severity\">Switching rules off\u003C\u002Fa>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"mandatory-pdf-output\">Mandatory PDF output\u003Ca class=\"q-doc-anchor\" href=\"#mandatory-pdf-output\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>\u003Ccode>CountryCH::mandatoryOutput()\u003C\u002Fcode> adds two values to the \u003Ca href=\"\u002Fdocs\u002Ftemplates#mandatory-field-guard\">mandatory field guard\u003C\u002Fa>, which checks that the template prints them:\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Value\u003C\u002Fth>\n\u003Cth>When\u003C\u002Fth>\n\u003Cth>Legal basis\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>seller.vatId\u003C\u002Fcode>: the UID number with the note MWST\u003C\u002Ftd>\n\u003Ctd data-label=\"When\">the seller has a VAT identifier\u003C\u002Ftd>\n\u003Ctd data-label=\"Legal basis\">Art. 26 (2) lit. a MWSTG\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>servicePeriod\u003C\u002Fcode>, \u003Ccode>deliveryDate\u003C\u002Fcode> or \u003Ccode>delivery.date\u003C\u002Fcode>: the date or period of the supply\u003C\u002Ftd>\n\u003Ctd data-label=\"When\">the invoice has a delivery date or an invoicing period\u003C\u002Ftd>\n\u003Ctd data-label=\"Legal basis\">Art. 26 (2) lit. c MWSTG\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>The default templates print both. The guard matters only for your own templates.\u003C\u002Fp>\n\u003Ch2 id=\"qr-bill\">QR bill\u003Ca class=\"q-doc-anchor\" href=\"#qr-bill\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Ccode>Quittio\\Country\\CH\\QrBill\\SwissQrBillGenerator\u003C\u002Fcode> (key \u003Ccode>swiss-qr-bill\u003C\u002Fcode>) creates the Swiss QR Code (Swiss Payments Code \u003Ccode>SPC\u003C\u002Fcode>, version \u003Ccode>0200\u003C\u002Fcode>) after the Swiss Implementation Guidelines QR-bill 2.3 of SIX, and its payment part with receipt. \u003Ccode>CountryCH::paymentQr()\u003C\u002Fcode> returns it, and the pack's defaults name \u003Ccode>swiss-qr-bill\u003C\u002Fcode> as payment QR code, so the default QR mode \u003Ccode>auto\u003C\u002Fcode> uses it for every invoice the pack leads (\u003Ca href=\"\u002Fdocs\u002Ftemplates#payment-qr-codes\">Payment QR codes\u003C\u002Fa>).\u003C\u002Fp>\n\u003Cp>The default templates print it after the \u003Ca href=\"\u002Fdocs\u002Ftemplates#payment-slips\">payment slip layout of the core\u003C\u002Fa>: at the bottom of a page of its own, the code at 46 × 46 mm with the Swiss cross in the middle, the headings in the language of the invoice, the texts in \u003Ca href=\"\u002Fdocs\u002Ftemplates#fonts\">Liberation Sans\u003C\u002Fa>. The PDF stays PDF\u002FA-3b; the pack's tests check this with veraPDF.\u003C\u002Fp>\n\u003Ch3 id=\"when-the-code-is-printed\">When the code is printed\u003Ca class=\"q-doc-anchor\" href=\"#when-the-code-is-printed\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The generator creates a code when all of these hold:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>the currency is CHF or EUR;\u003C\u002Fli>\n\u003Cli>the invoice has a credit transfer account (BG-17) with a valid IBAN of Switzerland or Liechtenstein (21 characters, \u003Ccode>CH…\u003C\u002Fcode> or \u003Ccode>LI…\u003C\u002Fcode>); the first such account is used;\u003C\u002Fli>\n\u003Cli>the seller's address has a post code, a city and a two-letter country code;\u003C\u002Fli>\n\u003Cli>the amount due (BT-115) is more than zero and at most 999,999,999.99;\u003C\u002Fli>\n\u003Cli>with a QR-IBAN, a QR reference can be found or built (\u003Ca href=\"#references\">References\u003C\u002Fa>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>As for every payment QR code, Quittio prints none on credit notes, negative invoices and self-billed invoices. Without a code the invoice is printed as usual, without the extra page.\u003C\u002Fp>\n\u003Ch3 id=\"references\">References\u003Ca class=\"q-doc-anchor\" href=\"#references\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>A QR-IBAN is an IBAN with an institution identification (positions 5 to 9) from 30000 to 31999; \u003Ccode>SwissQrBillGenerator::isQrIban(string $iban)\u003C\u002Fcode> tells it apart. A QR-IBAN needs a QR reference, an ordinary IBAN takes a Creditor Reference or no reference. The generator reads the remittance information (BT-83, \u003Ccode>remittanceInformation:\u003C\u002Fcode> of \u003Ccode>-&gt;payment()\u003C\u002Fcode>):\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Account\u003C\u002Fth>\n\u003Cth>Remittance information (BT-83)\u003C\u002Fth>\n\u003Cth>Reference in the code\u003C\u002Fth>\n\u003Cth>Unstructured message\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>QR-IBAN\u003C\u002Ftd>\n\u003Ctd data-label=\"Remittance information (BT-83)\">a valid QR reference\u003C\u002Ftd>\n\u003Ctd data-label=\"Reference in the code\">\u003Ccode>QRR\u003C\u002Fcode> with that reference\u003C\u002Ftd>\n\u003Ctd data-label=\"Unstructured message\">the invoice number\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>QR-IBAN\u003C\u002Ftd>\n\u003Ctd data-label=\"Remittance information (BT-83)\">anything else or empty\u003C\u002Ftd>\n\u003Ctd data-label=\"Reference in the code\">\u003Ccode>QRR\u003C\u002Fcode> with the QR reference of the digits of the invoice number (\u003Ccode>RE-2026-0042\u003C\u002Fcode> becomes \u003Ccode>000000000000000000202600427\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Unstructured message\">the remittance information, otherwise the invoice number\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>QR-IBAN\u003C\u002Ftd>\n\u003Ctd data-label=\"Remittance information (BT-83)\">anything else or empty, and the invoice number has no digits or more than 26\u003C\u002Ftd>\n\u003Ctd data-label=\"Reference in the code\">no code\u003C\u002Ftd>\n\u003Ctd data-label=\"Unstructured message\">–\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>IBAN\u003C\u002Ftd>\n\u003Ctd data-label=\"Remittance information (BT-83)\">a valid Creditor Reference\u003C\u002Ftd>\n\u003Ctd data-label=\"Reference in the code\">\u003Ccode>SCOR\u003C\u002Fcode> with that reference (upper case, without spaces)\u003C\u002Ftd>\n\u003Ctd data-label=\"Unstructured message\">the invoice number\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>IBAN\u003C\u002Ftd>\n\u003Ctd data-label=\"Remittance information (BT-83)\">anything else or empty\u003C\u002Ftd>\n\u003Ctd data-label=\"Reference in the code\">\u003Ccode>NON\u003C\u002Fcode>, no reference\u003C\u002Ftd>\n\u003Ctd data-label=\"Unstructured message\">the remittance information, otherwise the invoice number\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>The generator never builds a Creditor Reference on its own. To print one with an ordinary IBAN, pass it as remittance information:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Enums\\PaymentMeansCode\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\QrBill\\CreditorReference\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$builder\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">payment\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#79C0FF\">    PaymentMeansCode\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">SepaCreditTransfer\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FFA657\">    iban\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CH93 0076 2011 6238 5295 7'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FFA657\">    remittanceInformation\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">CreditorReference\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">fromCharactersOf\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'RE-2026-0043'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">),   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F RF70RE20260043\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Ch3 id=\"parties-amount-and-message\">Parties, amount and message\u003Ca class=\"q-doc-anchor\" href=\"#parties-amount-and-message\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Cstrong>Creditor.\u003C\u002Fstrong> The account name of the credit transfer account (\u003Ccode>accountName:\u003C\u002Fcode> of \u003Ccode>-&gt;payment()\u003C\u002Fcode>), otherwise the seller's name, with the seller's address.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Debtor.\u003C\u002Fstrong> The buyer, if its address has a post code, a city and a two-letter country code. Otherwise the debtor fields stay empty, and the slip shows the field &quot;Zahlbar durch (Name\u002FAdresse)&quot; to fill in by hand.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Addresses\u003C\u002Fstrong> are structured (address type \u003Ccode>S\u003C\u002Fcode>): name, street, building number, post code, town and country. A building number at the end of the first address line becomes the building number: &quot;Bahnhofstrasse 12&quot; gives the street &quot;Bahnhofstrasse&quot; and the number &quot;12&quot;; forms such as &quot;12a&quot; or &quot;12-14&quot; are recognised as well.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ultimate creditor.\u003C\u002Fstrong> Always empty; the guidelines reserve it for future use.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Amount.\u003C\u002Fstrong> The amount due (BT-115) with two decimals, after prepaid amounts and a \u003Ca href=\"#rounding-to-5-rappen\">rounding amount\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Text.\u003C\u002Fstrong> Characters outside the character set of the guidelines are removed and line breaks become spaces. Names, streets and messages are cut to the lengths of the guidelines (name and street 70, building number and post code 16, town 35, message 140 characters).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ccode>$generator-&gt;payload($invoice)\u003C\u002Fcode> returns the content of the code for a calculated invoice, or null when no code can be created. The \u003Ccode>payment.qrCode\u003C\u002Fcode> node of the \u003Ca href=\"\u002Fdocs\u002Ftemplates#payment\">view model\u003C\u002Fa> holds it as \u003Ccode>payload\u003C\u002Fcode>, with the type \u003Ccode>swiss-qr-bill\u003C\u002Fcode> and the printed values in \u003Ccode>slip\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch3 id=\"what-is-printed\">What is printed\u003Ca class=\"q-doc-anchor\" href=\"#what-is-printed\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Part\u003C\u002Fth>\n\u003Cth>Payment part\u003C\u002Fth>\n\u003Cth>Receipt\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Title\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment part\">&quot;Zahlteil&quot;\u003C\u002Ftd>\n\u003Ctd data-label=\"Receipt\">&quot;Empfangsschein&quot;\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Konto \u002F Zahlbar an&quot;\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment part\">IBAN in groups of four, creditor name and address\u003C\u002Ftd>\n\u003Ctd data-label=\"Receipt\">the same\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Referenz&quot;\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment part\">QR reference in blocks (\u003Ccode>00 00000 00000 00000 02026 00427\u003C\u002Fcode>) or Creditor Reference in groups of four; left out without reference\u003C\u002Ftd>\n\u003Ctd data-label=\"Receipt\">the same\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Zusätzliche Informationen&quot;\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment part\">the unstructured message\u003C\u002Ftd>\n\u003Ctd data-label=\"Receipt\">–\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Zahlbar durch&quot;\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment part\">debtor name and address, or the empty field &quot;Zahlbar durch (Name\u002FAdresse)&quot;\u003C\u002Ftd>\n\u003Ctd data-label=\"Receipt\">the same\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Währung&quot;, &quot;Betrag&quot;\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment part\">currency and amount with a space as thousands separator (\u003Ccode>1 960.95\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Receipt\">the same\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>&quot;Annahmestelle&quot;\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment part\">–\u003C\u002Ftd>\n\u003Ctd data-label=\"Receipt\">the acceptance point\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>The note &quot;Vor der Einzahlung abzutrennen&quot; (separate before paying in) is printed at the separation line. Addresses outside Switzerland get the country code before the post code, e.g. &quot;LI-9490 Vaduz&quot;. The headings are printed in the language of the invoice locale: German, French, Italian or English (\u003Ca href=\"#languages\">Languages\u003C\u002Fa>); other languages get German. The Swiss cross is a PNG image and needs the PHP extension GD (\u003Ccode>SwissCross::dataUri()\u003C\u002Fcode> returns null without it).\u003C\u002Fp>\n\u003Ch3 id=\"the-qr-mode\">The QR mode\u003Ca class=\"q-doc-anchor\" href=\"#the-qr-mode\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The payment QR mode \u003Ccode>auto\u003C\u002Fcode> (the default, \u003Ccode>pdf.payment_qr.type\u003C\u002Fcode> in Laravel, \u003Ccode>Presentation::$paymentQr\u003C\u002Fcode>) and the mode \u003Ccode>swiss-qr-bill\u003C\u002Fcode> both print the QR bill of the pack. A generator registered with \u003Ccode>setPaymentQrGenerator()\u003C\u002Fcode> (Laravel: \u003Ccode>pdf.payment_qr.generator\u003C\u002Fcode>) takes precedence in both modes, for the invoices of every country. The mode \u003Ccode>none\u003C\u002Fcode> prints no code, \u003Ccode>girocode\u003C\u002Fcode> an EPC GiroCode, which exists for EUR only (\u003Ca href=\"\u002Fdocs\u002Ftemplates#payment-qr-codes\">Payment QR codes\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ch3 id=\"payment-reminders\">Payment reminders\u003Ca class=\"q-doc-anchor\" href=\"#payment-reminders\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>A \u003Ca href=\"\u002Fdocs\u002Fdocuments#payment-reminders\">payment reminder\u003C\u002Fa> of a Swiss seller gets the Swiss QR Code over the total of the reminder, with the open invoice numbers as unstructured message. With a QR-IBAN its reference is the QR reference of the digits of the reminder number (\u003Ccode>M-2026-0003\u003C\u002Fcode> gives \u003Ccode>000000000000000000202600037\u003C\u002Fcode>). The reminder gets the payment part and receipt like an invoice, with the total of the reminder as amount, on a page of its own at the end.\u003C\u002Fp>\n\u003Ch3 id=\"the-classes-qrreference-and-creditorreference\">The classes \u003Ccode>QrReference\u003C\u002Fcode> and \u003Ccode>CreditorReference\u003C\u002Fcode>\u003Ca class=\"q-doc-anchor\" href=\"#the-classes-qrreference-and-creditorreference\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>\u003Ccode>Quittio\\Country\\CH\\QrBill\\QrReference\u003C\u002Fcode> is the QR reference of the Swiss QR bill: 27 digits, the last a check digit after modulo 10 recursive. It goes with a QR-IBAN only.\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Method\u003C\u002Fth>\n\u003Cth>Result\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>isValid(string $reference): bool\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Result\">whether the reference (spaces allowed) has 27 digits and a correct check digit\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>fromDigitsOf(string $value): ?string\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Result\">the QR reference of the digits of \u003Ccode>$value\u003C\u002Fcode>, padded with zeros to 26 digits, plus the check digit; null without digits or with more than 26\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>checkDigit(string $digits): string\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Result\">the check digit of a string of digits\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>format(string $reference): string\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Result\">the reference in blocks for printing: two digits, then blocks of five\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Ccode>Quittio\\Country\\CH\\QrBill\\CreditorReference\u003C\u002Fcode> is the Creditor Reference of ISO 11649: \u003Ccode>RF\u003C\u002Fcode>, two check digits (modulo 97-10) and up to 21 letters and digits. It goes with an ordinary IBAN.\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Method\u003C\u002Fth>\n\u003Cth>Result\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>isValid(string $reference): bool\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Result\">whether the reference (spaces allowed, any case) has correct check digits\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>fromCharactersOf(string $value): ?string\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Result\">the Creditor Reference of the letters and digits of \u003Ccode>$value\u003C\u002Fcode>; null without any or with more than 21\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>format(string $reference): string\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Result\">the reference in groups of four for printing\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\QrBill\\CreditorReference\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\QrBill\\QrReference\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#79C0FF\">QrReference\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">fromDigitsOf\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'RE-2026-0042'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);                  \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F \"000000000000000000202600427\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#79C0FF\">QrReference\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">format\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'000000000000000000202600427'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);         \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F \"00 00000 00000 00000 02026 00427\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#79C0FF\">QrReference\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">isValid\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'21 00000 00003 13947 14300 09017'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F true\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#79C0FF\">CreditorReference\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">fromCharactersOf\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'539007547034'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);        \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F \"RF18539007547034\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#79C0FF\">CreditorReference\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">format\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'RF18539007547034'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);              \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F \"RF18 5390 0754 7034\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#79C0FF\">CreditorReference\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">isValid\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'RF18 5390 0754 7034'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);          \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F true\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>A QR reference made from the invoice number lets you match an incoming payment to the invoice by its digits. If your bank or your accounting gives you QR references of another structure, pass them as remittance information; the generator uses a valid one as it is.\u003C\u002Fp>\n\u003Ch2 id=\"rounding-to-5-rappen\">Rounding to 5 Rappen\u003Ca class=\"q-doc-anchor\" href=\"#rounding-to-5-rappen\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Amounts in CHF are usually rounded to 5 Rappen (0.05 CHF) in Switzerland. The pack can round the amount due to a multiple of 0.05 by adding a rounding amount (BT-114). The VAT and the line amounts stay unchanged, and the XML carries the rounding amount, so the e-invoice stays consistent.\u003C\u002Fp>\n\u003Cp>Switch the rounding on per invoice with the flag \u003Ccode>CountryCH::FLAG_CASH_ROUNDING\u003C\u002Fcode> (\u003Ccode>ch.cash_rounding\u003C\u002Fcode>), or for all invoices with the setting \u003Ccode>cash_rounding\u003C\u002Fcode> (\u003Ca href=\"#meta-flags-and-settings\">Meta flags and settings\u003C\u002Fa>):\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$builder\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">flag\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">FLAG_CASH_ROUNDING\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>\u003Cstrong>When.\u003C\u002Fstrong> \u003Ccode>CountryCH::complete()\u003C\u002Fcode> adds the rounding amount when Quittio renders or prepares the invoice (\u003Ccode>render()\u003C\u002Fcode>, \u003Ccode>check()\u003C\u002Fcode>, \u003Ccode>prepare()\u003C\u002Fcode>), not when it is built. \u003Ccode>$result-&gt;data()\u003C\u002Fcode> holds the rounded invoice.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>How.\u003C\u002Fstrong> Half up to 0.05: an amount due of 108.12 becomes 108.10 (rounding amount −0.02), 108.14 becomes 108.15 (+0.01). \u003Ccode>Quittio\\Country\\CH\\Rounding\\CashRounding::round(BigDecimal $amount)\u003C\u002Fcode> rounds a single amount, \u003Ccode>CashRounding::apply(InvoiceData $invoice)\u003C\u002Fcode> an invoice.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Only CHF.\u003C\u002Fstrong> Invoices in another currency are not rounded.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Your own rounding wins.\u003C\u002Fstrong> An invoice with a rounding amount of its own (\u003Ccode>-&gt;rounding('0.00')\u003C\u002Fcode>, see \u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#prepaid-amounts-and-rounding\">Prepaid amounts and rounding\u003C\u002Fa>) is not changed. With the setting switched on, \u003Ccode>-&gt;rounding('0.00')\u003C\u002Fcode> therefore keeps a single invoice unrounded; removing the flag does not.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The QR bill\u003C\u002Fstrong> carries the rounded amount due.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"late-payment\">Late payment\u003Ca class=\"q-doc-anchor\" href=\"#late-payment\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Under Art. 104 OR a debtor in default owes 5 % default interest a year. \u003Ccode>CountryCH::dunningLaw()\u003C\u002Fcode> returns these values (\u003Ca href=\"\u002Fdocs\u002Fcountry-packs#dunninglaw\">\u003Ccode>DunningLaw\u003C\u002Fcode>\u003C\u002Fa>):\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Value\u003C\u002Fth>\n\u003Cth>Switzerland\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Interest for business debtors\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">5 % fixed (\u003Ccode>b2bFixedRate\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Interest for consumers\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">5 % fixed (\u003Ccode>b2cFixedRate\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Reference rate\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">none\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Flat rate for business debtors\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">none\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Day count\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">365 days\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Consumer default after days\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">not set\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>As in other countries, Quittio's documents do not apply these values by themselves. \u003Ccode>Quittio\\Core\\Dunning\\DefaultInterest::forCountry(new CountryCH)\u003C\u002Fcode> calculates the interest; because both rates are fixed (\u003Ccode>DunningLaw::hasFixedRates()\u003C\u002Fcode>), the pack needs no reference rate table, and every period is one charge at 5 %. Pass the charges to a payment reminder (\u003Ca href=\"\u002Fdocs\u002Fdocuments#payment-reminders\">Payment reminders\u003C\u002Fa>):\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Brick\\Money\\Money\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Builder\\Party\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Documents\\DocumentBuilder\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Dunning\\DefaultInterest\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Support\\Date\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$quittio \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">create\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">([], [\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$reminder \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> DocumentBuilder\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">paymentReminder\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">1\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)                      \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F first reminder (\"1. Mahnung\")\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">number\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'M-2026-0003'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">issueDate\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-12-10'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">currency\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CHF'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">seller\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Party\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">make\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Bergsoft AG'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">vatId\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CHE-123.456.788 MWST'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">address\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Bahnhofstrasse 12'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'8001'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Zürich'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CH'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">buyer\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Party\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">make\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Muster GmbH'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">address\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Marktgasse 28'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'3011'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Bern'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CH'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">creditTransfer\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CH93 0076 2011 6238 5295 7'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">openItem\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'RE-2026-0042'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-10-05'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'1960.95'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">dueDate\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-11-04'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#8B949E\">\u002F\u002F 5 % for the whole time; the end date is exclusive, so 10 December is the last day with interest\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$reminder\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">interestCharge\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">...\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">DefaultInterest\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">forCountry\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">calculate\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#79C0FF\">    Money\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">of\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'1960.95'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CHF'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#79C0FF\">    Date\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">parse\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-11-05'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#79C0FF\">    Date\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">parse\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-12-11'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">),\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">));\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$result \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">document\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($reminder\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">build\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">())\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">render\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">();   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F 1._Mahnung_M-2026-0003.pdf\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>The charges have no description of their own; the reminder prints the default text, e.g. &quot;Verzugszinsen 5 % p. a. auf 1'960.95 CHF vom 05.11.2026 bis 10.12.2026&quot;.\u003C\u002Fli>\n\u003Cli>\u003Ccode>calculate()\u003C\u002Fcode> takes \u003Ccode>consumer: true\u003C\u002Fcode> for consumers; the rate is the same. \u003Ccode>flatRate()\u003C\u002Fcode> of \u003Ccode>DefaultInterest\u003C\u002Fcode> returns null, because the pack's dunning law has no flat rate. \u003Ccode>DocumentBuilder::flatRate()\u003C\u002Fcode> adds the flat rate of the EU late payment directive (40.00 by default); it does not belong on a Swiss reminder.\u003C\u002Fli>\n\u003Cli>Quittio does not check whether and since when the debtor is in default; you pass the first day with interest.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"meta-flags-and-settings\">Meta flags and settings\u003Ca class=\"q-doc-anchor\" href=\"#meta-flags-and-settings\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>The pack reads one meta flag and one setting. Meta flags are set on the builder with \u003Ccode>-&gt;flag()\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#presentation-and-metadata\">Presentation and metadata\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Flag\u003C\u002Fth>\n\u003Cth>Value\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>CountryCH::FLAG_CASH_ROUNDING\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Value\">\u003Ccode>ch.cash_rounding\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">\u003Ca href=\"#rounding-to-5-rappen\">rounding to 5 Rappen\u003C\u002Fa> of this invoice\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Meta::FLAG_SMALL_BUSINESS\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Value\">\u003Ccode>small_business\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">lines without \u003Ccode>vat()\u003C\u002Fcode> get \u003Ccode>VatPreset::NotRegistered\u003C\u002Fcode> (\u003Ca href=\"#sellers-not-registered-for-vat\">Sellers not registered for VAT\u003C\u002Fa>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Settings of the pack live under \u003Ccode>quittio.countries.ch\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Fconfiguration#settings-of-a-pack-quittiocountriescode\">Settings of a pack\u003C\u002Fa>):\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Key\u003C\u002Fth>\n\u003Cth>Type\u003C\u002Fth>\n\u003Cth>Default\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>cash_rounding\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Type\">bool\u003C\u002Ftd>\n\u003Ctd data-label=\"Default\">\u003Ccode>false\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">\u003Ccode>true\u003C\u002Fcode> rounds every invoice in CHF to 5 Rappen, as the flag does for one invoice\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>The pack has no configuration file to publish. In Laravel, add the section to \u003Ccode>config\u002Fquittio.php\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#A5D6FF\">'countries'\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> [\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#A5D6FF\">    'ch'\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> [\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'cash_rounding'\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> true\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">],\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">],\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Without Laravel, pass it to \u003Ccode>Quittio::create()\u003C\u002Fcode>:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$quittio \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">create\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">([\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'countries'\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> [\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'ch'\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> [\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'cash_rounding'\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> true\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]]], [\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>The value must be the boolean \u003Ccode>true\u003C\u002Fcode>; a string such as \u003Ccode>'1'\u003C\u002Fcode> does not switch the rounding on.\u003C\u002Fp>\n\u003Ch2 id=\"defaults\">Defaults\u003Ca class=\"q-doc-anchor\" href=\"#defaults\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>How \u003Ccode>CountryCH\u003C\u002Fcode> fills the \u003Ca href=\"\u002Fdocs\u002Fcountry-packs#the-countrypack-contract\">\u003Ccode>CountryPack\u003C\u002Fcode> contract\u003C\u002Fa>:\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Hook\u003C\u002Fth>\n\u003Cth>Switzerland\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>defaults()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">currency \u003Ccode>CHF\u003C\u002Fcode>, time zone \u003Ccode>Europe\u002FZurich\u003C\u002Fcode>, locale \u003Ccode>de_CH\u003C\u002Fcode> (Swiss formats such as 1'590.00, German texts), paper \u003Ccode>A4\u003C\u002Fcode>, letter layout \u003Ccode>free\u003C\u002Fcode>, profile \u003Ccode>en16931\u003C\u002Fcode>, payment QR \u003Ccode>swiss-qr-bill\u003C\u002Fcode>, default VAT presets \u003Ccode>ch.standard\u003C\u002Fcode> and \u003Ccode>ch.not_registered\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Fcountry-packs#countrydefaults\">CountryDefaults\u003C\u002Fa>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>taxPresets()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">every case of \u003Ca href=\"#tax-presets\">\u003Ccode>VatPreset\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>rules()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">the \u003Ca href=\"#rules\">MWSTG rules\u003C\u002Fa> \u003Ccode>CH-MWSTG-01\u003C\u002Fcode> to \u003Ccode>CH-MWSTG-05\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>buyerCountryRules()\u003C\u002Fcode>, \u003Ccode>formatRules()\u003C\u002Fcode>, \u003Ccode>profiles()\u003C\u002Fcode>, \u003Ccode>legalTexts()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">none\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>mandatoryOutput()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">\u003Ca href=\"#mandatory-pdf-output\">UID number and date of the supply\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>paymentQr()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">\u003Ca href=\"#qr-bill\">\u003Ccode>SwissQrBillGenerator\u003C\u002Fcode>\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>complete()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">\u003Ca href=\"#rounding-to-5-rappen\">rounding to 5 Rappen\u003C\u002Fa> (capability \u003Ccode>CompletesInvoices\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>numberingRules()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">pattern \u003Ccode>RE-{Y}-{seq:4}\u003C\u002Fcode>, reset \u003Ccode>yearly\u003C\u002Fcode>, resets \u003Ccode>never\u003C\u002Fcode>, \u003Ccode>yearly\u003C\u002Fcode>, \u003Ccode>monthly\u003C\u002Fcode>, not gapless\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>retention()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">10 years from the end of the calendar year\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>dunningLaw()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">\u003Ca href=\"#late-payment\">5 % fixed, no flat rate\u003C\u002Fa>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>correctionPolicy()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">credit note, cancel and reissue, Swiss titles\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>letterLayouts()\u003C\u002Fcode>, \u003Ccode>addressFormatter()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">defaults: the layout \u003Ccode>free\u003C\u002Fcode>, international address format\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>translationPath()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Switzerland\">\u003Ccode>resources\u002Flang\u003C\u002Fcode> of the package\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cul>\n\u003Cli>\u003Cstrong>Locale.\u003C\u002Fstrong> \u003Ccode>de_CH\u003C\u002Fcode> is the last fallback of the render locale: the locale of the call, of the invoice and of the configuration come first (\u003Ca href=\"\u002Fdocs\u002Ftemplates#translations-and-locales\">Translations and locales\u003C\u002Fa>). Amounts and dates follow the regional locale with \u003Ccode>ext-intl\u003C\u002Fcode>, e.g. 1'960.95 CHF and 05.10.2026.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Currency, time zone, profile.\u003C\u002Fstrong> They are informational and not applied to invoices (\u003Ca href=\"\u002Fdocs\u002Fcountry-packs#countrydefaults\">CountryDefaults\u003C\u002Fa>). The builder starts with EUR, also in Laravel, so set \u003Ccode>-&gt;currency('CHF')\u003C\u002Fcode> on every invoice in Swiss francs.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Paper and layout.\u003C\u002Fstrong> A4 and the layout \u003Ccode>free\u003C\u002Fcode> (address field 45 mm from the top, no fold marks). Swiss letter layouts are not included (\u003Ca href=\"#known-limitations\">Known limitations\u003C\u002Fa>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Numbering.\u003C\u002Fstrong> Swiss law prescribes no numbering; unique numbers are good practice. The pattern is the default of \u003Ca href=\"\u002Fdocs\u002Fmanaged#numbering\">Managed numbering\u003C\u002Fa>. The pack declares numbers as not gapless.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Retention.\u003C\u002Fstrong> Ten years from the end of the calendar year (Art. 70 (2) MWSTG, Art. 958f OR): an invoice issued on 5 October 2026 is kept until 31 December 2036. 20 years for immovable property (Art. 70 (3) MWSTG) are not modelled.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"cancellations-and-corrections\">Cancellations and corrections\u003Ca class=\"q-doc-anchor\" href=\"#cancellations-and-corrections\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>An invoice is cancelled by a credit note (type code 381 with positive amounts) and corrected by cancelling it and issuing a new one (\u003Ca href=\"\u002Fdocs\u002Fcountry-packs#correctionpolicy\">CorrectionPolicy\u003C\u002Fa>, \u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#cancellations-and-corrections\">Cancellations and corrections\u003C\u002Fa>). The titles:\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Kind\u003C\u002Fth>\n\u003Cth>German\u003C\u002Fth>\n\u003Cth>French\u003C\u002Fth>\n\u003Cth>Italian\u003C\u002Fth>\n\u003Cth>English\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>cancellation\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"German\">Gutschrift\u003C\u002Ftd>\n\u003Ctd data-label=\"French\">Note de crédit\u003C\u002Ftd>\n\u003Ctd data-label=\"Italian\">Nota di credito\u003C\u002Ftd>\n\u003Ctd data-label=\"English\">Credit note\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>correction\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"German\">Korrigierte Rechnung\u003C\u002Ftd>\n\u003Ctd data-label=\"French\">Facture corrigée\u003C\u002Ftd>\n\u003Ctd data-label=\"Italian\">Fattura corretta\u003C\u002Ftd>\n\u003Ctd data-label=\"English\">Corrected invoice\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>self_billed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"German\">Gutschrift (Selbstfakturierung)\u003C\u002Ftd>\n\u003Ctd data-label=\"French\">Autofacturation\u003C\u002Ftd>\n\u003Ctd data-label=\"Italian\">Autofatturazione\u003C\u002Ftd>\n\u003Ctd data-label=\"English\">Self-billed invoice\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>A regional locale takes the title of its language (\u003Ccode>de_CH\u003C\u002Fcode> → &quot;Gutschrift&quot;, \u003Ccode>fr_CH\u003C\u002Fcode> → &quot;Note de crédit&quot;); other languages get the English title. A cancellation takes the locale of the original, then the configured locale, then the pack default \u003Ccode>de_CH\u003C\u002Fcode>. Pass \u003Ccode>title:\u003C\u002Fcode> to \u003Ccode>cancellation()\u003C\u002Fcode> for another title. The titles are defined in PHP and cannot be changed through translation files.\u003C\u002Fp>\n\u003Ch2 id=\"languages\">Languages\u003Ca class=\"q-doc-anchor\" href=\"#languages\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>The pack ships texts in German, French, Italian and English (\u003Ccode>resources\u002Flang\u002F{de,fr,it,en}\u002F\u003C\u002Fcode>):\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>File\u003C\u002Fth>\n\u003Cth>Content\u003C\u002Fth>\n\u003Cth>Languages\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>rules.php\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Content\">messages and hints of the \u003Ca href=\"#rules\">rules\u003C\u002Fa>\u003C\u002Ftd>\n\u003Ctd data-label=\"Languages\">de, fr, it, en\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>tax.php\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Content\">\u003Ca href=\"#exemption-texts\">exemption texts\u003C\u002Fa> of the presets\u003C\u002Ftd>\n\u003Ctd data-label=\"Languages\">de, fr, it, en\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>qrbill.php\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Content\">headings of payment part and receipt\u003C\u002Ftd>\n\u003Ctd data-label=\"Languages\">de, fr, it, en\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>labels.php\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Content\">Swiss words for labels of the core\u003C\u002Ftd>\n\u003Ctd data-label=\"Languages\">de, fr\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>The German labels replace the core's VAT words with the Swiss ones: &quot;MWST&quot; instead of &quot;USt.&quot; (e.g. &quot;MWST 8.1 %&quot;, &quot;8.1 % MWST auf 1'740.00 CHF&quot;) and &quot;MWST-Nr.&quot; for the VAT identifier. The French labels name the VAT identifier &quot;N° TVA (IDE)&quot;. All other labels come from the core.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Italian.\u003C\u002Fstrong> The core has labels and code names in German, English, French and Dutch, not in Italian. An invoice with an Italian locale (\u003Ccode>it\u003C\u002Fcode> or \u003Ccode>it_CH\u003C\u002Fcode>) therefore has English labels (&quot;Invoice&quot;, &quot;VAT&quot;), while the exemption texts, rule messages and QR bill headings are Italian.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Romansh.\u003C\u002Fstrong> Headings in Romansh, which version 2.4 of the guidelines adds (valid from 14 November 2026), are not included. A Romansh locale gets German headings on the QR bill and English texts otherwise.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>QR bill headings.\u003C\u002Fstrong> The guidelines prescribe them; do not change them.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The texts are registered as the namespace \u003Ccode>quittio-ch\u003C\u002Fcode> (e.g. \u003Ccode>quittio-ch::labels.vat_id\u003C\u002Fcode>, \u003Ccode>quittio-ch::tax.ch.export\u003C\u002Fcode>). In Laravel, override them in \u003Ccode>lang\u002Fvendor\u002Fquittio-ch\u002F{locale}\u002Flabels.php\u003C\u002Fcode>, \u003Ccode>rules.php\u003C\u002Fcode> or \u003Ccode>tax.php\u003C\u002Fcode>. A file needs only the keys you change:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#8B949E\">\u002F\u002F lang\u002Fvendor\u002Fquittio-ch\u002Fde\u002Flabels.php: \"UID\" instead of \"MWST-Nr.\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">return\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> [\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'vat_id'\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\"> =>\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> 'UID'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">];\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>Without Laravel, add a directory with the same structure after \u003Ccode>Quittio::create()\u003C\u002Fcode>; later paths win over earlier ones:\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\I18n\\Translations\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#79C0FF\">Translations\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">translator\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">()\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">addPath\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">__DIR__\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">.\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'\u002Flang'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'quittio-ch'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F lang\u002Fde\u002Flabels.php\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>\u003Ccode>CountryCH::locales()\u003C\u002Fcode> lists the languages the pack ships, \u003Ccode>CountryCH::registerTranslations()\u003C\u002Fcode> registers the texts lazily, so the presets work without a \u003Ccode>Quittio\u003C\u002Fcode> instance. Labels of a single invoice can also be changed with \u003Ccode>Presentation::$labels\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Ftemplates#translations-and-locales\">Translations and locales\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ch2 id=\"known-limitations\">Known limitations\u003Ca class=\"q-doc-anchor\" href=\"#known-limitations\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>The legal wording, rules and defaults have not been reviewed by a Swiss tax adviser (see the note at the top).\u003C\u002Fli>\n\u003Cli>The VAT rates of the vote of 29 November 2026 and a change of the accommodation rate after 2027 are not included (\u003Ca href=\"#rates-by-supply-date\">Rates by supply date\u003C\u002Fa>).\u003C\u002Fli>\n\u003Cli>QR bill: billing information (syntax S1 of Swico, maintained by SIX since version 2.4 of the guidelines), alternative procedures and the &quot;do not use for payment&quot; bill are not supported yet. Headings in Romansh are missing.\u003C\u002Fli>\n\u003Cli>eBill (through a network partner of SIX) is not supported.\u003C\u002Fli>\n\u003Cli>Swiss letter layouts with the window left or right (SN 10130:2026 &quot;Geschäftsbrief&quot;, which replaced SN 010130; Swiss Post specifications for the address window) are not included; the pack uses the layout \u003Ccode>free\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Labels and code names in Italian are missing in the core; Italian invoices show English labels.\u003C\u002Fli>\n\u003Cli>There is no Laravel service provider with a configuration file of the pack; the setting \u003Ccode>cash_rounding\u003C\u002Fcode> goes into \u003Ccode>config\u002Fquittio.php\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>20 years of retention for immovable property are not modelled.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"complete-example\">Complete example\u003Ca class=\"q-doc-anchor\" href=\"#complete-example\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>A Swiss software company invoices a business in Bern: development work at the standard rate and two books at the reduced rate, paid to a QR-IBAN, rounded to 5 Rappen. The script checks the invoice, renders it and saves the PDF with the QR bill on its second page. It runs without Laravel; in Laravel, start with \u003Ccode>Quittio::invoice()\u003C\u002Fcode> instead of \u003Ccode>InvoiceBuilder::make()\u003C\u002Fcode> and leave out \u003Ccode>Quittio::create()\u003C\u002Fcode> and \u003Ccode>useDefaultVat()\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cdiv class=\"q-doc-code\">\u003Cdiv class=\"q-doc-code-bar\">\u003Cspan>php\u003C\u002Fspan>\u003Cbutton type=\"button\" class=\"q-doc-copy\" data-copy aria-label=\"Copy code\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fsvg>\u003Cspan>Copy\u003C\u002Fspan>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003Cpre class=\"shiki github-dark-default\" style=\"background-color:#0d1117;color:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">&#x3C;?\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">php\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">require\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> __DIR__\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">.\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'\u002Fvendor\u002Fautoload.php'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Builder\\InvoiceBuilder\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Builder\\Party\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Enums\\PaymentMeansCode\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Enums\\UnitCode\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Core\\Tax\\CountryDefaultVat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">use\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\\Country\\CH\\Tax\\VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$quittio \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">create\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">([], [\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">]);\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#79C0FF\">InvoiceBuilder\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">useDefaultVat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> CountryDefaultVat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">countries\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">()));   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F lines without vat(): VatPreset::Standard\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$invoice \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> InvoiceBuilder\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">make\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">number\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'RE-2026-0042'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">issueDate\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-10-05'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">deliveryDate\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-09-30'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">currency\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CHF'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">seller\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Party\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">make\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Bergsoft AG'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:10ch;text-indent:-10ch\">\u003Cspan style=\"color:#FF7B72\">        ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">vatId\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CHE-123.456.788 MWST'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:10ch;text-indent:-10ch\">\u003Cspan style=\"color:#FF7B72\">        ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">address\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Bahnhofstrasse 12'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'8001'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Zürich'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CH'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:10ch;text-indent:-10ch\">\u003Cspan style=\"color:#FF7B72\">        ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">contact\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Lea Meier'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'+41 44 123 45 67'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'rechnung@bergsoft.example'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">buyer\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Party\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">make\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Muster GmbH'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">address\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Marktgasse 28'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'3011'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Bern'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CH'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">))\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">line\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Softwareentwicklung'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">netPrice\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'145.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">quantity\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">12\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">unit\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">UnitCode\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Hour\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)                    \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F 8.1 %\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">line\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Fachbuch'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">netPrice\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'39.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">quantity\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">2\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">unit\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">UnitCode\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Piece\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">vat\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">VatPreset\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">Reduced\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)       \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F 2.6 %\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">payment\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">PaymentMeansCode\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">SepaCreditTransfer\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">iban\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'CH44 3199 9123 0008 8901 2'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)                      \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F QR-IBAN\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">dueInDays\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">30\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">flag\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">CountryCH\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">FLAG_CASH_ROUNDING\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">build\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">();\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#8B949E\">\u002F\u002F Validate without rendering: EN 16931 and the MWSTG rules\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">$check \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">make\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($invoice)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">check\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">();\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">foreach\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> ($check\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">messages \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">as\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $message) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#79C0FF\">    echo\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\"> \"[{\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">$message\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">code\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">}] {\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">$message\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">message\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">}\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">\\n\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#FF7B72\">if\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> ($check\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">isValid\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">()) {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#E6EDF3\">    $result \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">make\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($invoice)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">render\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">();          \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F format zugferd: PDF with EN 16931 XML\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#E6EDF3\">    $path \u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">=\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $result\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">save\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">__DIR__\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">.\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'\u002Finvoices\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);           \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F invoices\u002FRechnung_RE-2026-0042.pdf\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#79C0FF\">    echo\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $result\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">data\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">()\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">totals\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">roundingAmount, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">\\n\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;    \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F CHF -0.02\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#79C0FF\">    echo\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\"> $result\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">data\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">()\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">totals\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">amountDue, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">\\n\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">\"\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">;         \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F CHF 1960.95\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:2ch;text-indent:-2ch\">\u003Cspan style=\"color:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>What the invoice contains:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Net amount 1'818.00 CHF, 8.1 % MWST on 1'740.00 CHF (140.94 CHF) and 2.6 % MWST on 78.00 CHF (2.03 CHF), total 1'960.97 CHF, rounding −0.02 CHF, amount due 1'960.95 CHF.\u003C\u002Fli>\n\u003Cli>The date of the supply (&quot;Leistungsdatum 30.09.2026&quot;) in the header and the UID number (&quot;MWST-Nr. CHE-123.456.788 MWST&quot;) in the footer, as the \u003Ca href=\"#mandatory-pdf-output\">mandatory output\u003C\u002Fa> requires.\u003C\u002Fli>\n\u003Cli>On the second page the payment part and the receipt: account CH44 3199 9123 0008 8901 2 with Bergsoft AG, the QR reference \u003Ccode>00 00000 00000 00000 02026 00427\u003C\u002Fcode> made from the invoice number, &quot;RE-2026-0042&quot; as additional information, the buyer under &quot;Zahlbar durch&quot; and the amount 1 960.95 CHF.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>With an ordinary IBAN instead of the QR-IBAN, the code has no reference (\u003Ccode>NON\u003C\u002Fcode>) unless the remittance information is a Creditor Reference (\u003Ca href=\"#references\">References\u003C\u002Fa>). With the locale \u003Ccode>fr_CH\u003C\u002Fcode> (\u003Ccode>-&gt;locale('fr_CH')\u003C\u002Fcode> before \u003Ccode>build()\u003C\u002Fcode>), labels, exemption texts and the QR bill headings are French (&quot;Section paiement&quot;, &quot;Récépissé&quot;).\u003C\u002Fp>\n",[111,115,118,121,124,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,176,179,182,185,188],{"id":112,"text":113,"level":114},"installation","Installation",2,{"id":116,"text":117,"level":114},"when-it-applies","When it applies",{"id":119,"text":120,"level":114},"common-tasks","Common tasks",{"id":122,"text":123,"level":114},"tax-presets","Tax presets",{"id":125,"text":126,"level":127},"rates-by-supply-date","Rates by supply date",3,{"id":129,"text":130,"level":127},"sellers-not-registered-for-vat","Sellers not registered for VAT",{"id":132,"text":133,"level":127},"default-vat-and-lookup","Default VAT and lookup",{"id":135,"text":136,"level":127},"exemption-texts","Exemption texts",{"id":138,"text":139,"level":114},"rules","Rules",{"id":141,"text":142,"level":127},"mandatory-pdf-output","Mandatory PDF output",{"id":144,"text":145,"level":114},"qr-bill","QR bill",{"id":147,"text":148,"level":127},"when-the-code-is-printed","When the code is printed",{"id":150,"text":151,"level":127},"references","References",{"id":153,"text":154,"level":127},"parties-amount-and-message","Parties, amount and message",{"id":156,"text":157,"level":127},"what-is-printed","What is printed",{"id":159,"text":160,"level":127},"the-qr-mode","The QR mode",{"id":162,"text":163,"level":127},"payment-reminders","Payment reminders",{"id":165,"text":166,"level":127},"the-classes-qrreference-and-creditorreference","The classes QrReference and CreditorReference",{"id":168,"text":169,"level":114},"rounding-to-5-rappen","Rounding to 5 Rappen",{"id":171,"text":172,"level":114},"late-payment","Late payment",{"id":174,"text":175,"level":114},"meta-flags-and-settings","Meta flags and settings",{"id":177,"text":178,"level":114},"defaults","Defaults",{"id":180,"text":181,"level":127},"cancellations-and-corrections","Cancellations and corrections",{"id":183,"text":184,"level":114},"languages","Languages",{"id":186,"text":187,"level":114},"known-limitations","Known limitations",{"id":189,"text":190,"level":114},"complete-example","Complete example","https:\u002F\u002Fgithub.com\u002FQuittio\u002Fquittio\u002Fedit\u002Fmaster\u002Fdocs\u002Fcountry-ch.md","\u002Fdocs\u002Fcountry-ch.md",{"slug":79,"title":80},{"slug":85,"title":86}]