Plans and pricing
Plans with intervals, trials, setup fees, add ons, seat counts and grandfathered pricing preserved when public prices change.
Solution
Plans, entitlements, renewals, dunning and cancellation handled by a state machine driven from processor events, so access always matches what has been paid.

Overview
Recurring revenue looks simple and is not. A member upgrades mid cycle, a card fails on renewal, a plan changes price, someone cancels and rejoins, a payment succeeds after a retry. Each of those is a state transition and each one has to leave access correct.
The failure mode is a system where entitlement is a boolean somebody updates. It drifts, and the result is either unpaid access or a paying member locked out.
We derive entitlement from verified billing events and explicit access rules. Scheduled reconciliation detects missing or delayed events before temporary inconsistencies become persistent access problems.
Member services and software businesses connecting recurring payments with access to a product or service.
Billing and entitlement are related but separate states. Define grace rules, effective cancellation dates, upgrades and failed renewals. Reconciliation is necessary because webhook delivery and provider state can temporarily disagree.
Modules
Plans with intervals, trials, setup fees, add ons, seat counts and grandfathered pricing preserved when public prices change.
Trialing, active, past due, paused, cancelled and expired, with defined transitions and the event that causes each one.
Features and limits derived from the current subscription state at request time, so nothing has to be synchronised by hand.
Upgrades, downgrades and interval switches with proration handled by the processor and reflected immediately in access.
Retry schedule on failed payment, notification sequence, grace period and the exact point access is suspended, all configurable.
Cancel at period end or immediately, pause, reactivation, and a record of the reason given.
Self serve plan changes, payment method update, invoice history and receipts.
Active members by plan, churn, expansion, failed payment recovery and cohort retention, computed from billing events.
Architecture
A typical implementation flow, with explicit responsibilities at each boundary.
Create the processor subscription and record the selected terms.
Derive access from verified billing state and explicit entitlement rules.
Compare provider records, delayed events and manual adjustments.
Security and controls
Use hosted payment-method updates. Audit complimentary access and manual billing changes. Do not grant access based solely on a client-supplied payment result.
We select the final stack after reviewing your existing systems and operating requirements.
Security and IP practicesFit
FAQ
Because a stored flag drifts. Derived entitlement reads the current subscription state at request time, so a failed renewal, a mid cycle upgrade or a late webhook can never leave access wrong.
The subscription moves to past due, the retry schedule and notification sequence start, and access is suspended at the point in the grace period you choose rather than immediately by default.
Yes. Grandfathered pricing is held on the subscription, so a public price change does not touch current members unless you decide it should.
Yes, with seat counts, proration when seats change, and an administrator who manages membership within the organisation.
Events are stored by processor identifier and processed once. State transitions are idempotent, so a repeated event is a no operation.
No. Payment details are collected by processor hosted fields or a processor managed checkout, so cards never reach your application.
Tell us where the current process breaks down. We can map the workflow, examine the integration requirements and define a practical scope for the build.