The Update Price API
Available Fields
Fields You Cannot Change
These are immutable after a price is created:Two Update Paths
Path A — Metadata-only update (in-place)
If you only updatedisplay_name, description, lookup_key, metadata, or group_id, the price is updated in place. No new price version is created. No sync is needed.
Path B — Pricing field update (new version created)
If you update any pricing field (amount, billing_model, tiers, tier_mode, transform_quantity, price_unit_amount, price_unit_tiers), the system:
- Terminates the current price — sets its
end_datetoeffective_from(or now if not provided) - Creates a new price — starts exactly at
effective_from, with the updated values - Returns the new price in the response (with a new
id)
id will be different from the original).
Syncing the Change to Existing Subscribers
After a pricing field update, existing subscriptions are not automatically updated. You must run the price sync workflow to propagate the new price to all active subscribers on the plan.Why Manual Sync?
The sync workflow can affect large numbers of subscriptions. Triggering it automatically on every price update would be unpredictable. Doing it explicitly gives you control over timing.Safe Sync Sequence
Step 1 — Update the price- If
pagination.total > 0— a sync is already running. Do not trigger another. PollGET /workflows/{workflow_id}/{run_id}every 30 seconds untilstatusisCompletedorFailed, then continue to Step 3. - If
pagination.total == 0— proceed to Step 3.
Step 5 — Verify (optional)
Check the sync summary in the completed workflow response:
line_items_terminated = old price line items closed. line_items_created = new price line items added.
What Sync Does After a Price Update
When you update a price, the old price gets anend_date and a new price is created. The sync workflow:
- Terminates existing line items that reference the old price (their
end_dateis set to match the old price’send_date) - Creates new line items for the new price on all subscriptions that don’t have one yet
Using effective_from
effective_from controls when the old price expires and the new one starts.
The sync workflow creates new line items with
start_date = price.start_date. If you set effective_from: "2026-04-01", the new line items will start on April 1 and the old ones will end on April 1.Examples
Update a flat fee amount
POST /plans/plan_growth/sync/subscriptions

