Skip to main content

Settings

Reading settings​

GET /settings/definitions lists every setting you can change, with its default value. A setting you have never written takes that default.

GET /settings lists the settings you have written, with their values and when each took effect. GET /settings/{key} returns one of them, and answers 404 for a setting you have never written. Both take asOf to read the settings as they were, or will be, at another time; a value written to take effect later appears from then on.

require.homogeneous.currency​

Description​

When enabled, this setting enforces that all pricelists involved in a price query have the same currency. This is useful when you want to ensure consistent pricing without implicit currency conversions.

Default value: false

Behavior​

ConditionResult
All pricelists have the same currencyRequest proceeds normally
Pricelists have different currenciesReturns HTTP 400 with error message
currency_code parameter provided and doesn't match pricelist currencyReturns HTTP 400 with error message

Error Responses​

Heterogeneous currencies:

{
"status": 400,
"error": "Bad Request",
"message": "Heterogeneous currencies found in pricelists: [EUR, SEK]. All pricelists must have the same currency when setting require.homogeneous.currency is enabled."
}

Currency mismatch:

{
"status": 400,
"error": "Bad Request",
"message": "Pricelist currency EUR does not match requested currency SEK"
}

Configuration​

Enable via the settings API:

PUT /settings/require.homogeneous.currency
Content-Type: application/json

{ "value": "true" }

Use Cases​

  • B2B pricing: Ensure customers always see prices in their contracted currency
  • Regional stores: Prevent accidental cross-currency price comparisons
  • Compliance: Enforce single-currency invoicing requirements

require.homogeneous.vat_mode​

Description​

When enabled, this setting enforces that all pricelists involved in a price query have the same VAT mode (all NET or all GROSS). This prevents mixing of price types that could lead to incorrect price comparisons.

Behavior​

ConditionResult
All pricelists are NETRequest proceeds normally
All pricelists are GROSSRequest proceeds normally
Mix of NET and GROSS pricelistsReturns HTTP 400 with error message

Error Response​

{
"timestamp": "2026-01-13T06:45:00.000Z",
"status": 400,
"error": "Bad Request",
"message": "Heterogeneous VAT modes found in pricelists: [NET, GROSS]. All pricelists must have the same VAT mode when setting require.homogeneous.vat_mode is enabled."
}

Configuration​

Enable via the settings API:

PUT /settings/require.homogeneous.vat_mode
Content-Type: application/json

{ "value": "true" }

Use Cases​

  • Consistent pricing display: Ensure all prices shown are either all tax-inclusive or all tax-exclusive
  • Invoice generation: Prevent mixing of NET and GROSS prices on the same document
  • Price comparison accuracy: Avoid comparing prices with different VAT treatments
  • require.homogeneous.currency - Enforces same currency across pricelists

strict.article.validation​

Description​

When enabled, Quantaprice accepts a price only for a SKU whose article exists and is not deleted. This keeps prices for unknown or removed products out.

Default value: false

Behavior​

ConditionResult
The SKU is an article, active at the price's startThe price is written
The SKU has no article, or its article is deleted or not yet in force at the price's startThe price is refused, an unchanged one too: 400 for a single price, listed in failed in a batch

Configuration​

Enable via the settings API:

PUT /settings/strict.article.validation
Content-Type: application/json

{ "value": "true" }

Use Cases​

  • Data integrity: Ensure prices are only created for known products
  • Migration safety: Catch typos or stale SKU references in bulk imports
  • Workflow enforcement: Require article registration before pricing

strict.pricelist.validation​

Description​

When enabled, Quantaprice requires that all pricelists referenced in price uploads already exist before accepting the prices. This prevents price data from being uploaded to non-existent pricelists.

Default value: false

Behavior​

ConditionResult
A pricelist with the code has been createdThe price is written
No pricelist with the code has ever been createdThe price is refused: 400 for a single price, listed in failed in a batch

Without this setting, a price for an unknown pricelist code is stored and appears once a pricelist with that code is created.

Configuration​

Enable via the settings API:

PUT /settings/strict.pricelist.validation
Content-Type: application/json

{ "value": "true" }

Use Cases​

  • Data integrity: Ensure prices are only uploaded to known pricelists
  • Migration safety: Catch incorrect pricelist codes in bulk imports
  • Workflow enforcement: Require pricelist creation before price uploads

ingest.skip.dedup​

Description​

Bulk-load mode. Normally, a price identical to the current one is accepted but stores nothing and records no change. With this setting on, that check is skipped and every price is written, which makes very large loads faster.

Default value: false

Turn it on for a large first load and off when the load is done: while it is on, re-sending unchanged prices stores redundant versions and, with change events on, records a change for each.

Configuration​

PUT /settings/ingest.skip.dedup
Content-Type: application/json

{ "value": "true" }

See Loading Data.

default.tax.area​

Description​

The tax area for prices with VAT where a request may leave it out and does: the console's article pages, and API reads such as GET /price/pricelists-for-sku/{sku}. POST /price/query always needs a tax_area.

Default value: SE

fx.rate.auto.update​

Description​

When enabled, Quantaprice fetches exchange rates from the European Central Bank (ECB) every 24 hours. There is no fixed time of day.

Default value: true

Behavior​

ConditionResult
Enabled and ECB publishes new ratesRates are fetched and stored automatically every 24 hours
Enabled but ECB has no new rates (weekend/holiday)No update; last available rates remain active
DisabledNo automatic fetching; rates must be uploaded manually via POST /fx/daily or triggered via POST /fx/fetch

Configuration​

PUT /settings/fx.rate.auto.update
Content-Type: application/json

{ "value": "true" }

Use Cases​

  • Hands-off FX management: Keep rates current automatically for multi-currency pricing
  • Daily price recalculation: Ensure price queries always use the latest exchange rates

Rates are stored per EUR, and a conversion between two other currencies goes through EUR. See FX Rates.

change.events.enabled​

Description​

When enabled, Quantaprice delivers change events to your registered webhooks. The changelog records every change whatever this setting says, and can always be polled.

Webhook deliveries must be included in your plan; this setting turns them on for your tenant.

Default value: false

Behavior​

ConditionResult
Enabled, and included in your planChanges are delivered to active webhooks
Disabled, or not included in your planNothing is delivered to webhooks; the changelog is unaffected

Configuration​

PUT /settings/change.events.enabled
Content-Type: application/json

{ "value": "true" }

Use Cases​

  • Data synchronization: Poll the changelog to keep external systems in sync with Quantaprice
  • Downstream updates: Use webhooks for near real-time notification when prices change
  • Audit trail: Track what changed, when, and by whom
  • Event-driven workflows: Trigger downstream processes on pricing updates

See Change Events for full documentation on the changelog and webhook systems.

retention.enabled, retention.max.versions, retention.history.ms​

Description​

Limit how much price history is kept per SKU and pricelist. Available when your plan includes history retention; your plan also sets the largest values you can choose.

SettingDefaultEffect
retention.enabledfalseTurns retention on
retention.max.versions0Keep at most this many versions; 0 means no limit
retention.history.ms2592000000 (30 days)Keep versions from the last N milliseconds

The version in force, anything scheduled after it, and the most recent few versions are always kept. See Historical Pricing.

Configuration​

PUT /settings/retention.enabled
Content-Type: application/json

{ "value": "true" }

See also​

  • Querying Prices — settings like require.homogeneous.currency affect query behaviour.
  • Change Events — change.events.enabled controls the webhook deliveries described there.
  • FX Rates — fx.rate.auto.update controls whether rates are fetched from the ECB.
  • API Reference — full spec for PUT /settings/{key}.