From ArchWiki

InvoicePlane is a self-hosted open source application for managing your quotes, invoices, clients and payments.


Install the invoiceplaneAUR package.



Here is an example on how you could setup a database for Invoiceplane with MariaDB called invoiceplane for the user invoiceplane identified by the password password:

CREATE DATABASE invoiceplane;
GRANT ALL PRIVILEGES ON invoiceplane.* TO invoiceplane@'localhost' IDENTIFIED BY 'password';

Web Server


Create the Apache HTTP Server configuration file:

Alias /invoiceplane "/usr/share/webapps/invoiceplane"
<Directory "/usr/share/webapps/invoiceplane">
    DirectoryIndex index.php
    AllowOverride All
    Options FollowSymlinks
    Require all granted

And include it in /etc/httpd/conf/httpd.conf:

# InvoicePlane configuration
Include conf/extra/invoiceplane.conf


Make an alias for invoiceplane in your Lighttpd configuration.

 alias.url = ( "/invoiceplane" => "/usr/share/webapps/invoiceplane/")

Then enable mod_alias, mod_fastcgi and mod_cgi in the server.modules section.


Here is an example configuration to include in nginx.conf for a subdomain with php-fpm:

server {

listen 443 ssl http2;
listen [::]:443 ssl http2;

        add_header X-Frame-Options "SAMEORIGIN";

        root /usr/share/webapps/invoiceplane;
        index index.php;
        server_name invoice.''domain.tld'';

        client_body_timeout 60;

    location / {
        try_files $uri $uri/ /index.php?q=$uri&$args;       

    location ~ \.php$ {
        fastcgi_param PHP_ADMIN_VALUE open_basedir=/tmp:/usr/share/webapps/invoiceplane:/dev/urandom:/usr/share/php;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
        client_max_body_size 100M;

Explicitly permit InvoicePlane directories for php-fpm

Since version 7.4 php-fpm is hardened per default and revokes read/write access on /usr (and sub-directories). Therefore it is also necessary to explicitly give permissions on /usr/share/webapps/invoiceplane directories.

Create a drop-in file for php-fpm.service.

Add and save it with the following content:

ReadWritePaths = /usr/share/webapps/invoiceplane/ipconfig.php
ReadWritePaths = /usr/share/webapps/invoiceplane/uploads/
ReadWritePaths = /usr/share/webapps/invoiceplane/application/logs
ReadWritePaths = /usr/share/webapps/invoiceplane/vendor/mpdf/mpdf/tmp

Afterwards restart the php-fpm service and assign write permissions to the http user.

Installation wizard

Once database and webserver have been setup, visit the installation wizard page at and follow the instructions.


If you want to choose a different language than English visit Translation / Localization.

See also