Skip to content
Release history

Changelog

Every line since 2013. Version 3.0 is a rewrite; everything below it is the plugin's earlier life, kept here because upgrade notes matter years later.

Pay for Payment for WooCommerce was first released in 2013 by Jörn Lund, published on WordPress.org in 2014, and has been maintained by Karolína Vyskočilová since 2017.

3.0.0

Current
Requires PHP 8.0+ · WordPress 6.2+ · WooCommerce 7.7.0+

Rewritten from the ground up. Everything 2.x could do, it still does — same fee maths, same developer filters, and your settings move themselves.

UPGRADING FROM 2.X

  • Your per-gateway fee settings migrate automatically the first time the plugin runs. Nothing to reconfigure, and the old settings are left exactly where they were.
  • Fees are now configured in one place: WooCommerce › Settings › Pay for payment. The fields no longer appear on each gateway's own settings page.
  • Requires PHP 8.0 or newer, WordPress 6.2 or newer and WooCommerce 7.7.0 or newer.
  • The plugin is listed as “Pay for Payment for WooCommerce – Payment Gateway Fees & Discounts” — same plugin, same slug, same settings.

NEW

  • One settings screen for every payment method, built with WooCommerce's own admin components — including gateways whose own screens leave no room for extra fields: WooCommerce Payments, Stripe, Klarna and other React-based gateways.
  • The screen lists every payment method you have, enabled or not, so you can set a fee up before the method goes live.
  • Block checkout support: the fee is calculated and the total updates when the shopper changes payment method, the same as on the classic checkout.
  • Fee lines carry _pay4payment_fee_gateway and _pay4payment_fee_source order-item meta, so accountants and exports can tell them from any other fee.
  • Uninstalling removes every option the plugin wrote, including the standalone rows 2.x left behind. The pay4pay_* keys stored inside each gateway's own WooCommerce settings are left untouched — those are your 2.x configuration, and keeping them is what lets you roll back to 2.x.

CHANGED

  • A cart with nothing left to pay for — goods fully discounted and no shipping cost — no longer gets a payment fee. In 2.x the check looked at the cart total before discounts, so a 100% coupon still paid the fee. Paid shipping on free goods still charges.
  • “Tax class based on cart items” now also applies when the fee amount excludes tax. In 2.x it only worked for tax-inclusive amounts and quietly fell back to the standard rate otherwise.
  • Fees are charged only for the payment methods you have switched on in the settings screen. Everything that charged a fee in 2.x is switched on for you during the upgrade.
  • The “Extra Charge” column on WooCommerce > Settings > Payments is gone — WooCommerce rebuilt that screen and removed the hook it was built on. Every method's fee is shown on the plugin's own settings screen instead.
  • VAT-exempt customers now pay the net of a fee whose amount includes tax, not the full amount. A fee set to 12.10 including 21 % tax is charged to everyone as 10.00 plus tax; a VAT-exempt customer now pays 10.00 with no tax.

FIXED

  • When a payment fails and the customer pays again with a different method, the first method's fee is removed from the order instead of staying on it — on block checkout and express (Apple Pay / Google Pay) orders too, before the amount is authorized.
  • Checkout no longer fatals when another plugin puts a cart entry without product data in the basket while the fee's tax class is “based on cart items”.
  • The “Standard rate” tax class can be picked again — the screen was sending a value the server rejected, so the fee fell back to the highest rate in the cart.
  • A fee you switched off stays off; updating used to switch migrated 2.x fees back on.
  • Settings migrate even if the update was applied while WooCommerce was deactivated.
  • “Do not charge the fee on free shipping” looks at every shipping package again, as in 2.x.
  • “Charge at least” and “Charge at most” accept negative amounts again, so “5% off, never more than 50 off” can be set up once more.
  • A fee set up by hand in 3.0 starts from the same defaults as 2.x, so the same numbers produce the same charge.
  • Stores using Price Based on Country charge the converted fee again, rather than the base-currency number in the customer's currency.

