Subscriptions

Subscriptions, without the plumbing

Model plans, trials and offers once, then take payment through Stripe or Apple in-app purchases without writing receipt-validation code.

The same task, three ways

Every task works three ways, and all of them change the same project. Here's one: a monthly plan with a seven-day free trial.

The Anythink dashboard

Fill in the plan once. It syncs to Stripe when Connect onboarding is complete.

The Anythink CLI

Plans go through the AnythinkPay API, so a script can create them.

$ anythink fetch /integrations/anythinkpay/subscription-plans --method POST --body \'{"plan_name":"Pro monthly","name":"Pro monthly","description":"Full access","type":"recurring","amount":9.99,"currency":"gbp","billing_interval":"month","interval_count":1,"trial_period_days":7,"is_active":true}'
  • ✓Plan Pro monthly created with a seven-day trial
  • ✓Stripe ids stay empty until Connect onboarding is complete

Claude, through MCP

Describe the plan. It calls the same API and reports what it created.

you › “Create an AnythinkPay subscription plan called Pro monthly at £9.99 a month with a 7-day trial.”

  • ✓Called the AnythinkPay plans API with your details
  • ✓Plan Pro monthly: £9.99 a month, seven-day trial
  • ✓It syncs to Stripe once Connect onboarding is finished
  • ✓The plan is listed under AnythinkPay → Plans

Why this holds up in production

Idempotent by design

Verification upserts, it never duplicates

Apple receipt verification keys off the purchase's original_transaction_id. Re-verifying the same purchase, or a renewal coming back around, updates the existing row instead of creating a second subscription.

  • Account-binding check rejects a receipt replayed against a different account
  • Superseded purchases are marked explicitly, so entitlement for a product is never ambiguous

A timely reason to avoid extensions

Firebase's Stripe and RevenueCat routes run on Extensions, which shut down 31 March 2027

After that date, Firebase Extensions can't be installed or edited, which pushes Stripe and Apple IAP handling on Firebase into custom Cloud Functions. Anythink's payment handling is native, not an extension that can be deprecated.

Subscriptions, compared

CapabilityAnythinkSupabaseFirebase
Stripe subscriptionsSupabase: Stripe sync engine or a webhook recipe.Built inAdd-on, extension or DIY recipe
Apple in-app purchasesFirebase: via the RevenueCat extension, which Extensions sunsets 31 March 2027.Built inNot availableAdd-on, extension or DIY recipe
Server-side receipt verificationBuilt inNot confirmedAdd-on, extension or DIY recipe
Admin recovery (status override, resync)Built inNot confirmedNot confirmed

● Built in◐ Add-on, extension or DIY recipe– Not available? Not confirmed

Sourced from each vendor's own docs as of 28 September 2026. "Addon" means an extension, plugin or code recipe rather than a feature of the core platform.

A subscription backend, not a payment recipe

Plans, trials, discount codes, Stripe and Apple in-app purchases, all on the same subscriber record.

Plans, trials and offers

Define subscription plans with billing intervals and trial periods, then layer on offer and discount codes for redemption and referral programmes.

In practice

A plan, a trial, and a verified purchase

create a plan.ts
POST https://api.my.anythink.cloud/org/{org_id}/integrations/anythinkpay/subscription-plans
Content-Type: application/json

{
  "plan_name": "pro-monthly",
  "name": "Pro Monthly",
  "description": "Full access, billed monthly",
  "amount": 19.00,
  "currency": "gbp",
  "billing_interval": "month",
  "trial_period_days": 14
}

What you can build

01

An iOS subscription app

Sell a subscription through Apple in-app purchase. Anythink verifies the receipt against the App Store, binds it to the signed-in account, and keeps renewals from duplicating the entitlement. Your app just asks /me whether access is active.

02

A SaaS with a free trial

Set a trial period on the plan, so new subscribers get full access for 14 days before the first Stripe charge. Offer codes extend a trial or discount the first invoice for a referral programme.

03

A marketplace with a platform fee

Route a buyer's payment to a seller through Stripe Connect and take a percentage automatically. Configure the split once; every transaction after that follows it.

Frequently Asked Questions

Does Anythink support Apple in-app purchases?

Yes. Anythink verifies App Store receipts server-side against Apple's real App Store Server API, not just by trusting the device. Verification is idempotent, so renewals and retried requests don't create duplicate subscriptions, and each purchase is bound to the account that made it.

Is this a RevenueCat alternative?

For the core job, yes: server-side Apple IAP verification with account binding, plus Stripe subscriptions, in one backend. Bulk Apple subscription status syncing and team (seat) subscriptions are planned.

Can I check whether a user has an active subscription from my app?

Yes. The /me endpoints are scoped to a subscriber permission rather than an admin one, so your client app can call them directly to check entitlement, offer codes, referrals and balance for the signed-in user.

What happens if Stripe and my data get out of sync?

An admin can override a subscription's status, relink it to a different subscriber, or resync it from Stripe, all from the Anythink dashboard. For an Apple purchase, re-verifying the receipt brings the subscription back in line.

Can I split a payment between a buyer and a seller?

Yes, with Stripe Connect. Configure the split in Anythink and payments route to your sellers with your platform fee taken automatically.

Still have questions?

Get in Touch

More in the same project

Every feature reads from the same data model, so each one you add works with the rest.

Documentation

Guides and reference at docs.anythink.cloud.

Ready to take payments?

Connect Stripe, create plans and offers, and verify Apple in-app purchases, all in the same project as your data.