Back to Documentation

CLI

Manage your store, products, licenses, and more from the terminal

Installation

bun add -g @revnu/cli
# or
npm install -g @revnu/cli

Authentication

Authenticate with a browser-based device code flow:

revnu auth login     # Opens browser to authenticate
revnu auth logout    # Clear stored credentials
revnu auth status    # Check authentication state

Commands

All commands are prefixed with revnu. Every command supports --json for machine-readable output.

Store

View and update your store's name, description, currency, and branding.

revnu store get              # View store details
revnu store update           # Update store settings

Settings

nameStore display name
descriptionStore description
currencyDefault currency for new products (USD, GBP, EUR)

Branding

  • Logo & Favicon — upload custom or use AI-generated SVG assets
  • Colors — primary and accent colors (or auto-extract from logo)
  • Font & Style — choose a brand font and style preset (modern, playful, elegant, bold, minimal, vintage)
  • Checkout Appearance — custom checkout styling (Grow+ plan)

Note: store currency cannot be changed once products have been created.

Products

Create and manage products with flexible pricing, delivery methods, and license configuration.

revnu products list          # List all products
revnu products get <id>      # Get product details
revnu products create        # Create a new product
revnu products update <id>   # Update a product
revnu products delete <id>   # Delete a product

Pricing

one-timeSingle payment. Customer pays once and gets permanent access.
monthlyRecurring subscription billed every month.

Price is set in cents (e.g., 2999 = $29.99). Currency is inherited from your store and cannot be changed after Stripe sync.

Delivery Features

license_keySoftware license keys with per-device activation limits.
web_appWeb app access via the RevnuAuth SDK.
discordDiscord role assignment on purchase.

Status

Products start as draft and become active once synced to Stripe. Use isActive to show or hide a product from your storefront.

Licenses

Manage license keys issued to buyers. Keys are auto-generated on purchase in the format XXXX-XXXX-XXXX-XXXX.

revnu licenses list          # List license keys
revnu licenses get <id>      # Get license key details
revnu licenses revoke <id>   # Revoke a license key
revnu licenses reactivate <id>  # Reactivate a revoked key

Status

activeLicense is valid and can be activated on devices.
revokedLicense has been revoked. All device activations are deactivated.
expiredSubscription lapsed or license period ended.

Device Activation

Each license tracks maxDevices (set on the product, null = unlimited) and activationCount. Devices are identified by fingerprint (MAC, CPU ID, or FingerprintJS). Activating the same device twice is idempotent.

Validation

No API key required — the license key itself is the credential. Validation checks subscription status (active, cancelled, past_due) and returns the productId so your app can verify it matches the expected product.

Analytics

View key business metrics, revenue trends, and recent purchase activity.

revnu analytics kpis         # View KPIs (revenue, MRR, churn, etc.)
revnu analytics revenue      # Revenue timeseries data
revnu analytics purchases    # Recent purchases

KPI Metrics

MRRMonthly Recurring Revenue — sum of active subscriptions
ARRAnnual Recurring Revenue — MRR multiplied by 12
Active MembersUnique buyers with active purchases
Total MembersAll unique buyers across your store
Total SalesSum of all purchase amounts

Revenue

Returns timeseries revenue data for charting trends over time.

Purchases

Lists recent purchases with buyer info, amount, status, and product details.

Purchases

View purchase records including buyer info, payment details, and subscription status.

revnu purchases list         # List all purchases
revnu purchases get <id>     # Get purchase details

Status

activeSubscription is current or one-time purchase is fulfilled
cancelledBuyer cancelled their subscription
past_duePayment failed — Stripe is retrying
pausedSubscription is temporarily paused
awaiting_joinPending Discord role assignment

Details

Each purchase includes the amount charged, currency, buyer email or Discord ID, Stripe customer info, and refund status. For subscriptions, cancelAtPeriodEnd indicates a scheduled cancellation at the end of the billing period.

Coupons

Create discount codes for your products. Coupons support percentage or fixed-amount discounts, flexible duration, and product-level scoping.

revnu coupons list           # List coupons
revnu coupons create         # Create a coupon
revnu coupons update <id>    # Update a coupon
revnu coupons pause <id>     # Pause an active coupon
revnu coupons activate <id>  # Activate a paused coupon
revnu coupons delete <id>    # Delete a coupon

Discount Type

percentPercentage off the price. Value of 20 = 20% off.
fixedFixed amount off in cents. Value of 500 = $5.00 off.

Duration

Controls how the discount applies to subscription products:

onceFirst payment only.
repeatingSet number of months (configure durationInMonths).
foreverEvery payment.

Scope

allApplies to any product in your store.
specificApplies only to selected products.

Advanced Options

  • Max Redemptions — limit total uses
  • First Purchase Only — only valid for first purchase
  • Minimum Amount — minimum cart value required
  • Expires At — expiration date

Note: coupon code, discount type, and discount value cannot be changed after creation.

Affiliates

Set up a referral program so others can promote your products for commission.

revnu affiliates list        # List affiliates
revnu affiliates create      # Invite a new affiliate
revnu affiliates update <id> # Update an affiliate
revnu affiliates delete <id> # Remove an affiliate
revnu affiliates settings    # View/update affiliate program settings

How It Works

  1. 1. Affiliate shares their unique referral link
  2. 2. Buyer clicks — a tracking cookie is set for the configured duration
  3. 3. Buyer purchases — affiliate earns their commission
  4. 4. Process payouts through Stripe when earnings meet the minimum

Program Settings

defaultCommissionTypepercentage or fixed
defaultCommissionValueCommission rate or amount
defaultDiscountTypeBuyer discount type
defaultDiscountValueBuyer discount amount
cookieExpirationDaysReferral tracking duration
minimumPayoutCentsMinimum earnings before payout

A/B Tests

Split-test your landing page variants to find what converts best.

revnu abtests list           # List all A/B tests
revnu abtests create         # Create a new A/B test
revnu abtests results <id>   # View test results
revnu abtests start <id>     # Start a test
revnu abtests pause <id>     # Pause a running test
revnu abtests stop <id>      # Stop a test
revnu abtests delete <id>    # Delete a test

Status

draftTest is being configured — variants and weights are editable
runningTest is live and traffic is being split
pausedTest is temporarily stopped
completedTest is finished — winner is selected

Variants

Each test requires at least 2 variants. Each variant points to a landing page deployment and has a traffic weight (0–100). Weights must sum to exactly 100.

Configuration

  • Duration — 1 to 90 days, auto-completes when reached
  • Goal Event — defaults to checkout_completed

Note: variants and weights can only be edited while the test is in draft status.

JSON Output

Add --json to any command for machine-readable output:

revnu products list --json
revnu analytics kpis --json

Agent Skill

Add the Revnu skill to your AI agent so it can manage your store on your behalf. Compatible with any agent that supports skills.sh.

npx skills add revnu-app/skill

The skill enables natural-language commands like "list my products", "what's my revenue?", or "create a discount code".

API Key & MCP Setup

Generate an API key in your dashboard under CLI to connect AI tools like Claude, Cursor, or Codex. See the MCP Server docs for setup instructions.