DEVELOPERS

  • All 2.x filters keep their names and signatures, still fire with the same intermediate values, and the fee is still added on woocommerce_cart_calculate_fees at PHP_INT_MAX - 1.
  • Those filters now receive one extra trailing argument: the index of the fee rule being calculated. Existing callbacks are unaffected.
  • woocommerce_pay4pay_get_current_gateway_settings is rebuilt over the new schema and fires with the same fourteen pay4pay_* keys, so a 2.x snippet runs unchanged. Returning false still switches the fee off.
  • REST: pay4payment/v1/settings (GET/POST, manage_woocommerce).
  • WPML string names are unchanged, so existing translations keep working.
  • All five multi-currency integrations are carried over. HPOS and cart/checkout block compatibility are declared.

2.2.2

Requires WordPress 4.6+ · Tested to WordPress 6.9

FIXED

  • Restore broken `woocommerce_pay4pay_get_current_gateway_settings` filter (broken since 2.1.0 by accidental find-and-replace).
  • Undefined array key warnings for pay4pay_charges_minimum and pay4pay_charges_maximum in settings tab, fixes this forum issue.
  • Use proper getter method for product tax_class to avoid WooCommerce deprecation warning.
  • Replace deprecated `global $woocommerce` usage with `WC()` singleton.

2.2.1

Requires WordPress 4.6+ · Tested to WordPress 6.7

NEW

  • Added admin footer text with rating request on plugin settings pages.

CHANGED

  • Fix PHP 8.0+ warning when accessing shipping methods array, fixes this forum issue.
  • Centralized settings tab now only shows enabled payment gateways for cleaner admin interface.

FIXED

  • Centralized settings tab now correctly displays payment fee values.

2.2.0

Requires WordPress 4.6+ · Tested to WordPress 6.7

NEW

  • Centralized "Pay for Payment" settings tab (WooCommerce > Settings > Pay for payment) with settings link on plugin page (Note: Settings available in both centralized tab and individual gateway pages (both synchronized))

FIXED

  • Now compatible with React-based payment gateways (e.g., WooCommerce Stripe)

2.1.11

Requires WordPress 4.6+ · Tested to WordPress 6.7

CHANGED

  • Add new filter for percentage fee.

2.1.10

Requires WordPress 4.6+ · Tested to WordPress 6.7

CHANGED

  • Closing call for beta testers.

2.1.9

Requires WordPress 4.6+ · Tested to WordPress 6.7

CHANGED

  • Call for beta testers: New features are coming in Q2 2024—and I’m looking for folks to help test them out!

FIXED

  • Tax class settings not being saved properly in payment gateway configuration.

2.1.8

Requires WordPress 4.6+ · Tested to WordPress 6.7

CHANGED

  • Declared HPOS support.

2.1.7

Requires WordPress 4.6+ · Tested to WordPress 6.0

CHANGED

  • Add support for WOOCS converter.

2.1.6

Requires WordPress 4.6+ · Tested to WordPress 6.0

FIXED

  • Don't deactivate the plugin even when the WooCommerce is not active (keep a notice only).

2.1.5

Requires WordPress 4.6+ · Tested to WordPress 5.8

NEW

  • Add `[MINIMUM_AMOUNT]` and `[MAXIMUM_AMOUNT]` placeholders to fee title

2.1.3

Requires WordPress 4.6+ · Tested to WordPress 5.8

CHANGED

  • Fix - WPML exchange rates (apply filter `wcml_raw_price_amount`)
  • Fix - tax class when taxes by cart items is on - applies the highest used tax. Thanks to morvy

2.1.2

Requires WordPress 4.6+ · Tested to WordPress 5.8

CHANGED

  • Fix - cost rounding (use `wc_get_rounding_precision()`) - thanks to morvy

2.1.1

Requires WordPress 4.6+ · Tested to WordPress 5.8

CHANGED

2.1.0

Requires WordPress 4.6+ · Tested to WordPress 5.8

