Skip to main content

Pricing & plans

Scope: the plan ladder as shipped — prices, per-plan features and quotas. This is a product-facing summary of plans.config.ts; the enforcement mechanics (quota counting, overrides, 402/403/428 bodies) live in Entitlements enforcement and are linked, not repeated.

Source-checked against optolink-backend @ 29f8589, 2026-10-07: src/entitlements/plans.config.ts (features/quotas/overage rates) and prisma/seed.ts PLAN_CONFIG_ROWS (prices, 5 plans × 2 currencies).

The ladder​

Five plans (STARTER → SOLO → GROWTH → SCALE → ENTERPRISE). Two gateways, currency-routed: USD → Stripe, EGP → Paymob. EGP prices follow the repo's consistent 50 EGP/USD ratio.

Starter (free)SoloGrowthScaleEnterprise
Price USD/mo$0$19$49$150custom
Price EGP/mo09502,4507,500custom
Links10502001,000unlimited
Clicks / month1,00010,00050,000200,000unlimited
Custom domains—¹3525unlimited
Team seats1²2515unlimited
Link templates351050unlimited
API access——✓✓✓
Analytics export———✓✓
Click overagehard stop$0.06 / EGP 3.0 per click$0.05 / EGP 2.5$0.04 / EGP 2.0never exhausts
Downgrade policyimmediateend of periodend of periodend of periodimmediate

¹ Starter has no custom_domains feature — the 1-domain quota covers the managed OptoLink subdomain. ² The owner occupies the single seat; free orgs cannot invite (locked decision, 2026-08-09 — see Product definition).

The overage model​

The differentiator vs the direct competitor is never hard-block on paid tiers: paid plans meter clicks past the limit to the usage ledger and bill the overage when the subscription period ends (the overage sweep). Only the free Starter tier hard-stops. Quota enforcement never breaks link resolution — see Entitlements enforcement.

Feature unlocks, in ladder order: custom_domains + team_members at Solo (the classic first-paid perks), api_access at Growth (Solo has no key surface at all), analytics_export at Scale. Enterprise is admin-set with no self-serve checkout — effectively unlimited sentinels, nothing ever billed.

Divergences from the legacy pricing research​

The legacy doc (docs/research/optolink-pricing.md, 2026-07-30) predates the billing port. The code wins on every conflict:

  • Scale is $150, not the doc's $149 (seed.ts PLAN_CONFIG_ROWS).
  • Overage is per click — $0.06/$0.05/$0.04 per click (Solo/Growth/Scale), not the doc's per-1K-click rates.
  • The tier meter is clicks/month, not MAU. The doc's MAU-based quotas (5K/50K/150K/500K) were never built — MAU is backlog B-026.
  • Seats are 1/2/5/15, not the doc's "1 developer" — team seats are a quota (team_members), unlocking as a feature at Solo.
  • The doc's "free quota" framing survives as the free Starter tier: full-featured core, hard stop on click exhaustion.

The market free-tier survey that informed the model lives in research/platform/what-is-free.md.