Favicon of Invoice Ninja

Invoice Ninja

Invoice Ninja is a self-hostable invoicing, billing, and payments platform with client portals, recurring invoices, and Stripe support.

Open Source Alternative to:
Invoice Ninja website screenshot
Invoice Ninja GitHub repository preview

Invoice Ninja is a self-hostable invoicing, billing, and payments platform built on Laravel, positioned as an open source alternative to FreshBooks and QuickBooks. The self-hosted version includes all Pro and Enterprise features found in the hosted SaaS product; a $40 per year license is available to remove Invoice Ninja branding from the client-facing portal for those who want a white-labeled deployment. Version 5 rebuilt the application around the most requested features from the earlier v4 line.

Key features

  • Client portal: clients log in to view invoices and quotes and pay online directly, rather than emailing back and forth over a PDF.
  • Recurring invoices and quotes: automate repeat billing cycles without recreating documents manually.
  • Native apps across platforms: iPhone, Android, macOS, Windows, and Linux (Snap and Flatpak) clients in addition to the web app, all syncing against the same self-hosted or hosted backend.
  • Payment and email integrations: recommended providers include Stripe for payments and Postmark for transactional email; a Go SDK is also available for programmatic API access.
  • REST API: documented endpoints for invoices, quotes, and clients, with request routing defined in routes/api.php and processed through Form Requests for validation and authorization.
  • Event-driven architecture: actions like creating an invoice fire events (for example InvoiceWasCreated) that trigger non-blocking listeners for follow-up tasks such as notifications or inventory adjustments.
  • Sample data seeding: a php artisan ninja:create-test-data command loads demo invoices, clients, and users for evaluating the app before connecting real data.

Self-hosting and deployment

Self-hosting options include a direct server or VM install, an official Docker image, and one-click support for Cloudron, Softaculous, Elestio, and YunoHost. A quick setup clones a tagged release (for example v5.11.53), copies .env.example to .env, and runs composer i -o --no-dev, or composer i -o for a developer install that includes PHPUnit for running the test suite. The APP_KEY in .env encrypts application data, so losing it makes existing encrypted data unrecoverable.

Tech stack

Both the API and client portal are built with Laravel (PHP). Request handling flows through middleware for authentication, a Form Request for validation and authorization, a repository layer for persistence, a service layer for business logic, and Fractal to serialize the API response. Contributors are encouraged to discuss larger changes on Slack before opening a pull request against the main repository, and adding tests for new functionality is called out as improving the odds a pull request gets accepted.

Support channels include a dedicated Support Forum, Slack, Discord, and Instagram for product updates, alongside separate API and Developer Guide documentation sites for anyone building against the REST API directly. A companion project, Event Schedule, is maintained by the same team for scheduling recurring appointments.

Invoice Ninja is released under the Elastic License.

Frequently asked questions

Share:

Stars
9.9K
Forks
2.7K
Last commit
1 day ago
Repository age
13 years
Self-hosted
Yes
Activity score
80/100
View Repository
Ad
Favicon

 

  
 

Similar to Invoice Ninja

Favicon

 

  
 
Favicon

 

  
 
Favicon