Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Look up and refund Google Play orders by order ID with gplay `orders` — admin diagnostics, not runtime purchase-token verification. Use when a buyer complaint or payout report hands you an order ID and you need its state, or when issuing a money-moving `--confirm`-gated refund.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 209% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -16% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 59% | 0% |
gplay orders is the admin commerce surface: look up an order by its order ID, and — when warranted — refund it. Both commands are [experimental]. Shared conventions (auth, output, exit codes, --package pinning, --dry-run/--confirm) are in gplay-cli-usage.
The admin/runtime boundary. orders is for when a human or agent already holds an order ID — from a buyer complaint, a chargeback, a payout report — and wants to read or reverse it. That is an admin diagnostic. It is not real-time purchase-token verification (purchases.products / purchases.subscriptionsv2), which is a runtime API gplay does not wrap. If the task is "verify this in-app purchase token from my backend", this is the wrong surface.
An order ID looks like GPA.1234-5678-9012-34567. Orders are keyed by package, so the pinned package (or --package) scopes the lookup.
orders viewbashgplay orders view GPA.1234-5678-9012-34567 # one order (orders.get) gplay orders view GPA.1111-... GPA.2222-... GPA.3333-... # a batch (orders.batchget) gplay orders view GPA.1234-... --output json # full Order, verbatim
orders.get. Several IDs → orders.batchget, 1–1000per request (more is a usage error, exit 2).
package, the whole request fails — don't mix packages in one call.
items). --output json passes the Order (single) or BatchGetOrdersResponse (batch) through verbatim (ADR-0003), including the fields the summary omits — buyer address, tax, order history, sales channel.
orders refund (money-moving, irreversible)bash# Rehearse first — no HTTP; under --output json the gate shows in "requires": gplay orders refund GPA.1234-5678-9012-34567 --dry-run # Live — moves money, so --confirm is required: gplay orders refund GPA.1234-5678-9012-34567 --confirm # Also terminate the entitlement (buyer loses access; a subscription stops # billing too). Default is refund-money-but-keep-access: gplay orders refund GPA.1234-5678-9012-34567 --revoke --confirm
refuses without --confirm (exit 3, naming the flag). CI=true never auto-confirms; GPLAY_READONLY refuses it outright (exit 4).
--revoke is the meaningful choice: without it, the buyer is refunded butkeeps what they bought; with it, the entitlement is revoked (and a subscription's future payments stop). Decide before you run.
view batches; refunddoes not.)
specific refusal, not a generic error.
Money capabilities are deliberately excluded from every Role bundle (viewer … admin), so a service account granted a role still cannot touch orders. They must be granted as explicit permissions (see gplay-team):
orders view → CAN_VIEW_FINANCIAL_DATAorders refund → CAN_MANAGE_ORDERSA missing capability returns 403 (exit 11) and the message names the one it needs — grant it in the Play Console (Users & permissions) or via gplay team, then retry.
Confirm the current verbs and flags with gplay orders --help and gplay orders <command> --help — the surface is [experimental] (ADR-0031) and may still evolve.
Other measured skills in the registry, with their headline benchmark lift.