REVENUESTACK DOCUMENTATION

From first connection to safe deployment.

Detailed, product-verified guides for setting up your workspace, building regional prices, reviewing every change, and operating RevenueStack safely.

Start here

Getting started

Connect a store, import a subscription, calculate regional prices, and review a dry run before anything can reach a provider.

  1. 1. Create your account

    Sign up with your name, email, and a password of at least eight characters. Complete email verification if your hosted authentication configuration requires it.

  2. 2. Complete or skip onboarding

    Choose your role, app count, first priority, and platforms. Select Connect data to continue to Connections, or Skip for now to enter the workspace.

  3. 3. Connect a platform

    Open Connections, select Apple, Google Play, Stripe, or Paddle, add the requested credentials, then test and save the connection.

  4. 4. Import your catalog

    Open Apps and Subscriptions and refresh provider data. Choose which recurring subscriptions RevenueStack should manage.

  5. 5. Build the matrix

    Choose a subscription, set its base target, and apply automatic pricing or one of your pricing groups.

  6. 6. Review and deploy

    Run Review & Dry-Run, inspect every target and provider-valid result, then approve the deployment only when the rows are correct.

Your first workspace

Live

RevenueStack creates a workspace and OWNER membership on the first authenticated request. The workspace contains credentials, apps, subscriptions, pricing data, team access, audit records, billing, and agent access.

Authentication

Account and access

RevenueStack uses email and password authentication, supports password recovery, and protects workspace routes with an authenticated session.

CapabilityStatusDetails
Email and passwordLiveSign up and sign in through RevenueStack; the authentication provider remains authoritative.
Password resetLiveRequest a recovery email, then set a new password from the recovery session.
Google sign-inPartialSupported when Google OAuth is enabled in the hosted authentication configuration.
Email verificationUnknownControlled by the production authentication configuration.
MFAPlannedNo enrollment or challenge interface exists yet.
Account deletionPlannedNo self-service account deletion or email-change control exists yet.
Access control

Workspaces, roles, and teams

Every resource belongs to a workspace. Roles determine who can read data, change configuration, invite teammates, or approve provider writes.

CapabilityOwnerAdminMember
Read workspace data and historyYesYesYes
Manage connections, pricing, and settingsYesYesNo
Run a live deploymentYesYesNo
Manage and approve MCP agentsYesYesNo
Invite or remove non-owner membersYesYesNo
Remove the ownerNoNoNo

Invitations and seats

Live

Open Settings → Team & Seats, enter an email, and choose ADMIN or MEMBER. Seat limits are enforced when an invitation is created. Removing a member revokes access without erasing historical actor text.

Multiple workspaces

Partial

A user can have more than one membership record, but the application currently selects the first available workspace and does not provide a switcher.

Integrations

Connecting platforms

All four platforms support catalog discovery. Apple, Google Play, and Paddle support deployments; Stripe is currently read-only.

PlatformRead catalogDeploy pricesRequired credentials
Apple App Store ConnectYesYesKey ID, Issuer ID, and .p8 private key
Google PlayYesYesPackage name(s) and service-account JSON
StripeYesNoSecret or restricted key; optional account ID
PaddleYesYesVendor/account ID and Paddle Billing API key

How credentials are stored

Live

Saved provider credentials are encrypted server-side with authenticated AES-256-GCM encryption. Connection responses return masked identifiers and never return decrypted secrets.

Catalog management

Apps and subscriptions

RevenueStack discovers apps and recurring subscriptions from a connected provider, then lets you select which subscriptions should participate in pricing workflows.

  1. Refresh apps

    Open Apps and refresh the connection. Apps are discovered from the provider and cannot be manually created.

  2. Refresh subscriptions

    Open Subscriptions and refresh all apps or one app. Apple and Google import auto-renewing subscriptions; Stripe and Paddle import active recurring prices.

  3. Mark subscriptions as Managed

    The Managed toggle controls whether a subscription participates in automated pricing and previews.

  4. Check imported fields

    Verify the provider identifier, name, billing period, base amount, currency, and optional group or base-plan identifier.

