iOS · AsyncAPI Specification

App Store Server Notifications V2

Version 2.0

App Store Server Notifications V2 is Apple's webhook surface for in-app purchase and subscription lifecycle events. Apple POSTs a JWS-signed payload to the production and sandbox URLs registered in App Store Connect every time a transaction or subscription state changes. The signed payload wraps the responseBodyV2DecodedPayload, which contains the notificationType, an optional subtype, the JWSTransaction, and (for subscription events) the JWSRenewalInfo. Providers verify the JWS with Apple's certificate chain and then react to the notification.

View Spec View on GitHub iOSAppleMobileApp StorePush NotificationsIn-App PurchasesSubscriptionAuthenticationWalletsDeveloper PlatformAsyncAPIWebhooksEvents

Channels

app-store-server-notifications/v2
publish receiveAppStoreServerNotification
Receive App Store Server Notification V2
Production webhook channel. Apple POSTs a signedPayload (JWS) to the URL a provider configures in App Store Connect for each store-front event.

Messages

AppStoreServerNotificationV2
App Store Server Notification V2
Signed App Store transaction or subscription lifecycle event.

AsyncAPI Specification

Raw ↑
asyncapi: '2.6.0'
info:
  title: App Store Server Notifications V2
  version: '2.0'
  description: >-
    App Store Server Notifications V2 is Apple's webhook surface for in-app
    purchase and subscription lifecycle events. Apple POSTs a JWS-signed payload
    to the production and sandbox URLs registered in App Store Connect every
    time a transaction or subscription state changes. The signed payload wraps
    the responseBodyV2DecodedPayload, which contains the notificationType, an
    optional subtype, the JWSTransaction, and (for subscription events) the
    JWSRenewalInfo. Providers verify the JWS with Apple's certificate chain and
    then react to the notification.
  contact:
    name: Apple Developer Documentation
    url: https://developer.apple.com/documentation/appstoreservernotifications
defaultContentType: application/json
channels:
  app-store-server-notifications/v2:
    description: >-
      Production webhook channel. Apple POSTs a signedPayload (JWS) to the URL
      a provider configures in App Store Connect for each store-front event.
    publish:
      operationId: receiveAppStoreServerNotification
      summary: Receive App Store Server Notification V2
      message:
        $ref: '#/components/messages/AppStoreServerNotificationV2'
components:
  messages:
    AppStoreServerNotificationV2:
      name: AppStoreServerNotificationV2
      title: App Store Server Notification V2
      summary: Signed App Store transaction or subscription lifecycle event.
      contentType: application/json
      payload:
        type: object
        required:
          - signedPayload
        properties:
          signedPayload:
            type: string
            description: >-
              Signed JWS containing the responseBodyV2DecodedPayload. Decode
              and verify against Apple's certificate chain before trusting.
      examples:
        - name: SubscribedEvent
          payload:
            signedPayload: 'eyJhbGciOiJFUzI1NiIsIng1Yy...redacted...'
  schemas:
    ResponseBodyV2DecodedPayload:
      type: object
      properties:
        notificationType:
          type: string
          enum:
            - CONSUMPTION_REQUEST
            - DID_CHANGE_RENEWAL_PREF
            - DID_CHANGE_RENEWAL_STATUS
            - DID_FAIL_TO_RENEW
            - DID_RENEW
            - EXPIRED
            - EXTERNAL_PURCHASE_TOKEN
            - GRACE_PERIOD_EXPIRED
            - OFFER_REDEEMED
            - ONE_TIME_CHARGE
            - PRICE_INCREASE
            - REFUND
            - REFUND_DECLINED
            - REFUND_REVERSED
            - RENEWAL_EXTENDED
            - RENEWAL_EXTENSION
            - REVOKE
            - SUBSCRIBED
            - TEST
        subtype:
          type: string
          enum:
            - ACCEPTED
            - AUTO_RENEW_DISABLED
            - AUTO_RENEW_ENABLED
            - BILLING_RECOVERY
            - BILLING_RETRY
            - DOWNGRADE
            - FAILURE
            - GRACE_PERIOD
            - INITIAL_BUY
            - PENDING
            - PRICE_INCREASE
            - PRODUCT_NOT_FOR_SALE
            - RESUBSCRIBE
            - SUMMARY
            - UNREPORTED
            - UPGRADE
            - VOLUNTARY
        notificationUUID:
          type: string
          format: uuid
        version:
          type: string
          example: '2.0'
        signedDate:
          type: integer
          format: int64
          description: Notification creation time in milliseconds since epoch.
        data:
          type: object
          properties:
            appAppleId:
              type: integer
              format: int64
            bundleId:
              type: string
            bundleVersion:
              type: string
            environment:
              type: string
              enum: [Sandbox, Production]
            signedTransactionInfo:
              type: string
              description: JWS containing the JWSTransaction payload.
            signedRenewalInfo:
              type: string
              description: JWS containing the JWSRenewalInfo payload.
            status:
              type: integer
              description: Subscription status code.

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/app-store-server-notifications-asyncapi"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.