Skip to main content

Settings

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
currencyCode 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 requires that all articles referenced in price uploads already exist before accepting the prices. This prevents orphaned price data for non-existent SKUs.

Default value: false

Behavior

ConditionResult
All referenced SKUs exist as articlesPrice upload proceeds normally
One or more referenced SKUs do not existReturns HTTP 400 with error message

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
All referenced pricelists existPrice upload proceeds normally
One or more referenced pricelists do not existReturns HTTP 400 with error message

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

fx.base.currency

Description

Defines the base currency used as the reference for all exchange rate calculations. All FX rates are stored relative to this currency, and cross-currency conversions are computed through it.

Default value: EUR

Behavior

ConditionResult
Rate exists for base → target currencyDirect conversion applied
Rate exists for base → both currenciesCross rate computed via base currency
No rate available for one or both currenciesReturns HTTP 404

Configuration

PUT /settings/fx.base.currency
Content-Type: application/json

{ "value": "EUR" }

Use Cases

  • European businesses: Use EUR as the natural base (default, sourced from ECB)
  • Custom rate sources: Change the base currency if your rate provider uses a different reference
  • fx.rate.auto.update — Controls automatic fetching of rates for the base currency

fx.rate.auto.update

Description

When enabled, Quantaprice automatically fetches and updates exchange rates from the European Central Bank (ECB). The first fetch runs ~1 second after startup, then every 24 hours thereafter (interval-based, not clock-based). Fetching runs on the master node only — replicas receive rates through replication.

Default value: false

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
  • fx.base.currency — Defines which currency rates are relative to

change.events.enabled

Description

When enabled, Quantaprice records change events for all data modifications — articles, pricelists, prices, currencies, VAT rates, tax areas, rounding profiles, and settings. Changes are available through both the polling changelog (GET /changelog) and push webhooks.

Default value: false

Behavior

ConditionResult
EnabledChanges are recorded in the changelog and delivered to active webhooks
DisabledNo change events are recorded or delivered

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
  • Cache invalidation: 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.