Integrate in-app purchases into your Flutter app

Add in-app purchases to iOS and Android using Adapty’s Flutter SDK. Manage receipts, monitor subscription status, and skip building your own backend. One integration gives everything you need.
// Your app's code
import 'package:adapty_flutter/adapty_flutter.dart';
Adapty().activate();
 
// Make a purchase, Adapty handles the rest
try {
	final profile = await Adapty().makePurchase(product: product);
	// successful purchase
} on AdaptyError catch (adaptyError) {
	// handle the error
} catch (error) {
	// handle another errors
}

No need to build a backend for Flutter in-app purchases

Schedule a demo

Why choose Adapty SDK?

Track subscription status across platforms

You’ll always know if the user has an active subscription across iOS and Android.

Validate receipts on the backend

No need to build your own validation as Adapty takes care of it.

Handle all kinds of subscription states

Free trials, upgrades, promo offers, family sharing, renewals, and more.

Scale on a enterprise-grade core

We ship updates often, keep the SDK stable, and run on >99.99% SLA.
Configuring platforms
Installing Adapty SDK
await adapty.activate(
'PUBLIC_SDK_KEY',
{
customerUserId: 'YOUR_USER_ID',
}
);
Processing purchasing events

Easy integration for Flutter

Use 5 SDK methods to handle Flutter IAP

// Your app's code
try {
    final profile = await Adapty().makePurchase(product: product);
    // successful purchase
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
}
 
 
// Your app's code
try {
    final profile = await Adapty().restorePurchases();
    // check the access level
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
}
 
 
// Your app's code
try {
    await Adapty().identify(customerUserId);
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
}
 
 
 
// Your app's code
final builder = AdaptyProfileParametersBuilder()
  ..setFirstName("John")
  ..setLastName("Appleseed")
try {
    await Adapty().updateProfile(builder.build());
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
}
// Your app's code
try {
  await Adapty().updateAttribution("<attribution>", source: "<source>", networkUserId: "<networkUserId>");
} on AdaptyError catch (adaptyError) {
  // handle the error
} catch (e) {
}
 
 
 
Start for free

Adapty powers apps at every stage from indie to top publishers

The Flutter SDK includes everything you need to grow your app

Paywall A/B testing

Increase subscription revenue without app releases

Manage, target, localize and personalize paywalls without leaving your browser.
Increase app revenue

Cut refund rate by 40%

Adapty automatically shares user activity data with Apple during refund requests, helping reduce the number of approved refunds.
Set up Refund Saver
Refund Rate
App Monetization Strategies

Know your subscription numbers at any moment

Measure your in-app economy from trials to refunds with a ready-to-use, real-time subscription BI.
See subscription BI

No-code paywall builder

Create beautiful native paywalls for iOS, Android, Flutter, and React Native – no developers needed.
Create paywalls within minutes
No Code Paywall Builder

FAQ

Trusted for usability and customer service

Based on 500+ reviews
G2 Award: Best Results, winter 2025
G2 Award: High Performer, winter 2025
G2 Award: Best Usability, winter 2025
G2 Award: Best Relationship, winter 2025
G2 Award: Most Implementable, winter 2025