WooCommerce plugin · Free and Pro

Set prices in any currency. Sell in your store currency.

Keep product prices in USD, EUR, GBP or whatever your supplier invoices in. Price Anchor applies a validated exchange rate, your markup and your rounding rule, then writes the result into WooCommerce’s own price fields. Customers only ever see one currency — yours.

  • No API key for the default rate source
  • Zero frontend network calls
  • HPOS and Cart/Checkout Blocks compatible
  • No telemetry in the free plugin
WooCommerce product editor showing Price currency set to USD, a regular price of 30, and the line “Customers pay ₺1.200,00”.
The whole product, in one screenshot: you type 30 and pick USD, the customer pays your store currency.

What Price Anchor actually is

Price Anchor is a WooCommerce plugin that lets a merchant author a product price in a foreign source currency while the store keeps selling in a single store currency. It converts on a schedule and stores the converted amount as WooCommerce’s native price, so catalogue sorting, price filters, reports, the Store API and checkout all read one consistent number.

Price Anchor is not a currency switcher. It is a foreign-currency source pricing engine for single-currency WooCommerce stores.

A currency switcher

Your customers choose a currency. Different visitors see different currencies and checkout happens in several currencies. You need one when you sell internationally and want to be paid in the buyer’s money.

Price Anchor

You choose the currency you author prices in. Customers only ever see your one store currency. You need this when you buy in dollars or euros and sell in your local currency.

Why it converts on a schedule instead of on every page load

Most foreign-currency plugins intercept the price as the page renders. Price Anchor converts in the background and writes the result into WooCommerce’s own price fields. That single decision removes a whole class of bugs rather than defending against them.

Problems caused by runtime price filtering, and their status in Price Anchor
Problem with runtime price filtering In Price Anchor
Sorting a category by price returns the wrong order Solved — the stored price is the real store-currency price
The price filter widget shows impossible ranges Solved — the widget queries the same stored price
Analytics, reports and exports disagree with what you charged Solved — there is only one number to report
Cart and Checkout Blocks bypass the price filter and show a raw amount Structurally impossible — there is no filter to bypass
A second plugin re-applies conversion and the customer is charged rate squared Structurally impossible — no conversion filter exists
Every page load recomputes prices and costs CPU on the hot path Zero frontend cost — the read path is plain WooCommerce

The honest trade-off: prices move in discrete steps when rates refresh, not continuously. For a merchant that is a feature — a customer never watches a price change mid-session.

How it works

From supplier price list to what the customer pays

  1. Pick one source currency

    Choose the foreign currency your supplier prices in, and a rate source: the European Central Bank via Frankfurter, TCMB for lira stores, or manual rates you set yourself.

  2. Type the source price on the product

    One currency dropdown and one price field, on simple products and per variation. Sale prices are supported and convert at the same rate.

  3. Price Anchor converts in the background

    Rate × markup, then your rounding rule. A rate that fails plausibility validation is rejected and the last known good rate keeps being used.

  4. The result is written into WooCommerce

    The converted amount lands in WooCommerce’s own regular, sale and active price fields. A resumable, keyset-paginated job handles catalogues of any size.

  5. Every order keeps its evidence

    Each anchored order line records the source amount, the raw market rate, the actual markup and the effective conversion factor. A later rate change never alters a placed order.

Full quick-start walkthrough in the documentation →

The free plugin

Free is a complete product, not a trial

The boundary is drawn on one question: without this feature, could the store show a wrong price? If yes, it is free. Correctness is not an upgrade.

Pricing

  • One primary foreign source currency across any number of products
  • Any product can stay native in your store currency, untouched
  • Variable products with a source price per variation
  • Source sale prices, converted at the same rate
  • Percentage markup per source currency
  • Rounding: none, currency decimals, up, down, nearest, or charm .99

Rates

  • Frankfurter / European Central Bank — free, any base currency, no account
  • TCMB, the Central Bank of the Republic of Türkiye, for TRY stores
  • Manual rates, with no outbound request at all
  • Hourly, twice-daily or daily refresh
  • Plausibility validation — an implausible rate is discarded, not applied
  • Stale-rate and provider-down warnings in the admin

Engine and operations

  • Background repricing that resumes after an interruption
  • Action Scheduler when WooCommerce provides it, WP-Cron otherwise
  • Exact per-order pricing provenance on every anchored line
  • HPOS, Cart and Checkout Blocks, and the block product editor
  • Diagnostics in WooCommerce → Status
  • Multisite-aware uninstall that never deletes order records

Price Anchor Pro

When a moving rate becomes a real risk

