When to Use
- Enterprise customer with a negotiated rate
- Promotional or introductory pricing for a specific account
- Volume discounts agreed outside of your standard plan tiers
- Early adopter or partner pricing
How to Apply Overrides
Pass anoverride_line_items array in the create subscription request. Each entry references a plan price by price_id and specifies what to change.
What You Can Override
| Field | Type | Notes |
|---|---|---|
price_id | string | Required. The plan price to override |
amount | decimal | For flat fee prices (FIAT pricing) |
quantity | decimal | Fixed prices only — cannot be set for usage-based prices |
billing_model | string | FLAT_FEE, TIERED, or PACKAGE |
tier_mode | string | VOLUME or SLAB — for TIERED billing model |
tiers | array | Custom tier breakpoints for TIERED/FIAT pricing |
transform_quantity | object | For PACKAGE billing: divide_by and round |
price_unit_amount | decimal | For custom price unit prices |
price_unit_tiers | array | Custom tiers for custom price unit + TIERED |
What You Cannot Override
These fields are always inherited from the original plan price and cannot be changed:| Field | Why |
|---|---|
currency | Locked to the subscription’s currency |
billing_period / billing_period_count | Billing cycle alignment is fixed |
billing_cadence | Cannot switch recurring ↔ one-time |
invoice_cadence | ARREAR/ADVANCE is fixed per price |
trial_period | Trial config is plan-level |
meter_id | The usage metric cannot be swapped |
price_unit_type | Cannot switch FIAT ↔ CUSTOM |
display_name | Preserved from original |
Validation Rules
- At least one override field must be provided per entry
amountandquantitymust be non-negativequantityis not allowed on usage-based prices (usage is metered, not quantity-based)- Cannot mix FIAT fields (
amount,tiers) with custom price unit fields (price_unit_amount,price_unit_tiers) in the same entry transform_quantity.divide_bymust be greater than 0price_idmust reference a price that exists in the selected plan
How It Works Internally
When an override is processed, Flexprice:- Creates a new subscription-scoped price with
entity_type = SUBSCRIPTIONand the overridden values - Sets
parent_price_idon the new price to the original plan price’s ID — preserving the lineage - The subscription’s line item points to this subscription-scoped price
Billing Behavior After Override
- All invoicing for this subscription uses the subscription-scoped price
- If the plan price is later updated, this subscription’s override is not affected
- If a price sync is run, the overridden line item is not replaced — sync only fills in missing line items

