Overview
Product Price in Currency keeps the price of your products in your supplier's currency. If your supplier invoices in euros and you sell in dollars, the store price follows the exchange rate with your markup and rounding, without editing prices by hand.
- Price or cost + markup. Per product: the price in the currency, or what you pay in the currency plus your markup in %.
- Rates. OpenCart's own currency rates (System > Localisation > Currencies), the daily reference rates of the European Central Bank, or your own. An adjustment in % covers bank fees.
- Only real moves. Prices are recalculated when a rate moves more than your threshold (0.5% by default), once a day by themselves or at once when you save a rate.
- Rounding. To the nearest step, up or down, with endings like .99.
- Where you work. A card on the product form (Data tab), a Products tab with filters and search, and a whole category at once without changing today's prices.
- Price log. Every change with the rate, before, after and why; CSV export.
Shoppers see your normal OpenCart prices: the cart, specials, quantity discounts, taxes and display currencies work as before. The store price is written to the product, so every other extension sees it too. On OpenCart 4, variant products follow their master price unless they override it.
No OCMOD, no core file edits. One licence covers OpenCart 4 and 3. Tested on OpenCart 4.1.0.4 and 3.0.5.1; other 4.0.2.x to 4.1.x and 3.0.3.8 to 3.0.5.x versions are expected to work but are not tested.
Installation
Requirements
- OpenCart 4.0.2.0 to 4.1.x, or 3.0.3.8 to 3.0.5.x
- PHP 7.4 or newer (cURL for the European Central Bank rates)
Install on OpenCart 4
- Go to Extensions > Installer and upload
kv_product_price_currency.ocmod.zip. - Press the install button next to Product Price in Currency.
- Go to Extensions > Extensions, choose Modules and install Product Price in Currency.
Install on OpenCart 3
- Go to Extensions > Installer and upload
kv_product_price_currency-oc3.ocmod.zip. - Go to Extensions > Modifications and press Refresh.
- Go to Extensions > Extensions, choose Modules and install Product Price in Currency.
First steps
- Open Catalog > Price Currencies > Exchange rates and add the currency your supplier invoices in.
- Open Settings and choose the rounding (for example step 1 with the ending .99).
- Give products their price in the currency: on the product form (Data tab, under the price), on the Products tab, or a whole category at once.
- OpenCart 4 runs the daily job as a cron job (System > Maintenance > Cron Jobs). On OpenCart 3, call the cron address from the Settings tab once a day, or open the extension once a day.
Updating
Upload the new package the same way. Rates, products and the log stay; tables are brought up to date the next time you open the extension.
Removing
Uninstalling removes the rates, the product currencies, the log, the settings, the events and the cron job. Product prices stay as they are.
Configuration
Exchange rates (Catalog > Price Currencies > Exchange rates)
One row per price currency:
| Column | Meaning |
|---|
| Rate source | OpenCart currency rate (the rate in System > Localisation > Currencies, kept current by OpenCart's currency converter), European Central Bank (daily reference rate) or Manual |
| Rate | Value of 1 unit of the currency in your store currency. Editable for manual rates |
| Adjustment % | Added on top of the rate, for example 2 for bank fees. Negative values are allowed |
| Price rate | Rate + adjustment: the rate prices are calculated with. "prices still at ..." shows the rate the products use while the move is below the threshold |
| Products | Products in this currency (opens the filtered list) |
Save stores the row; when the price rate moved more than the threshold, the products of that currency are recalculated at once. Recalculate now does it whatever the threshold. Remove is offered only when no product uses the currency. Update rates now takes the current OpenCart and ECB rates at once.
The currency does not need to be one of your store currencies when the source is the ECB or manual. The ECB source needs your store currency in the ECB list.
Settings
| Setting | Default | What it does |
|---|
| Automatic rates and prices | on | Update rates and recalculate prices once a day. Saving a product price always calculates it |
| European Central Bank | on | Fetch the daily ECB rates for currencies with the ECB as source |
| Recalculate when a rate moves more than (%) | 0.5 | 0 = every change |
| Variants (OpenCart 4) | on | Variant products follow their master price unless they override the price |
| Cron address | - | Call it once a day on OpenCart 3; OpenCart 4 adds a daily cron job |
| Rounding | To the nearest step | Nearest, up, down, or only to the currency decimals |
| Step | 0.01 | 0.01, 0.05, 0.10, 0.50, 1, 5, 10 |
| Price ending | None | .99, .95, .90, .49, .00 (a step below 1 is treated as 1) |
| Keep the log for (days) | 180 | Older log rows are deleted by the daily job. 0 = keep everything |
Rounding examples (nearest, step 1, ending .99): 128.40 becomes 127.99, 128.60 becomes 128.99. With step 5: 128.40 becomes 129.99. Prices are tax excluded, as in the OpenCart product form.
Licence
Enter the licence key at the bottom of the Settings tab; the extension works without one during the 14-day trial. Without an active licence, rates are not updated and prices do not follow them by themselves; prices you save are still calculated and nothing else changes.
Usage
Open a product, tab Data. Under the price you find Price in a currency:
- Currency: one of your price currencies, or None to set the price by hand
- Mode: Price (the price tax excluded in the currency) or Cost + markup (what you pay in the currency and your markup in %)
- Amount in the currency and Markup %
Save the product as usual: the price above is calculated from the amount and saved with the product. The card shows the amount, the rate used and the store price. Choosing None stops following the currency; the price stays.
The Products tab
Catalog > Price Currencies lists every product with a price currency: mode, amount in the currency, the rate used and the store price now. Filter by currency or search by name, model or ID. The form at the top does the same as the product form (product ID or model). Edit fills the form; Remove stops following the currency (the price stays).
A price changed outside this extension is flagged changed by hand and goes back to the calculated price at the next recalculation.
A whole category
A whole category gives every product of the category and its subcategories a currency. The amount in the currency is today's price divided by the price rate, so no price changes today; from then on the prices follow the rate. Products that already have a price currency are skipped unless you tick the box.
When rates move
The daily job takes the OpenCart and ECB rates and recalculates the currencies whose price rate moved more than the threshold. Saving a manual rate does the same at once.
Price log
Date, product, currency, rate, the price before and after with the change in %, and why (Saved, Product form, Rate moved, Recalculated). CSV exports the whole log.
FAQ
Do shoppers see the supplier currency?
No. They see your normal store prices in the display currency they choose. The extension only sets the product price.
Do specials and quantity discounts follow the rate?
No, they stay as you set them. The product price follows the rate.
Do product option prices follow?
No. Option price add-ons stay as you set them.
What about OpenCart 4 variants?
Variants follow their master price unless the variant overrides the price.
Can I use a currency that is not in my store?
Yes, with the European Central Bank or a manual rate. The OpenCart currency rate source needs the currency in System > Localisation > Currencies (it can stay disabled).
Does it call outside services?
Only the European Central Bank daily rate file, and only when a currency uses the ECB as source.
What happens when I uninstall?
Prices stay as they are; the rates, product currencies and log are removed.
Does it use OCMOD?
No. Events only, no core file edits.