> For the complete documentation index, see [llms.txt](https://docs.tiun.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tiun.io/reference/generic/products.md).

# Products

Everything you sell on tiun is modeled as a **product**. Every product combines a **product type** — what you're selling, which determines how it's taxed — with a **pricing model**, which determines how and when the customer is charged. There are three pricing models available today, each matching a different access pattern, with **usage-based billing** on the way.

You set both in the same form when you create a product. Picking a pricing model changes the fields below it — an interval, a price and an optional trial for a subscription; a single price for a one-time purchase; an interval fee and a monthly limit for time-based billing.

|                  | **Subscription**                                                  | **One-time purchase**          | **Time-based billing**                                  |
| ---------------- | ----------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------- |
| **Interval**     | A count plus a unit — day, week, month, or year                   | —                              | Minutes only                                            |
| **Amount**       | **Price**, charged at the start of each interval                  | **Price**, charged once        | **Interval fee**, charged at the start of each interval |
| **Spending cap** | —                                                                 | —                              | **Monthly limit**, per calendar month                   |
| **Trial**        | Optional — **trial length** and **trial amount**, charged upfront | —                              | —                                                       |
| **Access**       | Continuous while the subscription is active                       | Permanent, never expires       | While the billing session is active                     |
| **You call**     | `tiun.checkout({ productId })`                                    | `tiun.checkout({ productId })` | `tiun.start()`                                          |

Every amount is in your account's [currency](#currency). Each pricing model is described in full below.

***

## Subscription

Subscriptions charge users on a **fixed schedule**. You set the **interval** as a count plus a unit — day, week, month, or year — so *every 1 month* and *every 3 months* are both valid. The **price** is charged at the start of each interval.

A **trial period** is optional. When you enable it you set a **trial length** (a count plus a unit) and a **trial amount**, charged upfront: enter `0` for a free trial, or anything below the subscription price for a discounted one. The full price applies from the first interval after the trial.

Subscriptions fit SaaS, membership sites, and any product where access is continuous and priced like a membership.

Subscription products integrate through `tiun.checkout({ productId })`. See [Checkout / How it works](/reference/checkout/how-it-works.md) and [Subscriptions](/reference/checkout/subscriptions.md) for the flow.

***

## One-time purchase

One-time purchases charge a **single price**, paid once at checkout. There is one field to configure — the **price** — and no interval, no trial, and no renewal. Access does not expire.

One-time products fit consulting engagements, lifetime licenses, a single course or report, and any deliverable that is bought once rather than rented.

One-time products integrate through `tiun.checkout({ productId })` — the same call as subscriptions. See [Checkout / How it works](/reference/checkout/how-it-works.md) and [One-time purchases](/reference/checkout/one-time-purchases.md) for the flow.

***

## Time-based billing

Time-based billing charges for **time spent** with your content rather than a flat membership. Billing is metered in **minutes** — the only interval unit for this pricing model. You set the **interval fee**, charged at the start of each interval, and a **monthly limit** capping what a user can be charged in a calendar month.

Time-based products fit news, podcasts, video streaming, magazines — anywhere value tracks engagement.

Time-based products integrate through `tiun.start()`. See [Time-based / How it works](/reference/time-based/how-it-works.md) for the flow.

***

## Currency

Every price you set — a subscription price, a one-time price, a trial amount, an interval fee, a monthly limit — is denominated in **your account's currency**. You choose it during onboarding, based on where your business is located, and the new-product form shows it next to each amount rather than asking again per product.

You do not set a currency per product, and you do not price the same product in several currencies. See [creating a profile](/guides/getting-started/create-a-profile.md) for where this is chosen.

***

## Tax category

Every product is filed under a **tax category** when you create it — the dashboard asks this as *"What's the product you are selling?"* and calls your answer the **product type**. tiun is the Merchant of Record for your sales, so this is what determines how the product is taxed in each jurisdiction — see [Tax and Compliance](/faq.md) in the FAQ for what that means for you.

The dashboard shows the available categories with a short description, guidance on where each one ends, and examples. Pick the one your product **genuinely** belongs to rather than the closest-looking match.

The list is **closed** — it is not free text, and there is no default.

If nothing on it fits what you sell, choose **Something else** in the new-product form at [my.tiun.business](https://my.tiun.business/) and describe your product; tiun follows up with you rather than filing it under an approximate category. **Something else is a dashboard-only option.** It exists in the new-product form — it is not one of the categories offered over the [MCP server](/guides/agent-integration/agent-integration.md), so an agent cannot select it on your behalf. When no category fits, the product has to be created in the dashboard; an agent should stop and hand that step back to you rather than settling for the nearest match.

{% hint style="warning" %}
**A tax category is permanent.** It is fixed when the product is created and cannot be edited afterwards — not in the dashboard, and not through the [MCP server](/guides/agent-integration/agent-integration.md). The only way to correct one is to archive the product and create a new one, and archiving cannot be undone: there is no restore. Get it right at creation.
{% endhint %}

***

## Product IDs

Every product gets a **unique product ID** like `p-live-pro`. The ID is stable and used everywhere you reference the product: `tiun.checkout()`, entitlement checks, analytics correlation.

Live and sandbox are **independent parallel catalogs** — you create products in each environment separately, and IDs never cross over. Product IDs are prefixed by environment: `p-live-...` for live and `p-test-...` for sandbox. See [Sandbox](/reference/generic/sandbox.md) for how the two environments work.

Find a product's ID on its detail or edit page in the [my.tiun.business dashboard](https://my.tiun.business/).

***

## Mix and match

A single tiun account can include **multiple pricing models** at once — for example a subscription for your core SaaS, a one-time purchase for a lifetime license, and a time-based offering for premium media. Each product is configured and called independently.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.tiun.io/reference/generic/products.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
