Skip to content

CLI reference

This page is generated from the cobra command tree (go run ./scripts/gen-cli-reference). It’s the canonical surface — when prose elsewhere disagrees, this page wins.

Manage RevenueCat apps (per-platform inside a project)

Each project has one app per platform/storefront (one for iOS, one for
Android, etc.).
Read commands `list`, `view`, `public-keys`, `storekit-config` work on
any app. Write commands `create`, `update`, `delete` use the v2 app
endpoints; pass `--file <path>` for any non-trivial body since the
schema is wide and storefront-specific.

Usage

Terminal window
revcat apps

Subcommands: create, delete, list, public-keys, storekit-config, update, view


Create an app under the active project

Create a new app. v2's app body is discriminated by --type and the
shape varies per storefront. For the common cases revcat takes
shortcut flags:
--type app_store --bundle <com.acme.app>
--type play_store --package <com.acme.app>
--type amazon --package <com.acme.app>
Anything more (Stripe, rc_billing, paddle, roku, mac_app_store, or any
optional fields like a shared_secret) needs --file <path.json>.
Examples:
revcat apps create --type app_store --bundle com.acme.app --name "Acme iOS"
revcat apps create --file ./apps/new-stripe.json
revcat apps create --file - <<< '{"name":"Web","type":"stripe","stripe":{"stripe_account_id":"acct_..."}}'

Usage

Terminal window
revcat apps create [flags]

Flags

FlagTypeDefaultDescription
--bundlestring-Bundle id (app_store / mac_app_store)
--filestring-Path to a JSON file with the full v2 body (use - for stdin)
--namestring-App name
--packagestring-Package name (play_store / amazon)
--typestring-Storefront type: app_store | play_store | amazon | mac_app_store (use —file for stripe / rc_billing / paddle / roku)

Delete an app (hard delete)

Delete an app. This is a hard delete and can return 409 if the app
has dependent resources (offerings, products, etc.). Prefer to drain
those first.

Usage

Terminal window
revcat apps delete <app_id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the confirmation prompt

List apps in the active project

Usage

Terminal window
revcat apps list

List the public SDK keys for an app

Usage

Terminal window
revcat apps public-keys <app_id>

Print the StoreKit configuration for an iOS app

Usage

Terminal window
revcat apps storekit-config <app_id>

Update an app

Update an existing app. Pass --name to rename, or --file <path.json>
for a full v2 body (everything except 'type'). Send a nested field as
null in the JSON body to clear it (e.g. {"app_store":{"shared_secret":null}}).
Examples:
revcat apps update app_abc --name "Acme iOS (renamed)"
revcat apps update app_abc --file ./patch.json

Usage

Terminal window
revcat apps update <app_id> [flags]

Flags

FlagTypeDefaultDescription
--filestring-Path to a JSON file with the v2 update body (use - for stdin)
--namestring-Rename the app

Show one app

Usage

Terminal window
revcat apps view <id>

Inspect the project’s audit log

Usage

Terminal window
revcat audit-logs

Aliases: audit

Subcommands: list


List audit log entries

Usage

Terminal window
revcat audit-logs list

Manage RevenueCat authentication

revcat authenticates against RevenueCat via OAuth. One browser login
writes the credential to ~/.revcat/config.json (mode 0600). A per-repo
.revcat/config.json (written by `revcat init`) carries that credential
into the directory so agents and sandboxes inside the directory inherit
it without touching the global file.
Most users only need:
revcat auth login # browser OAuth
cd ~/your/repo && revcat init # bind this repo to a project
revcat auth status
For CI / fresh sandboxes with no browser: set REVCAT_REFRESH_TOKEN
(and REVCAT_PROJECT_ID) to skip both file and login flow.

Usage

Terminal window
revcat auth

Subcommands: doctor, list, login, logout, status, use


Self-diagnose auth setup

Walk through the most common auth misconfigurations and report what's
working, what isn't, and how to fix it.

Usage

Terminal window
revcat auth doctor

List stored auth profiles

Usage

Terminal window
revcat auth list

Authenticate revcat against RevenueCat via OAuth

