Pay for Payment for WooCommerce – Payment Gateway Fees & Discounts
by Karolina Vyskocilova 4.7 (71 reviews)

Pay for Payment for WooCommerce – Payment Gateway Fees & Discounts

Payment gateway fees & discounts for WooCommerce: COD surcharges, card fees, fixed or percentage — on every gateway, block checkout included.

Pay for Payment for WooCommerce ranks #1,712 among WordPress.org plugins with 10,000+ active installations, is #173 of 14,124 in the E-commerce category, a 4.7/5 rating from 71 reviews, and was last updated Oct 23, 2026. Data from WordPress.org, refreshed twice daily — see methodology.

Compatible with WP 7.1
v3.0.3 Current Version v3.0.3
Updated 1 week ago Last Update on 23 Oct, 2026
Refreshed 2 days ago Last Refreshed on
#173 of 14,124 in E-commerce Top 5% by installs Downloads -38.4% this week Actively maintained
View on WordPress.org
Rank
#1,712
— No change
Active Installs
10K+
-38.4%
KW Avg Position
9.2
— No change
Downloads
346.7K
+27 today
Support Resolved
0%
— No change
Rating
94%
Review 4.7 out of 5
4.7 (71 reviews)

Next Milestone 20K

Total Progress 62.3%
10K+ 20K+
309
Ranks to Climb
-
Growth Needed
8,000,000
Active Installs
Pro

Unlock Exact Install Count

See the precise estimated active installs for this plugin, calculated from real-time ranking data.

  • Exact install estimates within tiers
  • Track install growth over time
  • Milestone progress predictions
Upgrade to Pro
Need 3,773 more installs to reach 20K+

Rank Changes

1,625 1,670 1,715 1,759 1,804 25-10-2026 26-10-2026 27-10-2026 28-10-2026 29-10-2026 30-10-2026 31-10-2026 01-11-2026
1,625 1,670 1,716 1,761 1,806 17-10-2026 18-10-2026 19-10-2026 20-10-2026 21-10-2026 22-10-2026 23-10-2026 24-10-2026 25-10-2026 26-10-2026 27-10-2026 28-10-2026 29-10-2026 30-10-2026 31-10-2026 01-11-2026
Current #1,712
Change
Best #

Upgrade to Pro

Unlock 30-day and 90-day rank history charts with a Pro subscription.

Upgrade Now

Active Installs Growth

Active Installs 0,000,000+
Growth +0.0%
Peak 0,000,000

Downloads Growth

0 100 200 300 400 500 600 700 25-10-2026 26-10-2026 27-10-2026 28-10-2026 29-10-2026 30-10-2026 31-10-2026 01-11-2026
0 500 1K 1.5K 2K 17-10-2026 18-10-2026 19-10-2026 20-10-2026 21-10-2026 22-10-2026 23-10-2026 24-10-2026 25-10-2026 26-10-2026 27-10-2026 28-10-2026 29-10-2026 30-10-2026 31-10-2026 01-11-2026
Downloads
Growth
Peak

Upgrade to Pro

Unlock 30-day, 90-day, and yearly download history charts with a Pro subscription.

Upgrade Now

Reviews & Ratings

4.7
71 reviews
Overall 94%
5
63 (89%)
4
2 (3%)
3
2 (3%)
2
1 (1%)
1
3 (4%)

Security History

Source: WPVulnerability

1 known vulnerability on record · 1 in the last 24 months · checked 1 week ago

  1. Pay for Payment for WooCommerce – Payment Gateway Fees & Discounts [woocommerce-pay-for-payment] < 3.0.2

    CVE-2026-108493 · Fixed in v3.0.2

TL;DR

AI summary of the plugin's readme

This plugin is for WooCommerce store owners who want to charge customers extra for using specific payment methods. It solves the problem of adding configurable per-gateway fees (fixed and/or percentage-based) to orders, including for React-based gateways like WooCommerce Stripe.

  • Flat rate charges per gateway
  • Percentage of cart total fee
  • Combines fixed and percentage fees
  • Placeholder tags for item titles
  • Disable fee for free shipping
  • Centralized settings tab
  • React-based gateway compatibility
  • Plugin API for developers

Frequently Asked Questions

Common questions about Pay for Payment for WooCommerce – Payment Gateway Fees & Discounts

