RevenueCat
Manage in-app subscriptions and entitlements
RevenueCat is a subscription management platform that enables you to easily set up, manage, and analyze in-app subscriptions for your apps. With RevenueCat, you can handle the complexities of in-app purchases across platforms like iOS, Android, and web—all through a single unified API.
With RevenueCat, you can:
- Manage subscribers: Track user subscriptions, entitlements, and purchases across all platforms in real time
- Simplify implementation: Integrate RevenueCat’s SDKs to abstract away App Store and Play Store purchase logic
- Automate entitlement logic: Define and manage what features users should receive when they purchase or renew
- Analyze revenue: Access dashboards and analytics to view churn, LTV, revenue, active subscriptions, and more
- Grant or revoke entitlements: Manually adjust user access (for example, for customer support or promotions)
- Operate globally: Support purchases, refunds, and promotions worldwide with ease
In Sim, the RevenueCat integration allows your agents to fetch and manage subscriber data, review and update entitlements, and automate subscription-related workflows. Use RevenueCat to centralize subscription operations for your apps directly within your Sim workspace.
Integrate RevenueCat into the workflow. Manage subscribers, entitlements, offerings, and Google Play subscriptions. Retrieve customer subscription status, grant or revoke promotional entitlements, record purchases, update subscriber attributes, and manage Google Play subscription billing.
Retrieve subscriber information by app user ID
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | RevenueCat secret API key (sk_...) |
appUserId | string | Yes | The app user ID of the subscriber |
| Parameter | Type | Description |
|---|
subscriber | object | The subscriber object with subscriptions and entitlements |
↳ first_seen | string | ISO 8601 date when subscriber was first seen |
↳ last_seen | string | ISO 8601 date when subscriber was last seen |
↳ original_app_user_id | string | Original app user ID |
↳ original_application_version | string | iOS only. First App Store version of your app the customer installed |
↳ original_purchase_date | string | iOS only. Date the app was first purchased/downloaded |
↳ management_url | string | URL for managing the subscriber subscriptions |
↳ subscriptions | object | Map of product identifiers to subscription objects |
↳ store_transaction_id | string | Store transaction identifier |
↳ original_transaction_id | string | Original transaction identifier |
↳ purchase_date | string | ISO 8601 purchase date |
↳ original_purchase_date | string | ISO 8601 date of the original purchase |
↳ expires_date | string | ISO 8601 expiration date |
↳ is_sandbox | boolean | Whether this is a sandbox purchase |
↳ unsubscribe_detected_at | string | ISO 8601 date when unsubscribe was detected |
↳ billing_issues_detected_at | string | ISO 8601 date when billing issues were detected |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ ownership_type | string | Ownership type (purchased, family_shared) |
↳ period_type | string | Period type (normal, trial, intro, promotional, prepaid) |
↳ store | string | Store the subscription was purchased from (app_store, play_store, stripe, etc.) |
↳ refunded_at | string | ISO 8601 date when subscription was refunded |
↳ auto_resume_date | string | ISO 8601 date when a paused subscription will auto-resume |
↳ product_plan_identifier | string | Google Play base plan identifier (for products set up after Feb 2023) |
↳ entitlements | object | Map of entitlement identifiers to entitlement objects |
↳ expires_date | string | ISO 8601 expiration date (null for non-expiring entitlements) |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ product_identifier | string | Product identifier |
↳ purchase_date | string | ISO 8601 date of the latest purchase or renewal |
↳ non_subscriptions | object | Map of non-subscription product identifiers to arrays of purchase objects |
↳ other_purchases | object | Other purchases attached to the subscriber |
↳ subscriber_attributes | object | Custom attributes set on the subscriber. Only returned when using a secret API key |
metadata | object | Subscriber summary metadata |
↳ app_user_id | string | The app user ID |
↳ first_seen | string | ISO 8601 date when the subscriber was first seen |
↳ active_entitlements | number | Number of active entitlements |
↳ active_subscriptions | number | Number of active subscriptions |
Permanently delete a subscriber and all associated data
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | RevenueCat secret API key (sk_...) |
appUserId | string | Yes | The app user ID of the subscriber to delete |
| Parameter | Type | Description |
|---|
deleted | boolean | Whether the subscriber was deleted |
app_user_id | string | The deleted app user ID |
Record a purchase (receipt) for a subscriber via the REST API
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | RevenueCat API key (public or secret) |
appUserId | string | Yes | The app user ID of the subscriber |
fetchToken | string | Yes | For iOS, the base64-encoded receipt (or JWSTransaction for StoreKit2); for Android the purchase token; for Amazon the receipt; for Stripe the subscription ID or Checkout Session ID; for Roku the transaction ID; for Paddle the subscription ID or transaction ID |
productId | string | No | Apple, Google, Amazon, Roku, or Paddle product identifier or SKU. Required for Google. |
price | number | No | Price of the product. Required if you provide a currency. |
currency | string | No | ISO 4217 currency code (e.g., USD, EUR). Required if you provide a price. |
isRestore | boolean | No | Deprecated. Triggers configured restore behavior for shared fetch tokens. |
presentedOfferingIdentifier | string | No | Identifier of the offering presented to the customer at the time of purchase. Attached to new transactions in this fetch token and exposed in ETL exports and webhooks. |
paymentMode | string | No | Payment mode for the introductory period. One of: pay_as_you_go, pay_up_front, free_trial. Defaults to free_trial when an introductory period is detected and no value is provided. |
introductoryPrice | number | No | Introductory price paid (if any). |
attributes | json | No | JSON object of subscriber attributes to set alongside the purchase. Each key maps to {"value": string, "updated_at_ms": number}. |
updatedAtMs | number | No | UNIX epoch in milliseconds used to resolve attribute conflicts at the request level. |
platform | string | Yes | Platform of the purchase. One of: ios, android, amazon, macos, uikitformac, stripe, roku, paddle. Sent as the X-Platform header (required by RevenueCat). |
| Parameter | Type | Description |
|---|
customer | object | Customer object returned at the top level of POST /v1/receipts (first_seen, last_seen, original_app_user_id, original_application_version, original_sdk_version, management_url, entitlements, original_purchase_date, request_date). Null when the response uses the value-wrapped envelope. |
subscriber | object | The updated subscriber object after recording the purchase |
↳ first_seen | string | ISO 8601 date when subscriber was first seen |
↳ last_seen | string | ISO 8601 date when subscriber was last seen |
↳ original_app_user_id | string | Original app user ID |
↳ original_application_version | string | iOS only. First App Store version of your app the customer installed |
↳ original_purchase_date | string | iOS only. Date the app was first purchased/downloaded |
↳ management_url | string | URL for managing the subscriber subscriptions |
↳ subscriptions | object | Map of product identifiers to subscription objects |
↳ store_transaction_id | string | Store transaction identifier |
↳ original_transaction_id | string | Original transaction identifier |
↳ purchase_date | string | ISO 8601 purchase date |
↳ original_purchase_date | string | ISO 8601 date of the original purchase |
↳ expires_date | string | ISO 8601 expiration date |
↳ is_sandbox | boolean | Whether this is a sandbox purchase |
↳ unsubscribe_detected_at | string | ISO 8601 date when unsubscribe was detected |
↳ billing_issues_detected_at | string | ISO 8601 date when billing issues were detected |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ ownership_type | string | Ownership type (purchased, family_shared) |
↳ period_type | string | Period type (normal, trial, intro, promotional, prepaid) |
↳ store | string | Store the subscription was purchased from (app_store, play_store, stripe, etc.) |
↳ refunded_at | string | ISO 8601 date when subscription was refunded |
↳ auto_resume_date | string | ISO 8601 date when a paused subscription will auto-resume |
↳ product_plan_identifier | string | Google Play base plan identifier (for products set up after Feb 2023) |
↳ entitlements | object | Map of entitlement identifiers to entitlement objects |
↳ expires_date | string | ISO 8601 expiration date (null for non-expiring entitlements) |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ product_identifier | string | Product identifier |
↳ purchase_date | string | ISO 8601 date of the latest purchase or renewal |
↳ non_subscriptions | object | Map of non-subscription product identifiers to arrays of purchase objects |
↳ other_purchases | object | Other purchases attached to the subscriber |
↳ subscriber_attributes | object | Custom attributes set on the subscriber. Only returned when using a secret API key |
Grant a promotional entitlement to a subscriber
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | RevenueCat secret API key (sk_...) |
appUserId | string | Yes | The app user ID of the subscriber |
entitlementIdentifier | string | Yes | The entitlement identifier to grant |
duration | string | No | Deprecated. Duration of the entitlement. Provide either duration or endTimeMs (endTimeMs preferred). One of: daily, three_day, weekly, two_week, monthly, two_month, three_month, six_month, yearly, lifetime |
endTimeMs | number | No | Absolute end time in milliseconds since Unix epoch. Use instead of duration to grant the entitlement until a specific timestamp. |
startTimeMs | number | No | Deprecated. Optional start time in milliseconds since Unix epoch, used with duration to determine expiration. Regardless of value, the entitlement is always granted immediately. |
| Parameter | Type | Description |
|---|
subscriber | object | The updated subscriber object after granting the entitlement |
↳ first_seen | string | ISO 8601 date when subscriber was first seen |
↳ last_seen | string | ISO 8601 date when subscriber was last seen |
↳ original_app_user_id | string | Original app user ID |
↳ original_application_version | string | iOS only. First App Store version of your app the customer installed |
↳ original_purchase_date | string | iOS only. Date the app was first purchased/downloaded |
↳ management_url | string | URL for managing the subscriber subscriptions |
↳ subscriptions | object | Map of product identifiers to subscription objects |
↳ store_transaction_id | string | Store transaction identifier |
↳ original_transaction_id | string | Original transaction identifier |
↳ purchase_date | string | ISO 8601 purchase date |
↳ original_purchase_date | string | ISO 8601 date of the original purchase |
↳ expires_date | string | ISO 8601 expiration date |
↳ is_sandbox | boolean | Whether this is a sandbox purchase |
↳ unsubscribe_detected_at | string | ISO 8601 date when unsubscribe was detected |
↳ billing_issues_detected_at | string | ISO 8601 date when billing issues were detected |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ ownership_type | string | Ownership type (purchased, family_shared) |
↳ period_type | string | Period type (normal, trial, intro, promotional, prepaid) |
↳ store | string | Store the subscription was purchased from (app_store, play_store, stripe, etc.) |
↳ refunded_at | string | ISO 8601 date when subscription was refunded |
↳ auto_resume_date | string | ISO 8601 date when a paused subscription will auto-resume |
↳ product_plan_identifier | string | Google Play base plan identifier (for products set up after Feb 2023) |
↳ entitlements | object | Map of entitlement identifiers to entitlement objects |
↳ expires_date | string | ISO 8601 expiration date (null for non-expiring entitlements) |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ product_identifier | string | Product identifier |
↳ purchase_date | string | ISO 8601 date of the latest purchase or renewal |
↳ non_subscriptions | object | Map of non-subscription product identifiers to arrays of purchase objects |
↳ other_purchases | object | Other purchases attached to the subscriber |
↳ subscriber_attributes | object | Custom attributes set on the subscriber. Only returned when using a secret API key |
Revoke all promotional entitlements for a specific entitlement identifier
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | RevenueCat secret API key (sk_...) |
appUserId | string | Yes | The app user ID of the subscriber |
entitlementIdentifier | string | Yes | The entitlement identifier to revoke |
| Parameter | Type | Description |
|---|
subscriber | object | The updated subscriber object after revoking the entitlement |
↳ first_seen | string | ISO 8601 date when subscriber was first seen |
↳ last_seen | string | ISO 8601 date when subscriber was last seen |
↳ original_app_user_id | string | Original app user ID |
↳ original_application_version | string | iOS only. First App Store version of your app the customer installed |
↳ original_purchase_date | string | iOS only. Date the app was first purchased/downloaded |
↳ management_url | string | URL for managing the subscriber subscriptions |
↳ subscriptions | object | Map of product identifiers to subscription objects |
↳ store_transaction_id | string | Store transaction identifier |
↳ original_transaction_id | string | Original transaction identifier |
↳ purchase_date | string | ISO 8601 purchase date |
↳ original_purchase_date | string | ISO 8601 date of the original purchase |
↳ expires_date | string | ISO 8601 expiration date |
↳ is_sandbox | boolean | Whether this is a sandbox purchase |
↳ unsubscribe_detected_at | string | ISO 8601 date when unsubscribe was detected |
↳ billing_issues_detected_at | string | ISO 8601 date when billing issues were detected |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ ownership_type | string | Ownership type (purchased, family_shared) |
↳ period_type | string | Period type (normal, trial, intro, promotional, prepaid) |
↳ store | string | Store the subscription was purchased from (app_store, play_store, stripe, etc.) |
↳ refunded_at | string | ISO 8601 date when subscription was refunded |
↳ auto_resume_date | string | ISO 8601 date when a paused subscription will auto-resume |
↳ product_plan_identifier | string | Google Play base plan identifier (for products set up after Feb 2023) |
↳ entitlements | object | Map of entitlement identifiers to entitlement objects |
↳ expires_date | string | ISO 8601 expiration date (null for non-expiring entitlements) |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ product_identifier | string | Product identifier |
↳ purchase_date | string | ISO 8601 date of the latest purchase or renewal |
↳ non_subscriptions | object | Map of non-subscription product identifiers to arrays of purchase objects |
↳ other_purchases | object | Other purchases attached to the subscriber |
↳ subscriber_attributes | object | Custom attributes set on the subscriber. Only returned when using a secret API key |
List all offerings configured for the project
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | RevenueCat API key |
appUserId | string | Yes | An app user ID to retrieve offerings for |
platform | string | No | X-Platform header value. One of: ios, android, amazon, stripe, roku, paddle. Required when using a legacy public API key; ignored with app-specific API keys. |
| Parameter | Type | Description |
|---|
current_offering_id | string | The identifier of the current offering |
offerings | array | List of offerings |
↳ identifier | string | Offering identifier |
↳ description | string | Offering description |
↳ packages | array | List of packages in the offering |
↳ identifier | string | Package identifier |
↳ platform_product_identifier | string | Platform-specific product identifier |
metadata | object | Offerings metadata |
↳ count | number | Number of offerings returned |
↳ current_offering_id | string | Current offering identifier |
Update custom subscriber attributes (e.g., $email, $displayName, or custom key-value pairs)
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | RevenueCat secret API key (sk_...) |
appUserId | string | Yes | The app user ID of the subscriber |
attributes | json | Yes | JSON object of attributes to set. Each key maps to an object with "value" (string; null or empty deletes the attribute) and "updated_at_ms" (Unix epoch ms used for conflict resolution — required). Example: {"$email": {"value": "user@example.com", "updated_at_ms": 1709195668093}} |
| Parameter | Type | Description |
|---|
updated | boolean | Whether the subscriber attributes were successfully updated |
app_user_id | string | The app user ID of the updated subscriber |
Defer a Google Play subscription by extending its billing date by a number of days (Google Play only)
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | RevenueCat secret API key (sk_...) |
appUserId | string | Yes | The app user ID of the subscriber |
productId | string | Yes | The Google Play product identifier of the subscription to defer (use the part before the colon for products set up after Feb 2023) |
extendByDays | number | No | Number of days to extend the subscription by (1-365). Provide either extendByDays or expiryTimeMs. |
expiryTimeMs | number | No | Absolute new expiry time in milliseconds since Unix epoch. Use instead of extendByDays to set an exact expiry. |
| Parameter | Type | Description |
|---|
subscriber | object | The updated subscriber object after deferring the Google subscription |
↳ first_seen | string | ISO 8601 date when subscriber was first seen |
↳ last_seen | string | ISO 8601 date when subscriber was last seen |
↳ original_app_user_id | string | Original app user ID |
↳ original_application_version | string | iOS only. First App Store version of your app the customer installed |
↳ original_purchase_date | string | iOS only. Date the app was first purchased/downloaded |
↳ management_url | string | URL for managing the subscriber subscriptions |
↳ subscriptions | object | Map of product identifiers to subscription objects |
↳ store_transaction_id | string | Store transaction identifier |
↳ original_transaction_id | string | Original transaction identifier |
↳ purchase_date | string | ISO 8601 purchase date |
↳ original_purchase_date | string | ISO 8601 date of the original purchase |
↳ expires_date | string | ISO 8601 expiration date |
↳ is_sandbox | boolean | Whether this is a sandbox purchase |
↳ unsubscribe_detected_at | string | ISO 8601 date when unsubscribe was detected |
↳ billing_issues_detected_at | string | ISO 8601 date when billing issues were detected |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ ownership_type | string | Ownership type (purchased, family_shared) |
↳ period_type | string | Period type (normal, trial, intro, promotional, prepaid) |
↳ store | string | Store the subscription was purchased from (app_store, play_store, stripe, etc.) |
↳ refunded_at | string | ISO 8601 date when subscription was refunded |
↳ auto_resume_date | string | ISO 8601 date when a paused subscription will auto-resume |
↳ product_plan_identifier | string | Google Play base plan identifier (for products set up after Feb 2023) |
↳ entitlements | object | Map of entitlement identifiers to entitlement objects |
↳ expires_date | string | ISO 8601 expiration date (null for non-expiring entitlements) |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ product_identifier | string | Product identifier |
↳ purchase_date | string | ISO 8601 date of the latest purchase or renewal |
↳ non_subscriptions | object | Map of non-subscription product identifiers to arrays of purchase objects |
↳ other_purchases | object | Other purchases attached to the subscriber |
↳ subscriber_attributes | object | Custom attributes set on the subscriber. Only returned when using a secret API key |
Refund a specific store transaction by its store transaction identifier and revoke access (subscription or non-subscription, last 365 days)
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | RevenueCat secret API key (sk_...) |
appUserId | string | Yes | The app user ID of the subscriber |
storeTransactionId | string | Yes | The store transaction identifier of the purchase to refund (e.g., GPA.3309-9122-6177-45730 for Google Play) |
| Parameter | Type | Description |
|---|
subscriber | object | The updated subscriber object after refunding the Google subscription |
↳ first_seen | string | ISO 8601 date when subscriber was first seen |
↳ last_seen | string | ISO 8601 date when subscriber was last seen |
↳ original_app_user_id | string | Original app user ID |
↳ original_application_version | string | iOS only. First App Store version of your app the customer installed |
↳ original_purchase_date | string | iOS only. Date the app was first purchased/downloaded |
↳ management_url | string | URL for managing the subscriber subscriptions |
↳ subscriptions | object | Map of product identifiers to subscription objects |
↳ store_transaction_id | string | Store transaction identifier |
↳ original_transaction_id | string | Original transaction identifier |
↳ purchase_date | string | ISO 8601 purchase date |
↳ original_purchase_date | string | ISO 8601 date of the original purchase |
↳ expires_date | string | ISO 8601 expiration date |
↳ is_sandbox | boolean | Whether this is a sandbox purchase |
↳ unsubscribe_detected_at | string | ISO 8601 date when unsubscribe was detected |
↳ billing_issues_detected_at | string | ISO 8601 date when billing issues were detected |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ ownership_type | string | Ownership type (purchased, family_shared) |
↳ period_type | string | Period type (normal, trial, intro, promotional, prepaid) |
↳ store | string | Store the subscription was purchased from (app_store, play_store, stripe, etc.) |
↳ refunded_at | string | ISO 8601 date when subscription was refunded |
↳ auto_resume_date | string | ISO 8601 date when a paused subscription will auto-resume |
↳ product_plan_identifier | string | Google Play base plan identifier (for products set up after Feb 2023) |
↳ entitlements | object | Map of entitlement identifiers to entitlement objects |
↳ expires_date | string | ISO 8601 expiration date (null for non-expiring entitlements) |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ product_identifier | string | Product identifier |
↳ purchase_date | string | ISO 8601 date of the latest purchase or renewal |
↳ non_subscriptions | object | Map of non-subscription product identifiers to arrays of purchase objects |
↳ other_purchases | object | Other purchases attached to the subscriber |
↳ subscriber_attributes | object | Custom attributes set on the subscriber. Only returned when using a secret API key |
Immediately revoke access to a Google Play subscription and issue a refund (Google Play only)
| Parameter | Type | Required | Description |
|---|
apiKey | string | Yes | RevenueCat secret API key (sk_...) |
appUserId | string | Yes | The app user ID of the subscriber |
productId | string | Yes | The Google Play product identifier of the subscription to revoke |
| Parameter | Type | Description |
|---|
subscriber | object | The updated subscriber object after revoking the Google subscription |
↳ first_seen | string | ISO 8601 date when subscriber was first seen |
↳ last_seen | string | ISO 8601 date when subscriber was last seen |
↳ original_app_user_id | string | Original app user ID |
↳ original_application_version | string | iOS only. First App Store version of your app the customer installed |
↳ original_purchase_date | string | iOS only. Date the app was first purchased/downloaded |
↳ management_url | string | URL for managing the subscriber subscriptions |
↳ subscriptions | object | Map of product identifiers to subscription objects |
↳ store_transaction_id | string | Store transaction identifier |
↳ original_transaction_id | string | Original transaction identifier |
↳ purchase_date | string | ISO 8601 purchase date |
↳ original_purchase_date | string | ISO 8601 date of the original purchase |
↳ expires_date | string | ISO 8601 expiration date |
↳ is_sandbox | boolean | Whether this is a sandbox purchase |
↳ unsubscribe_detected_at | string | ISO 8601 date when unsubscribe was detected |
↳ billing_issues_detected_at | string | ISO 8601 date when billing issues were detected |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ ownership_type | string | Ownership type (purchased, family_shared) |
↳ period_type | string | Period type (normal, trial, intro, promotional, prepaid) |
↳ store | string | Store the subscription was purchased from (app_store, play_store, stripe, etc.) |
↳ refunded_at | string | ISO 8601 date when subscription was refunded |
↳ auto_resume_date | string | ISO 8601 date when a paused subscription will auto-resume |
↳ product_plan_identifier | string | Google Play base plan identifier (for products set up after Feb 2023) |
↳ entitlements | object | Map of entitlement identifiers to entitlement objects |
↳ expires_date | string | ISO 8601 expiration date (null for non-expiring entitlements) |
↳ grace_period_expires_date | string | ISO 8601 grace period expiration date |
↳ product_identifier | string | Product identifier |
↳ purchase_date | string | ISO 8601 date of the latest purchase or renewal |
↳ non_subscriptions | object | Map of non-subscription product identifiers to arrays of purchase objects |
↳ other_purchases | object | Other purchases attached to the subscriber |
↳ subscriber_attributes | object | Custom attributes set on the subscriber. Only returned when using a secret API key |