CURRENCYHUB

Methodology

Exchange Rate Methodology

How CurrencyHub turns published provider data into dated reference conversions.

Data source and publication schedule

CurrencyHub uses the Frankfurter exchange-rate API. Frankfurter aggregates daily rates from central banks and other official institutions. The provider date is shown as the rate date; it is not replaced by the website request time.

Reference rates are intended for information. They are not bank, card, remittance or intraday trading quotes.

Weekends, holidays and unavailable dates

Official institutions generally publish on working days. A weekend, public holiday or market closure may have no new rate. Historical tools distinguish the requested date from the actual published date and do not invent a missing observation.

Conversions and inverse rates

CurrencyHub validates one complete daily rate snapshot and derives every supported direction from that same matrix. For currencies A and B, the A-to-B rate is the snapshot value for B divided by the snapshot value for A; the reverse direction uses the reciprocal values from the same dated snapshot.

Precision and rounding

Provider decimals are retained as strings and cross rates are calculated with high-precision integer arithmetic before values are formatted for display. Display precision varies by the scale of the result and the normal decimal usage of the currency. A rounded display value should not be treated as a settlement instruction.

Fees, spreads and markups

Fee tools apply the user-entered percentage fee, fixed fee and exchange-rate markup to a reference conversion. These are estimates. Financial providers may use a different base rate, processing date, fee order or rounding method.

Caching and failure handling

CurrencyHub uses an atomic file cache on the production server. The latest complete snapshot is cached for 15 minutes; historical snapshots and range indexes are cached for 24 hours. Each snapshot retains the provider, Provider version, actual publication date, anchor currency, original rates, fetch time and cache-write time.

If the provider times out, returns a rate-limit response or has a temporary server error, CurrencyHub can show the last validated complete snapshot and labels it Last successful reference rate. The Provider date remains unchanged and is never replaced by the cache-read time. If no validated snapshot exists, the page displays an unavailable state.

This single-server cache survives PM2 restarts. It is not a distributed cache and would need to be replaced or shared before running multiple application instances.

Automated page assembly

Currency, country and pair pages are assembled from reviewed records and validated rate responses. Automation handles arithmetic and consistent linking; it does not create forecasts, transaction recommendations or unsupported facts.