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
| Condition | Result |
|---|---|
| All pricelists have the same currency | Request proceeds normally |
| Pricelists have different currencies | Returns HTTP 400 with error message |
currencyCode parameter provided and doesn't match pricelist currency | Returns 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
| Condition | Result |
|---|---|
| All pricelists are NET | Request proceeds normally |
| All pricelists are GROSS | Request proceeds normally |
| Mix of NET and GROSS pricelists | Returns 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
Related Settings
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
| Condition | Result |
|---|---|
| All referenced SKUs exist as articles | Price upload proceeds normally |
| One or more referenced SKUs do not exist | Returns 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
| Condition | Result |
|---|---|
| All referenced pricelists exist | Price upload proceeds normally |
| One or more referenced pricelists do not exist | Returns 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
| Condition | Result |
|---|---|
| Rate exists for base → target currency | Direct conversion applied |
| Rate exists for base → both currencies | Cross rate computed via base currency |
| No rate available for one or both currencies | Returns HTTP 404 |
Configuration
PUT /settings/fx.base.currency
Content-Type: application/json
{ "value": "EUR" }
Use Cases
- European businesses: Use
EURas the natural base (default, sourced from ECB) - Custom rate sources: Change the base currency if your rate provider uses a different reference
Related Settings
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
| Condition | Result |
|---|---|
| Enabled and ECB publishes new rates | Rates are fetched and stored automatically every 24 hours |
| Enabled but ECB has no new rates (weekend/holiday) | No update; last available rates remain active |
| Disabled | No 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
Related Settings
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
| Condition | Result |
|---|---|
| Enabled | Changes are recorded in the changelog and delivered to active webhooks |
| Disabled | No 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.