Quickstart

One SDK call. Live in a day.

Add the SDK, configure your publishable key, and call checkout — your existing App Store Connect and Play Console products sync automatically. No payment backend, no entitlement server, no catalog re-entry. Ships for iOS, Android, and Flutter.

The steps

Four steps from install to live

~1 day, one checkout call, three SDKs. No payment backend, no entitlement server, no catalog re-entry — the platform handles the parts you'd otherwise build.

1

Add the SDK

One line in your package manager — Swift Package Manager, Gradle, or pub. No native build steps to wire up.

2

Configure your key

Drop in your publishable key from the dashboard. That's the whole setup — the SDK fetches your catalog at runtime.

3

Call the checkout method

One method on the buy button. The SDK routes each purchase automatically — direct web checkout where it's allowed, StoreKit or Play Billing as a compliant fallback. Same call on every platform, no branching in your code.

4

Sync your store catalog

Your App Store Connect and Play Console products import automatically — no re-entering prices, IDs, or subscription groups.

The code

Configure, then checkout

Configure with your publishable key, then call checkout on the buy button. Same shape on iOS, Android, and Flutter.

import ZeroSettleKit
struct PaywallView: View {
@State var product: ZSProduct?
var body: some View {
Button("Upgrade to Pro") {
product = ZeroSettle.shared.product(for: "pro_monthly")
}
.checkoutSheet(item: $product) { result in
// done
}
}
.onAppear {
ZeroSettle.shared.configure(publishableKey: "zs_live_...")
}
}
import io.zerosettle.sdk
class PaywallActivity : ComponentActivity() {
override fun onCreate(state: Bundle?) {
ZeroSettle.configure("zs_live_...")
val product = ZeroSettle.product("pro_monthly")
setContent {
Button(onClick = { ZeroSettle.checkout(product) }) {
Text("Upgrade to Pro")
}
}
}
}
import 'package:zerosettle/zerosettle.dart';
class PaywallView extends StatelessWidget {
Widget build(BuildContext ctx) {
ZeroSettle.configure('zs_live_...');
final product = ZeroSettle.product('pro_monthly');
return ElevatedButton(
onPressed: () => ZeroSettle.checkout(product),
child: Text('Upgrade to Pro'),
);
}
}
Read the full integration guide →
Start with one product

A calmer way to grow app revenue.

Connect your catalog, unify customer access, and launch your first pricing experiment — then turn on Autopilot when you’re ready to scale.