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

# One-off pricing

One-off pricing refers to a pricing type in which a product or service is offered as a standalone, individual purchase, separate from any recurring subscription or usage-based fees. It allows customers to make a one-time payment for specific features, add-ons, or services, typically providing additional functionality or customizations to the core SaaS product.

---

## Billed in advance

One-off and recurring pricing types have the option to be billed in advance. In that case, the costs are on the invoice that comes before the start of the billing period of the customer.

![](/_fern-img/273bcfc5df32b9f3e2f7f23035aafbf97a07c90e1338deaacf24178da998120c.webp)

## A unit price and a quantity

A one-off charge is a lump sum by default: the price you configure is the price that is billed. Selling four products at \$100 that way means working out \$400 and entering it. That is per customer, every time the quantity differs.

A one-off pricing item config priced `FLAT` bills a quantity instead. The band's `amount` becomes the unit price, its `fixed_amount` stays a flat fee charged once, and the line bills `fixed_amount + amount × units`. `FIXED` is unchanged and remains a lump sum.

A count can be set in three places:

| Where                    | Field           | Use it for                                                                                    |
| ------------------------ | --------------- | --------------------------------------------------------------------------------------------- |
| Pricing item config      | `default_units` | The plan-level default. Absent reads as 1, which is what every existing one-off item does     |
| Pricing plan schedule    | `units`         | The quantity for one subscription, keyed on the pricing item config the way `seats_values` is |
| On-demand charge request | `units`         | The quantity the customer just ordered                                                        |

On a subscription line the schedule's `units` wins over `default_units`, which in turn falls back to 1. An on-demand charge ignores both and takes the count from the request.

**`Four units on a subscription schedule`**

```json Four units on a subscription schedule
"units": [
  { "pricing_item_config_id": "pico_5RmXe2QbtKfYuA9DcNH3P", "number": "4" }
]
```

Unlike seats, a unit count is a single value taken at the schedule start rather than a timeline. `start_at` and `end_at` on the entry are not used to build a history of the quantity. Copying or migrating a schedule carries its units across.

A wallet grant on such an item scales with the count. A top-up product granting 500 credits per unit grants 1,500 credits when three units are ordered. A grant that converts from the paid amount, or takes a percentage of it, cannot scale that way. It is rejected at configuration time, because the paid amount already contains the count.

> **Note**
>
> A unit count is a number. `default_units.amount` and `default_units.count` are rejected in favour of `number`, and both `default_units` and `units` are only accepted on a one-off item priced `FLAT`. A count of zero on a schedule is valid and bills no line at all.

## Charging one-off items on demand

A one-off product item pricing can also be flagged as on-demand, so it isn't billed with the subscription's regular invoices but charged on a separate invoice whenever the customer asks for it. See [On-demand charges](/platform-guides/products-and-pricing/pricing-plans/on-demand-charges).

On a `FLAT` item the charge request states the quantity itself. `units` is required and must be positive. It does not fall back to `default_units`: that value is a prefill for your ordering screen, not a quantity the customer confirmed.

**`Order three more units`**

```bash Order three more units
curl -X POST https://test.api.solvimon.com/v1/invoices/charge-on-demand-pricing-items \
  -H "X-API-KEY: <apiKey>" \
  -H "Content-Type: application/json" \
  -d '{
    "pricing_plan_schedule_id": "ppsc_jwDeeN0tYSY3F7BkeN1v",
    "pricing_items": [
      { "pricing_item_id": "proi_hwDeeN0vcYJaBLAc0C1W", "units": { "number": "3" } }
    ]
  }'
```

Ordering zero units is rejected: a count of zero is a valid configuration on a schedule, but it is not an order.

---