---
title: "Rate sources"
description: "The three built-in providers, what each sends and receives, and how to run the plugin with no outbound requests at all."
url: "https://maksut.net/price-anchor/docs/rate-sources/"
language: "en-US"
datePublished: "2026-08-02T00:35:15+00:00"
dateModified: "2026-10-10T08:40:00+00:00"
---

# Rate sources

A rate source — a provider — is the thing that answers “what is one unit of USD worth in my store currency today”. Price Anchor ships three, and Pro adds more.

## Frankfurter (default)

Frankfurter publishes European Central Bank reference rates through a public API that requires no account and no API key. It supports arbitrary base currencies, which is why it is the default: it works for any store currency, not just European ones.

- Service and API information: [frankfurter.dev](https://frankfurter.dev/)
- Updated once per working day, following the ECB’s own publication schedule
- No key, no registration, no per-request quota to manage

ECB reference rates are a published benchmark, not a tradeable rate. They will not match what your bank actually charges you. That gap is what the markup setting is for.

## TCMB

The Central Bank of the Republic of Türkiye publishes a daily exchange-rate XML file. Price Anchor can read it directly.

- Source: [tcmb.gov.tr/kurlar/today.xml](https://www.tcmb.gov.tr/kurlar/today.xml)
- **Only valid when your WooCommerce store currency is TRY.** The data is published relative to the lira, so it cannot serve a store selling in another currency.
- Published on banking days; there is no new file on weekends and public holidays, which is expected rather than a failure.

## Manual

You type the rates. Price Anchor makes no outbound request whatsoever.

Choose this when:

- the site is not permitted to contact external services;
- finance fixes an internal conversion rate for a period and pricing must follow that, not the market;
- you want a hard, predictable price and are willing to update the number yourself.

Manual rates go through the same validation, markup, rounding and sync path as fetched ones. A manual rate that is zero, negative or non-finite is rejected exactly like a bad fetched rate.

## Pro providers and failover

Pro adds a keyed commercial provider with wider currency coverage, and a failover chain: when the primary source is unreachable or returns an unusable table, the next configured source is asked instead. Failover is implemented as a provider rather than as a listener on the failure event, so the free plugin’s orchestration, validation and storage are untouched.

The commercial provider’s API key is encrypted at rest with a key derived from the site’s WordPress salts, and is never written to logs, status reports or notification emails.

## What leaves your server

When an automatic provider is selected and a scheduled or manual refresh runs, the store server makes an HTTPS request containing the requested base/store currency and the source-currency codes, plus ordinary HTTP connection metadata such as the server’s IP address.

Product prices, product data, orders, customers and WordPress user data are **not** sent. There is no usage analytics, tracking pixel, advertising request or customer-side third-party script anywhere in the plugin. See [Privacy and external services](https://maksut.net/price-anchor/docs/privacy-and-external-services/).