Run the browser OAuth flow and store the resulting tokens. The OAuth
client is RevenueCat's public PKCE client by default; override with
REVCAT_OAUTH_CLIENT_ID or --client-id.
Tokens are written to ~/.revcat/config.json (mode 0600). After login,
run `revcat init` inside your project directory to bind a project_id
(or set REVCAT_PROJECT_ID per command).
Examples:
revcat auth login # browser, default profile
revcat auth login --name work # browser, named profile
revcat auth login --client-id <id> # custom OAuth client_id

Usage

Terminal window
revcat auth login [flags]

Flags

FlagTypeDefaultDescription
--client-idstring-OAuth client_id (defaults to REVCAT_OAUTH_CLIENT_ID env or the embedded public client)
-n, --namestring-Profile name (default: ‘default’)
--no-verifybool-Skip the API check that the credentials work after login
--scopestringSlice-OAuth scopes (default: revcat’s full read/write set)

Remove a stored auth profile

Delete a stored auth profile from ~/.revcat/config.json. Pass --all
to wipe every profile.

Usage

Terminal window
revcat auth logout [<profile>] [flags]

Flags

FlagTypeDefaultDescription
--allbool-Delete every stored profile
-y, --yesbool-Skip confirmation prompt

Show the active auth profile and resolved project

Print the active credential and where it came from (local
.revcat/config.json, global ~/.revcat/config.json, or env hatch). Pass
--validate to also hit the RevenueCat API and confirm the token is
accepted.

Usage

Terminal window
revcat auth status [flags]

Flags

FlagTypeDefaultDescription
-n, --namestring-Override the active global profile (ignored when a local config is present)
--validatebool-Hit the API to confirm the credential is accepted

Set the default auth profile

Set the active auth profile by writing the name to ~/.revcat/active.
Equivalent to passing --profile <name> on every command, or setting
REVCAT_PROFILE in your shell.

Usage

Terminal window
revcat auth use <profile>

Project charts (revenue, active subs, conversion, etc.)

Charts mirror the dashboard graphs: revenue, active subscribers,
conversion, MRR, churn, etc. Run `revcat charts options <name>` for
the supported filters before requesting data.

Usage

Terminal window
revcat charts

Subcommands: get, options


Fetch chart data (raw JSON)

Fetch chart data. Filters via --filter key=value (repeatable). Date
range via --start / --end (YYYY-MM-DD). Period via --period (day | week | month).

Usage

Terminal window
revcat charts get <chart_name> [flags]

Flags

FlagTypeDefaultDescription
--endstring-End date YYYY-MM-DD
--filterstringArray-key=value (repeatable)
--periodstring-day | week | month
--startstring-Start date YYYY-MM-DD

Show the available filters/dimensions for a chart

Usage

Terminal window
revcat charts options <chart_name>

Inspect project collaborators (members)

List the people with access to the active RevenueCat project.
Read-only: v2 doesn't expose invite / role-change / remove via REST.
Manage membership in the dashboard.

Usage

Terminal window
revcat collaborators

Aliases: members

Subcommands: list


List collaborators on the active project

Usage

Terminal window
revcat collaborators list

Run a top-level health check

Usage

Terminal window
revcat doctor

Manage RevenueCat entitlements

Entitlements are project-level access flags (e.g., "premium", "pro").
Customers gain entitlements via products attached on offerings, or via
promotional grants. Use `revcat subscribers info <user_id>` to see what
a specific customer has.

Usage

Terminal window
revcat entitlements

Aliases: ent

Subcommands: archive, attach, create, delete, detach, list, products, unarchive, update, view


Archive an entitlement

Usage

Terminal window
revcat entitlements archive <id>

Attach product(s) to an entitlement

Usage

Terminal window
revcat entitlements attach <id> <product_id> [<product_id> ...]

Create an entitlement

Create an entitlement. For the common case use shortcut flags:
revcat entitlements create --id premium --display-name "Premium"
For arbitrary v2 fields, pass --file <path.json>.

Usage

Terminal window
revcat entitlements create [flags]

Flags

FlagTypeDefaultDescription
--display-namestring-Display name shown in dashboards
-f, --filestring-Body as JSON file (or ’-’ for stdin)
--idstring-Entitlement lookup_key (e.g., premium)

Delete an entitlement

Usage

Terminal window
revcat entitlements delete <id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

