Introduction

Why OpenIAP

Stop translating purchasesOne generated, type-safe contract keeps every store and framework SDK aligned.

01 / The problem

The rewrite tax

  1. 01

    APIs diverge

    Methods, types, and events change with every store and SDK.

  2. 02

    Fixes repeat

    Maintainers solve the same lifecycle and error cases in parallel.

  3. 03

    Platforms drift

    StoreKit and Play Billing updates reach each framework differently.

02 / The contract

One source, many targets

Change the contract once. Generate the same shape for every language, then implement it against the native stores.

  1. SourceGraphQL schemaOne contract
  2. GenerateNative typesSwift · Kotlin · TS · Dart · C# · GDScript
  3. ImplementStore modulesStoreKit 2 · Play Billing
  4. ShipFramework SDKsOne API in every runtime

03 / The API

A small surface on purpose

01

Methods

Start and complete the purchase lifecycle

02

Types

Share one model without hiding native fields

03

Events

React to state changes with predictable signals

04 / Generated types

Same model, native language

Each target gets idiomatic generated types while the field model stays aligned across the ecosystem.

swift
func displayLabel(for product: Product) -> String {
    switch product {
    case let .productIos(ios):
        return ios.title + " " + ios.displayNameIOS
    case let .productAndroid(android):
        return android.title + " " + android.nameAndroid
    }
}

05 / Runtime

The purchase loop

The same lifecycle travels from connection through server-side validation to a finished transaction.

  1. 01ConnectinitConnection()
  2. 02ListenpurchaseUpdatedListener
  3. 03FetchfetchProducts()
  4. 04PurchaserequestPurchase()
  5. 05ValidateverifyPurchaseWithProvider()
  6. 06FinishfinishTransaction()
Explore the full purchase lifecycle

06 / Reach

Where it ships

Native store depth below, framework choice above.

One more thing

Meet IAPKit

The backend for every purchase

One backend validates purchases from Apple StoreKit 2, Google Play, Meta Horizon, Amazon Fire OS, and Vega OS, then returns one normalized result.

AppleGoogle PlayMeta HorizonFire OSVega OS
Server validationEntitlementsStore MCPRevenue