Auth. Plans. Payments. One API.
QRIS, GoPay, GCash, bank transfers โ built in, not bolted on. Ship in Indonesia and the Philippines without stitching vendors together.
Sign in to Karejo
Enter your credentials to continue
Don't have an account? Sign up
Powered by Astapa
Choose your plan
Select a plan to continue to Karejo
Powered by Astapa
The problem
Four vendors to launch one product?
Auth โ payments โ plans
Three vendors, three dashboards, zero shared context.
Weeks of glue code
Webhooks, state sync, role checks โ before you ship a single feature.
Stale plan data
User upgrades, your app still shows the old tier.
New market = new vendor
Every region means another gateway integration.
How it works
Three steps. One token. Ship today.
Redirect to hosted login
One line. Email, Google, GitHub โ pre-built.
User picks a plan & pays
QRIS, GoPay, GCash, bank transfer. All handled.
Read one JWT, know everything
Identity, plan, role, org, payment status โ one token.
Before & after
One token check replaces your middleware stack
// the glue code const session = await getSession(req); if (!session) return redirect("/login"); // Fetch payment status from Stripe const sub = await stripe.subscriptions .retrieve(session.stripeSubId); // Fetch plan from your database const user = await db.user.findUnique({ where: { id: session.userId }, include: { plan: true, org: true }, }); // Check role permissions const canAccess = checkPermissions( user.org?.role, requiredPermission );
3 vendors ยท 4 API calls ยท ~200ms per request
// that's it const token = await verifyJWT( req.headers.get("Authorization") ); const { plan, role, org_permissions, payment_status } = token; if (plan !== "pro") { return redirect("/upgrade"); }
1 platform ยท 0 API calls ยท instant
{ "sub": "user-uuid", "plan": "pro", "role": "admin", "org_id": "org-uuid", "payment_status": "active", "custom_claims": { ... } }
Your dashboard, ready to go
See everything in one place
Acme SaaS
Web1,247
834
12,891
Project details
- Client ID
- ast_cl_7f8a9b2c...
- Type
- Web
- Grant types
- authorization_code, refresh_token
- Redirect URIs
- 2 configured
- Plans
- 3 defined
- Organizations
- Enabled
What you get
Auth, payments, and plans โ one platform
Built for builders
Everything you need, nothing you don't
Local payments, global standard
MCP-native agent auth
Multi-tenant from the start
Mobile-first auth flows
Sandbox โ production in one click
Built-in analytics
API surface
Five endpoints. Standard OAuth 2.0. No SDK required.
Redirect, exchange, verify โ works with any JWT library in any language. Ship your integration in an afternoon, not a sprint.
Simple pricing
Pay for users, not features
Every tier gets the full platform โ auth, payments, JWTs, orgs. You only upgrade when your user base grows.
Free
Up to 100 MAU
Validate your idea with real auth, real payments, real JWTs. No credit card, no expiry.
- Hosted login with your branding
- Google & GitHub OAuth
- JWT with plan + role + payment status
- Payment sandbox (QRIS, GoPay, OVO)
- 1 project
- Community support
Starter
Up to 1,000 MAU
Go live with production payments, webhooks, and org support.
- Everything in Free
- Production payments (QRIS, GoPay, OVO, bank transfer)
- Subscription entitlements in JWT
- Webhook events
- 3 projects ยท Organization & RBAC
- Email support (24h response)
Scale
Up to 10,000 MAU
Growing traffic. Priority support, custom domain, and 99.9% SLA.
- Everything in Starter
- Unlimited projects
- Custom domain
- Priority support (4h response)
- 99.9% uptime SLA
- Dedicated onboarding call
Growing past 10K MAU? Let's build a custom plan.
Stop gluing vendors together. Start shipping.
One platform for auth, payments, and plans. One JWT that carries everything your app needs. Go from zero to production today.