Skip to main content

Documentation Index

Fetch the complete documentation index at: https://orbit-docs.devotel.io/llms.txt

Use this file to discover all available pages before exploring further.

ADR-004: Pay-as-you-go end-to-end — no tiers, no subscriptions

Status: CURRENT Date: 2026-05-16

Context

The original schema had organizations.plan (starter/growth/business/enterprise) read by ~30 backend call-sites for rate limits, TPS caps, and feature gates. The tier model also carried an implicit “freemium → paid upgrade” UX that did not match the CPaaS competitor norm.

Decision

Drop plan tiers entirely. Every customer pre-pays credits via Stripe mode:"payment" Checkout; per-channel and per-MCCMNC rates deduct from the wallet. organizations.plan is kept on disk as a sentinel "payg" value but is never read for policy. Auto-top-up and admin bonus credits are the only auxiliary paid-in paths.

Reason

Faster activation, no plan-shopping friction, alignment with Twilio / Plivo / MessageBird, and elimination of an entire class of upgrade/downgrade bugs.

Consequences

  • Stripe customer.subscription.* webhook handlers are vestigial; do not remove without explicit ADR-supersede.
  • SMPP TPS axis moved from plan to organizations.settings.smpp_tps_limit (50 default, 1000 max).
  • Rate-limit and max-team-members become per-org overrides with a platform-default fallback in the platform_config k/v table.
  • Reviving tiers requires a new ADR.

Source memos

  • [[pricing_model]]
  • [[decision_tier_model_dropped_2026_05_10]]
  • known_issues.md § vestigial subscription handlers
  • [[feedback_pricing_covers_all_channels_and_ai]]