Data Export Version 3

Available from January 2023 to June 2023.


Scheduled data exports are available to all users signed up after September '23, the legacy Grow and Pro plans, and Enterprise plans. If you're on a legacy Free or Starter plan and want to access this integration, migrate to our new pricing via your billing settings.

Version 3 Change Log

Expiration fields

  • grace_period_end_time allows you to distinguish between a subscriber's expected renewal date (end_time), and their new expiration date if they've been granted a grace period
  • effective_end_time represents the date a subscriber will lose access to their entitlement if a successful payment does not occur. It is the latest value of end_time and grace_period_end_time.
    • This field should be used to represent a subscriber's expiration date when modeling common RevenueCat measures like Active Subscriptions.

Taxes, commission, and proceeds estimation

  • tax_percentage represents the estimated portion of a transaction's total revenue that will be deducted from the purchasing store due to taxes. To learn more about RevenueCat's tax estimations, click here.
  • commission_percentage represents the portion of a transaction's total revenue that will be deducted from the purchasing store due to their commissions and fees.
    • commission_percentage may differ from the rate expected from the store (e.g. 30%) in cases where taxes are deducted by the store before commission is applied.

Ownership type

  • ownership_type can be used to distinguish between transactions that originated from family sharing and those that did not. RevenueCat excludes family sharing transactions from our measures in Charts.

Full export format


All dates and times are provided in UTC.

HeaderCan be nullComments
rc_original_app_user_idCan be used as a unique user identifier to find all of a user's transactions.
rc_last_seen_app_user_id_aliasCan be used together with rc_original_app_user_id to match transactions with user identifiers in your systems.
countryLast seen country of the subscriber.
product_identifierThe product identifier that was purchased.
start_timePurchase time of transaction.
end_timeExpected expiration time of subscription. Null when is_auto_renewable = false
For Google Play, end_time can be before start_time to indicate an invalid transaction (e.g. billing issue).
grace_period_end_time*Expiration time of a grace period (if applicable) for a subscription. Will remain set while a subscription is in its grace period, or if it exited its grace period without renewing. Null when a subscription is not in a grace period or expiration was not due to a grace period.
effective_end_time*Single reference point of a subscriber’s expiration and entitlement revocation; inclusive of each store’s logic for refunds, grace periods, cancellations (if one results in entitlement revocation), etc.
storeThe source of the transaction. Can be app_store, play_store, stripe, or promotional.
is_auto_renewabletrue for auto-renewable subscriptions, false otherwise.
is_trial_periodtrue if the transaction was a trial.
is_in_intro_offer_periodtrue if the transaction is in an introductory offer period.
is_sandboxtrue for transactions made in a sandbox environment.
price_in_usdThe gross revenue generated from the transaction. All prices are converted to USD. Can be null if product prices haven't been collected from the user's device.
takehome_percentage[DEPRECATED] The estimated percentage of the transaction price that will be paid out to developers after commissions, but before VAT and DST taxes are taken into account. (will be either 0.7 or 0.85)

We recommend using tax_percentage and commission_percentage to calculate proceeds instead. Learn more here.
tax_percentage*The portion of a transaction’s price that will be deducted by the store for taxes. VAT & Digital Services Taxes may be withheld by stores depending on the store and country. To learn more about how RevenueCat estimates taxes, click here.
commission_percentage*The portion of a transaction’s price that will be detected by the store for commission. In stores where taxes are deducted before commission, this value will not equal the published commission from a store, because that commission is calculated on the post-tax revenue.
store_transaction_idorderId or transaction_identifier. ​Can be used as unique id.
original_store_transaction_idorderId of first purchase or original_transaction_id. Can be used to find all related transactions for a single subscription.
refunded_atWhen a refund was detected, null if none was detected. Can be checked for existence to indicate transactions which have been refunded.
unsubscribe_detected_atWhen we detected an unsubscribe (opt-out of auto renew).
billing_issues_detected_atWhen we detected billing issues, null if none was detected.
purchased_currencyThe currency that was used for the transaction.
price_in_purchased_currencyThe product's price in the currency that was used for the transaction.
entitlement_identifiersAn array of entitlements that the transaction unlocked or null if it didn't unlock any entitlements.
renewal_numberAlways starts at 1. Trial conversions are counted as renewals. is_trial_conversion is used to signify whether a transaction was a trial conversion.
is_trial_conversionIf true, this transaction is a trial conversion.
presented_offeringThe offering presented to users. Can be used to filter Experiment transactions.
ownership_type*Will be PURCHASED when a recorded transaction results from the subscriber’s direct purchase of it, or FAMILY_SHARED when a recorded transaction results from the subscriber having received it through Family Sharing.

NOTE: The FAMILY_SHARED designation is only supported on App Store transactions.
reserved_subscriber_attributesThe reserved subscriber attributes set for the subscriber. Keys begin with $.
custom_subscriber_attributesThe custom attributes set for the subscriber.
platformLast seen platform of the subscriber.

*Newly added fields for Version 3

To learn more about how to use our transaction data, or get started with sample queries, click here.