Documentation
Frequently asked questions
Which payment providers does PayCraft support?
Stripe, Razorpay, and native store billing (Google Play Billing and Apple StoreKit). You connect the providers you want per app; the SDK renders one paywall and routes checkout to the right provider per platform automatically.
Does the app talk to the payment provider directly?
No. The app only queries Supabase (the source of truth). Provider webhooks keep Supabase in sync, so the SDK never handles raw card data — it just reads the resulting entitlement.
How do free trials work?
Configure a trial length per product in the dashboard. PayCraft provisions the matching offer on every connected provider — Google Play & App Store free-trial offers, Stripe trial period, Razorpay — for new subscribers. Changes reflect in the app in realtime.
How is billing state kept up to date in the app?
The SDK is cache-first with a tiered refresh policy, plus realtime push: a config or entitlement change broadcasts to the SDK, which refetches immediately — so a dashboard price/trial change or a new purchase reflects without a cold relaunch.
Is there a test mode?
Yes — Stripe-style. Inject a pk_test_… key in debug builds and pk_live_… in release builds; the SDK and dashboard pick mode-appropriate payment links and webhook routes automatically.
Can I self-host?
Yes. Point the SDK at your own Supabase backend via PayCraftBackend.SelfHosted(...). See the self-host guide for Docker Compose and Helm.
What does it cost?
See the Pricing page. There's a free tier to start with no card required.