Open-source hosting & server billing panel built with Laravel.
Inspired by WHMCS, Paymenter, and CtrlPanel.gg.
Get Started »
·
Report Bug
·
Request Feature
- Store & Ordering — Browse products, place orders with instant provisioning
- Service Management — View, manage, and monitor active services
- Invoices & Payments — View invoices, track payment history, apply coupons at checkout
- Support Tickets — Create tickets with priority levels and department routing
- Announcements — Stay updated with company announcements
- Two-Factor Auth — TOTP 2FA via Google Authenticator with backup codes
- Credits System — User balance/credits display
- Dashboard — Overview with billing statistics
- Product Management — Categories, products with configurable pricing and billing cycles
- Customer Management — User accounts, admin promotion
- Order Workflow — Approve/reject orders, automatic service provisioning
- Invoice & Payment Tracking — Auto-generated invoices, manual payment recording
- Coupon System — Percentage/fixed discounts, usage limits, date ranges, per-product targeting
- Support Tickets — Reply, close, reopen customer tickets with department filters
- Announcements — Create and manage announcements with scheduling
- Email Templates — 6 configurable notification templates with live preview editor
- Audit Log — Track all admin actions with filterable history
- Comprehensive Settings — Company info, SMTP/mail, billing defaults, security, maintenance mode
- Pterodactyl Integration — Auto-create servers on order, configurable nests/eggs/nodes/locations
- Extension System — Pluggable server provisioning architecture (easy to add new providers)
- 5 Built-in Themes — Pterodactyl (default), Midnight, Emerald, Rose, Slate
- File-based Custom Themes — Override any view, add components, custom CSS, hooks, and static assets
- DB Custom Themes — Create CSS-only themes from the admin panel with code editor
- Hook System — 7 injection points in layouts for theme extensions
- Theme Documentation — Full developer guide in
themes/README.md
- Auto-suspend — Automatically suspend services with overdue invoices
- Renewal Invoices — Auto-generate invoices for upcoming service renewals
- Payment Reminders — Daily reminders for invoices approaching due date
| Layer | Technology |
|---|---|
| Framework | Laravel 11 (PHP 8.2+) |
| Auth | Laravel Breeze (Blade) + TOTP 2FA |
| Client UI | Tailwind CSS v4 + Alpine.js + Vite |
| Admin UI | AdminLTE 3 (CDN) |
| Database | MySQL / MariaDB |
| Server | Nginx + PHP-FPM |
| Provisioning | Pterodactyl Panel API |
- PHP 8.2+
- Composer 2.x
- Node.js 18+ & npm
- MySQL 8.0+ or MariaDB 10.6+
- Nginx or Apache
# Clone the repository
git clone https://github.com/mizodevelopment/mizobilling.git
cd mizobilling
# Install PHP dependencies
composer install
# Install Node dependencies and build assets
npm install && npm run build
# Configure environment
cp .env.example .env
php artisan key:generateEdit .env with your database credentials:
DB_DATABASE=mizobilling
DB_USERNAME=your_user
DB_PASSWORD=your_password# Run migrations and seed default data
php artisan migrate --seed
# Create your admin account
php artisan make:admin your@email.com
# Start development server
php artisan serveVisit http://localhost:8000 and log in.
After seeding, a default admin exists:
- Email:
admin@admin - Password:
password
⚠️ Change this immediately in production.
- Go to Admin → Extensions → Pterodactyl
- Enter your Pterodactyl panel URL and API key
- Configure default nest, egg, node, and location
- Products will auto-provision servers on order
- Go to Admin → Settings → Mail tab
- Configure SMTP host, port, credentials, and from address
- Use "Send Test Email" to verify
- Customize templates at Admin → Email Templates
Add to your server's crontab:
* * * * * cd /path-to-mizobilling && php artisan schedule:run >> /dev/null 2>&1This enables:
- Auto-suspension of overdue services
- Renewal invoice generation
- Payment reminder emails
MizoBilling supports fully customizable themes. See the Theme Development Guide.
Select from 5 themes in Admin → Settings → Theme tab.
themes/my-theme/
├── theme.json # Metadata & hook config
├── css/theme.css # Custom CSS (overrides any variable)
├── views/ # Blade view overrides (mirrors resources/views/)
├── components/ # Custom Blade components
└── assets/ # Static files (images, fonts, JS)
Themes can override any view, register custom components (as <x-theme::name>), inject content at 7 hook points, and serve static assets.
# Promote a user to admin
php artisan make:admin user@example.com
# View billing statistics
php artisan billing:stats
# Run billing automation manually
php artisan billing:suspend-overdue
php artisan billing:generate-renewals
php artisan billing:send-remindersserver {
listen 80;
server_name your-domain.com;
root /var/www/mizobilling/public;
index index.php;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}composer install --no-dev --optimize-autoloader
npm install && npm run build
php artisan migrate --force
php artisan config:cache
php artisan view:cache
php artisan storage:link
chown -R www-data:www-data storage bootstrap/cachesudo certbot --nginx -d your-domain.comContributions are welcome! Please see CONTRIBUTING.md for guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
mizobilling/
├── app/
│ ├── Console/Commands/ # Artisan commands (billing automation)
│ ├── Extensions/Servers/ # Server provisioning extensions
│ ├── Http/Controllers/ # Client & Admin controllers
│ ├── Models/ # 17 Eloquent models
│ ├── Providers/ # Service providers (Theme, Mail)
│ └── Services/ # ThemeService, EmailService, ExtensionManager
├── database/
│ ├── migrations/ # 25 migrations
│ └── seeders/ # Email template seeder
├── resources/views/
│ ├── admin/ # AdminLTE admin panel views
│ ├── auth/ # Login, register, 2FA challenge
│ ├── layouts/ # App, guest, and admin layouts
│ ├── tickets/ # Client ticket views
│ └── ... # Dashboard, store, services, invoices, etc.
├── routes/
│ ├── web.php # All web routes (113 routes)
│ └── console.php # Scheduled commands
└── themes/ # Custom theme directory
├── README.md # Theme development guide
└── ocean-breeze/ # Example theme
This project is open-source software licensed under the MIT License.
- Built with Laravel
- Client UI inspired by Pterodactyl Panel
- Feature design influenced by Paymenter and FOSSBilling