App Store Server API Updates: Streamlining In-App Purchase Management
Apple has announced significant updates to the App Store server APIs for In-App Purchase, designed to simplify and enhance app server responsibilities. These improvements focus on three critical areas: managing In-App Purchases, signing requests, and participating in refund decisions.
Key Highlights
Bottom Line: These updates provide developers with more flexible transaction management, unified signing processes, and simplified refund handling—making In-App Purchase integration more powerful and developer-friendly than ever.
New Transaction Identifiers
Introducing appTransactionId
The most significant addition is the appTransactionId, a globally unique identifier for each Apple Account per app. Unlike existing transaction IDs that are purchase-specific, this identifier:
- Remains consistent across all App Store transaction objects
- Stays static across redownloads, refunds, repurchases, and storefront changes
- Works with Family Sharing (each family member gets a unique ID)
- Provides a "one-stop identifier solution" for associating customer accounts with all their transactions
Enhanced appAccountToken Management
A new Set App Account Token endpoint now allows you to:
- Set appAccountToken for purchases made outside your app (like offer code redemptions)
- Update existing appAccountToken values for past transactions
- Fix inconsistencies in customer account associations
- Apply tokens to all product types, with automatic carryover for subscription renewals
New Get App Transaction Info Endpoint
For the first time, you can fetch app download information directly on your server without relying on the device. This endpoint helps you understand app performance with business model changes by providing access to app version, platform, and environment data.
Unified Signing Process
Apple has streamlined the signing process by adopting a unified JWS (JSON Web Signature) format across all use cases. Key improvements include:
- Simplified promotional offer signatures with fewer required inputs
- New JWS introductory offer signatures for custom eligibility control
- Consistent signing format across StoreKit functions and Advanced Commerce API
- Reduced complexity in managing different signature types
Enhanced Refund Decision Process
Send Consumption Information V2 Endpoint
The new V2 endpoint significantly improves refund participation:
- Reduced inputs: Only 5 fields (down from 12 in V1)
- Extended support: Now covers all product types, not just consumables and subscriptions
-
Prorated refund preference: New
GRANT_PRORATED
option for partial consumption scenarios - Simplified integration with clearer mandatory vs. optional fields
Prorated Refund Support
The new prorated refund feature allows for more nuanced refund handling:
- Specify consumption percentage in millipercent (e.g., 25,000 = 25% consumed)
- Receive
refundPercentage
in refund notifications - Handle partial revocations based on actual consumption
- Better customer satisfaction through fair refund amounts
Improved Refund Notifications
Enhanced notification data includes:
- refundPercentage: Shows exactly how much refund was granted
- revocationType: Indicates REFUND_FULL, REFUND_PRORATED, or FAMILY_REVOKE
- Clearer action guidance for different refund scenarios
Implementation Recommendations
Start with appTransactionId: Use this as your primary transaction identifier for new implementations. It simplifies account association and works across all transaction types.
Migrate to V2 endpoints: The Send Consumption Information V2 endpoint offers significant improvements with much simpler integration.
Leverage prorated refunds: For products that can be partially consumed, implement prorated refund preferences to improve customer satisfaction.
Adopt unified signing: Standardize on the JWS signature format to reduce complexity across your signing implementations.
Top comments (0)