Current limitations

Planned

Subscription metadata editing, cross-platform merged products, trials, introductory offers, and subscription archive/delete controls are not currently modeled.

Calculation

Automatic pricing

Start from one base target. RevenueStack applies territory multipliers, workspace bounds and rounding, then asks the provider adapter for the closest deployable regional value.

  1. 1. Choose a managed subscription

    Select the app and active subscription in the Pricing Matrix.

  2. 2. Set the base target

    Enter a positive base price and select Automatic pricing or a pricing group.

  3. 3. Calculate territory targets

    RevenueStack multiplies the base by the territory group multiplier and applies configured minimums, maximums, and rounding.

  4. 4. Resolve provider-valid prices

    The adapter finds the nearest valid price or price point and returns the final currency, value, and required provider identifier.

  5. 5. Inspect differences

    Compare target, current, and final prices. Review warnings before saving or opening a dry run.

Illustrative calculation

Base price:       USD 10.00
Group multiplier: 0.70
Raw target:       USD  7.00
Provider options: USD  6.99 / USD 7.99
Resolved price:   USD  6.99 (-0.14%)
Strategy

Custom pricing groups

Group territories under a shared multiplier when your pricing strategy needs more control than the default automatic configuration.

  • Create a group with a 1–120 character name and a positive multiplier up to 10.
  • Assign or remove territory codes and optionally recalculate affected targets.
  • Edit an individual matrix target when one market needs a manual exception.
  • Use Safety & Deployment settings for protected subscriptions and excluded territories.
  • When deleting an assigned group, choose a valid fallback group.

Group limits

Live

Explorer supports up to three pricing groups. Indie, Scale, Founder Lifetime, and Studio Lifetime support unlimited groups.

Review

Pricing matrix

The matrix is the working table for every territory target, source, provider value, difference, and validation state.

ColumnWhat it means
Country / TerritoryProvider territory and ISO code.
CurrencyCurrency used by the provider for that market.
Pricing SourceAutomatic, pricing-group, or manual source.
Target PriceCalculated or manually edited RevenueStack target.
Current PriceLatest value read from the provider.
Final PriceClosest provider-valid resolved value.
DifferenceFinal minus target, shown as an amount and percentage.
StatusNo change, change, warning, alert, unavailable, or error.

Warnings and alerts

Live

A warning appears when an exact target is unavailable or the closest valid result differs by more than 5%. A difference over 20% is an alert. Safety rules may block large changes.

Available controls

  • Reset Store Prices
  • Import CSV and Export CSV
  • Manage Pricing Groups
  • Review & Dry-Run
  • Application and subscription selectors
  • Quick-Apply Pricing Group and Target price
  • Territory search and group filters
Safety

Dry runs and approvals

A dry run verifies the intended rows without writing to a provider. Deployment requires a fresh, matching preview and an authenticated human decision.

  1. Run the analysis

    Open Preview & Dry-Run, select the application and subscription, then choose Re-run Analysis.

  2. Review every row

    Check current, target, final, difference, provider identifiers, warnings, excluded markets, and unchanged rows.

  3. Resolve blockers

    Refresh stale data, correct invalid rows, remove unintended protections, or reduce territories when a plan limit applies.

  4. Acknowledge the confirmation

    An OWNER or ADMIN confirms the exact signed rows in the deployment modal.

  5. Follow progress

    The deployment view reports totals, the current step, and per-row success or failure.

Approval model

Live

Web deployments can be approved by an OWNER or ADMIN. MCP WRITE tools only stage a confirmation; an OWNER or ADMIN must approve it in RevenueStack. There is no multi-approver or maker/checker rule.

Provider writes

Deployments

RevenueStack batches supported provider operations and logs each result. A deployment can finish with a mixture of successful and failed rows.

