Docs

Apple Advanced Commerce API Transaction Tracking

Apple's Advanced Commerce API moves complex subscriptions server-side — what to track when transactions no longer originate from StoreKit on-device.

Revenue

Apple’s Advanced Commerce API gives developers with large catalogues, creator-driven content, or bundled subscriptions a way to manage those transactions server-to-server instead of through the standard StoreKit purchase flow. It’s built for the app types that outgrew a simple “buy this SKU” model: marketplaces with thousands of one-time purchase items, platforms where multiple creators each sell subscription content, and products that bundle a base subscription with optional add-ons priced and billed independently. For those apps, it solves a real problem — StoreKit’s fixed, in-app-configured product model doesn’t flex to catalogues that change hourly or pricing that’s set per-creator.

It also changes where a purchase event actually originates, and that’s the part revenue tracking setups built around StoreKit aren’t ready for. A standard IAP or subscription purchase fires from the client, through StoreKit, observable on-device at the moment it happens. An Advanced Commerce API transaction is initiated and confirmed server-to-server, which means the client app may never see the purchase event fire at all — it finds out a transaction happened when the entitlement updates, if it’s even watching for that. Teams that only instrument client-side purchase events get an increasingly incomplete revenue picture as more of their catalogue moves onto Advanced Commerce API, with the gap growing worst for exactly the large-catalogue and bundled-subscription products the API was built for.

Data Points to Track

  • Server-side transaction confirmation events, captured directly from your backend’s interaction with the Advanced Commerce API rather than inferred from a client-side purchase callback that may never fire
  • Catalogue item or creator ID attached to each transaction, since large-catalogue and multi-creator platforms need revenue attributed at that granularity, not rolled up to a single generic product SKU
  • Bundle composition per transaction, recording which base subscription and which optional add-ons were included, so revenue and churn can be analysed per component, not just per bundle
  • Entitlement update latency, measured from server-side transaction confirmation to the client actually reflecting the new entitlement, to catch cases where a paying user is locked out of what they just bought
  • Reconciliation delta between Advanced Commerce API transaction records and App Store Connect’s financial reports, checked on a recurring basis rather than assumed to match

Setup Steps

  1. Instrument transaction logging at the server-to-server integration point with the Advanced Commerce API, treating it as the source of truth for these purchases rather than trying to reconstruct them from client-side signals.
  2. Attach catalogue item, creator, and bundle-component IDs to every transaction event at the point of logging, matching the granularity your product actually sells at.
  3. Add a client-side entitlement check on app foreground that reconciles against the server record, and log any lag or mismatch, since a purchase confirmed server-side doesn’t guarantee the client has caught up yet.
  4. Build a scheduled reconciliation job comparing your own transaction log against App Store Connect’s Payments and Financial Reports, flagging discrepancies for manual review rather than trusting both sides to agree silently.
  5. Route Advanced Commerce API revenue into the same reporting pipeline as standard IAP and subscription revenue, tagged by source, so total revenue reporting doesn’t quietly under-count as more products migrate to the new API.

Actionable Insights

If entitlement update latency is meaningfully higher than a standard StoreKit purchase, that’s a support-ticket risk worth fixing before it shows up as “I paid but didn’t get what I bought” complaints — track it as its own metric, not folded into general purchase latency. A growing reconciliation delta between your transaction log and App Store Connect’s financial reports is an early warning that some integration point is dropping or duplicating events, and it’s far cheaper to catch in a weekly reconciliation than in a quarterly finance close. And once transaction-level data is flowing by catalogue item and bundle component, that’s when per-creator or per-add-on performance becomes visible — a bundle add-on with poor attach revenue relative to its cost to maintain is now a decision you can actually make, not one you’re guessing at.

Expert help

Need help tracking this in your app?

Our team sets up analytics pipelines for mobile and web teams every day. Talk to us and get your first events flowing in under an hour.

Talk to an expert