Skip to main content
Prices in Qwoty are created automatically — every time a pricebook is set up, all relevant products receive a price entry. Your job is to fill in the values, not to create the entries from scratch. When you create a pricebook, Qwoty automatically generates one price entry per product and per billing period — all set to 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

1

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
Click Export CSV. The file contains one row per price, with the id column pre-filled for every existing entry.
2

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
The columns you configure are: 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.
Do not add new rows. Prices are created automatically when pricebooks are set up — rows not present in the export do not correspond to any existing price and will be rejected on import.
3

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 the pricing_model column. The required columns depend on the model.
pricing_model values are case-sensitive. Use exactly: Flat, Cost based (with a space), Percent, Graduated Tiered, Volume Tiered, None. Any other casing is rejected.

CSV columns reference

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 in cost. 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:
For 15 units: 10 × €49 + 5 × €39 = €685.

Volume tiered

The entire quantity is priced at the tier matching the total volume:
For 150 units: 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

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

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.