Skip to main content

Release 14.5.0 - Built-in Purchase Verification (aka Receipt Validation)

· 3 min read
Hyo
React Native IAP Maintainer

IAPKit Integration

React Native IAP 14.5.0 brings built-in purchase verification (aka receipt validation) powered by IAPKit. Now you can verify purchases with enterprise-grade backend validation using a single API call—no server setup required.

Why IAPKit?

Purchase verification is critical for any production IAP implementation. Without proper server-side validation, your app is vulnerable to receipt tampering, replay attacks, and fraudulent transactions. IAPKit solves this with a battle-tested backend infrastructure. Sign up at iapkit.com to get your API key and start verifying purchases in minutes.

Key Benefits

BenefitDescription
🔒Security FirstServer-side validation that prevents fraud, receipt tampering, and token reuse. Far more secure than client-only verification.
🔗Unified APISingle endpoint for both Apple App Store and Google Play. No separate validation logic needed.
Zero InfrastructureNo server setup required. IAPKit handles Apple and Google API complexity for you.
🚀Production ReadyEnterprise-grade reliability with comprehensive error handling and detailed responses.

Getting Started

Use the new verifyPurchaseWithProvider API to verify purchases through IAPKit:

import {verifyPurchaseWithProvider} from 'react-native-iap';

const result = await verifyPurchaseWithProvider({
provider: 'iapkit',
iapkit: {
apiKey: 'your-iapkit-api-key',
apple: {jws: purchase.purchaseToken!},
google: {purchaseToken: purchase.purchaseToken!},
},
});

if (result.iapkit?.isValid) {
// Purchase verified - grant entitlement
console.log('Purchase state:', result.iapkit.state);
console.log('Store:', result.iapkit.store);
}

The API returns a unified VerifyPurchaseWithProviderResult with:

  • isValid - Whether the purchase passed verification
  • state - Detailed purchase state (entitled, pending, expired, canceled, etc.)
  • store - The store where the purchase was made (apple, google, horizon)

🚀 Highlights

  • IAPKit Integration — Built-in purchase verification (aka receipt validation) with enterprise-grade backend
  • OpenIAP 1.3.0 — Updated to openiap-apple v1.3.0, openiap-google v1.3.10, and openiap-gql v1.3.0
  • New IapStore Type — Unified store identification: 'unknown' | 'apple' | 'google' | 'horizon'
  • Enhanced Purchase Types — New store field on Purchase (replaces deprecated platform)

🔁 Type System Updates

This release brings important type refinements aligned with the OpenIAP 1.3.0 specification:

New IapStore Type

export type IapStore = 'unknown' | 'apple' | 'google' | 'horizon';

Updated Purchase Type

export interface Purchase {
// ...existing fields
store: IapStore; // NEW - unified store identification
platform: IapPlatform; // @deprecated - use store instead
}

Request Parameters

Request parameters now support apple/google keys alongside the legacy ios/android:

// New (recommended)
requestPurchase({
request: {
apple: {sku: productId},
google: {skus: [productId]},
},
type: 'in-app',
});

// Legacy (still supported but deprecated)
requestPurchase({
request: {
ios: {sku: productId},
android: {skus: [productId]},
},
type: 'in-app',
});

📦 Installation

npm install react-native-iap@14.5.0
# or
yarn add react-native-iap@14.5.0
# or
bun add react-native-iap@14.5.0

🔗 References

Questions or feedback? Reach out via GitHub issues.