<!--
{
  "documentType" : "article",
  "framework" : "AdvancedCommerceAPI",
  "identifier" : "/documentation/AdvancedCommerceAPI/ratelimits",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Identifying rate limits for Advanced Commerce APIs"
}
-->

# Identifying rate limits for Advanced Commerce APIs

Recognize and handle the rate limits that apply to Advanced Commerce API endpoints.

## Overview

The Advanced Commerce API limits the number of requests that you can submit to each endpoint within a specified timespan. The request limits apply per app.
The following table lists the rate limits in the production environment, expressed in requests per second. Limits are enforced on an hourly basis.

|Endpoint                                                                                                               |Rate limit (per second)|
|-----------------------------------------------------------------------------------------------------------------------|-----------------------|
|``doc://com.apple.advancedcommerceapi/documentation/AdvancedCommerceAPI/Cancel-a-Subscription``                        |5                      |
|``doc://com.apple.advancedcommerceapi/documentation/AdvancedCommerceAPI/Change-Subscription-Metadata``                 |50                     |
|``doc://com.apple.advancedcommerceapi/documentation/AdvancedCommerceAPI/Change-Subscription-Price``                    |50                     |
|``doc://com.apple.advancedcommerceapi/documentation/AdvancedCommerceAPI/Migrate-Subscription-to-Advanced-Commerce-API``|50                     |
|``doc://com.apple.advancedcommerceapi/documentation/AdvancedCommerceAPI/Request-Transaction-Refund``                   |5                      |
|``doc://com.apple.advancedcommerceapi/documentation/AdvancedCommerceAPI/Revoke-Subscription``                          |5                      |

The rate limits in the sandbox environment are 10 percent of the limits in the table above.
The Advanced Commerce server may make adjustments to reduce or increase these rate limits as needed at any time.

### Handle exceeded rate limits gracefully

If you exceed a per-hour limit, the API rejects the request with an `HTTP 429` response, with a [`RateLimitExceededError`](/documentation/AdvancedCommerceAPI/RateLimitExceededError) in the body. Consider the following as you integrate the API:

- If you periodically call the API, throttle your requests to avoid exceeding the per-hour limit for an endpoint.
- Manage the `HTTP 429 RateLimitExceededError` in your error-handling process. For example, log the failure and queue the job to process it again at a later time.
- Check the `Retry-After` header if you receive the `HTTP 429` error. This header contains a UNIX time, in milliseconds, that informs you when you can next send a request.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)