A rate can move double digits overnight and quietly sell a week of stock below cost. Pro is priced and built against that specific fear — hold the move for review, refuse to price below what the goods actually cost, and be able to prove afterwards what happened.

Unlimited source currencies

Free owns one primary foreign source. Pro adds every additional source currency, chosen independently per product and per variation.

Rate Guard

Hold an unusually large rate move for review instead of letting it reach the catalogue. Approving applies the exact table you reviewed, not a later refetch.

Minimum margin floor

Refuse to reprice a product below its locked acquisition cost plus your margin. The floor stays effective after rate, markup and rounding.

Locked acquisition cost

Store the per-unit acquisition amount, its currency and the acquisition-time rate together. A market-rate update never rewrites saved cost or order evidence.

Gross product profit

A refund-adjusted Sales report reconciling net product revenue, net COGS and margin. Missing or unlike-currency cost is shown as unavailable, never invented.

Scoped markup and price freezes

A different markup for selected products or categories, and a freeze that pins chosen products or categories against rate movement.

Provider failover and history

A keyed commercial provider with automatic failover when the primary source is down, plus rate history with a dependency-free chart.

Audit log, bulk tools and WP-CLI

Tamper-evident records of who changed what and which rate applied, bulk source-currency assignment, bounded CSV import/export and operational CLI commands.

Free versus Pro

Feature comparison between Price Anchor free and Price Anchor Pro
Capability Free Pro
Core pricing
One primary foreign source currency Included in Free Included in Pro
Native store-currency products Included in Free Included in Pro
Simple and variable products Included in Free Included in Pro
Source regular and sale prices Included in Free Included in Pro
Global markup per source currency Included in Free Included in Pro
Rounding: none, decimals, up, down, nearest, .99 Included in Free Included in Pro
Unlimited additional source currencies Not in Free Included in Pro
Markup per category or product Not in Free Included in Pro
Charm .9 / .90 / .999, multiples of 5/10/50/100, minimum increment Not in Free Included in Pro
Rates
Frankfurter (ECB), TCMB and manual rates Included in Free Included in Pro
Rate plausibility validation Included in Free Included in Pro
Stale-rate and provider-down warnings Included in Free Included in Pro
Commercial keyed provider, wider coverage Not in Free Included in Pro
Automatic failover between providers Not in Free Included in Pro
Rate history and chart Not in Free Included in Pro
Protection and control
Exact per-order pricing provenance Included in Free Included in Pro
Rate Guard — hold a large move for approval Not in Free Included in Pro
Minimum margin floor Not in Free Included in Pro
Locked foreign acquisition cost per product and variation Not in Free Included in Pro
Refund-adjusted gross product profit report Not in Free Included in Pro
Price freeze for products or categories Not in Free Included in Pro
Tamper-evident audit log Not in Free Included in Pro
Email notifications Not in Free Included in Pro
Engine and operations
Resumable background sync, Action Scheduler aware Included in Free Included in Pro
HPOS and Cart/Checkout Blocks Included in Free Included in Pro
WooCommerce → Status diagnostics Included in Free Included in Pro
Bulk source-currency assignment and CSV Not in Free Included in Pro
WP-CLI commands Not in Free Included in Pro

Pricing

The plugin is free. Pro is an annual licence.

Every tier includes every Pro capability. What differs is how many production sites the licence covers.

Price Anchor

Free

forever, GPL, no account

  • One primary foreign source currency
  • Unlimited products and variations
  • Free ECB rates, no API key
  • Full sync engine and order provenance
Install guide

Single site

$99

per year · 1 production site

  • Every Pro capability — no feature is held back by tier
  • One year of plugin updates
  • Automatic updates through the WordPress admin
Get Pro
Most agencies

Five sites

$199

per year · 5 production sites

  • Every Pro capability — no feature is held back by tier
  • One year of plugin updates
  • Automatic updates through the WordPress admin
Get Pro

Twenty sites

$349

per year · 20 production sites

  • Every Pro capability — no feature is held back by tier
  • One year of plugin updates
  • Automatic updates through the WordPress admin
Get Pro

What happens if a licence lapses

  • Pro screens and Pro pricing rules stop; WooCommerce keeps selling at the last stored prices.
  • Product source prices, acquisition costs, rate history, audit rows and order evidence are all retained.
  • Products anchored to a Pro-only source keep their metadata and their last price; they are simply not repriced.
  • Renewing restores the saved configuration without re-entering anything. Expiry never runs uninstall cleanup.

Who it is for — and who it is not for

Built for

  • Importers whose supplier list is in USD, EUR or GBP
  • Stores selling in one currency in a volatile local market
  • Catalogues that need consistent rounding across thousands of products
  • Merchants who need a hard floor under margin when the rate moves
  • Teams that must be able to explain what a historic order was priced at

