What information comes with Apple App Store Transactions in an app?
A guide that describes what information is provided with each receipt of an In-App Purchase or Subscription in an app using StoreKit.
In the event that you are looking for the information that comes with transactions on Apple's App Store Server API (ASSA), what ASSA is or how you can use ASSA, consult the guides linked below.
The transaction information that is available to a business in-app using Apple's StoreKit framework includes:
Environment
The environment property informs a business of whether the transaction was generated on the Apple App Store or in a Sandbox (i.e. a testing environment).
This property is useful as it allows a business to separate the data from customers e-commerce transactions and that which is required to create a functional, high performing app.
OriginalID
The original identifier for the transaction.
Original Purchase Date
The original purchase date of an In-App Purchase or Subscription (i.e. a product).
This is useful to a business in the event that the product offering changes and a business wants to make sure customers maintain access to features based on their loyalty.
id
A unique identifier for the transaction.
webOrderLineItemID
A unique identifier that identifies subscription purchase events across devices, including subscription renewals.
appBundleId
The bundle identifier for the app on which the In-App Purchase or Subscription was made.
productId
The product identifier of the In-App Purchase or Subscription.
productType
The product type property lets businesses know if the transaction relates to a Consumable or a Non-Consumable In-App Purchase or a Non-Renewing or an Auto-Renewable Subscription.
subscriptionGroupID
The subscription group id property only exists if the transaction relates to an Auto-Renewable Subscription and lets businesses know what subscription group the transaction pertains to.
isUpgraded
The is upgraded property only exists if the transaction relates to an Auto-Renewable Subscription and lets businesses know if the transaction relates to a subscription that the customer has chosen to upgrade or downgrade from.
This property becomes available to a transaction if a customer buys an Auto-Renewable Subscription, and after a period of time, the customer chooses to change their level of service to a higher more expensive subscription or to a lower, cheaper subscription.
To learn if a customer has upgraded or downgraded their subscription outside of the app businesses must either:
- Setup a backend that uses the App Store Server API, make an API call for the customers purchase history and analyze it.
- Setup App Store Server Notifications to be notified in real-time.
expirationDate
The expiration date property only exists if the transaction relates to an Auto-Renewable Subscription and lets businesses know when the Auto-Renewable Subscription renews or expires.
To determine the renewal state in-app (i.e. renews or expires) businesses must consult the transaction subscription info using StoreKit.
To learn if a customer has cancelled their subscription (i.e. the subscription will expire at the end of the relevant period) outside of an app businesses must either:
- Setup a backend that uses the App Store Server API, make an API call for the customers purchase history and analyze it.
- Setup a backend that uses App Store Server Notifications to be informed in real-time.
By setting up App Store Server Notifications businesses can communicate with the customer over e-mail in real-time and offer them a promotional offer or custom offer code to entice them to keep using a service at a free or discounted price.
SubscriptionInfo
The subscription info is a structure which only exists if the transaction relates to an Auto-Renewable Subscription. This structure grants businesses information about an auto-renewable subscription, which includes:
- The status of a subscription which can be used to know if the subscription is renewing, expiring, in a grace period, in billing retry, expired or revoked.
- Information about the subscription renewal period, such as when it is renewing or expiring.
- Whether the subscription is eligible for an introductory offer and the details of that introductory offer.
ownershipType
Ownership type lets businesses know if a customer has access to a Non-Consumable or Auto-Renewable Subscription through Family Sharing.
purchaseDate
The date that App Store charged the customers account for a purchased or restored product (Consumable or Non-Consumable In-App Purchase or a Non-Renewing Subscription), or for an Auto-Renewable Subscription purchase or renewal.
Purchased Quantity
The purchase quantity property is only available for Consumable In-App Purchases and lets businesses know how many consumables the customer bought.
offerID
The offer id property only exists if the transaction relates to an Auto-Renewable Subscription that includes a promotional offer or a custom offer code and lets businesses know what offer was used to purchase the Auto-Renewable Subscription.
If the property is empty, the transaction did not use an offer.
offerType
The offer type property only exists if the transaction relates to an Auto-Renewable Subscription that includes an introductory offer, a promotional offer or a custom offer code and lets businesses know if the purchase of an Auto-Renewable Subscription included an introductory offer, a promotional offer or a custom offer code.
If the property is empty, the transaction did not use an offer.
revocationDate
revocationReason
appAccountToken
A unique identifier that associates the transaction with a customer on an app.
This could be seen as a customers unique identifier.
Looking for more information on building e-commerce Apple apps?
Read our business guide to get our latest market and customer research, perspective and recommendations on building Apple e-commerce apps that use In-App Purchases and Subscriptions.
Looking to learn more about developing apps with StoreKit 2?
Read our comprehensive development guide linked below to learn about all the secrets behind developing In-App Purchases and Subscriptions with StoreKit 2.