Overview
Mayar storefront checkout and multi-provider SaaS membership billing.
TurboJet includes payment support for Mayar, Polar, Midtrans, and DOKU. There are two layers — do not mix them up.
Storefront vs SaaS membership
Storefront (this host): one-time Solo / Pro sales via Mayar payment links on the marketing app. See Storefront checkout.
SaaS membership (kit): STARTER subscriptions through adapters selected
by features.paymentsProvider. Dashboard UI and most webhook mounts live
in the full TurboJet monorepo; packages remain here under @repo/payments
and packages/api billing.
Storefront checkout
Solo / Pro Mayar payment links on marketing.
Plans
STARTER subscription plans and lookup keys.
Mayar
Membership + storefront; default provider.
Polar
Polar.sh products and access token.
Midtrans
Recurring subscription plans.
DOKU
FlexiBill subscription plans.
Choose a SaaS membership provider
Set the active provider in packages/shared/src/features.ts:
export const features = {
onboardingFlow: true,
paymentsProvider: PaymentProvider.Mayar, // Mayar | Polar | Midtrans | Doku
} as const;Configure env vars for that provider only, then redeploy. The marketing storefront always uses Mayar payment links — it does not follow this flag.
Frequently asked questions
Which payment providers does TurboJet support?
Mayar, Polar, Midtrans, and DOKU. Selection for SaaS membership is features.paymentsProvider.
How do I switch SaaS providers?
Change paymentsProvider in features.ts, update env credentials, and paste real product/plan IDs into lookupKeys in subscription-plans.ts.
Does the marketing Solo/Pro checkout use the feature flag?
No. Storefront checkout is hardwired to Mayar payment links via POST /api/checkout.
Which webhooks are hosted here?
Only {MARKETING_URL}/api/webhooks/mayar. Polar / Midtrans / DOKU webhook HTTP routes are not mounted on this marketing+docs host unless you remount them.