DEV Community

ArshTechPro
ArshTechPro

Posted on

WWDC 2025 - App Store server APIs for In-App Purchase

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)