Detach product(s) from an entitlement

Usage

Terminal window
revcat entitlements detach <id> <product_id> [<product_id> ...]

List all entitlements in the active project

Usage

Terminal window
revcat entitlements list

List products attached to an entitlement

Usage

Terminal window
revcat entitlements products <id>

Unarchive an entitlement

Usage

Terminal window
revcat entitlements unarchive <id>

Update an entitlement

Usage

Terminal window
revcat entitlements update <id> [flags]

Flags

FlagTypeDefaultDescription
--display-namestring-New display name
-f, --filestring-Patch body as JSON

Show one entitlement by lookup_key

Usage

Terminal window
revcat entitlements view <id>

Bootstrap project context (revcat.toml + .revcat/config.json)

Bind the current directory to a RevenueCat project. Writes:
- revcat.toml (committed): project_id + optional apps
- .revcat/config.json (gitignored, mode 0600): credentials + project_id
After init, every command run inside this directory inherits the project
context. Agents and sandboxes that have access to the directory can run
revcat without touching the global ~/.revcat/config.json.
Interactive (default): lists projects you can access, prompts for one,
then optionally lists apps in that project and lets you tag them.
Scripted: pass --project-id (and optional --app-id, repeated). Skip the
apps block entirely with --no-apps. Skip the local creds copy with
--no-local-creds (writes only revcat.toml).

Usage

Terminal window
revcat init [flags]

Flags

FlagTypeDefaultDescription
--app-idstringSlice-App ids to record (repeatable)
--forcebool-Overwrite an existing revcat.toml or .revcat/config.json
--no-appsbool-Skip the apps section entirely
--no-local-credsbool-Don’t write .revcat/config.json (only revcat.toml)
--pathstring-Where to write files (default: cwd)

Inspect invoices

Usage

Terminal window
revcat invoices

Subcommands: view


Show one invoice (raw JSON)

Usage

Terminal window
revcat invoices view <id>

Project-level revenue + subscription metrics

Usage

Terminal window
revcat metrics

Subcommands: overview


Headline metrics for the active project

Returns the dashboard's headline numbers (active subscribers, MRR,
lifetime revenue, conversion). Shape is preserved verbatim; the table
view flattens top-level keys.

Usage

Terminal window
revcat metrics overview

Manage RevenueCat offerings

An offering is a presentation grouping of packages displayed on a
paywall. Each project has 0..N offerings; exactly one is "current" and is
returned by SDKs that ask for the current offering.
To set an offering current along with a paywall config in one shot, use
`revcat publish offering`.

Usage

Terminal window
revcat offerings

Aliases: offer

Subcommands: archive, create, delete, list, preview, set-current, unarchive, update, view


Archive an offering

Usage

Terminal window
revcat offerings archive <id>

Create an offering

Usage

Terminal window
revcat offerings create [flags]

Flags

FlagTypeDefaultDescription
--display-namestring-Display name
-f, --filestring-Body as JSON file
--idstring-Offering lookup_key

Delete an offering

Usage

Terminal window
revcat offerings delete <id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

List all offerings in the active project

Usage

Terminal window
revcat offerings list

Show what the SDK will receive from /v1/subscribers/{user}/offerings

Hit the v1 SDK-facing endpoint that `Purchases.getOfferings()` calls and
render the response. Useful when the dashboard looks healthy but the SDK
reports zero packages.
Auth is auto-handled: revcat fetches the public SDK key for the project's
app on the chosen platform and sends it as the bearer. `--as` defaults to a
synthetic user id (`revcat_preview_<unix_ms>`) so you don't have to think
about it.
Pass an optional <offering_id> to filter the rendered output to a single
offering (the request still fetches all offerings; v1 has no per-offering
endpoint).

Usage

Terminal window
revcat offerings preview [<offering_id>] [flags]

Flags

FlagTypeDefaultDescription
--app-idstring-App id to derive the public SDK key from (default: auto-detect)
--asstring-User id to query as (default: revcat_preview_<unix_ms>)
--platformstringiosStorefront platform to preview (ios|android|web)

Promote an offering to current

Promote an offering so SDKs returning "current offering" hand back this
one. Equivalent to `revcat publish offering <id> --current` minus the
plan/confirm flow.

