TurboJet
Payments

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.

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.

On this page