Invoicing
Invoices built from the work itself
Invoices, quotes and credit notes live next to the hours, retainers and domains they bill. You pick what is still outstanding instead of retyping it, the document carries your design, and what you see on screen is exactly the page that prints as PDF. Payment can happen online; the bookkeeper gets UBL 2.1.
One engine, two documents
An invoice and a quote are the same document with a different lifecycle: the same lines, the same VAT rates, the same currency and the same templates. Issuing allocates the number from your own format, with separate series for invoices and quotes and a yearly restart if you want one. An accepted quote converts to an invoice at the prices and VAT it was accepted at, so a rate change from last week never rewrites what the client signed. Open quotes expire on their validity date by themselves, so the list doesn't fill up with proposals from six months ago. The list carries tiles for Openstaand, Vervallen, Concepten, Betaald dit jaar and Openstaande offertes, each filtering the list it counts.
- Invoice: draft → issue → send → register payment
- Quote: draft → issue → send → accept → convert to invoice
- Number format with {year}, {yy} and {seq}, 2026-0001 and Q2026-0001 by default
Four kinds of line, and three pickers
The line editor knows four kinds of line: Uren, Abonnementen, Domeinen and Diensten. You don't type the first three, you pick them: each opens its own picker over what is still outstanding for this client, and the line arrives priced, dated and with the right unit. Every line remembers what it bills, so editing a draft never bills the same work twice, and removing a line puts that work straight back on the picker. Periods that were already billed stay visible, labelled "al gefactureerd" instead of quietly disappearing — answering by omission is exactly how a duplicate invoice happens. The Facturatie → Nog te factureren screen does the same for the whole agency, with four tiles and a grouping by day, week, month, year, client, project or employee.
- Uren kiezen: approved, billable hours that sit on no invoice yet
- Periodes kiezen: subscription periods not yet billed
- Verlengingen kiezen: domain renewals per year, at the TLD rate or that domain's own price
- Diensten: free lines, one click from your own Producten en diensten list
What you see is what prints
You edit the template in a visual editor beside a preview that is the API's real renderer, not an approximation of it. You switch blocks on and off and drag them into order (Logo, sender, recipient, payment details, lines, VAT breakdown, totals, notes, footer, QR code), give fields your own labels, choose an accent colour and optionally lay a watermark on the background with its own opacity, size, position and rotation. Legally required parts — the number, the date, the VAT breakdown, the reverse-charge notice — may be moved but never switched off. There is one render: the preview, the printout and the PDF are the same page. Formatting follows the document and not the viewer, so a Dutch agency invoicing a German client prints amounts and dates in that document's language and currency, whoever opens it.
- Klassiek: the default design, with your logo and accent colour
- Briefpapier: your own words on the letterhead, your own colour on the rules
- Eigen HTML: your own Jinja and CSS, sandboxed and with no network access
Credit notes, payments and what is outstanding
Once an invoice is issued, the money on it is fixed: amounts, lines and VAT stop being editable, and you correct with a credit note. Crediting hands you a draft with the same lines at negative amounts, which you can trim down for a partial credit. When the credit note covers the original in full, the hours, subscription periods and domain years are released to be billed again. You register payments with a date, an amount and a method, and partial payments are fine: outstanding is total minus paid minus credited, and "overdue" is derived from the due date every day rather than stored anywhere. Process fields stay editable, so changing a reference, a note, a due date or the document language never costs you a credit note.
- Methods: bank transfer, cash, card or other; "online" is only ever written by the provider
- Deleting a draft un-bills exactly the work it held
- An issued invoice is cancelled, never deleted, and not while payments sit on it
Paying online, and the client looking in
An open invoice carries the Online betalingen card: one button creates a payment page for exactly the outstanding amount, computed server-side, and hands you a link to mail or copy. A client with a portal login sees "Nu betalen" there instead. When the provider confirms, an ordinary payment row is written on the invoice, so the status, the reminders and the export all know at once; an hourly check picks up whatever a missed notification left behind. Mollie is the first provider and you connect your own account under Instellingen → Mollie; the key is write-only and card details never touch schakl. In the portal a signed-in client sees only their own company's issued invoices, never a draft and never anyone else's, and the optional QR code on paper points at that portal page rather than at a payment link.
Automatic invoicing, chasing and handover
Automatic invoicing is a level, not a switch. You set it agency-wide and override it per subscription or per domain, so the fixed hosting retainer runs on its own while the client you renegotiate every month stays manual. Payment reminders are off by default; switch them on and you set the schedule yourself in days past the due date (7, 14 and 30, for instance), at most one mail goes out per step, and you can pause them per invoice. The three client-facing mails — invoice, quote and reminder — are rewritable per language under Instellingen → E-mail. And the bookkeeper gets a UBL 2.1 file per issued invoice that Exact Online, SnelStart, Moneybird and e-Boekhouden import, carrying your own ledger code per VAT rate. Invoicing is an extension module: the core of schakl. is open source (AGPL) and extensions run on a licence key the administrator installs under Instellingen → Licentie; when it lapses the module goes read-only and your invoices, PDFs and UBL files stay reachable.
- Off: you make every invoice yourself
- Prepare a draft: the draft is waiting, you review it
- Prepare and issue: numbered and ready to send
- Prepare, issue and mail: the client already has it
Want to know more?
The documentation describes every module in detail, from installation to permissions.