Usage

Terminal window
revcat offerings set-current <id>

Unarchive an offering

Usage

Terminal window
revcat offerings unarchive <id>

Update an offering

Usage

Terminal window
revcat offerings update <id> [flags]

Flags

FlagTypeDefaultDescription
--display-namestring-New display name
-f, --filestring-Patch body as JSON

Show one offering by lookup_key

Usage

Terminal window
revcat offerings view <id> [flags]

Flags

FlagTypeDefaultDescription
--packagesbooltrueInclude packages in the rendered card (table mode). On —output json, pass —packages explicitly to opt into the stitched typed shape; default is the verbatim v2 response.

Manage RevenueCat packages (purchasables inside an offering)

Packages are the purchasable units inside an offering. Identifiers
follow RC's $rc_monthly / $rc_annual / custom convention.

Usage

Terminal window
revcat packages

Aliases: pkg

Subcommands: attach, create, delete, detach, list, products, update, view


Attach product(s) to a package

Attach products to a package. RC v2 stores per-attachment eligibility
criteria - the same product can have different eligibility on different
packages. Default is "all" which serves the product to every customer.
Other supported values: "google_sdk_lt_6", "google_sdk_ge_6" (used to
gate attachment by SDK version on Android). Pass --eligibility to
override the default.

Usage

Terminal window
revcat packages attach <pkg_id> <product_id> [<product_id> ...] [flags]

Flags

FlagTypeDefaultDescription
--eligibilitystringallEligibility criteria for the attachment: all | google_sdk_lt_6 | google_sdk_ge_6

Create a package under an offering

Create a package under an offering (passed as id or lookup_key).
Common case via flags:
revcat packages create default --id '$rc_monthly' --display-name "Monthly"
Or pass an arbitrary v2 body via --file:
{
"lookup_key": "$rc_monthly",
"display_name": "Monthly",
"position": 0
}

Usage

Terminal window
revcat packages create <offering> [flags]

Flags

FlagTypeDefaultDescription
--display-namestring-Display name
-f, --filestring-Body as JSON file
--idstring-Package lookup_key (e.g., $rc_monthly)
--positionint0Position in the offering (0-indexed)

Delete a package

Usage

Terminal window
revcat packages delete <id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

Detach product(s) from a package

Usage

Terminal window
revcat packages detach <id> <product_id> [<product_id> ...]

List packages across one offering or all offerings

Usage

Terminal window
revcat packages list [flags]

Flags

FlagTypeDefaultDescription
-o, --offeringstring-Restrict to a single offering by lookup_key

List products attached to a package

List products attached to a package.
The v2 `GET /packages/{id}/products` endpoint returns each
attachment as a binding object: `{eligibility_criteria, product:{...}}`.
The full nested product (display_name, app_id, store_identifier, etc.)
arrives in the same response. `--output json` returns the raw v2
items verbatim; the table view flattens them.

Usage

Terminal window
revcat packages products <id>

Update a package

Usage

Terminal window
revcat packages update <id> [flags]

Flags

FlagTypeDefaultDescription
-f, --filestring-Patch body as JSON

Show one package by internal id

Usage

Terminal window
revcat packages view <id>

Manage top-level paywall resources

Manage paywall records in the project's paywall library. To deploy a
paywall config to an offering use `revcat publish offering --paywall <file>`.

Usage

Terminal window
revcat paywalls

Subcommands: create, delete, list, view


Create a paywall record scoped to an offering

Create a paywall record. v2 only takes {offering_id} - the paywall
content (template, copy, components) is set later via
`revcat publish offering <id> --paywall <file>`.
You usually want publish offering instead of this command.

Usage

Terminal window
revcat paywalls create [flags]

Flags

FlagTypeDefaultDescription
-f, --filestring-JSON body
--offeringstring-Offering id (required if —file not used)

Delete a paywall

Usage

Terminal window
revcat paywalls delete <id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

List paywalls in the project

Usage

Terminal window
revcat paywalls list

Show one paywall (raw JSON)

Usage

Terminal window
revcat paywalls view <id>

Manage RevenueCat products (store SKUs)

