Appendix C: Google Play Developer API Quick Reference
This appendix provides a quick reference for all Google Play Developer API endpoints related to billing. The base URL for all endpoints is:
https://androidpublisher.googleapis.com/androidpublisher/v3/All requests require OAuth 2.0 authentication with the scope:
https://www.googleapis.com/auth/androidpublisherSubscription Purchases
Endpoint | Method | Path | Description |
|---|---|---|---|
| GET |
| Get the current state of a subscription. This is the source of truth. |
| POST |
| Revoke a subscription immediately. User loses access right away. |
| POST |
| Defer the next billing date (min 1 day, max 1 year extension). |
| POST |
| Cancel a subscription. User retains access until |
| GET |
| Legacy endpoint. Use |
| POST |
| Acknowledge a subscription purchase. |
SubscriptionPurchaseV2 Response (Key Fields)
Field | Type | Description |
|---|---|---|
| string | Always |
| string | Current state: |
| array | One entry per base plan/offer in the subscription |
| string | The subscription product ID |
| timestamp | When this line item expires |
| object | Present for auto renewing plans. Contains |
| object | Present for prepaid plans. Contains |
| object | Offer applied to this line item. Contains |
| string | If this purchase replaces another, the token of the replaced purchase. |
| timestamp | When the subscription was first purchased. |
| string | ISO 3166-1 alpha-2 country code of the user. |
| object | Why the subscription was canceled. Contains |
| string |
|
| object | Contains |
| object | Present when paused. Contains |
One Time Product Purchases
Endpoint | Method | Path | Description |
|---|---|---|---|
| GET |
| Get the state of a one time product purchase. |
| GET |
| Get one time product purchase using v2 API (no productId required). |
| POST |
| Acknowledge a one time product purchase. |
| POST |
| Consume a one time product (makes it available for repurchase). |
ProductPurchase Response (Key Fields)
Field | Type | Description |
|---|---|---|
| string | Always |
| long | Time of purchase in milliseconds since epoch. |
| integer |
|
| integer |
|
| string | The order ID for this transaction. |
| integer |
|
| string | The purchase token. |
| string | The product ID. |
| integer | Quantity purchased (for multi quantity purchases). |
| string | Obfuscated account ID set during purchase. |
| string | Obfuscated profile ID set during purchase. |
| string | ISO 3166-1 alpha-2 country code. |
Orders
Endpoint | Method | Path | Description |
|---|---|---|---|
| POST |
| Issue a full refund. Available within 3 years of purchase. |
Voided Purchases
Endpoint | Method | Path | Description |
|---|---|---|---|
| GET |
| List voided (refunded/revoked) purchases. Supports pagination and filtering by time. |
Query Parameters for Voided Purchases
Parameter | Type | Description |
|---|---|---|
| long | Milliseconds since epoch. Only return purchases voided after this time. |
| long | Milliseconds since epoch. Only return purchases voided before this time. |
| integer | Pagination offset. |
| integer | Maximum results per page (default 1000, max 1000). |
| integer |
|
| boolean | Include partial quantity based refunds. |
Catalog Management: Subscriptions
Endpoint | Method | Path | Description |
|---|---|---|---|
| POST |
| Create a new subscription. |
| GET |
| Get subscription details. |
| GET |
| List all subscriptions. |
| PATCH |
| Update subscription fields. |
| DELETE |
| Delete a draft subscription. |
| GET |
| Get multiple subscriptions (up to 100). |
| POST |
| Update multiple subscriptions (up to 100). |
Catalog Management: Base Plans
Endpoint | Method | Path | Description |
|---|---|---|---|
| POST |
| Activate a base plan. |
| POST |
| Deactivate a base plan. |
| DELETE |
| Delete a base plan. |
| POST |
| End a legacy price cohort by migrating subscribers to the current price. |
| POST |
| Batch price migration. |
| POST |
| Batch activate/deactivate. |
Catalog Management: Offers
Endpoint | Method | Path | Description |
|---|---|---|---|
| POST |
| Create an offer. |
| GET |
| Get offer details. |
| GET |
| List offers for a base plan. |
| PATCH |
| Update an offer. |
| DELETE |
| Delete a draft offer. |
| POST |
| Activate an offer. |
| POST |
| Deactivate an offer. |
| GET |
| Get multiple offers. |
| POST |
| Update multiple offers. |
| POST |
| Batch activate/deactivate offers. |
Catalog Management: One Time Products (In-App Products)
Endpoint | Method | Path | Description |
|---|---|---|---|
| POST |
| Create a one time product. |
| GET |
| Get product details. |
| GET |
| List all one time products. |
| PATCH |
| Update product fields. |
| PUT |
| Replace product entirely. |
| DELETE |
| Delete a product. |
| GET |
| Get multiple products (up to 100). |
| POST |
| Update multiple products (up to 100). |
| POST |
| Delete multiple products. |
Rate Limiting
The Google Play Developer API uses a three tier quota system:
Tier | Default Quota | Endpoints |
|---|---|---|
Read | Higher limits | All |
Write | Lower limits | All |
Sensitive | Most restricted |
|
Quota is measured per project, per minute. When you exceed your quota, the API returns HTTP 429 (Too Many Requests). Implement exponential backoff for quota errors.
You can monitor your quota usage in the Google Cloud Console under APIs & Services > Dashboard > Android Publisher API.