[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"docs:documents":3},{"versions":4,"version":26,"nav":28,"path":55,"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":56,"description":108,"html":109,"headings":110,"editUrl":155,"markdownUrl":156,"prev":157,"next":158},"Besides invoices, a business sends other documents: quotes, order confirmations, delivery notes, proforma invoices, payment reminders, account statements and bonus statements.","\u003Ch1 id=\"quotes-delivery-notes-and-other-documents\">Quotes, delivery notes and other documents\u003C\u002Fh1>\n\u003Cp>Besides invoices, a business sends other documents: quotes, order confirmations, delivery notes, proforma invoices, payment reminders, account statements and bonus statements. This page shows how to create them with Quittio. It assumes you know the invoice builder from \u003Ca href=\"\u002Fdocs\u002Fgetting-started\">Getting started\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Documents share parties, lines, calculation, design and templates with invoices, but they are no invoices. They never produce e-invoice XML (\u003Ca href=\"\u002Fdocs\u002Fconcepts#what-an-e-invoice-is\">What an e-invoice is\u003C\u002Fa>), are not validated and are rendered as PDF or HTML only.\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Type\u003C\u002Fth>\n\u003Cth>\u003Ccode>DocumentType\u003C\u002Fcode>\u003C\u002Fth>\n\u003Cth>Builder\u003C\u002Fth>\n\u003Cth>Lines\u003C\u002Fth>\n\u003Cth>Prices and totals\u003C\u002Fth>\n\u003Cth>Payment block\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Quote\u003C\u002Ftd>\n\u003Ctd data-label=\"DocumentType\">\u003Ccode>Quote\u003C\u002Fcode> (\u003Ccode>quote\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Builder\">\u003Ccode>DocumentBuilder::quote()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Lines\">required\u003C\u002Ftd>\n\u003Ctd data-label=\"Prices and totals\">yes\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment block\">none (no bank details, QR code or amount due)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Order confirmation\u003C\u002Ftd>\n\u003Ctd data-label=\"DocumentType\">\u003Ccode>OrderConfirmation\u003C\u002Fcode> (\u003Ccode>order_confirmation\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Builder\">\u003Ccode>orderConfirmation()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Lines\">required\u003C\u002Ftd>\n\u003Ctd data-label=\"Prices and totals\">yes\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment block\">none\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Delivery note\u003C\u002Ftd>\n\u003Ctd data-label=\"DocumentType\">\u003Ccode>DeliveryNote\u003C\u002Fcode> (\u003Ccode>delivery_note\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Builder\">\u003Ccode>deliveryNote()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Lines\">required\u003C\u002Ftd>\n\u003Ctd data-label=\"Prices and totals\">no\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment block\">none\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Proforma invoice\u003C\u002Ftd>\n\u003Ctd data-label=\"DocumentType\">\u003Ccode>Proforma\u003C\u002Fcode> (\u003Ccode>proforma\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Builder\">\u003Ccode>proforma()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Lines\">required\u003C\u002Ftd>\n\u003Ctd data-label=\"Prices and totals\">yes\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment block\">payment terms, bank details, QR code\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Payment reminder\u003C\u002Ftd>\n\u003Ctd data-label=\"DocumentType\">\u003Ccode>PaymentReminder\u003C\u002Fcode> (\u003Ccode>payment_reminder\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Builder\">\u003Ccode>paymentReminder(int $level = 0)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Lines\">not allowed\u003C\u002Ftd>\n\u003Ctd data-label=\"Prices and totals\">open items, fees, interest\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment block\">bank details, QR code over the total\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Account statement\u003C\u002Ftd>\n\u003Ctd data-label=\"DocumentType\">\u003Ccode>AccountStatement\u003C\u002Fcode> (\u003Ccode>account_statement\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Builder\">\u003Ccode>accountStatement()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Lines\">not allowed\u003C\u002Ftd>\n\u003Ctd data-label=\"Prices and totals\">open items, balance\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment block\">bank details\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Bonus statement\u003C\u002Ftd>\n\u003Ctd data-label=\"DocumentType\">\u003Ccode>BonusStatement\u003C\u002Fcode> (\u003Ccode>bonus_statement\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003Ctd data-label=\"Builder\">\u003Ccode>bonusStatement()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Lines\">required (one per VAT rate)\u003C\u002Ftd>\n\u003Ctd data-label=\"Prices and totals\">yes\u003C\u002Ftd>\n\u003Ctd data-label=\"Payment block\">none (the seller pays)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>The printed title depends on the locale. In English it is the name in the first column; reminders from level 1 on are titled &quot;Reminder no. 1&quot;, &quot;Reminder no. 2&quot; … (\u003Ca href=\"#payment-reminders\">Payment reminders\u003C\u002Fa>). German documents are titled &quot;Angebot&quot; (quote), &quot;Auftragsbestätigung&quot; (order confirmation), &quot;Lieferschein&quot; (delivery note), &quot;Proforma-Rechnung&quot; (proforma invoice), &quot;Zahlungserinnerung&quot; (payment reminder), &quot;1. Mahnung&quot; (first reminder), &quot;Kontoauszug&quot; (account statement) and &quot;Bonusabrechnung&quot; (bonus statement).\u003C\u002Fp>\n\u003Ch2 id=\"creating-a-document\">Creating a document\u003Ca class=\"q-doc-anchor\" href=\"#creating-a-document\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>In Laravel, start with the facade: \u003Ccode>Quittio::quote()\u003C\u002Fcode>, \u003Ccode>Quittio::orderConfirmation()\u003C\u002Fcode>, \u003Ccode>Quittio::deliveryNote()\u003C\u002Fcode>, \u003Ccode>Quittio::proforma()\u003C\u002Fcode>, \u003Ccode>Quittio::paymentReminder(int $level = 0)\u003C\u002Fcode>, \u003Ccode>Quittio::accountStatement()\u003C\u002Fcode> or \u003Ccode>Quittio::bonusStatement()\u003C\u002Fcode>. Like \u003Ccode>Quittio::invoice()\u003C\u002Fcode>, these methods start the builder with the seller, the first bank account and the small business setting of \u003Ccode>config\u002Fquittio.php\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Flaravel#starting-invoices\">Starting invoices\u003C\u002Fa>). \u003Ccode>-&gt;render()\u003C\u002Fcode> at the end of the chain renders the PDF.\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\">\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\\Laravel\\Facades\\Quittio\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\">$quote \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\">quote\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\">'AN-2026-0007'\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-06'\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\">'Kunde AG'\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\">'Weg 1'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'54321'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Beispielstadt'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'DE'\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\">validUntil\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-10-31'\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\">'120.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\">10\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>\u003C\u002Fspan>\n\u003Cspan class=\"line\" style=\"padding-left:6ch;text-indent:-6ch\">\u003Cspan style=\"color:#FF7B72\">    ->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">optionalLine\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Training'\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\">'800.00'\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:#8B949E\">\u002F\u002F shown, not in the totals\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\">alternativeLine\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'1'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Senior 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\">'150.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\">10\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 alternative to line 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\">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:#79C0FF\">Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">document\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($quote)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">locale\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'de'\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:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">download\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">();\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>This downloads a German quote as \u003Ccode>Angebot_AN-2026-0007.pdf\u003C\u002Fcode> (\u003Ca href=\"#file-names\">File names\u003C\u002Fa>). Use \u003Ccode>-&gt;build()\u003C\u002Fcode> to get the document data, e.g. to store it, and \u003Ccode>Quittio::document()\u003C\u002Fcode> to render it with more options (\u003Ca href=\"#rendering\">Rendering\u003C\u002Fa>).\u003C\u002Fp>\n\u003Cp>Without Laravel, start with the static methods of \u003Ccode>DocumentBuilder\u003C\u002Fcode> (\u003Ccode>DocumentBuilder::quote()\u003C\u002Fcode> …) and set the seller yourself with \u003Ccode>-&gt;seller()\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>\u003Ccode>DocumentBuilder::make(DocumentType $type)\u003C\u002Fcode> creates a builder for any type; reminders created this way have level 0. \u003Ccode>DocumentType\u003C\u002Fcode> has three methods:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>showsPrices()\u003C\u002Fcode>: \u003Ccode>false\u003C\u002Fcode> for delivery notes;\u003C\u002Fli>\n\u003Cli>\u003Ccode>hasLineTotals()\u003C\u002Fcode>: \u003Ccode>true\u003C\u002Fcode> for quotes, order confirmations and proformas;\u003C\u002Fli>\n\u003Cli>\u003Ccode>labelKey()\u003C\u002Fcode>: the label key of the title, \u003Ccode>document_{value}\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"quotes-and-order-confirmations\">Quotes and order confirmations\u003Ca class=\"q-doc-anchor\" href=\"#quotes-and-order-confirmations\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>A quote offers goods or services at a price; an order confirmation confirms an order.\u003C\u002Fp>\n\u003Cp>Quotes print the validity date (\u003Ccode>validUntil()\u003C\u002Fcode>). They mark optional lines with &quot;[Optional]&quot; and alternative lines with &quot;[Alternative to pos. 1]&quot;, and they end with an acceptance field (&quot;Order placed:&quot; with a signature line), where the customer can sign the quote.\u003C\u002Fp>\n\u003Cp>Optional and alternative lines get their line amounts, but they are excluded from the totals, the VAT breakdown and \u003Ccode>InvoiceBuilder::fromDocument()\u003C\u002Fcode>. Document discounts apply to the remaining lines.\u003C\u002Fp>\n\u003Cp>Quotes and order confirmations are no request to pay: the \u003Ca href=\"\u002Fdocs\u002Ftemplates#view-model\">view model\u003C\u002Fa> has no payment block, no amount due and no due date text.\u003C\u002Fp>\n\u003Cp>Order confirmations reference the quote with \u003Ccode>reference('AN-2026-0007', '2026-10-06')\u003C\u002Fcode> and state the delivery date with \u003Ccode>deliveryDate()\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch2 id=\"delivery-notes\">Delivery notes\u003Ca class=\"q-doc-anchor\" href=\"#delivery-notes\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>A delivery note accompanies a shipment. It prints quantities without prices or totals.\u003C\u002Fp>\n\u003Cp>Lines get the net price 0 and the VAT category O (not subject to VAT) unless they set a price or VAT themselves, so they need only name, quantity and unit. This applies to lines given by name, as builder, array, model (\u003Ccode>ProvidesInvoiceLine\u003C\u002Fcode>) or callable. Finished \u003Ccode>InvoiceLine\u003C\u002Fcode> objects are taken as they are.\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\\Math\\BigDecimal\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\\Package\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\\Laravel\\Facades\\Quittio\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\">$note \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\">deliveryNote\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\">'LS-2026-0012'\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\">($buyer)\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\">reference\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'AB-2026-0003'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)                  \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F the order confirmation\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-10-02'\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\">serialisedLine\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Router'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, [\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'SN-1001'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'SN-1002'\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\">Unit\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\">'Cable'\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\">5\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\">Metre\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\">package\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Package\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'P1'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">type\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Box'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">weightKg\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">BigDecimal\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\">'2.5'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">), \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">dimensions\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'30 × 20 × 10 cm'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">trackingNumber\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'00340434161094042557'\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>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>\u003Ccode>Package\u003C\u002Fcode> has \u003Ccode>id\u003C\u002Fcode>, \u003Ccode>type\u003C\u002Fcode>, \u003Ccode>weightKg\u003C\u002Fcode> (\u003Ccode>BigDecimal\u003C\u002Fcode>), \u003Ccode>dimensions\u003C\u002Fcode> and \u003Ccode>trackingNumber\u003C\u002Fcode>. The template lists the packages, and the serial numbers below each line.\u003C\u002Fp>\n\u003Ch2 id=\"proforma-invoices\">Proforma invoices\u003Ca class=\"q-doc-anchor\" href=\"#proforma-invoices\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>A proforma invoice announces the amount of a future invoice, e.g. for advance payment or customs. It is not an invoice for tax purposes.\u003C\u002Fp>\n\u003Cp>Build it with \u003Ccode>Quittio::proforma()\u003C\u002Fcode> (Laravel) or \u003Ccode>DocumentBuilder::proforma()\u003C\u002Fcode>. It is rendered like an invoice, with prices, totals, payment terms, bank details and QR code. Its title is &quot;Proforma invoice&quot;, and the legal notes contain &quot;This proforma invoice is not an invoice for tax purposes.&quot; It never carries e-invoice XML.\u003C\u002Fp>\n\u003Cp>Do not render a proforma as an invoice. An invoice with the type code (BT-3) 325 (\u003Ccode>InvoiceTypeCode::ProformaInvoice\u003C\u002Fcode>) fails validation with the rule \u003Ccode>QUITTIO-PROFORMA\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Fconcepts#rules-and-validation\">Rules and validation\u003C\u002Fa>), because e-invoice XML with VAT amounts would be booked as an invoice.\u003C\u002Fp>\n\u003Ch2 id=\"payment-reminders\">Payment reminders\u003Ca class=\"q-doc-anchor\" href=\"#payment-reminders\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>A payment reminder asks the buyer to pay invoices that are overdue. The level counts the reminders:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Level 0 (default) is a friendly payment reminder, titled &quot;Payment reminder&quot; (German &quot;Zahlungserinnerung&quot;).\u003C\u002Fli>\n\u003Cli>Level 1 and higher are formal reminders, titled &quot;Reminder no. :level&quot;: &quot;Reminder no. 1&quot;, &quot;Reminder no. 2&quot; … The German titles are &quot;1. Mahnung&quot; (first reminder), &quot;2. Mahnung&quot; (second reminder) …\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>A negative level throws an \u003Ccode>InvalidArgumentException\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\\Laravel\\Facades\\Quittio\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\"> Quittio\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 level 1: first reminder\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\">buyer\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($buyer)\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-08-01'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'1190.00'\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-08-15'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">paid\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'190.00'\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\">fee\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Reminder costs'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2.50'\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\">interest\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'1000.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'10.27'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">from\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-08-16'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">until\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-10-04'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F until is exclusive: the last day with interest is 3 October\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\">deadline\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-10-18'\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:#E6EDF3\">$reminder\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">dunning\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">total\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'EUR'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);            \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F open items + fees + interest, no VAT\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:#E6EDF3\">dunning\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">remittanceText\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">();        \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F \"RE-2026-0042\" – open invoice numbers for the transfer\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>The template lists the open items (invoice number, date, due date, amount, paid, open), the fees, the interest lines and &quot;Total to pay&quot;, then the deadline text (&quot;Please pay the total amount by …&quot;). The payment block uses the open invoice numbers as remittance information (the document number if none is open). The GiroCode, the QR code for the bank transfer (\u003Ca href=\"\u002Fdocs\u002Ftemplates#payment-qr-codes\">Payment QR codes\u003C\u002Fa>), carries the total of the reminder.\u003C\u002Fp>\n\u003Cp>Rules:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Reminders have no lines, allowances or charges; the builder rejects them. The amount to pay is \u003Ccode>Dunning::total()\u003C\u002Fcode>: open items plus fees plus interest.\u003C\u002Fli>\n\u003Cli>Fees and default interest carry no VAT. They are damages, not payment for a supply (section 1.3 (6) of the German VAT application decree, UStAE). The same applies to the flat rate for late payment of section 288 (5) of the German Civil Code (BGB).\u003C\u002Fli>\n\u003Cli>Only actual costs may be claimed as reminder fees; Quittio has no default fee.\u003C\u002Fli>\n\u003Cli>A reminder to a business that claims the flat rate and reminder fees of your own gets the notice \u003Ccode>QUITTIO-DUNNING-FLAT-RATE-FEES\u003C\u002Fcode> (warning): reminder fees count towards the flat rate (Article 6 (3) Directive 2011\u002F7\u002FEU, section 288 (5) sentence 3 BGB) and may be claimed only in so far as they exceed it. Documents are not validated, so the notice does not stop rendering: \u003Ccode>$document-&gt;notices($locale)\u003C\u002Fcode> and \u003Ccode>RenderedDocument::notices()\u003C\u002Fcode> return it (as \u003Ccode>ValidationMessage\u003C\u002Fcode>), and the render run logs it as warning.\u003C\u002Fli>\n\u003Cli>\u003Ccode>flatRate(string $claim, $amount = '40.00', ?string $description = null)\u003C\u002Fcode> adds the flat rate for recovery costs of a late payment between businesses (Article 6 Directive 2011\u002F7\u002FEU; in Germany section 288 (5) BGB) for one claim, as a \u003Ccode>DunningFee\u003C\u002Fcode> of kind \u003Ccode>DunningFeeKind::FlatRate\u003C\u002Fcode> with the claim. The default description is the label \u003Ccode>dunning_flat_rate\u003C\u002Fcode> (&quot;Flat rate for recovery costs, claim RE-…&quot;). Building throws an \u003Ccode>InvalidArgumentException\u003C\u002Fcode> for a second flat rate of the same claim and for a consumer as buyer. Across reminders, track which claims already carried it yourself; the German rules are in \u003Ca href=\"\u002Fdocs\u002Fcountry-packs#default-interest\">Country packs: Dunning law\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Ccode>interest()\u003C\u002Fcode> takes the first day with interest (\u003Ccode>from\u003C\u002Fcode>, e.g. the day after the due date) and the day after the last day with interest (\u003Ccode>until\u003C\u002Fcode>, exclusive). \u003Ccode>InterestCharge::lastDay()\u003C\u002Fcode> is the last day with interest. The default description uses it: &quot;Default interest 10.27% p.a. on 1,000.00 € from … to …&quot;.\u003C\u002Fli>\n\u003Cli>Interest is simple interest, counted actual\u002Factual: the days of each calendar year are divided by 365 or 366, so that a full year yields exactly the annual rate. Pass \u003Ccode>dayCount: 365\u003C\u002Fcode> or \u003Ccode>dayCount: 360\u003C\u002Fcode> for a fixed basis. Other values, and a period that ends before it starts, throw an \u003Ccode>InvalidArgumentException\u003C\u002Fcode>. The amount is rounded half up once.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Classes of a reminder:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>Dunning\u003C\u002Fcode> (\u003Ccode>$document-&gt;dunning\u003C\u002Fcode>): \u003Ccode>level\u003C\u002Fcode>, \u003Ccode>openItems\u003C\u002Fcode>, \u003Ccode>deadline\u003C\u002Fcode>, \u003Ccode>fees\u003C\u002Fcode> (\u003Ccode>DunningFee\u003C\u002Fcode>: \u003Ccode>description\u003C\u002Fcode>, \u003Ccode>amount\u003C\u002Fcode>, \u003Ccode>kind\u003C\u002Fcode> (\u003Ccode>DunningFeeKind::Fee\u003C\u002Fcode> or \u003Ccode>FlatRate\u003C\u002Fcode>), \u003Ccode>claim\u003C\u002Fcode>), \u003Ccode>interest\u003C\u002Fcode>, \u003Ccode>openTotal($currency)\u003C\u002Fcode>, \u003Ccode>feeTotal($currency)\u003C\u002Fcode>, \u003Ccode>interestTotal($currency)\u003C\u002Fcode>, \u003Ccode>total($currency)\u003C\u002Fcode>, \u003Ccode>openInvoiceNumbers()\u003C\u002Fcode> (unsettled items, without duplicates) and \u003Ccode>remittanceText(int $maxLength = 140)\u003C\u002Fcode> (as many complete numbers as fit, comma separated).\u003C\u002Fli>\n\u003Cli>\u003Ccode>InterestCharge\u003C\u002Fcode>: \u003Ccode>base\u003C\u002Fcode>, \u003Ccode>ratePercent\u003C\u002Fcode>, \u003Ccode>from\u003C\u002Fcode>, \u003Ccode>until\u003C\u002Fcode>, \u003Ccode>description\u003C\u002Fcode>, \u003Ccode>amount\u003C\u002Fcode> (a stated amount replaces the calculation), \u003Ccode>dayCount\u003C\u002Fcode>, \u003Ccode>days()\u003C\u002Fcode>, \u003Ccode>lastDay()\u003C\u002Fcode>, \u003Ccode>total()\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Ccode>OpenItem\u003C\u002Fcode>: \u003Ccode>invoiceNumber\u003C\u002Fcode>, \u003Ccode>invoiceDate\u003C\u002Fcode>, \u003Ccode>amount\u003C\u002Fcode>, \u003Ccode>dueDate\u003C\u002Fcode>, \u003Ccode>paid\u003C\u002Fcode>, \u003Ccode>description\u003C\u002Fcode>, \u003Ccode>open()\u003C\u002Fcode> (amount minus paid; negative for overpaid items and credits) and \u003Ccode>isSettled()\u003C\u002Fcode> (nothing open).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"german-default-interest\">German default interest\u003Ca class=\"q-doc-anchor\" href=\"#german-default-interest\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>In Germany, a debtor in default owes interest at the statutory rate of section 288 BGB: the base rate of the Bundesbank plus 9 percentage points (businesses) or 5 points (consumers). The German country pack calculates it, with periods split at every change of the base rate. Add its charges to the reminder:\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\\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\\DE\\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\\Laravel\\Facades\\Quittio\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\"> Quittio\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>\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\">buyer\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($buyer)\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-06-01'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'1000.00'\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-06-15'\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 one charge per period with the same base rate; the end date is exclusive\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:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> DefaultInterest\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>\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\">'1000.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'EUR'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">), \u003C\u002Fspan>\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-06-16'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">), \u003C\u002Fspan>\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-10-05'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">), \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">consumer\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">false\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">));\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>\u003Ccode>interestCharge()\u003C\u002Fcode> takes the charges with their day count (actual\u002Factual in Germany) and texts. For any country pack with a reference rate, or with fixed rates for businesses and consumers (\u003Ccode>DunningLaw::hasFixedRates()\u003C\u002Fcode>), \u003Ccode>Quittio\\Core\\Dunning\\DefaultInterest::forCountry($pack)\u003C\u002Fcode> calculates the same with the pack's \u003Ccode>referenceRates()\u003C\u002Fcode> and \u003Ccode>dunningLaw()\u003C\u002Fcode>; the German class adds the German texts. The descriptions are German by default; any other locale, e.g. \u003Ccode>calculate(…, locale: 'en')\u003C\u002Fcode>, returns English ones.\u003C\u002Fp>\n\u003Cp>The base rate table, the flat rate and the conditions of default are described in \u003Ca href=\"\u002Fdocs\u002Fcountry-packs#dunning-law\">Country packs\u003C\u002Fa>. The country-neutral contract is \u003Ccode>CountryPack::dunningLaw()\u003C\u002Fcode> (\u003Ccode>DunningLaw\u003C\u002Fcode>: \u003Ccode>b2bInterestPoints\u003C\u002Fcode>, \u003Ccode>b2cInterestPoints\u003C\u002Fcode>, \u003Ccode>b2bFlatRate\u003C\u002Fcode>, \u003Ccode>dayCount\u003C\u002Fcode>, \u003Ccode>consumerDefaultAfterDays\u003C\u002Fcode>, \u003Ccode>referenceRateName\u003C\u002Fcode>, \u003Ccode>b2cFixedRate\u003C\u002Fcode>, \u003Ccode>b2bFixedRate\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Ch2 id=\"account-statements\">Account statements\u003Ca class=\"q-doc-anchor\" href=\"#account-statements\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>An account statement lists the invoices of a customer and the resulting balance.\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\\Laravel\\Facades\\Quittio\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\">$statement \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\">accountStatement\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\">'KA-2026-09'\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\">($buyer)\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\">statementPeriod\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-09-01'\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\">openingBalance\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'100.00'\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-0050'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-09-10'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'595.00'\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-09-24'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">paid\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'595.00'\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-0061'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-09-28'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'238.00'\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-10-12'\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:#E6EDF3\">$statement\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">statement\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">balance\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'EUR'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);       \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F 338.00\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>The balance is the opening balance plus the open amounts (amount minus paid) of the listed items. The opening balance is the balance at the start of the period and already contains every invoice dated before it. Therefore:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>with \u003Ccode>openingBalance()\u003C\u002Fcode>, only items dated within \u003Ccode>statementPeriod()\u003C\u002Fcode> are accepted;\u003C\u002Fli>\n\u003Cli>without an opening balance, the statement is an open item list and may list older items;\u003C\u002Fli>\n\u003Cli>items dated after the end of the period are always rejected;\u003C\u002Fli>\n\u003Cli>without \u003Ccode>statementPeriod()\u003C\u002Fcode>, the period ends on the document date.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Violations throw an \u003Ccode>InvalidArgumentException\u003C\u002Fcode>, as does a period that ends before it starts.\u003C\u002Fp>\n\u003Cp>\u003Ccode>AccountStatement\u003C\u002Fcode> (\u003Ccode>$document-&gt;statement\u003C\u002Fcode>) has \u003Ccode>period\u003C\u002Fcode>, \u003Ccode>items\u003C\u002Fcode>, \u003Ccode>openingBalance\u003C\u002Fcode>, \u003Ccode>openItems()\u003C\u002Fcode> (unsettled items) and \u003Ccode>balance($currency)\u003C\u002Fcode>. The template lists all items, the period, the opening balance and the balance; the payment block shows the bank details without QR code.\u003C\u002Fp>\n\u003Ch2 id=\"bonus-statements\">Bonus statements\u003Ca class=\"q-doc-anchor\" href=\"#bonus-statements\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>A bonus agreed for a period, e.g. 3 % on the annual revenue, reduces the consideration of all invoices of that period afterwards. Instead of one document per invoice, a bonus statement documents the reduction once, per VAT rate. In Germany section 17 (4) UStG requires such a document when the reduction concerns supplies taxed at different rates; it need not be an e-invoice (section 17.1 (3a) UStAE).\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\\VatCategory\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\\Laravel\\Facades\\Quittio\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\">$statement \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\">bonusStatement\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\">'BO-2027-0001'\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\">($buyer)\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\">bonusPeriod\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-01-01'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'2026-12-31'\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\">bonusAgreement\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'der Bonusvereinbarung vom 15.01.2026'\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\">bonusOnRevenue\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'100000.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'3'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">VatCategory\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">StandardRate\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'19'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)   \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F 3,000.00 plus VAT 570.00\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\">bonusOnRevenue\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'20000.00'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'3'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">VatCategory\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\">StandardRate\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'7'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)     \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F 600.00 plus VAT 42.00\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\">bonusInvoices\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'RE-2026-0001'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'RE-2026-0002'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)                       \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F optional\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\">render\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">();\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>\u003Ccode>bonusPeriod($start, $end)\u003C\u002Fcode> is the period of the supplies, \u003Ccode>bonusAgreement(string $agreement)\u003C\u002Fcode> the agreement the bonus is based on. Both are required; \u003Ccode>build()\u003C\u002Fcode> throws an \u003Ccode>InvalidArgumentException\u003C\u002Fcode> without them.\u003C\u002Fli>\n\u003Cli>Each reduction is a line &quot;Bonus&quot; with the VAT of its rate: \u003Ccode>bonusOnRevenue($revenue, $percent, $vat, $rate = null, ?string $exemptionReason = null, $exemptionReasonCode = null)\u003C\u002Fcode> calculates it from the net revenue of that rate (description &quot;3 % auf den Nettoumsatz (Entgelt) von 100.000,00 €&quot;); for a bonus on the gross revenue, take the net amount out yourself and pass it to \u003Ccode>bonus()\u003C\u002Fcode>, \u003Ccode>bonus($net, $vat, …, ?string $description = null)\u003C\u002Fcode> takes the net amount. Exempt revenue gets a line of its own with category \u003Ccode>E\u003C\u002Fcode> and the exemption reason. Intra-community supplies (\u003Ccode>K\u003C\u002Fcode>) and exports (\u003Ccode>G\u003C\u002Fcode>) get &quot;Minderung des Entgelts für steuerfreie innergemeinschaftliche Lieferungen&quot; or &quot;… Ausfuhrlieferungen&quot; instead of the exemption text of a supply, unless you pass a reason. The VAT breakdown then shows the reduction of net amount and VAT per rate.\u003C\u002Fli>\n\u003Cli>So that it does not read like an invoice with VAT shown, the statement names reductions: the columns &quot;Minderung&quot; and &quot;Summe&quot; instead of &quot;Einzelpreis&quot; and &quot;Betrag&quot;, the VAT rows &quot;Minderung USt. 19 %&quot; or &quot;Minderung ohne USt. (…)&quot;, the totals &quot;Minderung Entgelt gesamt&quot; and &quot;Bonus gesamt (brutto)&quot; (labels \u003Ccode>bonus_label_*\u003C\u002Fcode>, \u003Ccode>bonus_vat_row\u003C\u002Fcode>, \u003Ccode>bonus_vat_row_untaxed\u003C\u002Fcode>).\u003C\u002Fli>\n\u003Cli>The statement names the period and the agreement: &quot;Nachträgliche Minderung der Entgelte für die Lieferungen und sonstigen Leistungen vom 01.01.2026 bis 31.12.2026 gemäß der Bonusvereinbarung vom 15.01.2026 (§ 17 Abs. 4 UStG).&quot; (label \u003Ccode>bonus_statement_note\u003C\u002Fcode>; the German pack adds the reference), the invoices of \u003Ccode>bonusInvoices()\u003C\u002Fcode> if given, and, without payment terms of your own, &quot;Der Bonus wird mit offenen Forderungen verrechnet oder ausgezahlt.&quot; (label \u003Ccode>bonus_statement_payout\u003C\u002Fcode>).\u003C\u002Fli>\n\u003Cli>The seller pays the bonus: the statement shows no bank details, QR code or amount due.\u003C\u002Fli>\n\u003Cli>\u003Ccode>BonusStatement\u003C\u002Fcode> (\u003Ccode>$document-&gt;bonus\u003C\u002Fcode>) has \u003Ccode>period\u003C\u002Fcode>, \u003Ccode>agreement\u003C\u002Fcode> and \u003Ccode>invoices\u003C\u002Fcode>. The revenue per rate comes from your accounting; Quittio does not know it.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For a reduction of a single invoice, e.g. a cash discount taken, use \u003Ccode>priceReduction()\u003C\u002Fcode> instead (\u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#price-reductions\">Price reductions\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ch2 id=\"from-document-to-invoice\">From document to invoice\u003Ca class=\"q-doc-anchor\" href=\"#from-document-to-invoice\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>When the customer accepts a quote or the goods are delivered, turn the document into an invoice:\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\">\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\">fromDocument\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($quote)\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-0100'\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-11-16'\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-11-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\">build\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">();\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cp>\u003Ccode>fromDocument()\u003C\u002Fcode> starts an invoice from a quote, order confirmation, delivery note or proforma.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>It takes over the parties, the billable lines (amounts are recalculated), document allowances and charges, payment terms and instructions, delivery, buyer reference, purchase order reference, presentation and locale.\u003C\u002Fli>\n\u003Cli>Number and notes are not taken over. Set the number, and the issue date (otherwise today).\u003C\u002Fli>\n\u003Cli>The number of an order confirmation becomes the sales order reference (BT-14), the number of a delivery note the despatch advice reference (BT-16). Quotes and proformas are not referenced.\u003C\u002Fli>\n\u003Cli>Lines of a delivery note have no prices (net price 0, category O) and need prices and VAT before invoicing.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The result is a normal \u003Ccode>InvoiceBuilder\u003C\u002Fcode>; validation and e-invoice formats apply when it is rendered.\u003C\u002Fp>\n\u003Ch2 id=\"rendering\">Rendering\u003Ca class=\"q-doc-anchor\" href=\"#rendering\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Ccode>Quittio::document()\u003C\u002Fcode> renders a document with more options than \u003Ccode>-&gt;render()\u003C\u002Fcode> at the end of the builder chain:\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\\Data\\Presentation\\Presentation\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\\Laravel\\Facades\\Quittio\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\">$result \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\">document\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($quote)          \u003C\u002Fspan>\u003Cspan style=\"color:#8B949E\">\u002F\u002F DocumentData; in Laravel also a DocumentBuilder\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\">locale\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'en'\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\">country\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'DE'\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\">template\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'invoices.my-design.layout'\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\">presentation\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">new\u003C\u002Fspan>\u003Cspan style=\"color:#79C0FF\"> Presentation\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#FFA657\">title\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'Offer'\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\">render\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\">$html \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\">document\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($quote)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">htmlOnly\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:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">html\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>\u003Ccode>PendingDocument\u003C\u002Fcode> method\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>template(string $template)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Template (\u003Ca href=\"\u002Fdocs\u002Ftemplates#selecting-a-template\">selection rules\u003C\u002Fa>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>locale(string $locale)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Locale; otherwise the document's locale, the configured locale, the country default\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>country(string $country)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Country pack\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>presentation(Presentation $presentation)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Design defaults of this call; the document's own presentation wins\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>htmlOnly()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">HTML instead of PDF\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>option(string $key, mixed $value)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Output option of this call, e.g. \u003Ccode>option('fold_marks', false)\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Fformats#output-configuration\">output configuration\u003C\u002Fa>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>render()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">\u003Ccode>RenderedDocument\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>queue(?string $connection = null, ?string $queue = null)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Laravel: renders in a queued job, see below\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Documents use the invoice templates and the same view model. The node \u003Ccode>documentInfo\u003C\u002Fcode> holds the document specific values (\u003Ca href=\"\u002Fdocs\u002Ftemplates#documentinfo\">view model\u003C\u002Fa>), \u003Ccode>document.kind\u003C\u002Fcode> the type.\u003C\u002Fp>\n\u003Cp>The PDF is PDF\u002FA-3b (the archivable PDF variant) when \u003Ccode>pdf.pdfa\u003C\u002Fcode> is set and no watermark is used, and it never contains embedded XML. Documents run no validation and no \u003Ca href=\"\u002Fdocs\u002Ftemplates#mandatory-field-guard\">mandatory field guard\u003C\u002Fa>. In Laravel they dispatch \u003Ccode>DocumentRendering\u003C\u002Fcode> and \u003Ccode>DocumentRendered\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Flaravel#events\">Events\u003C\u002Fa>).\u003C\u002Fp>\n\u003Cp>\u003Ccode>RenderedDocument\u003C\u002Fcode> (core) has:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>data()\u003C\u002Fcode>, \u003Ccode>html()\u003C\u002Fcode>, \u003Ccode>hasPdf()\u003C\u002Fcode>, \u003Ccode>pdf()\u003C\u002Fcode> (\u003Ccode>LogicException\u003C\u002Fcode> after \u003Ccode>htmlOnly()\u003C\u002Fcode>), \u003Ccode>contents()\u003C\u002Fcode> (PDF, otherwise HTML) and \u003Ccode>mimeType()\u003C\u002Fcode>;\u003C\u002Fli>\n\u003Cli>\u003Ccode>filename(?string $extension = null)\u003C\u002Fcode>;\u003C\u002Fli>\n\u003Cli>\u003Ccode>save(string $path)\u003C\u002Fcode>: a file, or a directory (an existing one or a path ending in \u003Ccode>\u002F\u003C\u002Fcode>) for the generated file name; missing directories are created.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The Laravel class adds \u003Ccode>core()\u003C\u002Fcode>, \u003Ccode>download(?string $filename = null)\u003C\u002Fcode>, \u003Ccode>stream(?string $filename = null)\u003C\u002Fcode> and \u003Ccode>save(?string $disk = null, ?string $path = null)\u003C\u002Fcode> (default disk \u003Ccode>quittio.storage.disk\u003C\u002Fcode>; a path ending in \u003Ccode>\u002F\u003C\u002Fcode> gets the file name appended). It is \u003Ccode>Responsable\u003C\u002Fcode>, so a controller can return it as a download, and \u003Ccode>Attachable\u003C\u002Fcode> for mails (\u003Ca href=\"\u002Fdocs\u002Flaravel\">Laravel integration\u003C\u002Fa>).\u003C\u002Fp>\n\u003Ch3 id=\"queueing\">Queueing\u003Ca class=\"q-doc-anchor\" href=\"#queueing\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>In Laravel, \u003Ccode>queue()-&gt;save()\u003C\u002Fcode> renders the document in a queued job (\u003Ccode>Quittio\\Laravel\\Jobs\\RenderDocument\u003C\u002Fcode>) and stores it on a disk:\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\\Laravel\\Facades\\Quittio\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\">Quittio\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">::\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">document\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">($quote)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">locale\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'de'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">)\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">queue\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">()\u003C\u002Fspan>\u003Cspan style=\"color:#FF7B72\">->\u003C\u002Fspan>\u003Cspan style=\"color:#D2A8FF\">save\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">(\u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'documents'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">, \u003C\u002Fspan>\u003Cspan style=\"color:#A5D6FF\">'quotes\u002F'\u003C\u002Fspan>\u003Cspan style=\"color:#E6EDF3\">);\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fdiv>\n\u003Cul>\n\u003Cli>The job carries the document as versioned JSON snapshot (\u003Ccode>DocumentData::toSnapshot()\u003C\u002Fcode>, \u003Ccode>SNAPSHOT_VERSION\u003C\u002Fcode>) and the render options as versioned JSON, never as serialised PHP objects. Jobs queued before an update are brought up to date by the classes in \u003Ccode>quittio.snapshots.document_upcasters\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>Connection, queue and the dispatch after a database commit follow \u003Ccode>quittio.queue.*\u003C\u002Fcode>, as for invoices.\u003C\u002Fli>\n\u003Cli>After storing, the job dispatches \u003Ccode>QueuedDocumentStored\u003C\u002Fcode> (result, disk and path); a job that failed for good dispatches \u003Ccode>QueuedDocumentFailed\u003C\u002Fcode>. Errors that another attempt cannot fix (invalid data, configuration) fail the job at once.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Ccode>DocumentData::toArray()\u003C\u002Fcode>, \u003Ccode>fromArray()\u003C\u002Fcode>, \u003Ccode>toJson()\u003C\u002Fcode>, \u003Ccode>fromJson()\u003C\u002Fcode>, \u003Ccode>toSnapshot()\u003C\u002Fcode> and \u003Ccode>fromSnapshot()\u003C\u002Fcode> store and restore documents outside the queue as well.\u003C\u002Fp>\n\u003Ch3 id=\"file-names\">File names\u003Ca class=\"q-doc-anchor\" href=\"#file-names\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The file name follows \u003Ccode>pdf.filename\u003C\u002Fcode> (default \u003Ccode>{title}_{number}.{ext}\u003C\u002Fcode>; \u003Ccode>{format}\u003C\u002Fcode> is the document type, \u003Ccode>{date}\u003C\u002Fcode> the document date). Characters other than letters, digits, \u003Ccode>.\u003C\u002Fcode>, \u003Ccode>_\u003C\u002Fcode> and \u003Ccode>-\u003C\u002Fcode> become \u003Ccode>_\u003C\u002Fcode>. Examples:\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Document\u003C\u002Fth>\n\u003Cth>English file name\u003C\u002Fth>\n\u003Cth>German file name\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Quote \u003Ccode>AN-2026-0007\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"English file name\">\u003Ccode>Quote_AN-2026-0007.pdf\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"German file name\">\u003Ccode>Angebot_AN-2026-0007.pdf\u003C\u002Fcode> (&quot;Angebot&quot;: quote)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Reminder level 1 \u003Ccode>M-2026-0003\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"English file name\">\u003Ccode>Reminder_no._1_M-2026-0003.pdf\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"German file name\">\u003Ccode>1._Mahnung_M-2026-0003.pdf\u003C\u002Fcode> (&quot;1. Mahnung&quot;: first reminder)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"builder-methods\">Builder methods\u003Ca class=\"q-doc-anchor\" href=\"#builder-methods\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Parties, lines, notes, discounts and payment data work exactly like in the \u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices\">invoice builder\u003C\u002Fa>:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>lines by name with named values (\u003Ccode>-&gt;line('Consulting', netPrice: '120.00', quantity: 10, unit: UnitCode::Hour)\u003C\u002Fcode>), as \u003Ccode>Line::make()\u003C\u002Fcode>, arrays, models or callables;\u003C\u002Fli>\n\u003Cli>parties as \u003Ccode>Party::make()\u003C\u002Fcode>, models or callables;\u003C\u002Fli>\n\u003Cli>lines without \u003Ccode>vat()\u003C\u002Fcode> get the \u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#default-vat\">default VAT\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Dates accept \u003Ccode>Date\u003C\u002Fcode>, \u003Ccode>DateTimeInterface\u003C\u002Fcode> or a string; amounts are strings.\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Method\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>number(string $number)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Document number\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>issueDate($date)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Document date; default today (in PHP's default time zone, or the one set with \u003Ccode>timezone()\u003C\u002Fcode> through \u003Ccode>tap()\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>currency(string $currency)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Currency; default \u003Ccode>EUR\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>seller(SellerParty|PartyBuilder|ProvidesParty|callable $seller)\u003C\u002Fcode>, \u003Ccode>buyer(BuyerParty|PartyBuilder|ProvidesParty|callable $buyer)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Parties (\u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#seller-and-buyer\">Seller and buyer\u003C\u002Fa>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>line(string|InvoiceLine|LineBuilder|ProvidesInvoiceLine|array|callable $line, $netPrice = null, $quantity = null, $unit = null, $vat = null, ?string $description = null, $priceInclVat = null, ?DocumentLineOptions $options = null)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Line (\u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#lines\">Lines\u003C\u002Fa>); the values are only allowed with a name\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>defaultVat(TaxPreset|VatCategory $presetOrCategory, …)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">VAT of lines without \u003Ccode>vat()\u003C\u002Fcode> (\u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#default-vat\">Default VAT\u003C\u002Fa>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>lines(iterable $lines)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Several lines\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>optionalLine(string|InvoiceLine|LineBuilder|array|callable $line, …)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Optional quote line: shown with its amounts, not in the totals. Takes the same named values as \u003Ccode>line()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>alternativeLine(string $alternativeTo, string|InvoiceLine|LineBuilder|array|callable $line, …)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Alternative to the line with the identifier \u003Ccode>$alternativeTo\u003C\u002Fcode> (BT-126; lines are numbered \u003Ccode>1\u003C\u002Fcode>, \u003Ccode>2\u003C\u002Fcode>, … unless set with \u003Ccode>LineBuilder::id()\u003C\u002Fcode>); shown, not in the totals\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>serialisedLine(string|InvoiceLine|LineBuilder|array|callable $line, array $serialNumbers, …)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Delivery note line with serial numbers\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>note(string $content, NoteSubjectCode|RawCode|string|null $subject = null)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Note (BT-22) with its subject code (BT-21)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>discountPercent(BigDecimal|int|string $percent, ?string $reason = null, $reasonCode = AllowanceReasonCode::Discount)\u003C\u002Fcode>, \u003Ccode>discountAmount(BigDecimal|int|string $amount, ?string $reason = null, $reasonCode = AllowanceReasonCode::Discount)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Document discount, on the lines that count towards the totals\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>dueInDays(int $days)\u003C\u002Fcode>, \u003Ccode>cashDiscount(int $days, string $percent, ?string $baseAmount = null)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Payment target and cash discount (\u003Ca href=\"\u002Fdocs\u002Fbuilding-invoices#payment-terms\">Payment terms\u003C\u002Fa>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>paymentTerms(PaymentTerms|string|callable $terms)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Payment terms as text or object\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>creditTransfer(string $iban, ?string $bic = null, ?string $accountName = null)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Bank account\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>buyerReference(?string $reference)\u003C\u002Fcode>, \u003Ccode>purchaseOrderReference(?string $reference)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Buyer's references\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>reference(string $number, $date = null)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Preceding document, e.g. the quote of an order confirmation or the order of a delivery note\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>validUntil($date)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Validity of a quote\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>deliveryDate($date)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Delivery date\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>deliverTo(?string $recipientName, ?Address $address = null)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Deliver-to party\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>package(Package $package)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Package of a delivery note\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>openItem(string $invoiceNumber, $invoiceDate, string $amount, $dueDate = null, ?string $paid = null, ?string $description = null)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Invoice of a reminder or statement\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>fee(string $description, BigDecimal|int|string $amount)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Reminder fee\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>interest(string $base, BigDecimal|string $ratePercent, $from, $until, ?string $description = null, ?int $dayCount = InterestCharge::ACTUAL_ACTUAL)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Default interest of a reminder\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>interestCharge(InterestCharge ...$charges)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Calculated interest charges, e.g. of \u003Ccode>DefaultInterest::calculate()\u003C\u002Fcode>, with their day count and texts\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>deadline($date)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Payment deadline of a reminder\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>statementPeriod($start, $end)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Period of an account statement\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>bonusPeriod($start, $end)\u003C\u002Fcode>, \u003Ccode>bonusAgreement(string $agreement)\u003C\u002Fcode>, \u003Ccode>bonusInvoices(string ...$numbers)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Period, agreement and invoices of a bonus statement\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>bonus($net, TaxPreset|VatCategory $vat, $rate = null, ?string $exemptionReason = null, $exemptionReasonCode = null, ?string $description = null)\u003C\u002Fcode>, \u003Ccode>bonusOnRevenue($revenue, $percent, TaxPreset|VatCategory $vat, …)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Reduction of one VAT rate of a bonus statement, as a line\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>openingBalance(BigDecimal|int|string $amount)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Opening balance of an account statement\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>presentation(Presentation|array|callable $presentation)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Design of this document (\u003Ca href=\"\u002Fdocs\u002Ftemplates#presentation\">Templates\u003C\u002Fa>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>locale(string $locale)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Locale\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>custom(string $key, mixed $value)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Custom value (\u003Ccode>meta.custom\u003C\u002Fcode> in the view model)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>tap(callable $callback)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Access to the underlying \u003Ccode>InvoiceBuilder\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>build(): DocumentData\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Effect\">Builds the immutable document\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Ccode>DocumentBuilder\u003C\u002Fcode> is \u003Ccode>Macroable\u003C\u002Fcode>: add own methods with \u003Ccode>DocumentBuilder::macro('name', fn () =&gt; …)\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>\u003Ccode>tap()\u003C\u002Fcode> reaches every invoice builder method, but the document keeps only number, date, currency, parties, lines, allowances, charges, notes, buyer reference, purchase order reference, delivery, payment terms, payment instructions, presentation and meta. Other values set through \u003Ccode>tap()\u003C\u002Fcode> are dropped.\u003C\u002Fp>\n\u003Cp>\u003Ccode>build()\u003C\u002Fcode> throws an \u003Ccode>InvalidArgumentException\u003C\u002Fcode> when a quote, order confirmation, proforma, delivery note or bonus statement has no line, when a bonus statement has no period or agreement, or when a reminder or account statement has lines, allowances or charges.\u003C\u002Fp>\n\u003Ch2 id=\"documentdata\">DocumentData\u003Ca class=\"q-doc-anchor\" href=\"#documentdata\" aria-label=\"Link to this section\">#\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Ccode>build()\u003C\u002Fcode> returns \u003Ccode>Quittio\\Core\\Documents\\DocumentData\u003C\u002Fcode> (immutable; change values with \u003Ccode>with()\u003C\u002Fcode>). Its properties: \u003Ccode>type\u003C\u002Fcode>, \u003Ccode>number\u003C\u002Fcode>, \u003Ccode>issueDate\u003C\u002Fcode>, \u003Ccode>currency\u003C\u002Fcode>, \u003Ccode>seller\u003C\u002Fcode>, \u003Ccode>buyer\u003C\u002Fcode>, \u003Ccode>lines\u003C\u002Fcode>, \u003Ccode>lineOptions\u003C\u002Fcode> (\u003Ccode>DocumentLineOptions\u003C\u002Fcode> keyed by line identifier), \u003Ccode>allowances\u003C\u002Fcode>, \u003Ccode>charges\u003C\u002Fcode>, \u003Ccode>notes\u003C\u002Fcode>, \u003Ccode>validUntil\u003C\u002Fcode>, \u003Ccode>reference\u003C\u002Fcode>, \u003Ccode>referenceDate\u003C\u002Fcode>, \u003Ccode>buyerReference\u003C\u002Fcode>, \u003Ccode>purchaseOrderReference\u003C\u002Fcode>, \u003Ccode>delivery\u003C\u002Fcode>, \u003Ccode>packages\u003C\u002Fcode>, \u003Ccode>dunning\u003C\u002Fcode>, \u003Ccode>statement\u003C\u002Fcode>, \u003Ccode>bonus\u003C\u002Fcode>, \u003Ccode>paymentTerms\u003C\u002Fcode>, \u003Ccode>paymentInstructions\u003C\u002Fcode>, \u003Ccode>totals\u003C\u002Fcode>, \u003Ccode>vatBreakdown\u003C\u002Fcode>, \u003Ccode>presentation\u003C\u002Fcode> and \u003Ccode>meta\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ctable class=\"q-doc-table q-stack-table\">\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Method\u003C\u002Fth>\n\u003Cth>Returns\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>options(string $lineId)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Returns\">\u003Ccode>DocumentLineOptions\u003C\u002Fcode> of a line (\u003Ccode>optional\u003C\u002Fcode>, \u003Ccode>alternativeTo\u003C\u002Fcode>, \u003Ccode>serialNumbers\u003C\u002Fcode>, \u003Ccode>isBillable()\u003C\u002Fcode>)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>billableLines()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Returns\">Lines that count towards the totals (without optional and alternative lines)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>isCalculated()\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Returns\">Totals are set (or there is nothing to calculate)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>toInvoiceDraft(bool $billableOnly = true)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd data-label=\"Returns\">The document as \u003Ccode>InvoiceData\u003C\u002Fcode> for calculation and rendering; never use it as an invoice\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>Documents are calculated by \u003Ccode>DocumentCalculator\u003C\u002Fcode> with the invoice calculator when they are rendered. Every line gets its amounts; the totals and the VAT breakdown come from the billable lines.\u003C\u002Fp>\n",[111,115,118,121,124,127,131,134,137,140,143,146,149,152],{"id":112,"text":113,"level":114},"creating-a-document","Creating a document",2,{"id":116,"text":117,"level":114},"quotes-and-order-confirmations","Quotes and order confirmations",{"id":119,"text":120,"level":114},"delivery-notes","Delivery notes",{"id":122,"text":123,"level":114},"proforma-invoices","Proforma invoices",{"id":125,"text":126,"level":114},"payment-reminders","Payment reminders",{"id":128,"text":129,"level":130},"german-default-interest","German default interest",3,{"id":132,"text":133,"level":114},"account-statements","Account statements",{"id":135,"text":136,"level":114},"bonus-statements","Bonus statements",{"id":138,"text":139,"level":114},"from-document-to-invoice","From document to invoice",{"id":141,"text":142,"level":114},"rendering","Rendering",{"id":144,"text":145,"level":130},"queueing","Queueing",{"id":147,"text":148,"level":130},"file-names","File names",{"id":150,"text":151,"level":114},"builder-methods","Builder methods",{"id":153,"text":154,"level":114},"documentdata","DocumentData","https:\u002F\u002Fgithub.com\u002FQuittio\u002Fquittio\u002Fedit\u002Fmaster\u002Fdocs\u002Fdocuments.md","\u002Fdocs\u002Fdocuments.md",{"slug":52,"title":53},{"slug":58,"title":59}]