A product is a project-level catalog entry that mirrors a store SKU
(App Store / Play Store / Stripe / Web Billing). Products are attached
to packages, packages live inside offerings.
Most edits accept a JSON file via --file, since the product schema
differs per store and revcat does not pin a specific shape. Use the
v2 docs to author the body, then `revcat products create -f product.json`.

Usage

Terminal window
revcat products

Aliases: prod

Subcommands: archive, create, delete, list, push-to-store, unarchive, update, view


Archive a product

Usage

Terminal window
revcat products archive <id>

Create a product from a JSON body

Create a product from a JSON body on disk. The body shape follows the
v2 docs - store_identifier, type (subscription | non_subscription | ...),
display_name, app_id are usually required.
Example body:
{
"store_identifier": "app.monthly",
"type": "subscription",
"display_name": "Monthly",
"app_id": "app_xxx"
}
For Test Store products, RevenueCat v2 does not expose price create/update
endpoints. After creating the product, set its price in the RevenueCat
dashboard or the SDK will not show packages that contain it.

Usage

Terminal window
revcat products create [flags]

Flags

FlagTypeDefaultDescription
-f, --filestring-Path to JSON body (required)

Delete a product (most teams should archive instead)

Usage

Terminal window
revcat products delete <id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

List products

Usage

Terminal window
revcat products list

Push a product config to the linked store

Usage

Terminal window
revcat products push-to-store <id>

Unarchive a product

Usage

Terminal window
revcat products unarchive <id>

Update a product

Update a product. Pass --file <path.json> for an arbitrary patch, or
--display-name <new> for the common case.

Usage

Terminal window
revcat products update <id> [flags]

Flags

FlagTypeDefaultDescription
--display-namestring-New display name (shortcut for the common case)
-f, --filestring-Patch body as JSON

Show one product

Usage

Terminal window
revcat products view <id>

Inspect RevenueCat projects

A project is RevenueCat's top-level container - one per app or app
family. revcat resolves the active project from --project-id,
REVCAT_PROJECT_ID, the local .revcat/config.json written by
`revcat init`, or revcat.toml.
v2 exposes project create + list. There is no v2 update or delete by
id; manage those in the dashboard.

Usage

Terminal window
revcat projects

Aliases: proj

Subcommands: create, list, view


Create a new project

Create a new project at the account level.
The project id is generated by RevenueCat and printed on success;
quote it (or pipe with --output json) to feed into `revcat init` or
`--project-id` for follow-up commands.
Examples:
revcat projects create --name "My App"
revcat projects create --name staging --output json | jq -r .id

Usage

Terminal window
revcat projects create [flags]

Flags

FlagTypeDefaultDescription
--namestring-Project name (required)

List projects accessible to this credential

Usage

Terminal window
revcat projects list

Show one project by id (defaults to the resolved project)

Usage

Terminal window
revcat projects view [id]

One-shot deploy verbs (offering, paywall, …)

Publish-style verbs compose several API calls behind a single command.
The intent is to mirror the dashboard's higher-level actions ("set as
current", "deploy paywall") rather than mirror REST endpoints.

Usage

Terminal window
revcat publish

Subcommands: offering


Set an offering as current and/or push a paywall config

Composes the dashboard's "deploy" workflow:
1. Verify the offering exists in the active project
2. (optional) Validate and PUT a paywall config from --paywall <path>
3. (optional) Promote the offering to current
By default both steps run when their inputs are provided. The plan is
printed before execution; pass --confirm to skip the prompt, or --dry-run
to print the plan without making any changes.
Examples:
revcat publish offering default --current --confirm
revcat publish offering pro --paywall ./paywalls/pro.json --current
revcat publish offering pro --paywall ./paywalls/pro.json --dry-run

Usage

Terminal window
revcat publish offering <id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the confirmation prompt
--currentbool-Set the offering as current
--dry-runbool-Print the plan without making changes
--no-currentbool-Do NOT set the offering as current (overrides —current default when —paywall is set alone)
--paywallstring-Path to a paywall config JSON file to PUT

Inspect non-renewing purchases

A purchase is a one-shot non-renewing transaction (lifetime grants,
consumables, in-app one-offs). For subscriptions see `revcat subscriptions`.

Usage

Terminal window
revcat purchases

Aliases: purchase

