Open source invoicing and billing platform for freelancers and small businesses — create estimates, track expenses, accept Stripe payments, and run recurring invoices from your own server.
Crater is a full-featured, open source invoicing and billing application built for freelancers, consultants, and small businesses who want complete control over their financial workflow. It covers the entire billing lifecycle — from building itemized estimates and converting them to invoices, to tracking payments, recording expenses, and sending professional PDFs to clients via email.
The application ships with a customer portal so clients can log in and view their invoice history, make payments, and download receipts without needing to contact you. Stripe is integrated directly for card payment collection, and recurring invoices can be configured with flexible cron-based schedules — daily, weekly, monthly, or custom intervals — so regular billing runs automatically.
Crater supports multiple companies under a single installation, making it practical for accountants or agencies managing several client entities. Each company gets its own settings, currencies, tax configurations, and customizable invoice templates. Custom fields let you extend invoices, estimates, and customers with business-specific data without touching the codebase.
The project is built on Laravel 8 for the backend API and Vue 3 with Pinia for the single-page frontend, offering a modern architecture that is straightforward to self-host with Docker or a traditional LAMP/LEMP stack. A companion React Native mobile app is available on Android and iOS for on-the-go invoice creation and payment tracking.
Architecture
Crater follows a clean separation between a Laravel 8 RESTful JSON API backend and a Vue 3 single-page application frontend, communicating entirely through versioned API routes under /api/v1/. The backend is organized into domain-grouped controller namespaces — Invoice, Estimate, Payment, Customer, Expense, and so on — with each domain containing dedicated controllers for distinct actions like sending, cloning, and status changes rather than stuffing everything into a single resource controller. Laravel Sanctum handles API token authentication, while Bouncer provides flexible role-based access control with policy classes per model. Jobs and queued dispatches handle PDF generation and email sending asynchronously, keeping request cycles fast. The frontend initializes through a custom Crater class that manages a plugin/module boot system, allowing third-party modules to inject Vue components, routes, and Pinia stores at startup without modifying core files.
Tech Stack
The backend runs on PHP 7.4+ or 8.0+ with Laravel 8, using Eloquent ORM against a MySQL database. PDF generation is handled by Barryvdh’s DomPDF, media storage goes through Spatie’s Laravel MediaLibrary with S3 and Dropbox adapters available alongside local disk. Scheduled recurring invoice execution uses dragonmantank/cron-expression for parsing cron strings. The frontend is built with Vue 3, bundled by Vite, styled with Tailwind CSS 3, and uses Pinia for state management — a notably modern stack for a PHP application of this era. Vue Router handles client-side navigation and vue-i18n powers the multilingual UI, with translation contributions managed through Crowdin. Stripe.js handles payment collection on the client side. Docker Compose configurations are included for containerized deployments.
Code Quality
Crater has comprehensive test coverage using PestPHP, with dedicated feature test files for every major domain: invoices, estimates, payments, customers, expenses, recurring invoices, custom fields, and more. Tests use Laravel Sanctum’s actingAs helper with database seeding and factory-generated data, asserting both HTTP response codes and database state. PHP-CS-Fixer is configured for code style enforcement, and ESLint with Prettier covers the Vue/JavaScript codebase. Type safety on the PHP side relies on Laravel conventions rather than strict PHPStan typing, but model casting and typed request classes provide reasonable safety. The use of Pest’s fluent test syntax keeps tests readable and well-structured.
What Makes It Unique
Crater’s most distinctive design choice is its module system — a first-class plugin architecture built on top of nwidart/laravel-modules that lets the application be extended without forking. The Crater JavaScript class exposes a booting() callback system that modules use to inject their own Vue routes and Pinia stores at startup, mirroring the backend module registration pattern. This means the core can stay clean while community or commercial modules add payment gateways, integrations, or new document types. The combined mobile app (React Native, separate repository) that shares the same API is another differentiator — most open source invoicing tools are web-only. The customer portal is also a genuine self-service feature that eliminates the need for clients to email you asking for copies of their invoices.
Crater is released under the GNU Affero General Public License v3 (AGPL-3.0). This is a strong copyleft license that requires any modifications you make to the software — particularly if you expose it as a network service — to be released under the same license. For most self-hosters running Crater internally for their own business billing, this has no practical impact: you can use it commercially and modify it freely without distributing source. However, if you plan to build a hosted invoicing product on top of Crater and offer it to third parties, AGPL requires you to publish your modifications. Developers considering embedding Crater into a commercial SaaS offering should review the license terms carefully.
Running Crater yourself requires a PHP 7.4+ or 8.0 environment with a MySQL database, a queue worker for background jobs like PDF generation and scheduled invoice sending, and a cron job to trigger Laravel’s task scheduler every minute. Docker Compose configurations are included in the repository, making containerized deployment reasonably straightforward. You are responsible for database backups, SSL certificate management, software updates, and ensuring your queue workers stay running — none of which are particularly exotic tasks for someone comfortable administering a web server, but they do represent ongoing operational overhead compared to a managed service. S3-compatible storage can be configured for file attachments and generated PDFs.
Crater does not offer a paid cloud tier or commercial support contracts directly from the project maintainers. The trade-off compared to services like FreshBooks or QuickBooks Online is that you give up managed upgrades, guaranteed uptime SLAs, built-in support queues, and the automatic compliance work that hosted providers handle on your behalf. What you gain is zero monthly subscription cost (beyond your server bill), complete data ownership, and the ability to extend the application through its module system without vendor permission.
Databases · Analytics · Invoicing Finance
The AI Workspace for Finance: Connect Data, Run AI Agents, Build Analytics
Databases · Invoicing Finance · Authentication
Self-hostable personal finance app that gives you full ownership of your financial data with a clean, minimal Rails-powered interface.
ERP · Invoicing Finance
100% free, open-source ERP unifying accounting, manufacturing, inventory, CRM, HR, and POS in a single self-hostable platform.