.NET 10 MAUI  •  Android + iOS  •  compiles out of the box

Everything you ship
turns to recurring revenue

MidasKit is the .NET MAUI subscription boilerplate: auth with OTP and refresh tokens, RevenueCat in-app purchases, Stripe web checkout, free trials, and a ready-made paywall. Three weeks of integration hell — already done, documented, and compiling. Ship it in a weekend.

One-time purchase • Full source code • Use in unlimited apps you own

Already mid-project? There's a drop-in MidasKit Payments module that keeps your auth and architecture.

You know exactly which three weeks I mean

Building the app is the fun part. Then you hit the subscription wall:

RevenueCat has no official MAUI SDK

You're evaluating community wrappers, binding versions, and half-answered forum threads before you've sold a single subscription.

Play Billing breaks your Android build

AMM0000: namespace used in multiple modules — four hours of your life, and the fix is one line nobody tells you about.

Web checkout is a policy minefield

Post-Epic external payment links are allowed — sometimes, in some markets, under rules that changed twice this year.

Auth is table stakes but never free

OTP emails, JWT expiry, refresh rotation, token theft detection, secure device storage. All solved problems. All still your problem.

One interface. Three payment sources.

Store purchases (RevenueCat), web subscriptions (Stripe), and server-issued trials — merged behind a single ISubscriptionService. Your app code never knows the difference.

Gating a premium feature is three lines. The paywall page, purchase flow, restore button, and "subscribe on the web" path are already built.

// Gate any feature:
if (!await _subscriptions.IsPremiumAsync())
{
    await _nav.GoToPaywallAsync();
    return;
}

// Unified state, wherever they paid:
var state = await _subscriptions.GetStateAsync();
// state.IsPremium  → true
// state.Source     → "store" | "web" | "trial"
// state.ExpiresAt  → renewal date

"Can't I just have Claude build this?"

Honest answer: Claude will happily generate all of this code. We'd know — AI is part of how MidasKit was built. But generating the code was never the hard part. Here's what your first prompt can't give you:

Prompting from scratchStarting from MidasKit
The unknowns AI confidently wires the official RevenueCat MAUI SDK… which doesn't exist. You discover each dead end at build time, one prompt-debug loop at a time. The viable path is already chosen and pinned: the one actively-maintained wrapper, exact versions, verified against a real build.
The landmines The AMM0000 manifest-merger wall, the androidx minSdk floor, Stripe's current_period_end move — AI regenerates these problems as readily as it generates code, because they only surface when you run it. Already hit, already fixed, already documented — with comments explaining why, so the fixes survive your changes.
Verification Generated auth and payments code looks right. Is refresh-token reuse actually revoked? Is the webhook signature actually checked? You're reviewing security code line by line — that's the real cost. Compiled, run, and smoke-tested end-to-end: register → OTP → tokens → trial grant → refresh rotation. You start from working, not from plausible.
Policy, not code Whether an external payment link is allowed in a given storefront isn't a coding question. A generic answer here costs you an App Review rejection. Architecture designed around policy: server-controlled web tiers you can switch off per-market with no app update, plus a current policy guide.
Time to first paywall Days of prompt → build → paste-error → re-prompt across two projects, five integrations, and two store consoles. dotnet run + dotnet build -t:Run. Working paywall in ~10 minutes, your keys wired in an afternoon.

The punchline: MidasKit makes your AI assistant better, not obsolete. Clean MVVM, DI everywhere, one payments interface, real docs — it's exactly the context AI tools thrive on. Point Claude at MidasKit and say "add my features." That's the strongest prompt you'll write this year: the verified foundation is done, and every token goes toward what makes your app yours.

What's in the box

A complete, running system — MAUI client, ASP.NET Core backend, and the docs to wire both to your accounts in an afternoon.

🔐 Authentication, done properly

  • Email + password with OTP verification
  • JWT + rotating refresh tokens
  • Token-theft detection (family revocation)
  • KeyStore/Keychain session storage
  • Automatic 401 → refresh → retry client

💳 Store subscriptions

  • RevenueCat integration (Android + iOS)
  • Offerings-driven paywall — change plans without an app update
  • Purchase, restore, entitlement checks
  • Purchases follow the user's account

🌐 Web checkout (keep your margin)

  • Stripe Checkout links from your API
  • Webhook-driven entitlement — works even for purchases made on your website
  • Customer portal for self-serve management
  • Per-market on/off switch, server-side