PlatformWrite behavior
AppleCreates App Store Connect subscription-price schedules using valid price-point IDs.
Google PlayUpdates regional base-plan configuration using the provider regional-price version.
PaddleCreates a replacement recurring price and archives the old immutable price.
StripeRead-only. Replacement-price deployment is not enabled.

Retries, cancellation, and rollback

Partial

Adapters may perform bounded request retries, but there is no persistent job queue, user-configurable retry schedule, cancellation during execution, or automatic rollback.

Request limits

Live

Explorer allows two live deployments per month with up to five territories. Other plans allow all supported territories; an individual request is capped at 250 rows.

Operations

Change history and CSV

Use Change History to investigate who changed a price, what the provider returned, and whether a row succeeded. Use CSV for larger offline edits on eligible plans.

History records include

  • Actor and UTC timestamp
  • App, subscription, platform, territory, and currency
  • Previous and new values
  • Provider price-point identifier when available
  • Status, sanitized provider response, and safe error message

Audit limitations

Partial

History records are database records, not cryptographically immutable events. Deleting an app cascades related logs, and no automatic reversal action exists.

Matrix CSV import

Live

Indie, Scale, Founder Lifetime, and Studio Lifetime can import UTF-8 CSV up to 512,000 characters and 1,000 parsed rows. Canonical headers are CountryCode, YearlyTarget, MonthlyTarget, and WeeklyTarget. Prices must be positive and no greater than 1,000,000,000.

External automation

MCP and AI agents

Scale and lifetime plans can connect an MCP-compatible agent to inspect pricing, prepare calculations, and stage guarded changes through a workspace-scoped key.

Connect an agent

  1. 1. Create a key

    Open Settings → AI Agents & MCP → Create API Key. Choose the smallest permission that supports the intended work.

  2. 2. Copy it once

    The full rs_mcp_live_… secret is shown only at creation. RevenueStack stores its SHA-256 hash and a visible prefix.

  3. 3. Configure the client

    Use the Streamable HTTP endpoint and send the key as a Bearer token. A local stdio bridge is also available.

  4. 4. Review activity

    Inspect last use, activity, pending confirmations, and update or revoke access in Settings.

Connection details

Endpoint: https://app.revenuestack.app/api/mcp
Transport: Streamable HTTP / JSON-RPC
Header: Authorization: Bearer rs_mcp_live_••••••••

Permissions

PermissionAllows
READInspect connections, apps, products, prices, matrices, deployments, history, and territories.
PREPARECreate previews, calculate changes, and validate proposed rows without provider writes.
WRITEStage an apply request for human confirmation. It cannot bypass approval.

Available tools

ToolPermissionPurpose
get_connected_platformsREADList connected providers and status.
get_apps / get_productsREADList workspace apps and recurring products.
get_current_prices / get_pricing_matrixREADRead stored prices, groups, multipliers, and rows.
compare_platform_pricesREAD · PartialCompare normalized records heuristically.
run_pricing_auditREADFind missing coverage or inconsistent data.
create_pricing_preview / calculate_price_changesPREPARESimulate pricing and return deltas.
validate_price_changesPREPAREValidate up to 250 proposed rows.
apply_price_changesWRITEStage a deployment and return CONFIRMATION_REQUIRED.
get_deployments / get_pending_confirmationsREADRead deployment and approval status.
get_price_history / get_supported_territoriesREADRead audit and territory metadata.
Entitlements

Plans and billing

Plan limits are enforced by the server. Dry runs and provider matching are available across plans; live deployment, CSV, teams, and MCP limits vary.

PlanPriceApps / accountsSeatsDeploymentCSV / MCP
Explorer$0 monthly or yearly1 / 112 per month; 5 territoriesNo / No
Indie$12/mo or $120/yr5 / 53UnlimitedYes / No
Scale$29/mo or $300/yr20 / 2010UnlimitedYes / 10 keys
Founder Lifetime$399 once3 / 32UnlimitedYes / 3 keys
Studio Lifetime$999 once10 / 105UnlimitedYes / 10 keys

Checkout

Live

Visible checkout uses Paddle Billing. Workspace access updates when signed provider webhooks report the plan, billing cycle, customer, subscription, and status.

