Skip to content

Exchange Rates

Send Workbench supports multi-currency risk records. When a risk is denominated in a currency other than the client's base currency, the platform uses the Exchange Rates Service to convert values for reporting and aggregation purposes.


How exchange rates work

The Exchange Rates Service provides current FX rates between supported currency pairs. Rates are fetched from an external provider and cached internally. When a risk record uses a non-base currency, the platform automatically converts premium and limit values using the current rate at the time of binding.

The client's home country is configured in be_config.json via baseCountry (ISO 3166-1 alpha-3, e.g. GBR). Currency provider settings, refresh frequencies, and yearly/monthly average behaviour live in the currencyConfig block:

{
  "baseCountry": "GBR",
  "currencyConfig": { /* provider, refresh frequencies, etc. */ }
}

There is no baseCurrency field at the top level of be_config.json. Inspect the currencyConfig block on your active core platform version for the exact field names and confirm with your delivery lead.


Keeping rates current

Exchange rates are updated by a scheduled pipeline. The core config repository includes a pipeline definition for this:

config/core/pipelines/UpdateCurrencyRates.json

This pipeline calls the Exchange Rates Service to pull the latest rates and store them internally. It is typically scheduled to run nightly or on a configurable interval via a Cron trigger.

Note

Rate updates are handled by the platform automatically once configured. You should not need to trigger this manually in a production environment. For local development, you may need to seed rates manually if the external provider is not accessible.


Supported currencies

The platform uses ISO 4217 currency codes (e.g. GBP, USD, EUR, JPY). The set of currencies available in submission forms is controlled by the currency business constant in:

config/core/business-constants/currency.json

To restrict which currencies are selectable for a given business class, apply a custom business constant override in your client config:

config/{client}/business-constants/currency.json

Only include the currency codes you want to support.


Currency fields in submission forms

Currency fields on submission forms reference the currency business constant list. A typical currency field configuration looks like:

{
  "code": "premiumCurrency",
  "label": "Premium Currency",
  "type": "SELECT",
  "optionList": {
    "type": "BUSINESS_CONSTANT",
    "businessConstant": "currency"
  }
}

The associated amount field (e.g. estimatedPremiumIncome) should be linked to this currency selector so the UI renders the correct currency symbol.


FX rates in document generation

When generating documents, Handlebars templates can access the converted value using platform-provided helpers. The rate applied to a risk at bind time is stamped onto the risk record so that documents always reflect the rate in force at the moment of transaction — not the current rate at print time.


Local development

In local development, the Exchange Rates Service may not have access to the external FX provider. If you are working on functionality that depends on currency conversion, you can either:

  • Seed a static rate directly into the exchange rates database table
  • Use the UpdateCurrencyRates pipeline via the pipeline admin endpoint to trigger a manual refresh if the external provider is reachable from your environment

The Exchange Rates Service has no database of its own — rates are stored in the shared underwriting schema and cached in memory.


See also