- Is Invoice Ninja a Composer package I can require into my existing Laravel app?
- No. Invoice Ninja is a full self-hosted Laravel application for invoicing and billing, not a drop-in Composer library. You should treat it as an adjacent billing service that your Laravel app integrates with over HTTP using its REST API and webhooks. Composer requiring it into an existing application is not the intended integration model.
- How do I integrate Invoice Ninja with an existing Laravel application?
- Authenticate with an API token and drive clients, invoices, payments, quotes, and related resources through the REST API. Expect to build a mapping layer between your application's customer IDs and Invoice Ninja client IDs. Consume webhooks for state changes and implement idempotency so repeated deliveries do not duplicate work.
- What Laravel and PHP versions does Invoice Ninja support?
- Invoice Ninja is built on Laravel and PHP, but the exact supported PHP and Laravel versions depend on the specific release line. Version 5.13.49 is a patch release in the mature 5.13 line. Always verify the requirements in the repository's composer.json and release documentation before upgrading.
- Does Invoice Ninja support recurring billing and subscriptions?
- Yes. Invoice Ninja includes recurring billing alongside invoices, quotes, clients, payments, expenses, projects, and time tracking. It is designed for freelancers and small businesses that need ongoing billing without building those features themselves. Recurring billing behavior should still be validated against your specific invoicing cadence and tax requirements.
- Which payment gateways does Invoice Ninja support?
- Invoice Ninja provides payment gateway abstraction and supports Stripe plus other gateways. In version 5.13.49, the Stripe API floor was raised to 2025.basil, which can affect webhook payload shapes and integration assertions. Confirm the currently supported gateway list and Stripe API expectations for your release before going live.
- How do Invoice Ninja webhooks work and what should I watch for?
- Webhooks notify your application when resources such as invoices or payments change state. Treat deliveries as at-least-once and implement idempotency keys or deduplication on your side. Watch for payload drift, especially after gateway or Stripe API changes, and avoid hard-coding assumptions about field names and error codes.
- Can Invoice Ninja handle tax reporting and compliance needs?
- Invoice Ninja includes tax reporting, and version 5.13.49 fixed a TaxPeriodReport transaction-event query that could have produced incorrect or missing data. If you have already exported or filed reports from affected versions, re-run and diff prior periods. French reporting tests were skipped in this release, so verify French e-invoicing or reporting output separately if it applies to you.
- Is Invoice Ninja a good fit for embedding billing UI directly into my SaaS product?
- Generally no. Invoice Ninja fits best as a separate billing service with its own client portal and API, not as billing UI embedded directly into your product's routing and authentication. If you need fine-grained control over domain models inside your own application, building those models yourself may be a better fit. Use Invoice Ninja when you want invoices, quotes, payments, and recurring billing without building them.
- What changed in Invoice Ninja 5.13.49 that affects integrations?
- The release includes batched chart summary queries, eager loading fixes to reduce N+1 queries, and a filter fix in emailHistory that may change filtered email delivery results. It also raises the Stripe API floor to 2025.basil, finalizes offline payment sync behavior, and fixes tax period reporting. These are server-side correctness and performance changes rather than new extension points, so review stored expectations and payment tests.
- How should I test an Invoice Ninja integration before production?
- Run a real payment test pass, not just a smoke test, especially if you rely on Stripe and webhooks. Replay webhook deliveries to confirm idempotency and validate offline payment scenarios such as partial payments, refunds, and multi-currency if you use that feature. Also diff tax reports and filtered email history against known-good data after upgrading.