{"id":379353,"date":"2026-10-05T08:48:48","date_gmt":"2026-10-05T08:48:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/exchange-rate-pricing-for-woocommerce\/"},"modified":"2026-10-05T08:48:20","modified_gmt":"2026-10-05T08:48:20","slug":"ratesmith-exchange-rate-pricing","status":"publish","type":"plugin","link":"https:\/\/tl.wordpress.org\/plugins\/ratesmith-exchange-rate-pricing\/","author":15047073,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1.3","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Ratesmith \u2013 Exchange Rate Pricing for WooCommerce","header_author":"Reza Rajabi","header_description":"Price products in a foreign currency such as USD and sell them in your store currency using an exchange rate you control, with markup, rounding and sale rules.","assets_banners_color":"3d8078","last_updated":"2026-10-05 08:48:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":174,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"rezapr2","date":"2026-10-05 08:48:20","revision":3728439}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3728449,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3728449,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3728449,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3728449,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[262246],"plugin_tags":[8504,142803,15963,16558,286],"plugin_category":[45],"plugin_contributors":[284434],"plugin_business_model":[],"class_list":["post-379353","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-currency","plugin_tags-dollar-price","plugin_tags-dynamic-pricing","plugin_tags-exchange-rate","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-rezapr2","plugin_committers-rezapr2"],"banners":{"banner":"https:\/\/ps.w.org\/ratesmith-exchange-rate-pricing\/assets\/banner-772x250.png?rev=3728449","banner_2x":"https:\/\/ps.w.org\/ratesmith-exchange-rate-pricing\/assets\/banner-1544x500.png?rev=3728449","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ratesmith-exchange-rate-pricing\/assets\/icon-128x128.png?rev=3728449","icon_2x":"https:\/\/ps.w.org\/ratesmith-exchange-rate-pricing\/assets\/icon-256x256.png?rev=3728449","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>If you buy stock in a foreign currency, your prices move with the exchange rate. Ratesmith lets you enter a product's price in a base currency such as USD, and calculates the store price for you:<\/p>\n\n<pre><code>store price = round( base price \u00d7 rate \u00d7 (1 + markup %) + fixed markup )\n<\/code><\/pre>\n\n<p>When you change the rate, every exchange-rate priced product is recalculated in the background.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Base currency price for simple, external and variable products (each variation has its own price).<\/li>\n<li>Choose per product: store default, exchange rate or manual price. The store default can be \"all products\" or \"only products I choose\".<\/li>\n<li>Markup as a percent and\/or fixed amount: store-wide, per product category (subcategories inherit) and per product.<\/li>\n<li>Rounding to any step (for example 10,000) up, down or to the nearest.<\/li>\n<li>Sale prices as a base currency price, a discount percent, or both.<\/li>\n<li>Live preview of the calculated price while editing a product.<\/li>\n<li>Background recalculation with Action Scheduler, in batches, safe for large catalogs.<\/li>\n<li>Rate history log, and the rate at purchase time saved on each order.<\/li>\n<li>Quick rate update from the dashboard widget or the admin bar.<\/li>\n<li>Products list column, quick edit and bulk edit.<\/li>\n<li>Product CSV import\/export columns.<\/li>\n<li>WP-CLI commands: <code>wp erpfw rate<\/code>, <code>wp erpfw recalculate<\/code>, <code>wp erpfw status<\/code>.<\/li>\n<li>Iranian Rial stores can enter amounts in Toman.<\/li>\n<li>Compatible with High-Performance Order Storage and the Cart and Checkout blocks.<\/li>\n<li>Translation ready.<\/li>\n<\/ul>\n\n<h4>How prices are stored<\/h4>\n\n<p>Calculated prices are written to WooCommerce's normal price fields. Sorting, price filters, carts, coupons, payment gateways, feeds and structured data keep working without changes, and nothing is calculated on page load. If you deactivate the plugin, products keep their last calculated prices.<\/p>\n\n<h4>For developers<\/h4>\n\n<p>Filters and actions:<\/p>\n\n<ul>\n<li><code>erpfw_rate_providers<\/code> \u2013 register automatic rate sources (implement <code>Ratesmith\\RateProviders\\RateProviderInterface<\/code>).<\/li>\n<li><code>erpfw_calculation_args<\/code> \/ <code>erpfw_calculated_prices<\/code> \u2013 adjust the calculation.<\/li>\n<li><code>erpfw_supported_product_types<\/code> \u2013 add product types.<\/li>\n<li><code>erpfw_rate_updated<\/code> \u2013 fires when a rate changes.<\/li>\n<li><code>erpfw_prices_recalculated<\/code> \u2013 fires after a recalculation run, useful for purging page caches.<\/li>\n<li><code>erpfw_manage_capability<\/code> \u2013 capability needed to change rates (default <code>manage_woocommerce<\/code>).<\/li>\n<\/ul>\n\n<p>Helper functions: <code>erpfw_get_rate()<\/code> and <code>erpfw_convert_to_store_price( $amount )<\/code>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin. WooCommerce must be active.<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 Exchange rates, choose the base currency and enter the current rate.<\/li>\n<li>Set markup and rounding.<\/li>\n<li>Edit a product, set Pricing to \"Exchange rate\" and enter the base regular price. Or make exchange rate the store default.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"where%20does%20the%20exchange%20rate%20come%20from%3F\"><h3>Where does the exchange rate come from?<\/h3><\/dt>\n<dd><p>You enter it. The rate source is pluggable, so automatic sources can be added by extensions.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20products%20without%20a%20base%20price%3F\"><h3>What happens to products without a base price?<\/h3><\/dt>\n<dd><p>They keep their current price and are flagged in the products list. A price is never set to zero.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20my%20store%3F\"><h3>Does it slow down my store?<\/h3><\/dt>\n<dd><p>No. Prices are calculated when the rate or a product changes, not when pages load.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20cart%20is%20open%20while%20the%20rate%20changes%3F\"><h3>What happens when a cart is open while the rate changes?<\/h3><\/dt>\n<dd><p>The cart uses the product's current price, like any price change in WooCommerce. Orders keep the price and rate they were placed with.<\/p><\/dd>\n<dt id=\"can%20i%20translate%20the%20plugin%3F\"><h3>Can I translate the plugin?<\/h3><\/dt>\n<dd><p>Yes. All text can be translated on <a href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/ratesmith-exchange-rate-pricing\/\">translate.wordpress.org<\/a>.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Price products in USD (or any currency) and sell them in your store currency, updated automatically from an exchange rate you control.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/379353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=379353"}],"author":[{"embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/rezapr2"}],"wp:attachment":[{"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=379353"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=379353"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=379353"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=379353"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=379353"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/tl.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=379353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}