DEV Community

Anthony Leignel
Anthony Leignel

Posted on Edited on

If your business depends on 5 tools, you don’t have a system

Clean self-hosted invoice system with PDF preview and paid validation process

Still managing quotes, invoices, and payments across multiple tools?

I wanted a single system that could handle the entire financial workflow without relying on multiple applications, subscriptions, or external platforms.

So I built a complete financial system that runs directly on the client's own hosting.

No SaaS.

No subscription.

No critical dependencies.

From the first quote to the final payment, everything follows the same workflow:

Quote → online signature → invoicing → payment confirmation → revenue journal

Every step is connected.

The data stays in one place.

The business logic stays under your control.


Links


From Quote to Signed Contract

Everything starts with a quote.

The workflow is intentionally simple. Company details, client information, service lines, VAT settings, and banking details are entered once, then used to generate a PDF directly in the browser.

Nothing is sent to the server until the quote is validated.

Once it's ready, the client receives a secure link where they can review and sign the document online. The signed quote is archived automatically, and a confirmation email is sent to both parties.

At that point, the quote is no longer just a proposal.

It becomes the foundation for the rest of the workflow.


From Contract to Invoice

When it's time to issue the invoice, the system reuses the information that already exists.

Searching by client name, email address, SIREN, or SIRET is enough to retrieve the client profile together with the associated quotes. The most recent quote is suggested automatically, allowing the invoice to be generated without entering the same information twice.

Service lines, amounts, VAT settings, and client details are transferred automatically. If the invoice is not linked to a quote, it can still be created manually using a custom service description.

Once the invoice is generated, the system also prepares its paid version, ready to be delivered as soon as payment is confirmed. The invoice is sent to the client, archived, and the paid version is kept ready until the payment is confirmed.


Payment and Record Keeping

When a payment is received, the workflow continues instead of ending.

The interface lists every pending invoice. Confirming a payment takes a single action, which marks the invoice as paid, sends the paid invoice to the client, and records the transaction in the revenue journal.

The system also provides exports for monthly invoices, monthly revenue, and the complete annual revenue journal, making it easy to archive or integrate financial records when needed.

Like every other step in the workflow, payment confirmation reduces repetitive work while keeping every action explicit and traceable.


Built for Long-Term Control

Behind this workflow is a simple architecture designed to remain understandable and maintainable over time.

  • Self-hosted on standard PHP hosting
  • No database
  • No SaaS dependency
  • Bilingual (French / English)
  • Fully documented

Nothing has to move between different platforms to complete the process.

The entire workflow, from the first quote to the final payment, runs on the client's own infrastructure.

The data stays with the client.

The business logic stays with the client.

The workflow stays with the client.

The system remains under the client's control.


Go Further

Explore more technical articles

Read more technical notes


https://palks-studio.com

Top comments (2)

Collapse
 
17j profile image
Rahul Joshi

Super insightful build—highlighting how freelancers need more than just invoicing tools but a complete financial system is spot on. This feels like a real step toward financial independence through tech 🚀

Collapse
 
palks_studio profile image
Anthony Leignel

Appreciate it.
Most issues I see aren’t about invoices themselves, but fragmented workflows.
The goal is to replace that with a single, structured system that runs on its own.