CHANGED

  • New filter introduced `woocommerce_pay4pay_get_current_gateway_settings` (#61)
  • PHP 8.0 - Unsupported operand types fix (#63)

2.0.19

Requires WordPress 4.6+ · Tested to WordPress 5.7

CHANGED

  • Change the plugin name from "WooCommerce Pay for Payment" to "Pay for Payment for WooCommerce" since the WC claims the trademark.

2.0.18

Requires WordPress 4.6+ · Tested to WordPress 5.7

CHANGED

  • Reflect the number of decimals in WC currency settings instead of rounding to two digits.

FIXED

  • add option for Payment tax based on cart items issue

2.0.16

Requires WordPress 4.6+ · Tested to WordPress 5.5

FIXED

  • `Unsupported operand types` when adding settings to a payment (fixes Mercadopago fatal error)
  • Escape tax related settings.

2.0.15

Requires WordPress 4.6+ · Tested to WordPress 5.4

CHANGED

2.0.13.3

Requires WordPress 4.6+ · Tested to WordPress 5.2

FIXED

  • Compatibility with WC 3.7.0 - Move saving settings to `wp_loaded` as WooCommerce does in PR #23091

2.0.12

Requires WordPress 4.6+ · Tested to WordPress 5.0

FIXED

  • don't add the fee when order and shipping amount is 0, see 2.0.11 for more details.

2.0.11

Requires WordPress 4.6+ · Tested to WordPress 5.0

CHANGED

  • Updated links in readme and plugin settings.
  • implemented Probot

FIXED

  • don't add the fee when order amount is 0. More details here.

2.0.10

Requires WordPress 4.6+ · Tested to WordPress 5.0

CHANGED

  • Critical fix of 2.0.9 bug - COD could be anabled as well for "any" shipping method type (accidentaly slipped out from 2.0.9)

2.0.9

Requires WordPress 4.6+ · Tested to WordPress 5.0

CHANGED

  • WC tested up to 3.5.1 and WP 5.0

FIXED

  • Check if COD is enabled for current shipping method otherwise don't add the fee.

2.0.8

Requires WordPress 4.6+ · Tested to WordPress 4.9.8

CHANGED

  • Return back translations (if installed from FTP, the WP.org translations are loaded after an update/manual install)
  • WC tested up to

FIXED

  • Check if logged in user is VAT exempt

2.0.7

Requires WordPress 4.6+ · Tested to WordPress 4.9.4

CHANGED

  • WC tested up to

FIXED

  • added upport for gateways without default option format (#33) and fixed #20, thanks to David de Boer

2.0.6

Requires WordPress 4.6+ · WooCommerce 3.0+ · Tested to WordPress 4.9.2

FIXED

  • WC compatibility issue (solved in 2.0.4), compatible with both versions of WC
  • problem with WooCommerce Multilingual #24, only in WC 3.2+

2.0.5

Requires WordPress 4.6+ · WooCommerce 3.0+ · Tested to WordPress 4.8.2

FIXED

  • doubled fee in total
  • negative fee percentage

2.0.4

Requires WordPress 4.6+ · WooCommerce 2.6+ · Tested to WordPress 4.8.2

CHANGED

FIXED

  • *WC_Cart->discount_total argument is deprecated* error (by @bolint)
  • backwards compatibility to discount_total

2.0.3

Requires WordPress 4.6+ · WooCommerce 2.6+ · Tested to WordPress 4.8.2

FIXED

2.0.2

Requires WordPress 4.6+ · WooCommerce 2.6+ · Tested to WordPress 4.8.2

NEW

  • Inner compatibility with WPML - fee title and fixed charges can be localized within "String translation" under "woocommerce-pay-for-payment" domain name. Removed wpml-config.xml.

CHANGED

  • Italian and Dutch localization
  • Code tweaks and fixes (#16)

FIXED

  • $fragment_refresh is not defined (#13)
  • Turn off plugin, if WC is not active
  • Undefined index: woocommerce_cod_pay4pay_tax_class (#12)

2.0.1

Requires WordPress 3.5+ · WooCommerce 2.2+ · Tested to WordPress 4.6.7

NEW

  • check WC version, minimum version 2.6 (by @oerdnj)

FIXED

  • translatable pay4pay_charges_fixed (WPML support)
  • disable on free shipping (for WC 2.6+)
  • disable on zero shipping - added missing settings field

2.0.0

Requires WordPress 3.5+ · WooCommerce 2.2+ · Tested to WordPress 4.6.7

CHANGED

  • plugin overtaken by @vyskoczilova
  • fully compatible with WC 3.0+
  • Czech localization
  • Disable on zero shipping (by @panvagenas)

FIXED

1.3.7

Requires WordPress 3.5+ · WooCommerce 2.2+ · Tested to WordPress 4.3

CHANGED

  • l10n: change textdomain to 'woocommerce-pay-for-payment' to make it work with translate.wordpress.org

1.3.6

Requires WordPress 3.5+ · WooCommerce 2.2+ · Tested to WordPress 4.3

FIXED

  • compatibility with Amazon Payments and also with Woocommerce 2.4
  • PHP Warning on shopping basket

1.3.5

Requires WordPress 3.5+ · Tested to WordPress 4.1

FIXED

  • make it work with stripe for woocommerce by Stephen Zuniga

1.3.4

Requires WordPress 3.5+ · Tested to WordPress 4.1

CHANGED

  • Code Refactoring: set plugin textdomain to plugin slug
  • Minor correction in español and german translations

1.3.3

Requires WordPress 3.5+ · Tested to WordPress 4.0

NEW

  • Minimum and maximum charges.

1.3.2

Requires WordPress 3.5+ · Tested to WordPress 4.0

NEW

  • Deactivate if WooCommerce version is below requirement.

FIXED

  • Missing Taxes

1.3.1

Requires WordPress 3.5+ · Tested to WordPress 4.0

CHANGED

  • Fix Admin: Payment gateway Class not found (may occur with 3rd party gateways)
  • Update turkish localisation

FIXED

  • textdomain loading

1.3.0

Requires WordPress 3.5+ · Tested to WordPress 4.0-beta3

NEW

  • Enhanced UI
  • Select tax class to be applied to payment fee
  • Select if cart taxes will be included on payment fee calculation
  • Placeholders in fee title.

CHANGED

  • completely repeat all WooCommerce tax and fee calculation steps after payment fee has been added.

1.2.5

Requires WordPress 3.5+ · Tested to WordPress 4.0-beta3

FIXED

  • incorrect fee calculation.

1.2.3

FIXED

  • Safely Restrict payment fee to 2 Decimals.

1.2.2

CHANGED

  • Discard cart_has_fee() check, as it is already done by WooCommerce

FIXED

  • Calculate taxes
  • cart contents taxes and shipping taxes included into fee calculation

1.2.0

NEW

  • add option to disable payment fee when free shipping is selected
  • add pay4pay column in WooCommerce checkout settings

CHANGED

  • Plugin-API: add filter `woocommerce_pay4pay_apply`
  • Code Refactoring: separated admin UI from frontend to keep things lean.
  • Code Refactoring: use function <code>WC()</code> (available since WC 2.1) in favour of <code>global $woocommerce</code>.
  • requires at least WC 2.1.x,

1.1.1

CHANGED

  • Added wpml configuration file to keep compatibility with http://wordpress.org/plugins/woocommerce-multilingual/

1.1.0

CHANGED

  • Added option to include shipping cost in fee calculation
  • Fixed issue where malformed amounts where sent to external payment services in WC 2.1.6

1.0.2

CHANGED

  • Fixed an issue where Pay4Pay options did not show up after saving checkout settings in WC 2.1.0
  • Updated turkish translation (Thanks a lot!)

1.0.1

CHANGED

  • Fix plugin URL

1.0.0

CHANGED

  • Initial release

Missing something?

Feature requests go straight to the issue tracker, and I read all of them.

Suggest a feature