Invoice Manager
EU-compliant invoicing that survives an accountant reading it.
A full-stack invoicing application for a Cyprus company trading across the EU: line-item VAT, reverse charge for B2B, configurable yearly numbering, and A4 PDF output carrying the legal text Directive 2006/112/EC actually requires. Built because the off-the-shelf options got reverse charge wrong.
Invoicing looks like a solved problem until you trade across EU borders. Then you need per-line VAT rates, a correct reverse-charge decision for B2B customers in other member states, the legal wording that decision obliges you to print, and an invoice number that is sequential, gapless and stable forever.
Reverse charge, correctly
When the customer is VAT-registered in another member state the invoice carries no VAT and prints the Article 196 reference. Both parties' VAT numbers appear, as Article 226 requires. This is the part that most cheap invoicing tools get wrong, and it is the reason this application exists.
Numbers that do not move
The default format is configured once — {YYYY}-{NNN} produces 2026-003 for the third invoice of the year — and the sequence resets each January. A different format can be chosen for an individual invoice. Crucially, an issued number is stored as a final string: changing the default later never reformats history, because an invoice number that changes after issue is a defect an auditor will find.
Proof
Forty-two unit tests cover the VAT and numbering logic; twenty-nine end-to-end tests drive a real Chromium browser through creating, editing and exporting invoices. The PDF path is exercised, not assumed.
Capabilities
Per-item VAT
Rates of 0, 5, 9, 19, 21 and 25 percent applied per line, with the breakdown printed on the document.
Reverse charge
Automatic zero-rating and the Article 196 legal text for VAT-registered EU B2B customers, with both VAT numbers shown.
Configurable numbering
Tokens for year, month, day and a sequence of any width, resetting annually. Issued numbers are immutable.
A4 PDF export
Print-ready output carrying every field Article 226 requires, including payment terms.
Client and company records
Clients, company details, VAT number and IBAN managed in the app rather than pasted into a template.
Status lifecycle
Draft, sent, paid, overdue and cancelled, so the list doubles as an accounts-receivable view.
Screens
What it looks like in use.
Select any screen to view it full size. Use the arrow keys to move between screens and Escape to close.
The list doubles as an accounts-receivable view: status, total and the year's sequence at a glance. Line items carry their own VAT rate; reverse charge switches the whole document when the customer qualifies. A4 output with the full Article 226 field set and the reverse-charge wording where it applies. Company details, VAT number, IBAN and the default numbering format.