Revenue
One revenue number everywhere
Dashboard and reports count revenue the same way, with a 13-month chart.
ERPStore v26.9.1 — by MrZaKaRiA IT Solutions
ERPStore is self-hosted subscription billing software with a storefront, billing ledger and CRM in one PHP application. It is built for resellers of streaming, VPN, hosting and software subscriptions, and for agencies running a store per client. Your customers, payments and ledger stay in your own MySQL. The licence is per domain.
Per-seat fees, per-transaction fees and commission. The licence is bound to a domain.
Tables on a recorded v26.6.6 upgrade of a real customer database. Every user, order and payment came through.
Language packs for the interface and the client portal, all left-to-right.
Email transports, from SMTP to Amazon SES v2, with health reporting and auto-failover.
Definition
ERPStore is self-hosted subscription billing software: a storefront, billing ledger and CRM in one PHP application that you install on your own hosting. It sells, renews and accounts for recurring products. MrZaKaRiA IT Solutions builds and licenses it. The current release is 26.9.1, published on 1 September 2026.
It suits resellers of streaming and IPTV lines, VPN, hosting or software licences. It also suits agencies that deploy a branded store per client, and small recurring-revenue businesses that have outgrown spreadsheet renewals.
The backend is a custom PHP 7.4+ REST API over MySQL or MariaDB. The frontend is a Vue 2.7 app. Deployment is an upload plus one visit to /install. Both stack choices carry a cost, and we say so below.
Related: RIVER ERP, RAIN Store, custom ERP development and our portfolio.
New since August
Released on 1 September 2026. The test suite grew from 963 to 1,406 passing tests.
Revenue
Dashboard and reports count revenue the same way, with a 13-month chart.
Refunds
Choose which subscriptions a refund covers, with automatic cancel or stop.
Search
Search covers cancelled, ended and deleted records, even part of a MAC address.
Security
All 12 high-severity findings are fixed, including an unauthenticated PDF endpoint.
Clients
A staff-only WhatsApp or Telegram number per client, and one image adjuster.
Upgrades
The installer keeps the store's name, currency and timezone.
Modules
Every module below is in the released 26.9.1 package.
Catalogue
Per-currency prices, coupons with usage limits, and separate catalogues for resellers and retail clients.
Orders
Nine statuses, each with its own board, plus an activation queue.
Payments
Stripe, PayPal, Paymentwall, Payssion, Whop webhook and manual methods.
Money
Products, General and Refund entries, reconciled against the gateway record.
Documents
Refunds recorded against a payment code. Clients download their own PDF invoices.
CRM
A pipeline from New to Win-back, CRM tasks, notes and tags on one record.
Open, click and bounce tracking, plus reminders that skip clients who already renewed.
Portal
24 client pages, from orders and invoices to support requests, 2FA and pause.
Operations
Bulk actions, status page, webhooks, audit log and scheduled Dropbox backups.
Vertical
Paste a raw M3U URL and the activation payload is generated for you.
Growth
Referrals, free trials, upsell, reseller credit wallet and payment recovery.
Languages
Locale files cover the whole interface and the client portal.
Included
The parts most platforms sell as connectors live in the same application and database.
SMTP, Amazon SES v2, Brevo, Resend, MailerSend and Mailtrap, with health reporting and per-stream sender routing.
18 tools cover pipeline, revenue, campaigns and client search. Point it at Ollama or LM Studio and no customer data leaves your server. Cloud providers do receive it.
Nine permission scopes gate the API. TOTP two-factor login is available for staff and clients.
Per-IP rate limits answering 429, Turnstile or reCAPTCHA, origin-checked CORS and security headers.
GET /api/health returns 503 when the database is down or migrations are pending. Logs have retention sweeps.
HubSpot and Twenty contact sync exists as an API endpoint with a dry-run preview. We run it for you during setup.


