Migrate from Stripe Billing
Time: ~15 minutes to read | Difficulty: Intermediate TagadaPay is not a drop-in Stripe replacement, but the object model maps cleanly. The biggest win: payment flows let you route across multiple processors — something Stripe cannot do without re-architecting.Object mapping
| Stripe | TagadaPay | Notes |
|---|---|---|
Customer (cus_) | Customer (cus_) | tagada.customers.create |
PaymentMethod (pm_) | PaymentInstrument (inst_) | Created via createFromToken — not attached directly |
SetupIntent | core-js tokenize + createFromToken | No separate SetupIntent object |
PaymentIntent (pi_) | Payment (pay_) | tagada.payments.process |
Price (price_) | Price (price_) | Lives inside a product variant |
Product (prod_) | Product (product_) | tagada.products.create with recurring variant |
Subscription (sub_) | Subscription (sub_) | tagada.subscriptions.create |
Invoice | — | Build from orders + payments + webhooks |
BillingPortal | — | Build your own with headless SDK |
stripe.webhooks.constructEvent | tagada.webhooks.constructEvent | Same ergonomics, sha256= HMAC |
Code mapping
Create a customer
Save a card
Charge + subscribe
Webhooks
Migration phases
Phase 1 — New subscriptions on TagadaPay
- Keep existing Stripe subs running
- Route new signups through TagadaPay (SaaS quick start)
- Use a cascade payment flow: sandbox for dev → live TPA for production
- Map Stripe webhook handlers to TagadaPay events:
| Stripe event | TagadaPay event |
|---|---|
invoice.paid | subscription/rebillSucceeded |
invoice.payment_failed | subscription/rebillDeclined |
customer.subscription.deleted | subscription/canceled |
payment_intent.succeeded | payment/succeeded |
Phase 2 — Processor flexibility (TagadaPay advantage)
This is what Stripe cannot offer:Phase 3 — Migrate existing subscriptions
TagadaPay supports processor migration without re-vaulting:What Stripe has that TagadaPay doesn’t (yet)
| Feature | Workaround |
|---|---|
| Invoices / PDF | Build from payments + orders; email via your app |
| Usage/metered billing | Custom metering in your app + payments.process |
| Customer billing portal | Build with headless SDK customer hooks |
| Subscription plan changes | Manual cancel + re-create (upgrade API coming) |
Get started
SaaS Quick Start
Working example tested in production
Payment Flows
Multi-TPA routing — the reason to switch