Not designed for

  • Letting customers choose a checkout currency — that is a currency switcher, and this is not one
  • Per-country, per-user or per-role live pricing
  • Bookkeeping, tax compliance or FIFO/LIFO inventory valuation
  • Builder elements containing a manually typed static price

Requirements and compatibility

WordPress
6.5 or newer
WooCommerce
8.0 or newer
PHP
8.1 or newer
Price Anchor Pro
Requires Price Anchor free 1.0.0+

Verified against HPOS, Cart and Checkout Blocks, the classic and block product editors, the WooCommerce REST and Store APIs, Action Scheduler with a WP-Cron fallback, and multisite data isolation. Third-party runs covered Elementor, WooCommerce Subscriptions, Product Bundles, Composite Products, Product Add-Ons and Dynamic Pricing. Compatibility applies wherever a surface reads WooCommerce’s native product and cart data — a manually typed builder price is not WooCommerce price data.

Documentation

Every setting, every rate source, the sync engine, order provenance, the Pro screens, the hook contract and the troubleshooting checklist.

Browse all documentation

Frequently asked questions

Is this a currency switcher?
No. Your customers always see and pay in one currency — your WooCommerce store currency. Price Anchor changes which currency you enter prices in, not which currency the customer picks. It should not be run alongside a currency switcher.
Which currency do customers pay in?
Your WooCommerce store currency, whatever it is set to. Price Anchor never changes the store or order currency.
Do prices update on every page load?
No, and that is deliberate. Prices change when a rate refresh and catalogue sync run, on the schedule you choose. A customer never watches a price move mid-session, and two people loading the same page a second apart always see the same number.
What happens to orders that were already placed when the rate changes?
Nothing. WooCommerce stores order totals when the order is placed, and Price Anchor additionally records the source amount and the rate on each line. A rate update can never alter a historic order.
Do I need an API key?
No. The default rate source is the European Central Bank’s published rates via Frankfurter, which needs no account or key. TCMB is available for lira stores, and manual rates make no outbound request at all.
What if the rate source is down or returns something wrong?
A rate that is non-finite, zero, negative, out of range or implausible is rejected outright and your last known good rates keep being used. Prices never fall back to zero, and you are told in the admin. Pro adds automatic failover to a second provider.
Does it work with a zero-decimal currency such as JPY?
Yes. Rounding respects your store currency’s decimal places. A currency that cannot express “.99” rounds up to a whole unit instead, which still keeps the price at or above the calculated amount.
Can I price some products normally?
Yes. Choose “Store currency — no conversion” on any product and Price Anchor leaves it completely alone. That is a distinct state from being anchored to a currency that happens to equal the store currency, so changing the store currency later behaves correctly for both.
How many source currencies does the free plugin support?
One primary foreign source currency, across any number of products, with no product-count cap. Any product may also stay native in the store currency. Pro adds unlimited additional source currencies with per-product and per-variation choice.
Why is correctness not a paid feature?
Because a store that only ever installs the free plugin must never show a wrong price. Rate validation, order stamping, correct charm rounding and the whole sync engine are free for that reason. Pro sells control and scale — multiple supplier currencies, rate-risk controls and cost/profit evidence.
What does the plugin send to external services?
When an automatic provider is selected and a scheduled or manual refresh runs, the store server requests exchange rates and sends only the base/store currency and the source-currency codes, plus ordinary HTTP metadata. Product data, prices, orders, customers and WordPress users are never sent. There is no analytics, tracking pixel, advertising request or customer-side third-party script.
What happens if I delete the plugin?
Your WooCommerce prices stay exactly as they are and the store keeps selling. Source prices are kept as well, unless you tick the option to remove them. Order records are never touched, and neither Pro’s deactivation nor its uninstall deletes acquisition-cost evidence.
Can I run per-role or per-customer pricing?
No, and that is permanent rather than a missing feature. Price Anchor stores one price per product, written by a background job that runs with no logged-in user, so there is no role to branch on when the price is decided. Making the price depend on who is looking would require read-time computation, which is precisely the design this plugin rejects.
Is the Pro Sales report an accounting system?
No. It reports gross product profit: refund-adjusted product revenue minus refund-adjusted unit COGS. Gateway fees, tax, shipping and fulfilment, advertising, payroll, overhead, landed-cost lots and FIFO/LIFO inventory valuation are outside it.

Next step

Start free. Upgrade when the rate starts costing you money.

Install the free plugin, anchor one product, and watch a rate refresh reprice your catalogue. When you add a second supplier currency, or the day a rate jump makes you nervous, Pro is waiting.