Self-service billing changes

Planned

In-app downgrade, cancellation, cycle switching, invoices, refunds, and a billing portal are not currently available.

Configuration

Settings and notifications

Settings centralizes pricing defaults, deployment safeguards, connections, team access, agent keys, email notifications, and billing.

TabWhat you can manage
GeneralWorkspace name, default currency, timezone, and theme.
Pricing RulesDefault strategy, anchor behavior, min/max, rounding, increases/decreases, and maximum change.
Safety & DeploymentDry-run and confirmation rules, market limit, price protection, protected subscriptions, and excluded territories.
ConnectionsProvider connections and credential replacement.
Team & SeatsInvitations, roles, usage, members, and removal.
AI Agents & MCPKeys, permissions, activity, confirmations, and revocation.
NotificationsDeployment, discrepancy, connection, and large-change email preferences.
BillingSubscription and limited lifetime plan choices.

Email notifications

Live

Paid and lifetime plans can enable deployment completion/failure, discrepancy, connection-problem, and large-change emails and set the destination email.

Recovery

Troubleshooting

Start with the exact message, verify the current provider state, and rerun read-only checks before repeating any write.

Message or symptomLikely causeSafe next step
Authentication requiredSession is missing or expired.Sign in again and retry.
Workspace owner or administrator access is required.A MEMBER attempted a mutation.Ask an OWNER or ADMIN.
Invalid Google service account JSON.JSON is missing or malformed.Verify client_email and private_key.
Add at least one Google Play package name…No package is configured.Add the exact package name and retest.
Apple price-point ID is missingPreview is stale or unresolved.Refresh data and rerun the dry run.
No active matrix foundMatrix is not initialized.Sync the app/subscription and open Pricing Matrix.
No valid rows found in CSVHeaders, territories, or prices are invalid.Use canonical UTF-8 headers and positive values.
PREVIEW_EXPIREDPreview is over ten minutes old.Choose Re-run Analysis.
PLAN_LIMIT_REACHEDA plan entitlement is exhausted.Reduce the resource or upgrade.
RATE_LIMIT_EXCEEDEDThe MCP client sent too many requests.Back off and avoid duplicate writes.
Deployment has partial failuresSome provider rows failed.Inspect History, refresh, and deploy remaining differences.
Timeout or unknown resultThe provider response was lost.Verify provider prices before retrying.
Product boundaries

Known limitations

These constraints are part of the current product and should shape how teams operate RevenueStack.

  • Stripe deployment is unavailable; Stripe connections are read-only.
  • There is no automatic rollback, deployment cancellation, or user-configurable retry schedule.
  • Workspace switching, ownership transfer, workspace deletion, and account deletion are unavailable.
  • There is no public REST API, billing portal, invoice UI, or MFA flow.
  • Cross-platform comparisons are heuristic because products lack canonical cross-platform links.
  • RevenueStack has no live FX feed, historical FX table, or tax-calculation engine.
  • Audit records are not cryptographically immutable and retention cleanup could not be confirmed.
  • MCP rate limiting is process-local unless a distributed control is configured in production.
Reference

Glossary

The core terms used throughout RevenueStack pricing and deployment workflows.

TermDefinition
WorkspaceTenant boundary and owner of billing and entitlements.
ConnectionEncrypted provider credential record.
Managed appDiscovered provider app counted toward plan limits.
SubscriptionRecurring provider product or price record.
Pricing groupTerritories that share a multiplier.
Target priceDesired calculated or manual regional price.
Platform-valid priceProvider-supported value nearest the target.
Protected subscriptionSafety-listed subscription blocked from deployment.
Excluded territoryMarket omitted by workspace safety settings.
Dry runNon-writing resolution and validation of planned rows.
DeploymentGrouped provider write operation.
MCP keyOnce-visible bearer secret scoped to one workspace and permission.
ApprovalAuthenticated decision allowing a staged deployment to execute.

Guides, tools, and definitions