Skip to navigation

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.

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:

WhereFieldUse it for
Pricing item configdefault_unitsThe plan-level default. Absent reads as 1, which is what every existing one-off item does
Pricing plan scheduleunitsThe quantity for one subscription, keyed on the pricing item config the way seats_values is
On-demand charge requestunitsThe 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
"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.

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.

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
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.