> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appeeky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Monetization with gps

> Manage Google Play subscriptions, base plans, offers, one-time products, legacy in-app products, purchases, and orders.

Dedicated commands cover the common reads. Create, patch, and batch operations run through `gps call` or MCP tools with the same names.

## Catalogs

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app subscriptions list --json
gps --package com.example.app subscriptions get premium_monthly
gps --package com.example.app subscriptions delete premium_monthly --confirm

gps --package com.example.app otp list
gps --package com.example.app otp get coins_100

gps --package com.example.app iap list
gps --package com.example.app iap get SKU
gps --package com.example.app iap delete SKU --confirm
```

| Command | Product type |
| - | - |
| `subscriptions` | Subscriptions with base plans and offers |
| `otp` | One-time products with purchase options |
| `iap` | Legacy in-app products (SKU based) |

## Regional prices

Convert one price into every Play region's currency:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app convert-prices --currency USD --units 4 --nanos 990000000
```

## Create and change products

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps ops monetization
gps call gps_get_subscription '{"packageName":"com.example.app","productId":"premium_monthly"}'
gps --package com.example.app --confirm call gps_activate_base_plan \
  '{"productId":"premium_monthly","basePlanId":"monthly"}'
```

| Area | Operations |
| - | - |
| Subscriptions | `gps_list_subscriptions`, `gps_get_subscription`, `gps_create_subscription`, `gps_patch_subscription`, `gps_delete_subscription`, `gps_batch_get_subscriptions`, `gps_batch_update_subscriptions` |
| Base plans | `gps_activate_base_plan`, `gps_deactivate_base_plan`, `gps_delete_base_plan`, `gps_migrate_base_plan_prices`, `gps_batch_update_base_plan_states`, `gps_batch_migrate_base_plan_prices` |
| Subscription offers | `gps_list_subscription_offers`, `gps_get_subscription_offer`, `gps_create_subscription_offer`, `gps_patch_subscription_offer`, `gps_activate_subscription_offer`, `gps_deactivate_subscription_offer`, `gps_delete_subscription_offer`, plus batch variants |
| One-time products | `gps_list_one_time_products`, `gps_get_one_time_product`, `gps_patch_one_time_product` (create or update), `gps_delete_one_time_product`, `gps_batch_get_one_time_products`, `gps_batch_update_one_time_products`, `gps_batch_delete_one_time_products` |
| Purchase options & offers | `gps_list_purchase_option_offers`, `gps_activate_purchase_option_offer`, `gps_deactivate_purchase_option_offer`, `gps_cancel_purchase_option_offer`, `gps_batch_delete_purchase_options`, `gps_batch_update_purchase_option_states`, plus batch offer variants |
| Legacy in-app products | `gps_list_in_app_products`, `gps_get_in_app_product`, `gps_create_in_app_product`, `gps_update_in_app_product`, `gps_patch_in_app_product`, `gps_delete_in_app_product`, plus batch variants |
| Pricing | `gps_convert_region_prices` |

Create and patch operations take the Publisher API resource as `body`; subscription, offer, and one-time product patches also take `updateMask`. All of them are available on the hosted server with `X-GPS-Allow-Writes: true`.

## Purchases

Look up a purchase by its purchase token:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app purchases product PRODUCT_ID TOKEN
gps --package com.example.app purchases product-v2 TOKEN
gps --package com.example.app purchases subscription TOKEN
gps --package com.example.app purchases voided --start-time 1735689600000
```

Change purchase state:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app purchases ack-product PRODUCT_ID TOKEN --confirm
gps --package com.example.app purchases consume PRODUCT_ID TOKEN --confirm
gps --package com.example.app purchases cancel-subscription TOKEN --confirm
gps --package com.example.app purchases revoke-subscription TOKEN --confirm
```

`gps_defer_subscription` and `gps_acknowledge_subscription` are available through `gps call` and MCP.

## Orders and refunds

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
gps --package com.example.app orders get ORDER_ID
gps --package com.example.app orders refund ORDER_ID --confirm
gps --package com.example.app orders refund ORDER_ID --revoke --confirm   # also revoke the entitlement
```

| Operation | What it does |
| - | - |
| `gps_get_order`, `gps_batch_get_orders` | Order details |
| `gps_refund_order` | Refund, optionally with `revoke` |
| `gps_get_external_transaction`, `gps_create_external_transaction`, `gps_refund_external_transaction` | External transactions |

> [!WARNING]
>
> Refunds, cancellations, and revocations affect real customers and money. In agent sessions, keep the hosted server read-only (or run `gps-mcp --read-only`) unless you mean to change purchases.

For subscription revenue dashboards, see [RevenueCat](/docs/revenuecat-overview.md) or [Publishing & Monetization](/docs/google-play-publishing.md) in Appeeky.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.