Money paths
Gateway dashboards and your own books drift apart once refunds and fees enter. ERPStore keeps one ledger and reconciles it against the payment record. The reporting rebuild in 26.9.1 is its newest part, so check its numbers against your gateway for the first months.
Renewals and recovery
Renewal dates live in the database, not in a calendar reminder. The reminder engine runs from cron on before and after rules, and skips clients who already renewed. There is no card-on-file auto-renew, so configure this layer on day one.
Install and upgrade
The installer inspects the live database, prints what it will do and applies only what is missing. It is safe to re-run and it does not drop data. It does not replace a backup.
Honest status
The released version is 26.9.1. The production-hardening work was merged on 1 September 2026. The suite stands at 1,406 passing tests and none failing, and all 12 high-severity audit findings are fixed.
Two things to price in. Since the payment-path changes, not every gateway has carried a real transaction, so run one live payment on your own install before you take customers. And about 54 medium and low audit findings remain open.
Straight answers
Refunds are recorded, not executed. You issue the refund in Stripe or PayPal, then record it. The admin panel never moves money through a gateway API.
No card-on-file automatic renewal. Renewals run on reminders and repurchase. If your model needs silent monthly charging, stop here.
Self-hosted means you are operations. You provide PHP, MySQL, a web server, TLS, cron and backups. There is no SaaS option.
The stack is past end of life. Vue 2.7 ended in December 2023, and the build pins Element UI 2, Chart.js 2 and Bootstrap 4. PHP 7.4 is the floor, so deploy on a supported PHP release.
The backend is hand-rolled. It is small and readable, but fewer developers could pick it up.
Translation stops at the interface. API errors are English-only, and Arabic, Farsi and Urdu render left-to-right.
One person, one company. No SLA, escrow or reference list is published.
Compare
Grades reflect each product's public positioning in August 2026. Where a rival's capability was unclear, it is graded in their favour. Six of the fourteen rows go against ERPStore.
| Capability | ERPStore | WHMCS (self-hosted licence) | Hosted billing SaaS (Chargebee, Recurly) | Spreadsheet + manual invoices |
|---|---|---|---|---|
| Runs on your own server and database | ✓ | ✓ | — | ✓ |
| Customer data stays out of a vendor cloud | ✓ | ✓ | — | ✓ |
| Cost does not scale with revenue or headcount | ✓ | Partial | — | ✓ |
| Storefront, portal, ledger and campaigns in one application | ✓ | Partial | Partial | — |
| Client portal in 32 languages | ✓ | Partial | Partial | — |
| AI assistant that can run on a local model | ✓ | Partial | Partial | — |
| Card-on-file automatic renewal | — | ✓ | ✓ | — |
| Refunds executed through the gateway | — | ✓ | ✓ | — |
| Vendor-managed hosting and uptime | — | Partial | ✓ | — |
| Large third-party module ecosystem | — | ✓ | Partial | — |
| Published pricing without a sales call | — | ✓ | ✓ | ✓ |
| Contractual support SLA available | — | ✓ | ✓ | — |
| Named reference customers you can check | — | ✓ | ✓ | — |
| Zero software cost to start | — | — | Partial | ✓ |
Fit check
There is no demo tenant, trial or public price list, so here is a self-check. If two or three of these go the wrong way, do not book.
Next step
One call covers products, currencies, gateways, languages and the state of the data you would bring across. You get a written quote for the licence, the migration and the deployment.
Commercials
There is no public price list, because scope sets the number: products, gateways, languages, how much data comes across, and whether we run the deployment.
ERPStore is licensed per domain. A build is signed with an Ed25519 key for one hostname or one wildcard domain, and your install checks that token. The licence is perpetual or dated. There is no per-seat charge, no per-transaction fee and no commission.
Price in three limits. A new domain, a second store or a dated renewal each need a newly signed token, and only the vendor holds the key. Escrow and a perpetual fallback are not documented. Support terms are not published. Ask for all three in writing. You own the deployment and the data, and you license the code. Book a scoping call or send the question first.
Risk reversal
Self-hosted software fails differently from SaaS. Each protection below comes with its limit.
Delivery
The sequence does not change. No timeline is quoted before your data has been looked at.
Catalogue, currencies, gateways, languages and what your current system can export. You get a written quote.
A package is built and signed for your domain, perpetual or dated.
Upload, then one visit to /install. Cron is set up for reminders, campaigns and backups.
286 settings across 26 sections: payments, email, reminders, captcha and retention.
Accounts, products, history and payments come across by CSV, then are reconciled against the ledger.
Run a real payment through each gateway you will use and check it lands in the ledger.
You run hosting, MySQL, TLS, cron and backups, or we scope that separately.
Clients
Real clients, on the work they ran with us. These are not reviews of ERPStore.
FAQ
Hosting, ownership, pricing model and production readiness, answered before the call.
ERPStore is self-hosted subscription billing software built by MrZaKaRiA IT Solutions. One application holds the storefront, checkout, client portal, order lifecycle, payment gateways, ledger and CRM. The released version is 26.9.1, licensed per domain instead of per seat.
Yes, for selling and renewing subscriptions. Like WHMCS it runs on your own server and database. ERPStore adds a ledger, six email transports and a 32-language portal. WHMCS is older and larger, with published pricing, support contracts and a big module ecosystem. ERPStore has none of those three.
Yes. It was built for digital-subscription resellers, including IPTV and streaming lines, VPN, hosting and licences. Pasting a raw M3U URL generates the activation payload, and the nine-status order lifecycle keeps a paid order and its activation on one record.
PHP 7.4 or newer, MySQL or MariaDB, Apache 2.4 or nginx, TLS and a cron that fires on schedule. Every customer, payment and ledger record sits in your own MySQL, with no vendor cloud.
There is no public price list, because scope sets the number. The model is fixed: one licence per domain, perpetual or dated, with no per-seat charge, per-transaction fee or commission. Development hosts need no licence.
Version 26.9.1 is released, with 1,406 tests passing and all 12 high-severity audit findings fixed. Run one live payment before you take customers. Migration from WHMCS or a spreadsheet is scoped as work, with reconciliation against the ledger.
Get a quote
What has been through a live gateway, escrow, support scope, and what your migration looks like. Those are the right questions for a single-vendor, self-hosted product, and they are what the scoping call is for.