None. Those entries already have an id. The export-then-reimport flow is therefore the same whether you are configuring prices for the first time or updating existing ones.
The standard workflow is: export your existing prices → edit the CSV → reimport it. The id column is the only key Qwoty uses to match rows; all other fields are updated in place.
You must have the Admin role to access Import & Export. Pricebooks must already exist before you can configure their prices.
Access
Navigate to Settings → Import & Export, then select the Prices section. The page has two panels: Import (upload a CSV) and Export (download your current data).Update prices
Export your current prices
In the Export panel, choose what to download:
- All data — every price across all pricebooks
- Filter by pricebook — one pricebook at a time
- Filter by catalog — all prices for products in a given catalog
id column pre-filled for every existing entry.Edit the CSV
Open the file in your spreadsheet editor and fill in or update the pricing columns. The following columns are read-only context — they identify what each row represents and must not be changed:
id,product_api_name,pricebook_api_name,currency_code,type,period_unit,period
pricing_model, amount, percent, cost, floor_price, vat_code, engagement_type, period_duration_month, pay_as_you_go, identifiers[*], and tier columns.Rows with an empty pricing_model (or None) are placeholder prices waiting to be configured. Set the model and the relevant amount columns for those rows.Reimport the file
In the Import panel, click Upload File and drop your edited CSV.The import wizard runs in four steps: Upload → Mapping → Confirm → Result. Review the mapping screen before confirming to make sure columns are matched correctly.
Once the import completes, your prices are live in the corresponding pricebooks. Open a pricebook to verify the changes.
The six pricing models
Each row declares its model in thepricing_model column. The required columns depend on the model.
| Model | Use it for |
|---|---|
Flat | One fixed amount — the most common case |
Cost based | Selling price computed as a multiplier on the product’s defined cost |
Percent | A percentage of a reference value, calculated at quote time |
Graduated Tiered | Each tier applies progressively to volumes within that tier |
Volume Tiered | The entire quantity is priced at the tier matching the total |
None | Placeholder — the price is filled in manually at quote time |
CSV columns reference
| Column | Required | Type | Description |
|---|---|---|---|
id | ✱ | UUID | Price ID — the only key used on import. Never change this value. |
product_api_name | — | Text | Read-only context. The API name of the associated product. |
pricebook_api_name | — | Text | Read-only context. The API name of the associated pricebook. |
currency_code | — | Text | Read-only context. ISO 4217 code (EUR, USD, GBP…). |
type | — | Enum | Read-only context. one-time or recurring. |
period_unit | — | Enum | Read-only context. Billing period unit (day, week, month, year). |
period | — | Number | Read-only context. Number of period units per cycle (1 = monthly, 3 = quarterly). |
pricing_model | ✱ | Enum | Flat, Cost based, Percent, Graduated Tiered, Volume Tiered, None. |
vat_code | — | Text | VAT identifier in vat_<country>_<rate> format (e.g. vat_fr_200 = France 20%). Leave empty for no default VAT. |
floor_price | — | Number | Minimum allowed price (guardrail when discounts are applied). |
amount | ✱ if Flat | Number | The fixed price per unit. |
percent | ✱ if Percent | Number | The percentage value (8.95 = 8.95%). |
percent[multiplier] | — | Number | Optional multiplier on the percent calculation. |
percent[perimeter] | — | Text | Scope the percentage applies to (e.g. product). |
percent[externals_id] | — | UUID | Reference ID for the percent target. |
cost | — | Number | For Flat: internal cost reference used for margin reporting. For Cost based: the multiplier applied to the product’s cost to compute the selling price. |
pay_as_you_go | — | Boolean | true for usage-based billing where the amount is computed at consumption time. |
engagement_type | — | Enum | forever (open-ended) or fixed (commitment period). |
period_duration_month | — | Number | Commitment duration in months. Required when engagement_type is fixed. |
identifiers[erp] | — | Text | External ERP reference for this price. |
identifiers[crm] | — | Text | External CRM reference for this price. |
identifiers[accounting] | — | Text | External accounting reference for this price. |
tiers[starting_unit][N] | ✱ if tiered | Number | Lower bound of tier N (inclusive). N is 0-based: [0], [1], [2]… |
tiers[ending_unit][N] | — | Number | Upper bound of tier N (inclusive). Leave empty for “no upper limit”. |
tiers[price][N] | ✱ if tiered | Number | Per-unit price for tier N. |
tiers[flat_fee][N] | — | Number | Optional flat fee added on top of tier N (Graduated Tiered only). |
Tier indexes are 0-based: the first tier is
tiers[starting_unit][0], the second is tiers[starting_unit][1], and so on.Examples by pricing model
Flat one-time
A fixed amount per unit, with an internal cost reference for margin reporting:Flat recurring (monthly, open-ended)
A fixed monthly fee with no commitment period:Flat recurring (annual, fixed commitment)
An annual price with a 12-month commitment:Cost based
Selling price is computed as the product’s defined cost × the multiplier incost. A floor_price sets the minimum:
Percent
A percentage of a reference product’s price, calculated at quote time:Graduated tiered
The first 10 units at €49, everything above at €39:10 × €49 + 5 × €39 = €685.
Volume tiered
The entire quantity is priced at the tier matching the total volume:150 × €5.00 = €750 (everything at the tier matching 150).
None (placeholder)
The product appears in the pricebook but has no configured price. Sales reps fill in the amount manually on each quote:Troubleshooting
Import failed: unknown pricing_model
Import failed: unknown pricing_model
pricing_model is case-sensitive. Use exactly: Flat, Cost based (with a space), Percent, Graduated Tiered, Volume Tiered, None. Lowercase variants or underscores (cost_based) are rejected.Import failed: id not recognized
Import failed: id not recognized
The
id column must contain a UUID that exists in your workspace. Only rows from an export of your own workspace are valid. Do not copy IDs from another workspace or create new ones manually.Tiers are imported in the wrong order
Tiers are imported in the wrong order
Qwoty orders tiers by
tiers[starting_unit][N] value, not by index position. Make sure tiers[starting_unit][0] is the smallest value. Overlapping ranges trigger a validation error.vat_code is rejected
vat_code is rejected
Use the
vat_<country>_<rate> format, all lowercase, with the rate as a number without a decimal point: vat_fr_200 for 20%, vat_fr_055 for 5.5%, vat_de_190 for 19%. Leave the cell empty when no VAT applies.Fixed-term price shows no commitment duration
Fixed-term price shows no commitment duration
When
engagement_type is fixed, you must also fill in period_duration_month with the number of months (e.g. 12 for a 12-month commitment). Leaving it empty with engagement_type = fixed causes the field to be ignored.Percent price is applied with unexpected results
Percent price is applied with unexpected results
The
percent column takes a number, not a fraction: 8.95 means 8.95%, not 0.0895. Combine with floor_price to set a minimum charge.Related
Pricing types reference
Conceptual deep-dive on each pricing model and when to use it.
Create a pricebook
Set up the pricebook before exporting its prices to configure.
Import products
Products must exist before their prices can be configured.
Prepare your CSV
Universal formatting rules for all Qwoty imports.

