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 key Qwoty uses to match rows; all other fields are updated in place. It contains either the price UUID or a price key built from the product and pricebook API names.
You need the Import CSV and Export CSV permissions in the Apps block of your role. Pricebooks must already exist before you can configure their prices.

Access

Go to Settings › Data › Import & Export, then click Prices. The page has two panels: Import (Download Template, View Documentation, Upload File) and Export (download your current data). You can also start from the pricebook list: in Products & pricing › Pricebook, use Import prices or Export prices.

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
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, percent[multiplier], 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 → Confirmation → Result. Review the mapping screen to make sure columns are matched correctly, then click Start import. If some rows fail, click Download unimported rows on the Result step.
Once the import completes, your prices are live in the corresponding pricebooks. Open a pricebook to verify the changes.

Identify a price by its key

Instead of the price UUID, the id column accepts a key built from API names, separated by dots:
  • product_api_name and pricebook_api_name are the values of the export columns with the same names.
  • period_unit is day, week, month or year; period is the number of units per cycle (1 = monthly, 3 = quarterly).
  • A recurring product has one price per billing period in each pricebook, so its key must include the period.
The key only targets prices that already exist — it does not create new ones. Each price can appear only once per file, whether through its UUID or its key.

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 the labels exactly as exported (Flat, Cost based, Percent, Graduated Tiered, Volume Tiered, None) or the internal values (flat, cost_based, percent, graduated, volume, none). Any other value 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 cost × percent[multiplier]. 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 the exported labels (Flat, Cost based, Percent, Graduated Tiered, Volume Tiered, None) or the internal values (flat, cost_based, percent, graduated, volume, none).
The id column must contain a UUID that exists in your workspace, or a valid price key. Only rows from an export of your own workspace are valid. Do not copy IDs from another workspace or create new ones manually.
With a price key, each part must match your workspace: product_api_name and pricebook_api_name exactly as in the export, and a billing frequency (month.1, year.1…) that exists in Products & pricing › Product options › Billing frequency. A one-time product has no period: use product.pricebook only.
The key matches more than one price. Use the price UUID from the export for that row instead.
At least one tier is required for these models: fill in tiers[starting_unit][0] and tiers[price][0], and add [1], [2]… for the next tiers.
vat_code must match the API name of a tax in Settings › Workspace › Tax exactly. A value that matches no tax leaves the price without a default tax.
When engagement_type is fixed, also fill in period_duration_month with the number of months (for example 12 for a 12-month commitment).
The percent column takes a number between 0 and 100, 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.
Last modified on October 27, 2026