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

  1. On /dashboard/billing, pick a tier. The portal calls POST /api/v1/billing/checkout with {"tier": "growth"} and receives a hosted checkout URL.
  2. 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.
  3. 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.v1 event 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