> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.fluveo.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.fluveo.com/_mcp/server.

# Prices

> **Status: `contracted_test`.** In the machine-checked test-mode contract
> (`openapi.subset.json`) and the [API Reference](/api-reference): create,
> retrieve, list and update. Served by the `fluveo-billing` sidecar (ADR 0019);
> create/retrieve/list promoted 2026-07-13, update 2026-09-15. The
> `Stripe-Version` header is optional. See [API coverage](/api-coverage).

A Price sets how much a [product](/billing/products) costs and how often it bills —
a one-time amount or a recurring interval (`day`, `week`, `month`, `year`, with an
`interval_count`). A [subscription](/billing/subscriptions) is created against a
recurring price; a subscription's items expand their price inline on reads.

Served operations: **create**, **retrieve**, **list**, and **update**, all
contracted in test mode. Update accepts `active`, `nickname`, `lookup_key`,
`tax_behavior` and `transfer_lookup_key`; amount, currency and product are
immutable, as they are in Stripe. Stripe has no delete for prices, and neither
does Fluveo. Search is not served.

A `lookup_key` names at most one price, so a checkout can name a price
indirectly. Claiming a key another price holds is refused;
`transfer_lookup_key=true` moves it and clears the previous holder.

Lists honor `limit` (1–100, default 10), `starting_after`, `ending_before`,
`active`, `created`, `product`, `currency`, `type`, `recurring[interval]` and
`lookup_keys[]`, ordered newest-first. `metadata` is returned on every read.
`interval_count` is capped so the billing period never exceeds three years.

Tiered, package, customer-chosen, per-currency and metered pricing are
unsupported and are rejected explicitly rather than silently ignored, as is any
unknown parameter. The remaining parity gap is tracked internally.