- Category
- Business tools
- Status
- Live
- Platforms
- Web
- Stack
- Next.js, PostgreSQL, Prisma, NextAuth, Jest, Playwright
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.
Try it
Sign in at invoice.altixcode.com with [email protected] and the password demo. It is a full read-write demonstration on its own database, loaded with a year of invoices, clients and quotes: create, edit and export whatever you like. It resets every hour, so the next visitor finds it as you did.
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.
- 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.
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.
Revenue over twelve months, the ageing buckets that matter for chasing, and where the money actually comes from. The list doubles as an accounts-receivable view: status, total and the year's sequence at a glance. Every field Article 226 requires, with the IBAN and payment terms on the document. UBL and XRechnung export sit in the same toolbar. Revenue, VAT and outstanding balances, exportable. The application is white-labelled per organisation: name, colours, logo and the login screen text.
The same figures on a phone, for checking who has not paid.