The regulatory context
Since 2026, electronic invoicing has been part of the obligations for Belgian businesses registered for VAT. Many small companies still use several disconnected tools to prepare a quote, send an invoice, track a payment and find a document later. That split creates duplicate entry, mismatched files and a mental load that has nothing to do with the actual work.
Invoicify started from that observation. The product was designed as a single environment for freelancers and SMEs that need to stay organised without adopting a heavy ERP. Work began in 2022 and continues as Belgian requirements evolve.
The document cycle
The application covers the core administrative cycle. A freelancer can create a quote, turn it into an invoice, issue a credit note and track a purchase order. Customers, products, payments and expenses live in the same space, with a history for each document.
Documents leave by email or through the PEPPOL network. Payments and reminders are tracked from one interface. A clear view of incoming and outgoing documents avoids searching for a file across three folders. The goal is not to add features for their own sake, but to reduce the number of places where information has to be copied.
Converting a quote into an invoice reuses the lines, the customer and the details already entered. A credit note can correct an invoice without recreating the document. Purchase orders support companies that need to approve a purchase before invoicing. These everyday actions stay in the same history, so nobody has to reconstruct the context at every step.
A readable interface
The interface is built with TanStack Start and React 19, using Tailwind CSS v4 and Base UI components. The design system includes several colour themes, light and dark modes, and a layout that stays readable when printed. Amounts use a monospaced font so columns are easier to compare.
Totals are recalculated on the server, and forms validate their data before submission. The public page and the application share the same visual language, with violet reserved for primary actions. That continuity means visitors do not land in a completely different interface after creating an account.
List, detail and form screens share the same components. Users find the same columns, labels and actions from one section to the next. That choice slows down the first design pass, but it reduces the number of variants to maintain and the surprises that appear at print time.
The product needs no installation. A browser is enough to create a document, track a payment or download a PDF. Updates ship on the server without user action.
The technical base
On the server, the application runs on an Effect v4 runtime with PostgreSQL and Drizzle. Every request opens an isolated context per organisation, with its own roles and permissions. An accountant can manage several client companies without mixing their data. Subscriptions run through Stripe, electronic invoices through PEPPOL, and email through SMTP.
PDF files are generated on the server. Errors are reported to Sentry with OpenTelemetry traces, which makes it possible to follow an operation from end to end when a document fails to send or a payment stays stuck.
Testing and production
Compliance was the hard part, not the interface. PEPPOL formats, Belgian VAT, legal mentions and document numbering all impose precise rules. Playwright tests and integration tests cover the critical invoicing flows.
Invoicify is live at invoicify.be. The product stays deliberately focused on the core administrative cycle. That focus supports a more direct interface, practical terminology and a shorter onboarding path for smaller companies.
It does not try to become a general ledger or a full ERP. General accounting, payroll and inventory remain outside the product. That boundary keeps the model small enough to explain and the interface small enough to learn.

