Billing Go-Live Checklist
Use this checklist before promoting billing changes to production.
Use this checklist before promoting billing changes to production.
1) Environment and Infra
-
APP_ENV=productionandAPP_DEBUG=false. -
php artisan config:cacheandphp artisan route:cachesucceed on release build. - Queue workers are running and supervised (
php artisan queue:work). - Failed jobs storage is configured (
QUEUE_FAILED_DRIVERnot null). -
php artisan app:check-readiness --strictpasses. -
php artisan billing:check-readiness --strictpasses.
2) Catalog and Provider Mapping
- Every sellable price has a provider mapping in
price_provider_mappings. -
php artisan billing:publish-catalog stripe --apply --updatecompleted. -
php artisan billing:publish-catalog paddle --apply --updatecompleted. -
/pricingshows expected plans and provider availability.
3) Stripe E2E (Staging)
- New subscription checkout completes and creates active
subscriptionsrow. - Subscription plan switch (upgrade/downgrade) works and updates
plan_key. - One-time purchase checkout creates paid
ordersrow. - One-time upgrade applies prior credit and charges delta only.
- One-time downgrade is blocked in self-serve with support CTA.
4) Paddle E2E (Staging)
- New subscription checkout completes and creates active
subscriptionsrow. - Subscription plan switch (upgrade/downgrade) works and updates
plan_key. - One-time purchase checkout creates paid
ordersrow. - One-time upgrade applies prior credit and charges delta only.
- One-time downgrade is blocked in self-serve with support CTA.
5) Webhook Safety and Replay
- Duplicate webhook delivery does not create duplicate canonical records.
-
webhook_eventstransitions toprocessedfor happy path. - Failed event can be retried and reaches
processed. - Stale
processingevents are recoverable and redispatched.
6) One-Time Upgrade Credit Hardening
- Upgrade credit amount equals prior owned one-time tier value.
- Retrying checkout reuses existing auto-upgrade credit discount when still valid.
- Coupon + auto-upgrade credit combination is rejected with clear UI message.
- Billing success UI shows charged amount and plan value when they differ.
7) Observability and Alerting
- Checkout logs contain correlation context (
request_id,user_id,provider,plan_key,price_key). - Webhook logs include
provider,event_id,event_type, dispatch decision. - Alert on sustained webhook failure rate (for example: >5 failed events in 10 minutes).
- Alert on checkout failure spikes (for example: provider checkout failures >2% over 15 minutes).
8) Regression Suite Gate
-
vendor/bin/pint --testpasses. -
php artisan test tests/Feature/Billing tests/Unit/Domain/Billingpasses. -
php artisan test tests/Feature/Auth/SocialAuthTest.phppasses.
9) Rollback Plan
- Previous deploy artifact is available for immediate rollback.
- Rollback command/runbook is documented for your platform.
- Database migrations in this release are backward-safe or have rollback steps documented.
- Team knows who owns incident response during release window.