How to Install Paymenter in 2026 (Step-by-Step Guide)

A complete walkthrough for self-hosting Paymenter on your own VPS, from server prep and PHP setup to SSL, queue workers, and your first login.

Paymenter is a free, open-source hosting billing platform built on Laravel. Installing it yourself is straightforward if you're comfortable with Linux, but there are enough moving parts, PHP versions, database config, queue workers, SSL, that a solid reference is useful.

This guide covers a full production-ready installation on Ubuntu 22.04 using Nginx. The steps apply to Ubuntu 24.04 as well with minor differences.

Requirements

Before you start, make sure you have:

  • A VPS or dedicated server running Ubuntu 22.04 or 24.04
  • A domain name pointed at your server's IP (A record)
  • Root or sudo access
  • At least 1 vCPU and 1 GB RAM (2 GB recommended)
  • At least 10 GB of disk space

Paymenter cannot be installed on shared hosting. It requires the ability to configure PHP, a database server, a queue worker, and a reverse proxy, all of which need root access.

Step 1: Prepare Your Server

Start with a clean system update:

apt update && apt upgrade -y

Install some common utilities if they're not already present:

apt install -y curl wget unzip git software-properties-common

Step 2: Install PHP 8.2+

Paymenter requires PHP 8.2 or higher. Add the Ondřej Surý PPA and install PHP with the required extensions:

add-apt-repository ppa:ondrej/php -y
apt update
apt install -y php8.2 php8.2-fpm php8.2-cli php8.2-mysql php8.2-mbstring \
  php8.2-xml php8.2-curl php8.2-zip php8.2-bcmath php8.2-gd php8.2-redis

Verify the installation:

php -v

Step 3: Install MySQL

apt install -y mysql-server
mysql_secure_installation

Then create a database and user for Paymenter:

mysql -u root -p

CREATE DATABASE paymenter;
CREATE USER 'paymenter'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON paymenter.* TO 'paymenter'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Step 4: Install Composer and Node.js

Paymenter uses Composer for PHP dependencies and Node.js for frontend asset compilation:

curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
chmod +x /usr/local/bin/composer
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs

Step 5: Install Nginx

apt install -y nginx

Step 6: Download Paymenter

Create the web directory and download the latest Paymenter release:

mkdir -p /var/www/paymenter
cd /var/www/paymenter
curl -Lo paymenter.tar.gz https://github.com/paymenter/paymenter/releases/latest/download/paymenter.tar.gz
tar -xzvf paymenter.tar.gz
chmod -R 755 storage bootstrap/cache

Step 7: Configure the Environment

Copy the example environment file and open it for editing:

cp .env.example .env
nano .env

Update these values in the .env file:

APP_URL=https://your-domain.com
APP_TIMEZONE=UTC

DB_DATABASE=paymenter
DB_USERNAME=paymenter
DB_PASSWORD=your_strong_password

MAIL_MAILER=smtp
MAIL_HOST=your-smtp-host
MAIL_PORT=587
MAIL_USERNAME=your-email
MAIL_PASSWORD=your-email-password
[email protected]
MAIL_FROM_NAME="Your Hosting Business"

Save the file, then install PHP dependencies and generate your application key:

composer install --no-dev --optimize-autoloader
php artisan key:generate --force

Step 8: Run Migrations and Seed

php artisan migrate --force
php artisan db:seed --force

This creates all the database tables and seeds the initial configuration data.

Step 9: Build Frontend Assets

npm install
npm run build

Step 10: Set File Permissions

chown -R www-data:www-data /var/www/paymenter
chmod -R 755 /var/www/paymenter
chmod -R 775 /var/www/paymenter/storage /var/www/paymenter/bootstrap/cache

Step 11: Configure Nginx

Create a new Nginx server block:

nano /etc/nginx/sites-available/paymenter

Paste the following configuration (replace your-domain.com):

