Send Consumption Information
Send consumption information about an In-App Purchase to the App Store after your server receives a consumption request notification.
URL
PUT https://api.storekit.apple.com/inApps/v2/transactions/consumption/{transactionId}Sandbox URL
PUT https://api.storekit-sandbox.apple.com/inApps/v2/transactions/consumption/{transactionId}Path Parameters
| Name | Type | Description |
|---|---|---|
transactionId Required | transactionId | The transaction identifier for which you’re providing consumption information. You receive this identifier in the |
Response Codes
| Status | Reason | Type | Description |
|---|---|---|---|
| 202 | Accepted | The App Store server received the consumption information. | |
| 400 | Bad Request Content-Type: application/json | (InvalidTransactionIdError | FamilyTransactionNotSupportedError | AppTransactionIdNotSupportedError | InvalidCustomerConsentedError | InvalidDeliveryStatusError | InvalidSampleContentProvidedError | InvalidRefundPreferenceError | ConsumptionPercentageOutOfRangeError | UndeliveredConsumptionPercentageNonZeroError | ConsumptionPercentageAutoRenewableSubscriptionError | AdvancedCommerceTransactionNotSupportedError) | Invalid request. See the error code for more information. If there’s no error code, the request is malformed. |
| 401 | Unauthorized | The JSON Web Token (JWT) in the authorization header is invalid. For more information, see Generating JSON Web Tokens for API requests. | |
| 404 | Not Found Content-Type: application/json | TransactionIdNotFoundError | The transaction identifier wasn’t found. |
| 429 | Content-Type: application/json | RateLimitExceededError | The request exceeded the rate limit. For more information, see Identifying rate limits. |
| 500 | Internal Server Error Content-Type: application/json | GeneralInternalError | Server error. Try again later. |
Mentioned in
Discussion
The App Store uses a variety of factors to determine if a refund request is approved or denied. To help inform and improve the refund process, you can send information about a customer’s consumption of the In-App Purchase to the App Store when the customer requests a refund. The App Store uses the consumption information you provide to inform its refund decisions.
When a customer initiates a refund request for any product type (consumable, non-consumable, non-renewing subscription, or auto-renewable subscription), the App Store sends a CONSUMPTION_REQUEST notificationType to your server through your App Store Server Notifications V2 endpoint. If the customer provided consent, respond by calling this API and sending the consumption data in the ConsumptionRequest to the App Store. If not, don’t respond to the CONSUMPTION_REQUEST notification.
Respond within 12 hours of receiving the CONSUMPTION_REQUEST notification.
For information about configuring your server to receive App Store server notifications, see Enabling App Store Server Notifications. For information about initiating refund requests in an app, see any of the refund request methods, including beginRefundRequest(in:), beginRefundRequest(for:in:), beginRefundRequest(in:), and beginRefundRequest(for:in:).
Obtain valid consent
You must obtain valid consent from the customer before sharing their personal data with Apple in the Send Consumption Information API. You, the developer, are solely responsible for obtaining valid consent because you’re sharing with Apple the data that you collected from the customer.
The requirements to obtain valid consent vary under applicable law, and Apple can’t advise you on specific ways to obtain valid consent. Developers are responsible for determining specific compliance with applicable laws. If your app violates Apple’s guidelines, App Review will reach out and work with you to address any concerns.
Here are some general guidelines to keep in mind for obtaining valid consent:
Valid consent is freely given, specific, informed, and unambiguous as to a customer’s wishes with respect to their personal data.
As an example, when requesting consent, you may include: clear language that conveys to a customer that you will provide Apple with some of their personal data to assist with reviewing the customer’s app refund requests; clear language that conveys to customers that they can withdraw their consent at any time; and a method for customers to give their affirmative consent.
Opt-in consent is a higher standard for consent than offering an opt-out. Generally, if you don’t offer an individual the opportunity to opt out, it can be difficult to show that consent is freely given.
After you’ve obtained consent, if there is a change in circumstances causing you to conclude that the customer’s consent is no longer valid — for example, due to a change in the way you use or share data, or if the customer withdraws consent for this purpose — you should update the customerConsented flag and not send any further data from that customer.
The data you share with Apple through the Send Consumption Information API isn’t used for tracking. You must separately obtain consent from customers when sharing data with Apple using the Send Consumption Information API.
Disclose data usage
If you adopt the Send Consumption Information API, answer the app privacy questions to disclose in your labels any data you collect from your customers and what you’re using it for. For more information about app privacy labels, see App privacy details on the App Store.
Apple uses and protects the data you share through the Send Consumption Information API in accordance with Apple’s Privacy Policy. For additional information about how Apple protects data, see Apple Platform Security Guide. Apple retains the data you provide through the Send Consumption Information API for the period necessary to fulfill the purpose for which the data was collected, which is to improve the refund process by obtaining data that assists with reviewing the customer’s refund request. Apple may share the data you provide through the Send Consumption Information API with service providers who act on our behalf, our partners, or others at your direction. Apple will not share the data with third parties for their own marketing purposes. For more information, see App Store & Privacy.
Handle requests to access or delete consumption data
If your customers request access to or deletion of their personal data related to consumption information, inform them that they may submit requests directly to Apple by visiting privacy.apple.com. If your app stores data in CloudKit on behalf of your customers, see Responding to Requests to Delete Data, Providing User Access to CloudKit Data, and Changing Access Controls on User Data for more information.
HTTP Body
The request body.