Subcommands: entitlements, refund, search, view


List entitlements granted by a purchase

Usage

Terminal window
revcat purchases entitlements <id>

Refund a non-renewing purchase (Web Billing)

Usage

Terminal window
revcat purchases refund <id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

Find purchases by store id

Usage

Terminal window
revcat purchases search <store_id>

Show one purchase

Usage

Terminal window
revcat purchases view <id>

Inspect and manage RevenueCat subscribers

Subscribers (a.k.a. customers, app users) are the end-users of your app.
revcat treats them as the unit of debugging - one command surfaces their
entitlements, subscriptions, purchases, and aliases in a single card.

Usage

Terminal window
revcat subscribers

Aliases: customers, subs

Subcommands: attributes, create, delete, grant, info, invoices, list, refund, revoke, transfer


Get or set subscriber attributes

With no flags, lists current attributes. With --set key=value (repeatable)
or --file <path.json>, upserts the listed attributes.
The v2 attributes endpoint takes an array of {name, value} objects.
Both the file and --set forms are normalized to that shape before
sending.

Usage

Terminal window
revcat subscribers attributes <user_id> [flags]

Flags

FlagTypeDefaultDescription
--filestring-JSON map of attributes to upsert
--setstringArray-key=value to upsert (repeatable)

Pre-create a customer (migration / import)

Pre-create a customer record. Most apps let the SDK create customers
on first launch; this is for migrations, test seeding, or cases where
you want to seed attributes before the user opens the app.
Pass --file <path.json> for arbitrary v2 fields (attributes, etc.).

Usage

Terminal window
revcat subscribers create <user_id> [flags]

Flags

FlagTypeDefaultDescription
-f, --filestring-Optional JSON body merged into the request

Permanently delete a customer (GDPR / test cleanup)

Usage

Terminal window
revcat subscribers delete <user_id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

Grant a promotional entitlement to a subscriber

Grant a promotional entitlement (audited) to a subscriber for a
specified duration. v2 stores absolute expiry timestamps; revcat
translates --duration to the right "expires_at".
Duration accepts:
forever | lifetime (~100 years)
7d, 30d, 90d (days)
1m, 3m, 6m (months ~ 30 days each)
1y, 2y, 5y (years ~ 365 days each)
Examples:
revcat subscribers grant app_user_123 premium --duration 7d
revcat subscribers grant app_user_123 pro --duration lifetime --confirm

Usage

Terminal window
revcat subscribers grant <user_id> <entitlement> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the confirmation prompt
-d, --durationstring-How long the grant lasts (required)

Show a full debug card for a subscriber

Fan out across the v2 customer endpoints (customer + active_entitlements
+ subscriptions + purchases + aliases) and render a single card.
Pipe the output to a script and you get JSON instead of the card. Each
section appears as a top-level key in the JSON object.
Example:
revcat subscribers info app_user_123
revcat subscribers info app_user_123 --output json | jq .entitlements

Usage

Terminal window
revcat subscribers info <user_id>

List invoices for a customer

Usage

Terminal window
revcat subscribers invoices <user_id>

List customers in the active project (paged)

Page through every customer. For support workflows that look up a
specific user by email or order id, prefer the searches under
`revcat purchases search` and `revcat subscriptions search` (faster
and indexed).

Usage

Terminal window
revcat subscribers list

Refund a transaction on a subscription

Issue a refund through the appropriate store (App Store, Play Store,
Stripe, ...). v2 scopes refunds under the subscription, so both ids
are required.
Find the subscription id with `revcat subscribers info <user_id>` -
each subscription row carries an internal id.
Refund availability depends on the store and the original purchase date.
RC returns the updated transaction status; we surface it in JSON if you
pipe the output.

Usage

Terminal window
revcat subscribers refund <subscription_id> <transaction_id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the confirmation prompt

Revoke a promotional entitlement from a subscriber

Remove a promotional entitlement that was previously granted via
`revcat subscribers grant` or the dashboard. Does not affect
entitlements granted by an active store subscription.

Usage

Terminal window
revcat subscribers revoke <user_id> <entitlement> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the confirmation prompt

Transfer entitlements/subscriptions from one customer to another

Usage

Terminal window
revcat subscribers transfer <src_user_id> <dst_user_id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