server {
    listen 80;
    server_name your-domain.com;
    root /var/www/paymenter/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Enable the site and test the configuration:

ln -s /etc/nginx/sites-available/paymenter /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Step 12: Set Up SSL with Certbot

apt install -y certbot python3-certbot-nginx
certbot --nginx -d your-domain.com

Follow the prompts. Certbot will automatically update your Nginx config to redirect HTTP to HTTPS and handle certificate renewal.

Step 13: Set Up the Queue Worker

Paymenter uses Laravel queues for background jobs like sending emails and provisioning services. Without a running queue worker, these tasks won't execute.

Create a systemd service:

nano /etc/systemd/system/paymenter.service
[Unit]
Description=Paymenter Queue Worker
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/paymenter
ExecStart=/usr/bin/php /var/www/paymenter/artisan queue:work --sleep=3 --tries=3 --max-time=3600
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
systemctl enable paymenter
systemctl start paymenter
systemctl status paymenter

Also add the scheduler to cron:

crontab -e -u www-data
* * * * * php /var/www/paymenter/artisan schedule:run >> /dev/null 2>&1

Step 14: First Login and Setup

Create your admin account:

php artisan p:user:create

Visit https://your-domain.com/admin and log in. The setup wizard will walk you through:

  • Business name and branding
  • Currency and tax settings
  • Email configuration
  • Payment gateway setup (Stripe, PayPal, Mollie, etc.)
  • Creating your first product

After Installation: Recommended Extensions

A stock Paymenter installation works well, but most hosting businesses need a few additional features to run smoothly. Here are the extensions worth installing immediately:

  • Security Addon: Block abusive IPs, VPNs, and disposable email addresses. One of the first things to install.
  • Privacy Tools: Adds GDPR-compliant cookie consent, data export, and account deletion. Required if you have EU customers.
  • Helpcenter: Give clients a knowledge base so they can self-serve common questions before opening a ticket.
  • Statuspage: Show a live status page for your services. Reduces support tickets during incidents.
  • Better SEO Addon: Adds proper meta tags, Open Graph, sitemap generation, and structured data to your Paymenter store.

Browse all Paymenter extensions by BuiltByOtte to see the full catalogue.

Common Issues

500 Error on First Visit

Almost always a permissions issue or a missing APP_KEY. Check that:

  • storage/ and bootstrap/cache/ are writable by www-data
  • You ran php artisan key:generate
  • The .env file exists and APP_KEY is set

Emails Not Sending

If invoices or welcome emails aren't sending, check two things:

  • The queue worker is running: systemctl status paymenter
  • Your SMTP credentials in .env are correct. Test with php artisan tinker and Mail::raw('test', fn($m) => $m->to('[email protected]')->subject('test'));

Services Not Provisioning

Provisioning runs through the queue. If services aren't being created after payment:

  • Confirm the queue worker is active
  • Check storage/logs/laravel.log for errors
  • Verify your control panel API credentials in the admin panel

Conclusion

Paymenter takes about an hour to set up properly from a clean server. The process is well-documented and the Laravel foundation makes it predictable, once you have PHP, MySQL, Nginx, and a queue worker running, most issues are config rather than anything fundamentally wrong.

Once it's running, it's a solid, zero-cost billing platform that can handle everything a small to medium hosting business needs. And with the right extensions, you can close almost every gap between Paymenter and paid alternatives.

New to Paymenter? Read our overview of Paymenter as a free WHMCS alternative to understand what you're getting before you commit to the install.

Frequently Asked Questions

What are the server requirements for Paymenter?

PHP 8.2+, MySQL 8.0 or MariaDB 10.3+, Composer, Node.js, and Nginx or Apache. Minimum 1 vCPU and 1 GB RAM; 2 GB recommended.

Is Paymenter free to self-host?

Yes. Self-hosting is entirely free. You only pay for your own server. A managed hosted option is also available at $5/month.

How long does installation take?

30–60 minutes for someone comfortable with Linux administration. First-timers should budget 1–2 hours.

Can I install Paymenter on shared hosting?

No. Paymenter requires root access for PHP configuration, a queue worker, and a web server setup. A VPS or dedicated server is required.