Subscriptions

The subscription layer for mobile apps

The full subscription engine — built for the migration moment. Lifecycle, customer portal, recovery, invoicing, and revenue recognition, all operated by Recurr.

Customer portal includedBranded everywhereRevenue recognition built in

01Lifecycle

The subscription state machine

Created at sign-up, modified through the migration, ended on cancellation. Recurr owns the record and emits webhooks at every state change — your app, CRM, and accounting stay aligned with what billing actually does.

01 · Create

Sign-up, trial, plan select

The first subscription event captured on your Stripe Connect account from the moment the subscriber checks out.

trialplan_selectcheckout

02 · Modify

Upgrade, pause, resume

Plan changes and proration handled at the state-machine level. Subscribers see the right charges; you see one clean event log.

upgradedowngradepauseresume

03 · End

Cancel, refund, offboard

Subscription retires cleanly. Entitlement-sync hooks fire so app access matches billing on the same beat.

cancelrefundchurn

02Migration state

Built for the migration moment

During migration, subscribers can hold a store subscription and a Recurr subscription at the same time. Recurr tracks both, keeps app access continuous when the store sub ends, and never lets a subscriber pay twice.

Store subApple / Google
Recurr subon your Stripe
Pre-migrationOverlap windowPost-migration
active — store-billed
scheduled — not yet charged
active — Recurr-billed
Dual-state tracking

Single source of truth for which entitlement is live, for which subscriber, when — while both subs co-exist.

No double-billing

Recurr waits for the store sub to end naturally before charging. Subscribers never pay twice for the same period.

Continuous entitlement

When the store sub cancels, Recurr's takes over without an access break — no “downgraded to free” moment, no support ticket.

03Customer portal

Self-service that looks like yours

Your subscribers manage their own subscriptions on your domain, in your brand. Lowers support load. Raises retention. Never breaks the trust your app earned.

  • Self-service

    Update payment method, switch plans, view billing history, download invoices, cancel — all without contacting support.

  • Branded on your domain

    Lives at billing.yourapp.com, your logo, your colours. Subscribers never see a Recurr or Stripe URL.

  • Magic-link entry

    Emailed links drop subscribers into the portal in one click — no password, no friction. Same mechanic powers the recovery + cancel-save flows.

billing.lumen-sleep.com / subscription
Lumen Sleep

Your subscription

Manage your plan, billing, and payment method.

Lumen Pro · Annual

Visa •••• 4242 · Renews 14 Jun 2026

$89.99 / yr

+ tax · USD

Switch planUpdate cardDownload invoice
Support · lumen-sleep.com/helpPowered by recurr

04Recovery

Recover failed payments. Prevent involuntary churn.

Failed payments are one of the largest sources of preventable revenue loss in subscription. Recurr's recovery layer walks them back to active billing.

Auto-retry with grace

Failed payments retry automatically over the following days. A configurable grace window keeps the subscriber at full access while recovery runs.

Branded dunning

Recovery emails sent from your domain, branded to your app. Clear copy, single CTA, no payment-collector language.

One-click card update

Magic-link drops the subscriber into a branded portal where they update their card in seconds. Card update → renewed billing → reactivated access.

05Finance ops

Built for your finance team

Branded invoices, audit-ready revenue recognition, and clean exports into your accounting stack — without a CSV reconciliation project.

Invoicing & receipts

Branded documents, automatic delivery

  • Branded PDF invoices

    Every invoice on your domain, your logo, your tax IDs. Downloaded from the portal or via emailed magic-link.

  • Automatic receipts

    Receipt emails fire on successful payment, refund, plan change, and renewal — from your sender domain, no Recurr or Stripe branding.

  • Customisable templates

    Per-tenant templates. Override per-region, per-tax-jurisdiction, or per-plan when finance teams need the variation.

PDF · Email · Per-region override

Revenue recognition

Audit-ready, included

  • Real-time deferred revenue

    Every charge auto-splits into earned + deferred at the moment of billing. Annual subs amortise across 12 months; monthly subs recognise on cycle.

  • ASC 606 + IFRS 15

    Performance-obligation tracking + contract-modification handling built in. The standards your auditors already expect.

  • Accounting exports

    Journal entries to QuickBooks, NetSuite, Xero, CSV. A real ledger feed per period — not a spreadsheet reconciliation.

ASC 606 · IFRS 15 · QuickBooks · NetSuite · Xero

06Developer surface

Subscription state in your stack

Webhooks, API, and entitlement sync. Your app, your CRM, and your accounting stay in sync with what billing actually does.

Webhooks

Signed events fire on every subscription state change — created, modified, paused, churned, recovered, refunded. Your backend stays in sync without polling.

API access

REST endpoints for everything the dashboard does — read, create, modify, cancel subscriptions. Idempotent by default.

Entitlement sync

Subscription state pushed to RevenueCat, Adapty, Firebase, or your custom backend. App access matches billing without your team writing the bridge.

Security

Secure by design

  • Card data never touches Recurr
  • Plugs into your existing auth
  • Encrypted at rest, TLS 1.3, audited
Review the full security posture
Audit

See it on your numbers

The audit translates these subscription mechanics into dollars on your ARR + fee mix — recovery, ongoing margin, and the cash-flow release at switchover.