Purchase and subscription validation - Overview

At a glance: Understand how AppsFlyer validates purchases and subscriptions, and compare the two available solutions: Receipt validation and ROI360 store revenue.

About purchase and subscription validation

Purchase and subscription validation is essential for ensuring the accuracy and reliability of your revenue data. When users make purchases in your app - whether one-time or subscription-based - validating those transactions with the app stores (Apple App Store and Google Play) ensures that only legitimate, paid transactions are measured and attributed.

AppsFlyer offers two solutions that validate and measure in-app purchases and subscription revenue: Receipt validation and ROI360 store revenue.

The article provides a high-level introduction to each solution and a feature comparison to help you determine which option is right for your app.

The two solutions for purchase and subscription validation 

Receipt validation

Receipt validation is AppsFlyer’s free solution for verifying in-app purchases and subscriptions on iOS and Android. It ensures that only real transactions are measured. It does this by validating receipts directly with the app stores.

Using this solution, the AppsFlyer SDK integrated into your app provides minimal data, such as the product ID, purchase ID, and type. AppsFlyer then retrieves the full revenue details from the store response. This includes the amount and currency. This solution does not provide net revenue calculation, full subscription funnel coverage, refund handling, and automated purchase detection & deduplication. 

Use Receipt validation to make informed decisions and optimize campaigns based on verified revenue data.

For more information, see:

ROI360 store revenue Premium

Important!

ROI360 store revenue is available only to customers on the ROI360 premium plan. To check your plan or upgrade, contact your Customer Success Manager (CSM).

The ROI360 store revenue solution is AppsFlyer’s premium product for complete and accurate revenue measurement from in-app purchases and subscriptions. It validates transactions server-to-server with the app stores and returns enriched, verified revenue data.

Within this server-to-server validation flow, ROI360 store revenue provides deduplication, calculates net revenue after store fees and taxes, and offers full subscription lifecycle coverage, including renewals, cancellations, refunds, and upgrades. It also processes events from existing subscribers, and it resolves delayed payments from stores like Google Play.

Use this solution if you need complete revenue accuracy, subscription lifecycle insights, and support for complex business models.

For more information, see:

Compare Receipt validation and ROI360 store revenue

Use the tables below to determine which solution best fits your needs.

Compare features

Feature Receipt validation ROI360 store revenue Premium
Receipt validation
Verifies in-app purchases to filter out fraudulent transactions.
Automated purchase detection & deduplication
Automatically detects IAPs and subscriptions, including transactions from existing subscribers, and removes duplicates for cleaner reporting.
Refund handling
Detects refunds and attributes them to the original purchase to reflect true revenue.
Complete IAP measurement
Handles family sharing and reports the final outcome of pending purchases using App Store confirmation.
Full subscription funnel coverage
Measures renewals, upgrades, and conversions to reflect the full value from your subscriber base.
Net revenue calculation
Calculates both gross and net revenue by deducting store fees and taxes automatically.

Compare in-app purchase event support

Event name Receipt validation ROI360 store revenue
af_purchase
af_purchase_refund
af_purchase_pending
af_purchase_canceled
af_purchase_free
af_purchase_sandbox_sdk
af_purchase_sandbox_s2s

Compare Subscription-related event support

Event name Receipt validation ROI360 store revenue
af_ars_trial_started
af_ars_trial_canceled
af_ars_trial_churned
af_ars_trial_converted
af_ars_subscription_started
af_ars_subscription_canceled
af_ars_subscription_paused
af_ars_subscription_resumed
af_ars_subscription_churned
af_ars_subscription_refunded
af_ars_subscription_billing_grace
af_ars_subscription_renewed
af_ars_subscription_xgraded
af_ars_existing_subscriber
af_ars_sandbox_sdk
af_ars_sandbox_s2s