InvoiceNinja - Open Source Invoicing Software

InvoiceNinja Free Invoicing Software

Free And Open Source Invoicing Software For Small Businesses

Free invoicing software for businesses which helps them to create invoices, accept payments, track expenses, create proposals and manage tasks.


InvoiceNinja is an open source invoicing software. It’s easy to use and provides a large number of features for handling all billing tasks. It is 100% free and developers all over the world are actively involved in it. This free accounting system is ideal for freelancers and small businesses. It easily allows to generate invoices and track payments.

This powerful open source invoice system comes with modern and impressive features. It supports features for managing invoices, payments, quotations, expenses, reporting, and many more. Further, it allows the creation of multiple companies and handles them from a single system. Moreover, InvoiceNinja helps time tracking of tasks and use them for billing to clients.

Moreover, InvoiceNinja is available online (SaaS) software as a Service. Users can choose the appropriate plan and start using it right away. However, businesses can install it at own server that helps to keep control over sensitive billing data. InvoiceNinja provides the best mobile invoice app for iPhone and Android devices. It’s written in PHP Laravel framework, Flutter, and uses MySQL for storing data. The license for this open source invoicing system is (AAL) Attribution Assurance License.

System Requirements

In order to install InvoiceNinja, you must have the following softwares:

  • PHP 7.0+
  • MySQL 5.0 +
  • Apache / Nginx


Invoice ninja boasts many great features, depending on the plan that you chooce: Free, Pro, or Enterprise. Following are the key features of InvoiceNinja:

  • Create & Email Invoices & Quotes in Real-Time
  • 40+ Payment Gateway Integration Options
  • YourBrand.Invoice.Services Custom Domain
  • Additional Users & Set Permissions
  • Multiple Company Support
  • Create Recurring Invoicing & Auto-Bill Clients
  • Proposals Creation Tool
  • Attach 3rd Party Files to Invoices & Expenses
  • Create Project Tasks & Track Time
  • Kanban Boards to Manage Projects
  • Attach Invoice & Quotations PDFs to Emails
  • Client-Side Portal & Invoices History
  • Zapier Integration Automation
  • Quotes Convert to Invoices for Payments
  • Fully Customizable Invoice Design
  • Customize Email Subjects & Body Text
  • Accept Deposits & Partial Payments
  • Invoice Payment Auto-Reminder Emails
  • Alerts When Client Views & Pays Invoices
  • Enable Invoice Approval Checkbox or Client Signature
  • Item & Product Library System
  • Bulk Emailing Invoices & Quotations
  • Create Reports, Accounts Aging & Client Statements
  • Importing Expenses & Vendors
  • Import Transactions From Your Bank Accounts
  • Multiple Currencies and Languages Supported
  • Setup Automatic Credit Card Gateway Fees
  • Setup Automatic Late Fees on Unpaid Invoices
  • Supports Natural Language Voice Commands
  • Tax Settings per Line Item or Invoice Total
  • Professional Free Invoice Template Designs


Install InvoiceNinja on Ubuntu 16.04 LTS with Nginx using Github

Nginx is the most popular and secure web server. In order to install Nginx, use the following command

 sudo apt install nginx 

Once the Nginx is install, configure the domain and restart the Nginx by using the following command

 sudo service nginx restart 

Next, need to install database Server, use the following command to install MySql server

 sudo apt-get update;  sudo apt-get install mysql-server; mysql_secure_installation 

Once, the database server is installed, use the following command to restart MySql server

 sudo service mysql restart 

Install PHP for processing

 sudo apt-get install php-fpm php-mysql

Now, you have installed all the required software and the next step is to login to mysql server and create invoiceninja database. Use following command to create database.

 CREATE DATABASE  invoiceninja;

Create a database user called "" with new password. and granted user full access to the database by running the following commands. Change with your desired database user and with your desired password.

CREATE USER 'invoiceninjauser'@'localhost' IDENTIFIED BY 'new_password_here'; 
GRANT ALL ON invoiceninja.* TO 'invoiceninjauser'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION;

Download InvoiceNinja Latest Release

sudo apt install curl git
curl -sS | sudo php -- --install-dir=/usr/local/bin --filename=composer

After installing curl and Composer above, change into the Nginx root directory and downaload Invoice Ninja packages from Github.

cd /var/www/html
sudo git clone
cd /var/www/html/invoiceninja
sudo composer install

Then run the commands below to set the correct permissions for InvoiceNinja to function.

sudo chown -R www-data:www-data /var/www/html/invoiceninja/
sudo chmod -R 755 /var/www/html/invoiceninja/

Congrats! You have successfully installed InvoiceNinja on NGINX

Installation using Docker

Generate an application key

docker run --rm -it invoiceninja/invoiceninja php artisan key:generate --show

Create folders for data persistence

  • Create two folder on your server, e. g. /var/invoiceninja/public and /var/invoiceninja/storage
  • Mount these folders into your container

Usage: To run it

docker run -d \
  -v /var/invoiceninja/public:/var/app/public \
  -v /var/invoiceninja/storage:/var/app/storage \
  -e APP_ENV='production' \
  -e APP_DEBUG=0 \
  -e APP_URL='' \
  -e APP_KEY='' \
  -e APP_CIPHER='AES-256-CBC' \
  -e DB_TYPE='mysql' \
  -e DB_STRICT='false' \
  -e DB_HOST='localhost' \
  -e DB_DATABASE='ninja' \
  -e DB_USERNAME='ninja' \
  -e DB_PASSWORD='ninja' \
  -p '9000:9000' \


You may find the following links relevant: