🧾 Setup Invoice Ninja — Professional Invoicing
Deploy Invoice Ninja on Ubuntu with Docker — a powerful open-source invoicing platform with a client portal, time tracking, 40+ payment gateway integrations, and recurring billing. Ideal for freelancers, agencies, and consultants.
📦 Resources & Setup Scripts
Grab the automated bash script from GitHub to follow along with the video.
Quick Install:
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/accounting/invoice-ninja/invoice-ninja-ubuntu.sh
chmod +x invoice-ninja-ubuntu.sh
sudo bash invoice-ninja-ubuntu.sh
Tutorial Steps
1 Download & Run the Script
The script installs Docker and deploys Invoice Ninja v5 with MySQL automatically.
wget https://raw.githubusercontent.com/mhmdali94/Docker/main/accounting/invoice-ninja/invoice-ninja-ubuntu.sh
chmod +x invoice-ninja-ubuntu.sh
sudo bash invoice-ninja-ubuntu.sh
2 Complete First-Time Setup
Open your browser and navigate to Invoice Ninja. Create your admin account and company on the setup page:
http://<your-server-ip>:8080
3 Configure Your Company
Set your company name, logo, address, currency, and tax settings. Upload a signature and configure your invoice template design.
4 Create Clients and Start Invoicing
Add your first client, create products or services, then generate a professional invoice. Enable a payment gateway to let clients pay online directly from the invoice email.
Ports Used
| Port | Purpose |
|---|---|
| 8080 | Invoice Ninja Web UI |
Overview
Invoice Ninja is a feature-rich open-source invoicing platform designed for freelancers, agencies, and consultants. Version 5 is built on Laravel and Flutter, providing a polished web interface, native desktop app, and mobile apps for iOS and Android. It covers the full client billing workflow: quotes, invoices, recurring billing, time tracking, expenses, a self-service client portal, and direct payment via Stripe, PayPal, and 40+ other gateways.
Why Use It
Invoice Ninja eliminates the $20–$50/month you pay for FreshBooks, HoneyBook, or similar invoicing SaaS by giving you the same core features on your own server. The client portal, automated payment reminders, time tracking, and payment gateway integration are all included at zero ongoing cost. For agencies billing clients in multiple currencies, the self-hosted version means no platform fee on transactions and no per-client limits.
When You Need It
Who Should Use It
Real Use Cases
Main Features
How to Use After Installation
Security Best Practices
Ports and Firewall Notes
Invoice Ninja runs on port 80 inside the Docker container (mapped to a host port, typically 8080). Proxy all traffic through port 443 (HTTPS) via Nginx Proxy Manager or Traefik — never expose the raw port directly. MySQL runs on port 3306 inside the Docker network only. Payment gateway callbacks such as Stripe webhooks arrive on your public HTTPS URL, so the domain must be publicly accessible for payment confirmation to work.
Backup and Maintenance
Common Mistakes
Troubleshooting
Alternatives
Akaunting is the better choice if you need full double-entry accounting beyond invoicing — it handles a proper chart of accounts, bank reconciliation, and balance sheets. For simpler invoicing, Crater (open-source, lighter) is a good option. FreshBooks and HoneyBook are polished cloud alternatives with monthly fees and no self-hosting. Wave Accounting is free cloud-based and includes accounting alongside invoicing if you are comfortable with SaaS.
When Not to Use It
Skip Invoice Ninja if you need a full accounting system — it does not have a proper double-entry ledger, balance sheet, or bank reconciliation; use Akaunting or ERPNext for that. Also avoid it if your accountant requires QuickBooks or Xero format exports since Invoice Ninja data is not directly compatible. For solo operators who send only a few invoices per month, a free cloud tool like Wave may require less maintenance than a self-hosted stack.
Need Help Setting Up Invoice Ninja?
PrismaTechWork provides end-to-end infrastructure services — from initial deployment and security hardening to ongoing monitoring, automated backups, and dedicated support. Whether you need a single-server setup or a multi-site network, our team ensures your infrastructure is built right, secured properly, and maintained reliably.
Frequently Asked Questions
Which payment gateways does Invoice Ninja support?
Invoice Ninja v5 supports 40+ payment gateways including Stripe, PayPal, Authorize.net, Mollie, GoCardless, Square, Braintree, Checkout.com, and many region-specific gateways. You can have multiple gateways active simultaneously and assign different gateways to different client groups. Clients see the payment options available when they click Pay Now on an invoice.
How does the client portal work?
Each client gets a unique, password-protected portal URL where they can view all their invoices, quotes, and payment history; download PDF copies; and make payments directly. You can enable or disable the portal per client. Clients receive an email with their portal link when you send their first invoice. The portal can be white-labeled to show your company name only.
Can I white-label Invoice Ninja so clients never see the platform name?
Yes, completely. You can remove all Invoice Ninja branding from invoice PDFs, the client portal, and email footers. Set your own company name, logo, and domain. The self-hosted version includes white-labeling at no extra cost — the cloud-hosted version requires a paid plan for white-label. Your clients will only ever see your company branding.
How does time tracking work and how do I bill tracked hours?
Go to Projects, create a project assigned to a client, then start a timer from the Tasks section. You can also log time manually. When ready to bill, open the project and click Invoice — all unbilled logged hours are added as line items at the project billing rate. You can review and adjust quantities before sending the invoice.
Does Invoice Ninja send automatic payment reminders?
Yes. Configure payment reminders under Settings > Reminders. You can set up to three reminder emails — for example, 3 days before due, on the due date, and 7 days overdue. Each reminder uses a customizable email template. Invoice Ninja sends them automatically based on the invoice due date without any manual action required.
Can I import data from FreshBooks, Wave, or another platform?
Invoice Ninja supports CSV import for clients, products, and invoices. Export your data from your current platform as CSV, map the fields, and import via Settings > Import. There is no native connector for FreshBooks or Wave, so expect some manual cleanup for historical invoices. For large migrations, the Invoice Ninja API allows programmatic import of all entity types.
Does Invoice Ninja have a mobile app?
Yes. Invoice Ninja has native iOS and Android apps built with Flutter. You can point the mobile app at your self-hosted server URL in the login screen. The app supports creating and sending invoices, running the time tracker, recording expenses, and viewing the client list — the full feature set, not a cut-down version.
How do I upgrade Invoice Ninja to a new version without losing data?
Pull the latest Docker image, stop the current container, and recreate it. Invoice Ninja runs database migrations automatically on startup. Always take a full database backup and a snapshot of the storage volume before upgrading. Check the Invoice Ninja GitHub releases page for any breaking changes between major versions before pulling a new image.
