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

# Multi-product billing

> How product_code keeps plan catalogs separate on the AgentRuntime platform.

AgentRuntime's billing platform can host **multiple commercial products** on shared infrastructure. Each product has its own plan catalog, trial policies, and workspace lineage, identified by a **`product_code`**.

The [Console](https://console.agentruntime.io) you use today is scoped to **`agentruntime`**. You do not pick a product in the UI — it is set automatically when your workspace is created.

## Concepts

| Term               | Meaning                                                                                                    |
| ------------------ | ---------------------------------------------------------------------------------------------------------- |
| **`product_code`** | Stable identifier for a commercial product line (`agentruntime`, or a future product on the same platform) |
| **`plan_code`**    | Tier within that product (`free`, `pro`, `plus`, `max`, `enterprise`)                                      |
| **Catalog key**    | `(product_code, plan_code)` — the same tier name can exist on different products without colliding         |
| **Workspace**      | Each workspace (`tenant`) is stamped with one `product_code` at creation                                   |

## What you see in the Console

For **console.agentruntime.io**:

* **Settings → Plans** lists only **AgentRuntime** plans (`product_code = agentruntime`)
* **Settings → Billing Overview** and **Usage & History** reflect your workspace subscription and credit buckets — unchanged from single-product behavior
* Plan cards show tier names (`pro`, `plus`, …) — not the internal `product_code`

<Note>
  You will not see another product's plans in this Console, even if AgentRuntime launches additional products in the future — each Console deployment is scoped to one product.
</Note>

### Workspace creation

When you create a workspace on the AgentRuntime Console:

1. The workspace is stamped with `product_code = agentruntime`
2. Onboarding auto-trial and default plan selection consider only **agentruntime** catalog rows
3. Your workspace switcher shows only workspaces for this product

A global user account (email or Google) can belong to workspaces on **different** products in the future — each workspace is independent; credits and subscriptions never cross product boundaries.

## Plans and Stripe

Plans sync from Stripe. Each Stripe **Price** or **Product** carries metadata:

| Metadata key                      | Required            | Example        |
| --------------------------------- | ------------------- | -------------- |
| `product_code`                    | Yes (multi-product) | `agentruntime` |
| `plan_code`                       | Yes                 | `pro`          |
| `included_microcredits_per_cycle` | Recommended         | `5000000`      |

Self-serve tiers for AgentRuntime today:

| plan\_code     | Typical role                               |
| -------------- | ------------------------------------------ |
| `free`         | PAYG-only                                  |
| `pro`          | Default onboarding; 14-day trial available |
| `plus` / `max` | Paid subscription tiers                    |
| `enterprise`   | Sales-provisioned                          |

Annual variants (`pro_annual`, etc.) are separate catalog rows with the same `product_code`.

See [Billing and credits](/platform/billing-and-credits) for buckets, metering, and top-ups.

## Credits and subscriptions

Multi-product billing does **not** split credits inside one workspace:

| Scope             | Behavior                                                                                        |
| ----------------- | ----------------------------------------------------------------------------------------------- |
| **Per workspace** | One active plan, trial state, and credit ledger (trial → included → PAYG)                       |
| **Per product**   | Separate plan catalog and policies; workspaces only consume plans from their own `product_code` |
| **PAYG balance**  | Persists across plan changes within the same workspace                                          |

Usage metering (`workflow.step.execute`, memory jobs, etc.) debits your workspace ledger the same way regardless of `product_code`.

## API behavior

Customer integrations call **`https://api.agentruntime.io`**:

* `GET /v1/billing/plans` — Returns plans scoped to your workspace's `product_code` automatically
* `POST /v1/billing/subscription`, trial, and top-up endpoints — Resolve against your workspace's own catalog
* Onboarding and workspace creation stamp `product_code` for you — it is never something you set directly

The plan JSON returned to your integration emphasizes `plan_code`, `amount`, and trial fields. `product_code` is implicit for this deployment (`agentruntime`).

### Example catalog response shape

`GET /v1/billing/plans` (scoped to AgentRuntime):

```json theme={null}
{
  "plans": [
    {
      "plan_code": "pro",
      "stripe_price_id": "price_…",
      "amount": 4900,
      "currency": "usd",
      "interval": "month",
      "interval_count": 1,
      "product_name": "AgentRuntime Pro",
      "trial_enabled": true,
      "trial_days": 14,
      "trial_credits_granted": 5000000,
      "trial_requires_card": false,
      "onboarding_default": true
    }
  ]
}
```

Values like `trial_credits_granted` are in **microcredits**. See [API examples](/api/examples#billing-usage-snapshot).

## Existing workspaces

Workspaces created before multi-product billing shipped were assigned `product_code = agentruntime` automatically. **No action required** — plan codes (`pro`, `plus`, …) and credit balances are unchanged.

## If AgentRuntime launches another product

| Area            | Expected behavior                                                                    |
| --------------- | ------------------------------------------------------------------------------------ |
| **Console URL** | A separate Console for that product (for example `console.otherproduct.io`)          |
| **Plans**       | That Console shows only its product's catalog                                        |
| **Users**       | The same email can create a workspace on each product; memberships are per workspace |
| **Referrals**   | Program rules may gain per-product configuration later                               |

## Troubleshooting

| Question                                       | Answer                                                                                                                 |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| Why don't I see `product_code` in the Console? | It's a platform-level identifier, not a user setting. This Console is AgentRuntime only.                               |
| Can I move a workspace to another product?     | Not self-serve. Products are fixed at workspace creation.                                                              |
| Do plan codes collide across products?         | No — catalog uniqueness is `(product_code, plan_code)`, so the same tier name can exist independently on each product. |
| What's the source of truth for my plan?        | **Settings → Plans** and `GET /v1/billing/plans` on your Console's API host.                                           |

## Related

* [Billing and credits](/platform/billing-and-credits) — credits, trials, PAYG, metering
* [Key concepts — workspaces](/platform/key-concepts#workspaces-tenants)
* [Referrals and affiliates](/platform/referrals-and-affiliates)
* [API reference — billing](/api/reference#billing-endpoints)
* [API examples](/api/examples)
