Skip to content
All work

Invoice Manager

EU-compliant invoicing that survives an accountant reading it.

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.

6 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.
6 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.

  • 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.

Tell us what is broken or what should exist.

Send the shape of the problem and any constraints you already know — budget, deadline, the stack you are stuck with. You will get a written reply from the engineer who would do the work, not a sales sequence.