Back to projectsWeb App

Billing API: Invoicing for Freelancers

Forgotten quotes, scattered invoices, untracked payments: manual invoicing costs freelancers time and money. This API handles the entire billing cycle from start to finish, from quote to receipt, with no manual work.

The problem

Forgotten quotes, scattered invoices, untracked payments: manual invoicing costs freelancers time and money.

What I built

This API lets freelancers and small businesses manage their entire billing cycle. It covers quote generation with automatic tax and discount calculation, contracts linked to accepted quotes, invoicing with deposit handling, payment tracking with automatic balance reconciliation, and receipt generation. The modular architecture follows DDD principles, with domain, repository, service and controller layers separated by module. It is secured with JWT, validated with Zod, documented with Swagger and containerized with Docker.

Key features

  • JWT authentication with refresh tokens, password reset and password change
  • Customer management with soft delete and paginated search
  • Quote generation with automatic tax and discount calculation
  • Contract creation linked to accepted quotes, with a state machine
  • Full invoicing with deposit and due date handling
  • Payment tracking with automatic invoice status reconciliation
  • Complete Swagger documentation and a production-ready Docker setup

Result

7 DDD modules

The whole cycle, from quote to receipt, runs through a single API: taxes and discounts are calculated automatically, and the balance due is reconciled with every payment. I also use it to manage my own clients.

Project preview

Billing API: Invoicing for Freelancers
Billing API: Invoicing for Freelancers — aperçu 1
Billing API: Invoicing for Freelancers — aperçu 2
Billing API: Invoicing for Freelancers — aperçu 3
Billing API: Invoicing for Freelancers — aperçu 4
Billing API: Invoicing for Freelancers — aperçu 5

Tech stack

For technical readers: the main tools used on this project.

Node.jsExpressTypeScriptPrismaPostgreSQLZodJWTSwaggerDocker

Project details

Category

web

Client

Personal project

Project duration

4 weeks

Year

2026

Have a similar project?

Tell me what you need, and I'll reply within 24 hours with the next steps.