ProBilling: Multi-tenant billing, hosting management, and domain registration — the platform you run your business on.
Set up your account, connect Stripe, configure SMTP, and send your first invoice.
Request a demo via the contact form. We provision your tenant within one business day and email you login credentials.
Go to Settings → Payment Gateways → Connect Stripe. You'll be redirected to Stripe's OAuth flow. Log in, verify your business details (EIN, bank account), and authorize the connection. Once authorized, funds from every client payment go directly to your Stripe account.
Settings → Email → SMTP. Enter host, port (usually 587), username, and password. Click "Send test email" to verify before saving. MXRoute, SendGrid, Postmark, and AWS SES all work out of the box.
Products → Add Product. Fill in name, description, price, and billing cycle. Optionally attach a provisioning module (cPanel, CloudPanel) to auto-create server accounts when the product is ordered.
Clients → Add Client. Create the client record, add a service linking to a product, then click "Generate invoice". The client receives it by email with a Stripe payment link.
Products, subscriptions, automated invoicing, refunds, and dunning.
Monthly, quarterly, semi-annually, annually, biennially, triennially, and one-time. Each product can have multiple price points for different cycles (useful for annual-prepay discounts).
Default cadence: Day 0 reminder, Day +3 polite follow-up, Day +7 firm warning, Day +10 auto-suspend, Day +30 final notice, Day +45 termination. All thresholds are configurable per tenant.
Open the paid invoice, click Refund. Choose full or partial. The refund is issued via Stripe (takes 5–10 business days to appear on the customer's statement). The invoice status changes to "refunded" or "partially_refunded".
Products can have per-currency price overrides, or use the daily ECB FX feed. Stripe charges the invoice currency and settles to your Stripe account's default currency.
Settings → Taxes. Create tax classes with per-country or per-state rates. Assign default tax class per product, override per-client for tax-exempt B2B. For complex jurisdictions, enable the Stripe Tax integration.
Stripe Smart Retries handles card-based retries automatically (up to 4 attempts over ~3 weeks). You can override the schedule in Settings → Billing → Retry Policy.
When a client upgrades mid-cycle, ProBilling prorates the remaining days of the old plan against the new plan and issues a prorated credit or charge immediately.
Registering, transferring, renewing, and managing DNS for client domains.
AWS Route53 Domains is the primary integration (production). Namecheap API is wired (stub). OpenSRS/Tucows on the roadmap.
Create an IAM user in your AWS account with AmazonRoute53DomainsFullAccess + AmazonRoute53FullAccess. Paste the access key and secret into Settings → Registrars → Route53. Credentials are AES-256 encrypted at rest.
ProBilling authorizes the Stripe charge before calling the registrar. If registration fails (typo in WHOIS, domain taken during checkout, registrar outage), the authorization is voided and the client is never charged. They can retry immediately.
Client unlocks the domain at their current registrar and requests the auth (EPP) code. They order a transfer in your portal, enter the code, and the transfer kicks off. Completion typically takes 5–7 days.
Toggle it per-domain in the admin dashboard. Route53 supports privacy on all TLDs where the registry allows it. No separate product purchase — it's included.
The renewal-invoices cron generates invoices for domains expiring in the next 45 days. Clients see the upcoming renewal on their dashboard and can choose auto-renew (default) or cancel.
Automated cPanel/WHM and CloudPanel account creation, suspension, and termination.
Servers → Add Server. Enter hostname, select cPanel/WHM, and paste the WHM API token (generated in WHM → Development → Manage API Tokens). Do not use the root password. Test the connection — ProBilling verifies it can create/suspend accounts before saving.
Same flow, select CloudPanel instead. You'll paste an SSH private key (not a password). The key is AES-256 encrypted at rest.
At the suspension threshold (default: day 10 past due), ProBilling calls the control panel's suspend API. The account is inaccessible but data is preserved. If the client pays, unsuspend fires automatically within a few minutes.
At the termination threshold (default: day 45 past due), the account is removed from the server and data is destroyed. If you enable recovery backups, a final snapshot is pulled to your S3 bucket before deletion.
Admin → Provisioning → Failed Jobs. Each failed job shows the error returned by the panel API. Click Retry to run it again, or edit the service parameters first if needed.
Create groups like "USA-East shared" or "EU reseller". Assign products to groups instead of specific servers. New accounts are distributed using a least-loaded algorithm across healthy servers in the group.
Managing client support requests through the integrated ticketing system.
From their client portal, they click "Submit a Ticket", choose a department, and type their message. Tickets can also be opened via email — any email sent to the configured support address becomes a ticket.
Settings → Ticket Departments. Create as many as you need (Billing, Sales, Abuse, Technical). Assign default staff members to each. Tickets auto-route to the department the client selected.
Staff can add internal notes visible only to other staff, or send replies that go to the client by email. Notes are handy for coordinating across team members without sending anything to the customer.
Both clients and staff can attach files (up to 10MB each). Common formats accepted (images, PDFs, logs, zip files). Executables are blocked.
Authentication, 2FA, API keys, audit logs, and access controls.
Argon2id for all new accounts. Legacy bcrypt hashes (from WHMCS imports) are recognized on login and silently upgraded to Argon2id. Never MD5 or SHA1.
Profile → Security → Two-Factor Auth. Scan the QR code with Google Authenticator, Authy, or 1Password. ProBilling also generates 10 one-time backup codes in case you lose your authenticator.
Settings → API Keys → Create Key. Choose read-only or read-write. The key is shown once — copy it immediately. You can revoke it at any time.
Settings → Audit Log. Every create/update/delete action is recorded with user, IP, timestamp, and old/new values. Logs retained for 2 years minimum. Admin users can export to CSV for compliance reviews.
Settings → Staff → Roles. Built-in roles: Owner, Admin, Support, Billing-Only, Read-Only. Custom roles allow granular permission control per module.
Revenue reports, MRR/ARR, churn, aging AR, tax summaries.
Reports → MRR / ARR. Shows net new, expansion, contraction, and churn components per month. Exportable to CSV.
Reports → Aging AR. Buckets: current, 1–30 days overdue, 31–60, 61–90, 90+. Click any bucket to drill into specific invoices.
Reports → Churn. Gross and net churn by month, broken down by product and by cohort. Helps you spot which products or price points are losing customers.
Every report has a CSV export button. For programmatic access, use the /api/v1/reports endpoints (see API reference).
Moving from WHMCS or another billing platform to ProBilling.
See the full migration guide. Clients, invoices, services, tickets, domains, and Stripe customer IDs all move over. Passwords are preserved (bcrypt hashes recognized natively).
No. ProBilling validates the bcrypt hashes WHMCS stored and silently upgrades them to Argon2id on successful login. Customers log in with their existing password as if nothing changed.
The WHMCS import reads tblclients.gatewayid for Stripe customers and re-links them in ProBilling. Saved cards and subscriptions at Stripe continue to work — no re-entry needed.
Small installs (under 500 clients): 2–3 hours. Larger (50K+ clients with deep history): up to a day, with a dry-run the day before. Actual cutover runs during your low-traffic window.
Only during the staging phase. Once you go live on ProBilling, WHMCS should go read-only to avoid double-invoicing the same customers.
Try different keywords or open a support ticket.
Our support team responds within one business day. For critical issues, Enterprise customers get direct phone access per the SLA.