🎁 Trials & the paywall

  • Server-issued free trials — no card required
  • Ready-made paywall page (store + web tiers)
  • Entitlement-gate pattern you copy anywhere
  • Mock service: build the whole flow on Windows, no store account

🧱 Clean architecture

  • MVVM with CommunityToolkit, DI throughout
  • Payments isolated in one self-contained module
  • SQLite zero-setup default; SQL Server/Postgres in one line
  • .NET 10, nullable enabled, no code-behind logic

📚 Docs that respect your time

  • 10-minute quick start
  • RevenueCat + Stripe step-by-step guides
  • External-payments policy guide (post-Epic)
  • Production launch checklist

Pricing

Two ways to buy. Both are one-time payments: one developer, unlimited apps you own, free updates for the 1.x line.

MidasKit Payments
For your existing MAUI app — drop-in subscriptions
$129$99
launch price through Sept 30, 2026 • one-time payment
  • Drop-in MAUI library: ISubscriptionService, RevenueCat wiring, ready-made paywall
  • Store-only integration in ~15 minutes — keep your auth, your backend, your architecture
  • Copy-in server source for Stripe web checkout + trials (bolts onto any DbContext via one small interface)
  • Windows mock service — build the flow with no store account
  • Integration guide + RevenueCat/Stripe setup docs
  • No auth system or app shell — that's MidasKit Complete
Get MidasKit Payments →

Buy MidasKit Payments and want everything later? Email your receipt within 60 days and pay only the difference.

14-day refund on either if it doesn't compile on a supported setup. That's the honest guarantee — no "results" promises, just working code.

FAQ

Which one should I buy?

Simple rule: starting a new app → MidasKit Complete. Adding subscriptions to an app you've already built → MidasKit Payments. Complete is the full solution (auth, backend, app shell, payments) you rename and build on. Payments is designed to drop into your existing architecture — it makes zero assumptions about your auth or database, connecting through two small interfaces instead. And if you buy Payments and change your mind, you pay only the difference to upgrade within 60 days.

Does it really compile out of the box?

Yes — the API runs with zero configuration (SQLite + console-logged OTP codes for local dev), and the Android app builds against the API on your machine. Wiring your own RevenueCat/Stripe accounts takes about an afternoon with the included guides.

Which platforms are tested?

Android is built and verified end-to-end. iOS targets compile and use the same cross-platform SDK wrapper, but final iOS verification requires a Mac + Apple Developer account — the code is structured for it and the docs cover the differences. Windows/Mac Catalyst run with a mock billing service for development.

Why RevenueCat instead of raw StoreKit/Play Billing?

Because RevenueCat has no official MAUI SDK, going raw means maintaining two native billing integrations yourself. MidasKit wraps the best-maintained community RevenueCat wrapper behind one interface — and if the ecosystem shifts, you swap one implementation class, not your app.

Is the external-payment (Stripe) path App Store legal?

In the US post-Epic, external purchase links are permitted; rules differ by market and change. MidasKit's web tiers are server-controlled so you can enable/disable them per market without an app update, and the included policy guide explains the current landscape. Purchases made on your own website unlocking the app has always been permitted.

What exactly do I get?

MidasKit Complete: a zip of the complete solution — Midas.App (MAUI), Midas.Api (ASP.NET Core), Midas.Shared, EF migrations, and 7 documentation files. MidasKit Payments: the Midas.Payments MAUI class library (compiles standalone), the copy-in server source for Stripe checkout + trials, and the integration guide. Either way it's full source, usable in unlimited apps you own; you can't resell the boilerplate itself.

Can't I just generate this with Claude or Copilot?

You can generate code that looks like this — and you'll still spend days discovering that RevenueCat has no official MAUI SDK, fixing the AMM0000 build wall, and line-reviewing generated auth and webhook security. MidasKit is the verified, shipped-and-tested version of that output, structured so AI tools work brilliantly on top of it. See the comparison above — we're pro-AI; we're just also pro-compiling.

Who built this?

An engineering leader with 25+ years in the .NET stack — banking, healthcare, and consumer apps — who built this exact stack for his own MAUI app and got tired of watching other devs suffer through the same integrations.

Not ready yet?

Join our mailing list and get launch-week pricing when MidasKit goes live.

Join Mailing List