The Scheduled Data Export integration is available on the [Pro](🔗) plan.

# 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
Can be used as a unique user identifier to find all of a user's transactions.
Can be used together with `rc_original_app_user_id` to match transactions with user identifiers in your systems.
`country`Last seen country of the subscriber.
The product identifier that was purchased.
Purchase time of transaction.
`end_time`Expected 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 cancellations, grace periods, etc.
The source of the transaction. Can be `app_store`, `play_store`, `stripe`, or [`promotional`](🔗).
`true` for auto-renewable subscriptions, `false` otherwise.
`true` if the transaction was a trial.
`true` if the transaction is in an introductory offer period.
`true` for transactions made in a [sandbox environment](🔗).
`price_in_usd`The 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.
[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](🔗).
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](🔗).
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.
orderId or transaction_identifier. **​Can be used as unique id**.
orderId of first purchase or `original_transaction_id`. Can be used to find all related transactions for a single subscription.
`refunded_at`When a refund was detected, `null` if none was detected. Can be checked for existence to indicate transactions which have been refunded.
`unsubscribe_detected_at`When we detected an unsubscribe (opt-out of auto renew).
`billing_issues_detected_at`When we detected billing issues, `null` if none was detected.
`purchased_currency`The currency that was used for the transaction.
`price_in_purchased_currency`The product's price in the currency that was used for the transaction.
`entitlement_identifiers`An array of entitlements that the transaction unlocked or `null` if it didn't unlock any entitlements.
Always starts at 1. Trial conversions are counted as renewals. `is_trial_conversion` is used to signify whether a transaction was a trial conversion.
If `true`, this transaction is a trial conversion.
`presented_offering`The 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_attributes`The [reserved subscriber attributes](🔗) set for the subscriber. Keys begin with `$`.
`custom_subscriber_attributes`The custom attributes set for the subscriber.
`platform`Last 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](🔗).