Payment and Shipping Method Checkout Fee for WooCommerce
Payment and Shipping Method Checkout Fee for WooCommerce
Description
This plugin lets you attach an extra fee — either a percentage of the cart subtotal or a fixed amount — to any WooCommerce payment gateway or shipping method. Configuration lives under WooCommerce Settings Checkout Fee.
Typical use cases:
- Pass card-processing surcharges to customers paying with specific gateways.
- Add a handling fee for Cash on Delivery.
- Add a packaging/insurance fee for express shipping methods.
Features:
- Per-method configuration — every payment gateway and shipping method has its own settings.
- Choose between a percentage of cart subtotal or a fixed amount.
- Optional taxable flag so the fee can be included in tax calculations when required.
- Customisable fee label shown to the customer.
- Works with the classic checkout and the block-based Cart & Checkout.
- Declares compatibility with WooCommerce High-Performance Order Storage (HPOS).
Installation
- Upload the plugin folder to
/wp-content/plugins/or install via the WordPress Plugins screen. - Activate the plugin through the Plugins menu in WordPress.
- Go to WooCommerce Settings Checkout Fee and configure the fee for each payment or shipping method you need.
Screenshots
Faq
WooCommerce Settings Checkout Fee.
No. The percentage is applied to the cart subtotal (line items, before shipping and taxes). Whether the resulting fee is itself taxed is controlled per method by the Taxable option.
Yes. The plugin hooks into woocommerce_cart_calculate_fees, which fires for both classic and block-based checkout. The block checkout automatically recalculates totals when the customer switches payment method via the Store API.
Yes — compatibility is declared with both custom_order_tables and cart_checkout_blocks.
Reviews
Cool but...
By dantgal on November 28, 2023
It's working great, but payment operators takes also its fee from shipping costs which clients have to pay too. So I changed at file checkoutfee.php from:
$originalNumber = WC()->cart->get_cart_contents_total();
to:
$originalNumber = WC()->cart->get_cart_contents_total() + WC()->cart->get_shipping_total();
and it's now adding to the fee the shipping costs - so working now as I wanted 🙂
Greetings!
great plugin
By ottomania on July 11, 2023
A very important and necessary plugin for all E-Commerce Sites
Thank you very much. Health for your effort. Nice and very useful plugin.
Exactly what I was looking for
By nhldata on February 4, 2023
Exactly what I was looking for. Super simply and works as advertised.
Works well and for free! 🙂
By BG2021 (enikolov) on December 30, 2022
It does it's work and for free! I made it with it. Ads in brackets the percentage you set e.g."(2%)" to the title that customers read. It's % of the products in the order (does not include the shipping fee).
An idea for future versions might be adding:
- "fixed amount" fee
- option to make the % fee from the total (so that includes also the shipping)
- Option to set fees to turned off payment methods (as PayPal stays turned off for currencies that it does not support but still works for the non-default currencies that the website supports)
Thanks a lot to the Vipe team for that plugin! It saved me 150 USD for other plugins at least...
Nice and clean
By linterieur on December 24, 2020
Changelog
2.1.0
- Fix: percentage and fixed fees were never actually added to the cart because of a mismatch between the option key used by the settings UI and the one read at checkout. Fees now apply as configured.
- Fix: activation routine no longer deletes existing per-method settings and no longer force-resets the fee type to “percentage” on every activation.
- Fix: removed
is_plugin_active()call that could fatally error during activation on some hosts. - New: per-method Taxable option (previously every fee was implicitly taxable, with no way to change it).
- New: declares compatibility with WooCommerce HPOS and Cart & Checkout Blocks.
- New: one-time migration of legacy option keys (
{id}_name_label,{id}_name_percent,{id}_fee_type) to a clean, prefixed namespace (pmcf_{id}_*). - New: own text domain
payment-method-checkout-fee-for-woocommerce(previously strings used thewoocommercedomain). - Improvement: configuration now lists every registered payment gateway, not just those available for the current empty admin cart.
- Improvement: scripts are now enqueued via
wp_enqueue_scriptsand only on the checkout page. - Improvement: multi-package carts no longer apply the same shipping-method fee multiple times.
- Cleanup: removed unused Monolog dependency and
vendor/directory, shrinking the plugin download significantly. - Cleanup: removed dead admin page and orphaned admin JS/CSS that were not wired up to anything.
- Tested up to WordPress 6.9 and WooCommerce 10.7.
2.0.1
- Bug fixing with label title.
2.0.0
- Major update with significant improvements.
- Settings moved into the WooCommerce Settings tab.
- Enhanced code quality.
- Added an option to set a fixed fee.
- Added support for shipping method fees.
1.2
- Code Improvement.
- Added checks if WooCommerce is enabled so the website won’t crash if you disable it.
1.0.0
- Initial Release — 19.11.2019.


