Invoicerr is a simple, open-source invoicing application designed to help freelancers manage their quotes and invoices efficiently. It provides a clean interface for creating, sending, and tracking quotes and invoices β so you get paid faster, with less hassle.
- Create and manage invoices
- Create and manage quotes (convertible to invoices)
- Manage clients and their contact details
- Track status of quotes and invoices (signed, paid, unread, etc.)
- Built-in quote signing system with secure tokens
- Generate and send quote/invoice emails directly from the app
- Generate clean PDF documents (quotes, invoices, receipts, and more)
- Custom brand identity: logo, company name, VAT, and more
- Authentication via JWT or OIDC (stored in cookies)
- International-friendly: Default English UI, customizable currencies
- SQLite database for quick local setup
- Docker & docker-compose ready for self-hosting
- Built with modern stack: React, NestJS, Prisma, SQLite/PostgreSQL
- REST API backend, ready for future integrations (mobile & desktop apps)
- Plugin system for community-made features
The images are built for the following architectures:
linux/amd64
(x86_64)linux/arm64/v8
(ARMv8)
The linux/arm/v7
architecture is not supported due to the use of prisma, which does not provide prebuilt binaries for this architecture. This means that the application will not run on 32-bit ARM devices.
The fastest way to run Invoicerr is using Docker Compose. A prebuilt image is available at ghcr.io/impre-visible/invoicerr.
-
Clone the repository:
git clone https://github.com/Impre-visible/invoicerr.git cd invoicerr
-
Edit the
docker-compose.yml
to set your environment variables. -
Run the app:
docker compose up -d
-
Open your browser at:
http://localhost
These environment variables are defined in docker-compose.yml
under the invoicerr
service:
-
DATABASE_URL
PostgreSQL connection string. Example:
postgresql://invoicerr:invoicerr@invoicerr_db:5432/invoicerr_db
-
APP_URL
Full public URL of the frontend (e.g.,https://invoicerr.example.com
).
This is required for email templates and links. -
SMTP_HOST
,SMTP_USER
,SMTP_PASSWORD
Credentials and server used for sending emails (quotes, invoices, etc.) -
SMTP_FROM
Optional β address used as the sender for emails. If omitted, defaults toSMTP_USER
. -
JWT_SECRET
Optional but recommended for JWT authentication. Can be any random string.
If not set, a default secret will be used. But it can have issues with docker deployments.
Make sure port 80 is available on your host machine, or change the mapping.
- Node.js v20+
- SQLite (or configure another
DATABASE_URL
) - PNPM or NPM
-
Clone the project:
git clone https://github.com/Impre-visible/invoicerr.git cd invoicerr
-
Backend setup:
cd backend npm install npx prisma generate npm run dev
-
Frontend setup (in a new terminal):
cd frontend npm install npm run dev
-
Open in your browser:
- Frontend:
http://localhost:5173
- API:
http://localhost:3000
- Frontend:
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). See the LICENSE file for more details.