Developer

Receipt Events

4min

Events

Name

Parameters

Supported Platforms

Description

PRODUCT_PURCHASED

  • packageName (String)
  • productId (String)
  • transactionId (String)
  • deviceId or accountId

ANDROID iOS

Triggered for a new one-time product purchase (single purchase).

NOTE: A purchase is considered new, if the receipt was uploaded within 10 minutes of purchasing.

PRODUCT_CANCELLED

  • packageName (String)
  • productId (String)
  • transactionId (String)
  • deviceId or accountId

ANDROID iOS

Triggered when a one-time product purchase (single purchase) was cancelled, e.g. due to a refund by Apple support / the developer.

SUBSCRIPTION_PURCHASED

Name, Type, Description

  • packageName, String
  • productId, String
  • transactionId, String
  • originalTransactionId, String, An identifier that stays the same across all events for this subscription
  • deviceId, String, mutually exclusive with accountId
  • accountId, String, mutually exclusive with deviceId
  • trialPeriod, Boolean
  • introOfferPeriod, Boolean



ANDROID iOS

Triggered for new subscription purchases.

NOTE: A purchase is considered new, if the receipt was uploaded within 10 minutes of purchasing.

SUBSCRIPTION_UPGRADED

  • packageName (String)
  • previousProductId (String)
  • nextProductId (String)
  • transactionId (String)
  • deviceId or accountId (String)

ANDROID iOS

The subscription has been upgraded by the user. 

For iOS: The current subscription will end immediately and then the new one will start. 

For ANDROID: A subscription has been changed to a different product and the new subscription has a higher price. The start of the new subscription depends on the selected proration mode during purchase.

SUBSCRIPTION_DOWNGRADED

  • packageName (String)
  • previousProductId (String)
  • nextProductId (String)
  • transactionId (String)
  • deviceId or accountId (String)

ANDROID iOS

The subscription has been downgraded by the user. 

For iOS: The current subscription will end normally and then the new one will start. 

For ANDROID: A subscription has been changed to a different product and the new subscription has a lower price. The start of the new subscription depends on the selected proration mode during purchase.

SUBSCRIPTION_RESUBSCRIBED

Name, Type, Description

  • packageName, String
  • productId, String
  • transactionId, String
  • originalTransactionId, String, An identifier that stays the same across all events for this subscription
  • deviceId, String, mutually exclusive with accountId
  • accountId, String, mutually exclusive with deviceId



A previously expired subscription has ben restarted/resubscribed by the user.

SUBSCRIPTION_RESUBSCRIBED_OTHER
  • packageName (String)
  • previousProductId (String)
  • nextProductId (String)
  • transactionId (String)
  • deviceId or accountId (String)

iOS

A subscription has expired; user resubscribed to another SKU (upgrade or downgrade)

SUBSCRIPTION_CANCELLED

Name, Type, Description

  • packageName, String
  • productId, String
  • transactionId, String
  • originalTransactionId, String, An identifier that stays the same across all events for this subscription
  • deviceId, String, mutually exclusive with accountId
  • accountId, String, mutually exclusive with deviceId



Triggered when the renewal of a subscription has been cancelled by the user. The subscription will continue until the expiration date is reached.

SUBSCRIPTION_CANCELLED_INVOLUNTARY

Name, Type, Description

  • packageName, String
  • productId, String
  • transactionId, String
  • originalTransactionId, String, An identifier that stays the same across all events for this subscription
  • deviceId, String, mutually exclusive with accountId
  • accountId, String, mutually exclusive with deviceId



A subscription has been cancelled after it failed to renew the subscription due to billing problems.

SUBSCRIPTION_RENEWED

Name, Type, Description

  • packageName, String
  • productId, String
  • transactionId, String
  • originalTransactionId, String, An identifier that stays the same across all events for this subscription
  • deviceId, String, mutually exclusive with accountId
  • accountId, String, mutually exclusive with deviceId

ANDROID iOS

The subscription has been renewed for another period.

SUBSCRIPTION_RENEWAL_FAILED

Name, Type, Description

  • packageName, String
  • productId, String
  • transactionId, String
  • originalTransactionId, String, An identifier that stays the same across all events for this subscription
  • deviceId, String, mutually exclusive with accountId
  • accountId, String, mutually exclusive with deviceId

ANDROID iOS

The subscription could not be renewed due to billing issues. It is still active and the system will retry to renew it.

When it succeeds it will result in a SUBSCRIPTION_RECOVERED event or if it fails in a SUBSCRIPTION_CANCELLED_INVOLUNTARY event,

SUBSCRIPTION_RECOVERED

Name, Type, Description

  • packageName, String
  • productId, String
  • transactionId, String
  • originalTransactionId, String, An identifier that stays the same across all events for this subscription
  • deviceId, String, mutually exclusive with accountId
  • accountId, String, mutually exclusive with deviceId



A subscription that previously failed to renew has been renewed / recovered.

SUBSCRIPTION_EXPIRED

Name, Type, Description

  • packageName, String
  • productId, String
  • transactionId, String
  • originalTransactionId, String, An identifier that stays the same across all events for this subscription
  • deviceId, String, mutually exclusive with accountId
  • accountId, String, mutually exclusive with deviceId

ANDROID iOS

The subscription reached its expiration date and is now considered expired. 

ACCOUNT_ASSIGNMENTS_CHANGED

Name, Type, Description

  • appId, String
  • accountId, String



ANDROID iOS

The assignments of an account changed

Event format

Example

JS


JSON Schema

JS