Features
Built around how service businesses actually work
Three document types, one connected workflow, and payments wired in from day one.
Document types for every engagement
Each document family supports three working styles, so one-time gigs, retainers, and flexible arrangements all fit.
Quotes
- Regular (Q-XXX): one-time project quoting
- Long-term (LTQ-XXX): recurring service quotes
- On-Demand (ODQ-XXX): flexible quoting without billing intervals
Contracts
- Regular (C-XXX): one-time service contracts
- Long-term (LTC-XXX): subscription / retainer contracts
- On-Demand (ODC-XXX): flexible billing contracts
Invoices
- Standard (I-XXX): one-time invoices
- Recurring: auto-generated from long-term contracts
- On-Demand (ODI-XXX): manual invoice generation
The workflow, end to end
Create a quote
Choose Regular, Long-term, or On-Demand. It starts in Pending.
Approval
Approval auto-generates a linked contract and invoice under one project ID.
Signed contract
The project can't proceed until a signed contract is uploaded.
Active work
Contract stays Active until marked complete.
Invoice due
Completion sets the invoice due date (net 30 by default, adjustable).
Void / re-enable
Void any document at any time; related documents follow. Re-enable restores state.
What you can do
- Create and manage quotes, contracts, and invoices with multiple document types
- Keep client and organization information organized and accessible
- Automate repetitive tasks like sending emails and generating documents
- Process Stripe payments directly through invoices and public links
- Manage recurring billing with long-term and on-demand contracts
- Store receipts, W-9 forms, and other documents securely
- Generate comprehensive audit reports with scheduled email delivery
- Track document status with void and re-enable functionality
Technology & security
PHP 8.3+
Modern PHP with Twig templates for a clean, maintainable codebase.
Docker-first
One docker compose up gets the full stack: app, cron worker, and MySQL 8.
Stripe API
Payment Intents with webhook handling and reconciliation for missed events.
Hardened by default
Database encryption at rest, encrypted secrets, account lockout, audit logging, CSP headers, and automated dependency scanning in CI.
See it for yourself
The entire platform is open source — read the code, run it, make it yours.
Browse the Repository