Not for a surcharge. PayPal's user agreement prohibits charging customers extra for using PayPal — see the "No Surcharges" clause of the PayPal User Agreement. The sanctioned way to steer shoppers away from PayPal is the opposite approach: set up a discount (a negative fixed amount or negative percentage, see above) on the payment methods you'd rather they use, instead of surcharging PayPal directly.
The cart page doesn't know your payment method yet, so the plugin previews the fee for whichever gateway WooCommerce would otherwise default to: the payment method you (or a returning customer) last selected in this session, failing that the store's configured default gateway (WooCommerce > Settings > Payments), and failing that the first enabled gateway. Once the shopper reaches checkout and actually picks a payment method, the fee recalculates for that method — on the classic checkout live, on the cart page only on the next page load/refresh.
The percentage always starts from the cart subtotal excluding tax. Each checkbox adds more to that base before the percentage is applied: Shipping: adds the shipping cost. Example: a 2% fee with "Shipping" checked on a 100 subtotal + 10 shipping charges 2% of 110 = 2.20, instead of 2% of 100 = 2.00. Coupons: subtracts the cart's coupon discount from the base first. Example: 2% fee on a 100 subtotal with a 20 coupon applied charges 2% of 80 = 1.60. Taxes: adds the cart's tax total (and, combined with "Shipping", the shipping tax too) to the base. Example: 2% fee with "Taxes" checked on a 100 subtotal + 21 cart tax charges 2% of 121 = 2.42. Fees: adds the order's other fee lines (e.g. from another plugin) to the base. This works on orders you create in wp-admin and on the "Pay for order" page (both Pro). At checkout it currently adds nothing, because WooCommerce totals the cart's other fees only after this plugin has calculated its own — so leave it off if your fees are charged at checkout. Checkboxes combine — e.g. "Shipping" + "Coupons" both checked feeds subtotal + shipping − coupon discount into the percentage.
The plugin adds the fee through WooCommerce's own cart-fee API (WC_Cart::add_fee()), so WooCommerce stores it exactly the way it stores any other fee: as a regular fee line item on the order, carrying whatever title you configured (e.g. "COD surcharge"). It shows up on the order in wp-admin, on customer-facing order emails/invoices, and in any WooCommerce order export the same way a shipping or other fee line would. To tell the plugin's fee apart from other fees, every fee line it writes carries two order-item meta keys: _pay4payment_fee_gateway (the payment method id, e.g. cod) and _pay4payment_fee_source (checkout, order_pay, admin or converted — where the line was written). Pro stores can switch the fee to a product line on a hidden "Payment fee" product (for ERP/invoicing exports that skip fee lines); those lines carry the same meta keys. A code example for reading them is on the order item meta page.
On the free plugin, no fee at all. When the customer changes the payment method on the order-pay page ("Pay for order"), the fee line of the method they moved away from is removed, and WooCommerce doesn't run cart fees on that page, so nothing takes its place. They are never charged for a method they didn't use. Know that a customer can reach this on purpose: let the first payment fail, then pay on the order-pay page with the method that carries the fee. If that fee matters to you, Pro closes it. On Pro, with "Charge the fee on manual & order-pay orders" turned on, it's the fee of the method they actually paid with: the old fee is replaced by the new one, and the order-pay page shows each method's fee and the resulting total before they pay. Orders you create in wp-admin get their fee the same way, on save or Recalculate.
Basic support, yes: with the block checkout in use, fees calculate and the order total updates when the shopper changes payment method, the same as on the classic checkout. One known limitation: this only works when the Checkout block is placed directly in the page content of your checkout page. If a block theme places the Checkout block inside a template part instead (rather than the page content), the plugin can't detect it — the fee still calculates on the initial page load, but it won't live-update when the shopper switches payment method. Workaround: keep the Checkout block in the page content rather than a template part. I can't set up the fee rule I need — the option isn't in the settings screen. The free settings screen covers a fixed amount and/or a percentage of the cart (with the base options above), min/max caps, and disabling on free/zero shipping. Rules such as "no fee above a certain cart total", or fees per user role, country or shipping zone, are what Pro's conditions do, from the same settings screen and with no code. If you would rather write code, the plugin's filters work on the free version too (full reference: developer filters): woocommerce_pay4pay_apply — decide whether a charge is applied at all. woocommerce_pay4pay_applyfor_{$payment_gateway_id} — decide whether a charge is applied for one specific payment gateway. woocommerce_pay4pay_{$payment_gateway_id}_amount — alter the calculated amount of the charge. woocommerce_pay4pay_charges_fixed / `_percentage` / `_minimum` / `_maximum` — filter the raw configured values before calculation. woocommerce_pay4pay_get_current_gateway_settings — rewrite a payment method's whole fee configuration for the request: the amounts, the caps, the tax handling, the title and the disable rules, using the same `pay4pay_*` keys 2.x used. Return `false` to charge nothing at all. It runs for the checkout charge, the order-pay charge and the fee preview alike, so all three agree. Two notes if you are bringing a 2.x snippet across: it shapes a fee for a payment method that is switched on in the settings screen (a method whose fee lives entirely in your code is switched on for you during the upgrade, and the settings screen tells you if one is ever missed), and COD's `enable_for_methods` is read from the gateway itself rather than from the array you return.
Go to WPML > String Translation and look for the woocommerce-pay-for-payment text domain. You'll find strings named "{payment-method-id} - item title" and "{payment-method-id} - charges fixed" for each configured gateway.
No. The first time this version runs, it migrates your existing per-gateway settings into the new central settings screen automatically. Your old (2.x) settings are left untouched in their original location — the migration reads them, it doesn't move or delete them.
The free plugin charges one fee (or discount) per payment method, at checkout, on every order. Pro decides when and where: conditions and several fee tiers per method, fees on manual and "Pay for order" orders, the fee as a product line, display controls, and the fee priced into Apple Pay / Google Pay via Stripe. Both use the same settings screen and the same saved settings, so upgrading replaces the plugin and keeps every fee you have set up. Side-by-side comparison · 7-day trial, no card
For the free plugin, please use the WordPress.org support forum. Pro customers get a direct line instead — commercial support isn't handled through the wp.org forum: use the Support link in the plugin's settings screen, or your Freemius account's Contact page. By email, support@payforpayment.com reaches the same inbox.

Sign In / Register

You need to sign in or register to use this feature.