Billing & plans
Flat per-workspace pricing in IDR, payable by QRIS, virtual account, e-wallet, or card. No commission on your orders — what your buyers pay you is yours (the optional Payment and Marketing modules carry a 0.3% module fee on the amounts they process; manual transfers are never touched). Manage your plan at /dashboard/billing.
The tiers
| Tier | Price / month | Services | Agent seats | Hide branding | Modules |
|---|---|---|---|---|---|
| Free | Rp 0 | 3 | 1 | — | — |
| Starter | Rp 79.000 | 10 | 2 | ✓ | ✓ |
| Growth | Rp 199.000 | 30 | 5 | ✓ | ✓ |
| Business | Rp 449.000 | 100 | 15 | ✓ | ✓ |
Every plan — including Free — gets unlimited orders, the public storefront, the client portal, manual bank-transfer payments, and the full developer surface (API keys, webhooks, CLI).
What the paid columns mean:
- Services — the catalog size limit,
enforced at creation
(
403 LIMIT_REACHED). - Hide branding — remove the "Powered by Serront" footer from
your public pages. Enforced: turning it on from Free returns
403 UPGRADE_REQUIRED. - Modules — the Payment (Plugipay online
checkout) and Marketing (Ripllo discount codes)
modules. Enabling either from Free returns
403 UPGRADE_REQUIRED. - Agent seats — workspace members. Displayed against your live member count today; hard enforcement comes at launch.
These limits are real from day one — there is no early-access grace
mode. The same table renders on /pricing and from
GET /api/v1/billing.
How checkout works
- On /dashboard/billing, pick a tier. The
portal calls
POST /api/v1/billing/checkoutwith{"tier": "growth"}and receives a hosted checkout URL. - Your browser is redirected to a Plugipay hosted checkout page (Plugipay is the Forjio family's payment service). Pay with QRIS, virtual account, e-wallet, or card.
- After paying (or canceling) you're sent back to
/dashboard/billing?status=success(or…=canceled).
Free needs no checkout — the absence of a subscription is the Free plan.
After payment
The subscription is activated by Plugipay's payment webhook, not by the browser redirect — so it goes through even if you close the tab after paying:
- Your workspace's subscription is set to the purchased tier, status
active, for 30 days (currentPeriodEnd). - Activation is idempotent — a payment is never applied twice, no matter how often the payment notification is retried.
- A
serront.billing.subscribed.v1event fires, if you have webhook subscriptions listening.
If the redirect lands before the webhook does, the billing page may show your old plan for a few seconds — refresh.
No auto-renewal in v1 — honestly: there is no recurring charge wired up. When a period ends, your workspace falls back to Free limits until you run checkout again. Nothing is deleted — services over the Free limit stay (you just can't add more), and your data, orders, and history are untouched. Upgrading mid-period applies the new tier immediately with a fresh 30-day period.
Checking your plan from the API
curl -H "Authorization: Bearer sk_live_xxx" \
https://serront.com/api/v1/billing
{
"data": {
"subscription": {
"accountId": "acc_…",
"tier": "growth",
"status": "active",
"currentPeriodEnd": "2026-07-11T03:00:00.000Z"
},
"effectiveTier": "growth",
"tiers": [ "…the full tier table…" ]
}
}
effectiveTier is what the limits actually honor — a lapsed or
canceled subscription resolves to free there even while the row
still names the old tier.
See also
- Services & pricing — what the service limit gates.
- Payments + Discount codes — the Starter+ modules.