How it works
Your checkout calls the Subscription engine to create a subscription. The engine then sends each payment out through Primer, which routes it to the provider that should take it, such as Stripe, Adyen, Airwallex, or Checkout.com.- Checkout: Your paywall uses the Primer SDK and calls Subscription engine APIs to create subscriptions.
- Payment processing: The engine processes payments through Primer while managing subscription state.
- Real-time updates: Webhooks keep your backend synchronized with subscription changes.

Data model
Three objects describe what you sell and what a customer holds.- Offering (Feature): A named unit of entitlement, meaning what a customer gets access to, kept separate from pricing. An offering must exist before a price point can grant it. Learn more about offerings.
- Price point: One versioned, sellable pricing configuration. It sets the currency, what is charged now, whether there is a trial, and the renewal terms, and it grants one or more offerings. Learn more about price points.
- Purchase: What the customer ends up holding. A recurring subscription, a one-off that grants lifetime access, or a consumable granted without tracking either.
Payment types
FunnelFox Payments handles recurring subscription payments, one-off purchases, free trials, and consumables.Subscription payments
All your subscription payments appear under the Payments section.

One-off purchases
One-offs grant lifetime access. All transactions also appear under the Payments section along with subscription payments. Purchased one-offs are displayed under OneOff below.
- OneOff ID — Unique identifier for the lifetime access grant.
- Started At — When lifetime access was activated.
- Revoked At — Shows “Not revoked” unless a full refund was issued.
- Initial Order ID — Links to the original payment transaction.
- Price Point — The lifetime product purchased and its price.
Free trials
You can launch free trials without payment transactions. When you create a price point with a free trial, FunnelFox Payments processes it like a normal payment but cancels it before completing the transaction. This saves payment details for subscription renewal without charging the customer.Consumables
Consumables grant a customer an entitlement without tracking it as a subscription or a lifetime purchase. This makes them suited to credit packs, one-time add-ons, and similar products. A consumable is an Offering (Feature) with the typeconsumable that you
attach to a price point. How often it is granted depends on the product
carrying it: a subscription product re-grants it on every billing cycle, while
a lifetime product grants it once.
Each customer’s consumables appear in the Consumables section of their user
page in the Support Tool, with a status of active or revoked.
Learn more about consumables.
Subscription lifecycle
Every subscription starts, renews, and eventually ends. Its status tells you where it is.1
The subscription starts
A subscription with a trial starts as
INTRO. It becomes RECURRING
when the engine charges the customer at the end of the trial.A subscription created by a
migration with the
delayed_start strategy waits as UPCOMING instead. It starts when the
previous subscription expires.2
It renews each cycle
A
RECURRING subscription is charged two hours before each billing
cycle, so access never lapses. Each successful charge starts the next
cycle.3
A failed charge goes to recovery
A failed renewal does not end the subscription. The engine sets
GRACE,
which keeps the customer’s access, or RETRY, which means it is still
trying to charge.Both end in RECURRING if a charge succeeds, or EXPIRED if recovery
runs out. Learn more about
recovering failed payments.4
The subscription ends
Turning off auto-renewal sets
AUTORENEW_OFF. The subscription runs to
the end of the period the customer already paid for, then expires.EXPIRED means access is revoked.PAUSED sits outside this cycle. It suspends access until a set date, then
resumes on its own.
A subscription can hold more than one status at a time. See
subscription status for the full
reference.
