mothermachine

Browse / Invoicing and finance

Invoice Ninja

Self-hostable invoicing, quotes, expenses and time tracking with a complete REST API.

AdaptableOperable Business appWeb app Deterministic PHPJavaScriptDart API License: Elastic-2.0

Laravel invoicing suite an SMB runs to bill clients: invoices, quotes, recurring billing, online payments through Stripe and other gateways, expenses, projects and tasks, purchase orders and bank feeds. The self-hosted edition includes every hosted Pro and Enterprise feature under the Elastic License 2.0; the same REST API the mobile and desktop apps use is published with an OpenAPI spec.

Alternative to FreshBooks, QuickBooks, Zoho Invoice

Use it when
  • I bill a handful of clients and want invoices, quotes and card payments on my own server without a per-seat plan
  • I want my agent to raise and chase invoices from a project tracker without touching the invoicing UI
Gotchas
  • License is Elastic License 2.0, not OSI open source: you may modify and self-host, but may not offer it as a managed service to third parties
  • Default PDF_GENERATOR=hosted_ninja sends invoice HTML to Invoice Ninja's PDF service; switch to snappdf for fully local rendering
  • APP_KEY encrypts stored data; losing it makes the database unreadable
  • Removing Invoice Ninja branding from client-facing pages needs the $40/year white-label license

Last activity Sep 3, 2026. Fit: adaptable 2, operable 3.

Editions

Self-hosted · Free open source

  • Clonegit clone https://github.com/invoiceninja/invoiceninja
  • ImageContainer

Hosted Free · Free closed source

closed source

closed source

closed source

No distribution recorded.

For agents: JSON · Markdown

Adaptable: what is yours to change

Make it yours

Config only18 things to editadmin-ui surface

The named .env vars are deployment configuration: APP_URL, APP_KEY, DB_*, MAIL_MAILER, PDF_GENERATOR, REQUIRE_HTTPS, and optional bank-feed and exchange-rate credentials. Business adaptation lives in the admin UI under Settings: company details and logo, tax rates, invoice and quote designs, custom fields, email templates and reminders, payment gateways, products and recurring schedules.

Env vars
APP_URL APP_KEY DB_CONNECTION DB_HOST DB_DATABASE MAIL_MAILER POSTMARK_API_TOKEN PDF_GENERATOR NINJA_ENVIRONMENT REQUIRE_HTTPS NORDIGEN_SECRET_ID NORDIGEN_SECRET_KEY GOCARDLESS_CLIENT_ID GOCARDLESS_CLIENT_SECRET OPENEXCHANGE_APP_ID NINJA_AUTO_BILL_TIME DELETE_PDF_DAYS
Config files
.env
Prompt files
none
Accounts you need
Stripe or another supported payment gateway (optional)Postmark or SMTP providerNordigen or GoCardless for bank feeds (optional)

Source

Operable: what an agent can drive

Interface

OfficialAPIpublished by the builderremote or local

How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.

Docs
api-docs.invoicing.co/

Reach

Complete coverage. 10 of 10 jobs reachable through the stated interface.

JobThrough the interfaceEvidence
Create, send and track invoicesReachableopenapi/api-docs.yaml tags invoices, emails, activities
Quotes and conversion to invoicesReachableopenapi tag quotes; recurring_quotes
Recurring invoices and auto-billingReachableopenapi tags Recurring Invoices, subscriptions, scheduler; NINJA_AUTO_BILL_TIME in .env.example
Take online payments through gatewaysReachableopenapi tags payments, company_gateways, client_gateway_tokens; gateway keys entered in app settings
Expenses and vendorsReachableopenapi tags expenses, expense_categories, recurring_expenses, vendors
Projects, tasks and time trackingReachableopenapi tags projects, tasks, task_status, task_schedulers
Credits and purchase ordersReachableopenapi tags credits, Purchase Orders
Bank feeds and transaction rulesReachableopenapi tags bank_integrations, bank_transactions, bank_transaction_rules; needs NORDIGEN_* or GOCARDLESS_* or Yodlee credentials on self-host
Reports and exportsReachableopenapi tags reports, export, charts
Invoice design and PDF templatesReachableopenapi tags designs, templates, preview; PDF_GENERATOR selects snappdf, phantom or hosted_ninja

Code stack

Languages
PHPJavaScriptDart
Frameworks
LaravelReactFlutter
Package manager
composer
Database
MySQLPostgreSQL
Hosting target
DockerVMCloudronSoftaculousElestioYunoHost
Built
Human-written (recorded, never ranked)

Evidence and confidence

FieldWhere it was seenConfidence
formFactorLaravel web app with API and client portal (README Developers Guide)95%
executionModelno model at runtime; PHP business logic90%
operabilityREST API published by the Builder at api-docs.invoicing.co with OpenAPI spec in repo openapi/api-docs.yaml95%
effort.env.example in repo; README says cp .env.example .env; hosting guide at invoiceninja.github.io90%
editionsREADME: hosted vs self-hosted, $40/year white-label; invoiceninja.com/pricing-plans: Free (5 clients), Pro $14/mo, Enterprise $18/mo80%
activeGitHub pushedAt 2026-09-03; tag v5.11.53 referenced in README–
reach85%

Open questions

  • Does the OpenAPI spec cover the invoice PDF download route on self-host, or only through invitation links?
  • Which third-party MCP wrapper is best maintained, for Adopters who want MCP rather than raw REST (NightSquawk/invoiceninja-mcp-server was seen at sourcing)

Sources