Inspect and manage subscriptions

A subscription is one customer's ongoing purchase relationship with one
product. Find it via `revcat subscriptions search <store_id>` or by
listing it under a customer (`revcat subscribers info`).

Usage

Terminal window
revcat subscriptions

Aliases: sub

Subcommands: cancel, entitlements, management-url, refund, search, transactions, view


Cancel a subscription (Web Billing)

Usage

Terminal window
revcat subscriptions cancel <id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

List entitlements granted by a subscription

Usage

Terminal window
revcat subscriptions entitlements <id>

Print the store-specific manage/cancel URL

Usage

Terminal window
revcat subscriptions management-url <id>

Refund the entire subscription (Web Billing)

Usage

Terminal window
revcat subscriptions refund <id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

Find subscriptions by store id (App Store / Play / Stripe / …)

Usage

Terminal window
revcat subscriptions search <store_id>

List billing transactions for a subscription

Usage

Terminal window
revcat subscriptions transactions <id>

Show one subscription

Usage

Terminal window
revcat subscriptions view <id>

Print revcat version and build info

Usage

Terminal window
revcat version

Manage virtual currencies (coins / credits)

Project-level virtual currencies (in-game coins, credits, tokens).
v2 keys VCs by their uppercase code (e.g., COIN, GEM) - that's the
identifier you pass to view/update/delete/archive.
Per-customer balances and transactions are NOT exposed by v2 REST.

Usage

Terminal window
revcat virtual-currencies

Aliases: vc

Subcommands: archive, create, delete, list, unarchive, update, view


Archive a virtual currency

Usage

Terminal window
revcat virtual-currencies archive <code>

Create a virtual currency

Create a virtual currency. Required: name + code. Code is uppercase
and acts as the identifier for view/update/delete.

Usage

Terminal window
revcat virtual-currencies create [flags]

Flags

FlagTypeDefaultDescription
--codestring-Uppercase code (e.g. COIN)
--descriptionstring-Optional description
-f, --filestring-JSON body
--namestring-Display name

Delete a virtual currency

Usage

Terminal window
revcat virtual-currencies delete <code> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

List virtual currencies

Usage

Terminal window
revcat virtual-currencies list

Unarchive a virtual currency

Usage

Terminal window
revcat virtual-currencies unarchive <code>

Update a virtual currency

Usage

Terminal window
revcat virtual-currencies update <code> [flags]

Flags

FlagTypeDefaultDescription
--descriptionstring-New description
-f, --filestring-Patch body as JSON
--namestring-New name

Show one virtual currency by uppercase code (e.g. COIN)

Usage

Terminal window
revcat virtual-currencies view <code>

Manage webhook integrations

Webhooks are project integrations that receive event POSTs (purchases,
renewals, cancellations, refunds, ...). Each webhook has a name, target
URL, and a list of event_types it subscribes to.
Event values are LOWERCASE in the API config (initial_purchase,
renewal, cancellation, ...) - even though the webhook payload itself
uses screaming case (INITIAL_PURCHASE). revcat lowercases values
passed via --events for you.

Usage

Terminal window
revcat webhooks

Subcommands: create, delete, list, update, view


Create a webhook integration

Create a webhook. Required: name, url, event_types. URL must be a
valid HTTPS endpoint that RC can validate as reachable - localhost and
example.com don't pass.

Usage

Terminal window
revcat webhooks create [flags]

Flags

FlagTypeDefaultDescription
--eventsstringSlice-Event types (comma-separated). Values are lowercased before send.
-f, --filestring-JSON body
--namestring-Webhook name (required)
--urlstring-Target URL (required)

Delete a webhook

Usage

Terminal window
revcat webhooks delete <id> [flags]

Flags

FlagTypeDefaultDescription
-y, --confirmbool-Skip the prompt

List webhook integrations

Usage

Terminal window
revcat webhooks list

Update a webhook

Usage

Terminal window
revcat webhooks update <id> [flags]

Flags

FlagTypeDefaultDescription
--eventsstringSlice-New event_types list
-f, --filestring-Patch body as JSON
--namestring-New name
--urlstring-New target URL

Show one webhook

Usage

Terminal window
revcat webhooks view <id>