Part of Milestone D — Paid Products. Ref: #27
Add offers, customers, orders and subscriptions with Stripe, but do not yet enforce access in apps. Money flow must be stable before access revocation and product keys are automated.
Alex tasks
Tables
Stripe integration
Checkout flow
product page → create checkout session → Stripe Checkout → signed webhook → order/subscription record → confirmation page
Rule: success redirect must never grant access.
Subscription states
Mirror from Stripe: trialing, active, past_due, cancel_at_period_end, cancelled, expired. Record correctly — do not enforce in apps yet.
Legal/compliance capture per checkout
Reconciliation jobs
Add before any live billing:
Tests
Tomas tasks
Do not build yet
Automatic product-key delivery, entitlement-based app locking, licence revocation, subscription suspension logic.
Exit gate
- Test-mode Stripe checkout works end to end
- Webhooks are idempotent
- Orders/subscriptions visible in dashboard
- No access is granted from redirect
- Backup/restore includes commerce tables
Rollback
Disable checkout creation. Keep recorded test data or purge in non-production.
Part of Milestone D — Paid Products. Ref: #27
Add offers, customers, orders and subscriptions with Stripe, but do not yet enforce access in apps. Money flow must be stable before access revocation and product keys are automated.
Alex tasks
Tables
offerscustomersorderssubscriptionspayment_webhook_eventscheckout_disclosuresStripe integration
Checkout flow
product page → create checkout session → Stripe Checkout → signed webhook → order/subscription record → confirmation pageRule: success redirect must never grant access.
Subscription states
Mirror from Stripe:
trialing,active,past_due,cancel_at_period_end,cancelled,expired. Record correctly — do not enforce in apps yet.Legal/compliance capture per checkout
Reconciliation jobs
Add before any live billing:
stripe.reconcile.checkout_sessionsstripe.reconcile.subscriptionsstripe.reconcile.invoicesstripe.reconcile.entitlementsTests
Tomas tasks
Do not build yet
Automatic product-key delivery, entitlement-based app locking, licence revocation, subscription suspension logic.
Exit gate
Rollback
Disable checkout creation. Keep recorded test data or purge in non-production.