=== Plusero - Extra Fees for WooCommerce ===
Contributors: codewoogeek, heyvicky, propluginslab
Tags: woocommerce, fees, checkout fee, cod fee, surcharge
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.3.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Add conditional extra fees to WooCommerce. Charge per product, per cart, at checkout, by shipping method or by payment gateway.

== Description ==

Plusero Extra Fees lets you add a charge to an order when a condition you set is met. A cash on delivery surcharge. A small order fee. A packaging charge on fragile goods. A card processing percentage. You describe the rule once and the fee applies itself from then on.

* **Live demo:** [Free version](https://demo.propluginslab.io/plusero-extra-fees-for-woocommerce-free) | [Pro version](https://demo.propluginslab.io/plusero-extra-fees-for-woocommerce)
* **Documentation:** [Free version](https://docs.propluginslab.io/plusero-extra-fees-for-woocommerce-free) | [Pro version](https://docs.propluginslab.io/plusero-extra-fees-for-woocommerce)
* **Support:** [propluginslab.io/support](https://propluginslab.io/support)

Fees are built through a short guided flow that asks five plain questions: where the fee applies, when it should be charged, how much it should be, what customers should see, and whether it reads correctly. Every answer is shown back to you as a sentence before you save, so you know what you built.

= What you can do =

* Charge fees in five places: on a product, on the cart, at checkout, by shipping method, or by payment gateway.
* Build as many fees as you need. There is no limit of any kind on how many you create.
* Decide when a fee applies using cart subtotal, total quantity, a chosen product or variation, a product category, customer role, billing country, payment method or shipping method. A shipping method rule can name a whole method type, such as any flat rate, or one method in one shipping zone, such as an Express flat rate.
* Combine conditions so that either all of them must match, or any one of them is enough.
* Charge a fixed amount, or a percentage of the cart subtotal with or without tax.
* Set a smallest and a largest amount, which keeps a percentage fee sensible on very large orders.
* Round to two decimals, up to a whole number, or to the nearest 0.05.
* Mark a fee taxable and pick which tax class it uses.
* Give each fee a customer facing label, a description shown under the fee in the cart and checkout totals, and a tooltip.
* Decide the order that fees are worked out and displayed in.
* Save a fee switched off as a draft, switch a fee off without deleting it, or duplicate one as the starting point for another. Editing a fee keeps the status it already has.
* Narrow the fee list to active or inactive fees, or to fees charged in one place.

= Fees that react to checkout =

A payment fee reads the gateway the customer selected and recalculates the moment they switch, so a cash on delivery surcharge appears and disappears as they change their mind. A shipping fee does the same with the shipping method they chose. This works on the classic checkout and on the block checkout.

= Works where WooCommerce works =

Fees are added through the standard WooCommerce cart fee hook, so they appear in the cart, the checkout, the order, the confirmation email and PDF invoices with no extra setup. The classic cart and checkout, the block cart and checkout, and the Store API all show the same totals. High Performance Order Storage is supported.

= Built in documentation =

Every option is explained inside your dashboard, under Plusero Fees, Documentation. What each condition means, what each calculation does, and what to check when a fee is not showing. You never have to leave your site to look something up.

= Multilingual =

Fee labels, descriptions and tooltips are registered with WPML and Polylang automatically when you save a fee, so they can be translated alongside the rest of your shop.

= A note about the Pro edition =

This free plugin is complete on its own. Nothing here is limited, locked, trial based or time restricted, and no feature listed above needs Pro to work. A separate Pro edition is described in the Pro version section below.

== Installation ==

1. Install and activate WooCommerce 8.0 or newer.
2. Upload the plugin folder to wp-content/plugins, or install it through Plugins, Add New.
3. Activate the plugin through the Plugins screen.
4. Go to Plusero Fees in the admin menu. The fee list will be empty.

= Building your first fee =

This example adds a charge when the customer pays cash on delivery.

1. Click Add fee.
2. Step 1, Where: choose Payment.
3. Step 2, When: click Add a condition. Leave the type as Payment method and choose your cash on delivery gateway from the list.
4. Step 3, Amount: choose Fixed amount and enter the charge, for example 40.
5. Step 4, Wording: in Fee label type what the customer should see, for example Cash on delivery charge.
6. Step 5, Review: read the summary back, then click Save fee.

To test it, add a product to the cart, go to checkout and select cash on delivery. The fee appears in the totals, and disappears if you switch to another payment method.

Every option is explained in full under Plusero Fees, Documentation.

== Frequently Asked Questions ==

= My fee is not showing in the cart? =

Check three things in order. Is the fee active in the fee list. Does every condition match the cart you are testing with. Does the amount come to something above zero, since fees that work out to nothing are hidden by default.

= Where does the fee description appear? =

Under the fee amount in the cart and checkout totals, as a short line in smaller text, on the classic and the block cart and checkout. Fees with no description show nothing extra. Turn descriptions off for the whole shop under Plusero Fees, Settings.

= Can I charge a fee only for cash on delivery? =

Yes. Add a fee, choose Payment as the location, add a payment method condition set to your cash on delivery gateway, and set the amount. The fee appears as soon as the customer picks that gateway.

= Does the fee include tax? =

Only if you tick Charge tax on this fee. When you do, you can also choose which tax class it uses. WooCommerce then treats the fee like any other taxable line and includes it in your tax reports.

= Do fees work with the block cart and checkout? =

Yes. Fees are added through the standard WooCommerce cart fee hook, which the block cart, the block checkout and the Store API all read from. Descriptions and tooltips show under the fee in the block totals, and the block checkout tells the shop which payment method is selected so a payment fee follows the choice straight away, wherever the Checkout block is placed.

= What is a Product fee's percentage taken from? =

The products it matches, not the whole basket. A product fee of 10 percent limited to one product charges 10 percent of that product's line, whichever else is in the cart. The per item and per weight methods count only the matching products too. Each condition group is read with its own logic, so in an any match group a line needs only one of the product rules. When no line in the cart matches, the fee charges nothing; it never falls back to the whole basket.

= Can I charge different amounts at different order sizes? =

Yes. Build one fee per band and give each a cart subtotal condition covering its range. Give them different order numbers so they read in sequence in your fee list.

= Will deleting the plugin remove my fees? =

Only if you asked it to. There is a setting called Remove all data when the plugin is deleted, and it is off by default, so your fees survive a deactivate, a reactivate and an update.

= Can I add my own condition or calculation? =

Yes. The plugin is built around filters. Register a condition with plusero_ef_conditions and answer it with plusero_ef_evaluate_condition. Register a calculation with plusero_ef_methods and work it out with plusero_ef_calculate_custom. The full list is under Plusero Fees, Documentation, For developers.

== External services ==

This plugin does not connect to any external service. It makes no remote requests and sends no data anywhere. Everything it stores stays in your own database.

== Screenshots ==

1. The fee list, showing where each fee applies, what it charges and whether it is active.
2. Step 1 of the builder, choosing where the fee should be charged.
3. Step 2, building conditions, with the rule read back as a sentence.
4. Step 3, setting the amount, with limits, rounding and tax.
5. Step 4, writing the label, description and tooltip the customer sees.
6. Step 5, reviewing the finished fee in plain words before saving.
7. The settings screen.
8. The built in documentation, which explains every option.
9. Fees on the cart totals.
10. The same fees carried through to the checkout.

== Pro version ==

[Plusero - Extra Fees for WooCommerce Pro](https://propluginslab.io/shop/plugins/pro-plugins/plusero-extra-fees-for-woocommerce/) includes everything in this plugin and adds:

* Ten more conditions: cart weight, number of different items, product tag, logged in, orders placed before, billing state, billing postcode, shipping country, day of the week and coupon used.
* More ways to work out an amount: per item, per unit of weight, percentage plus a fixed amount, tiered bands, round up for charity, and any fee as a reduction.
* Optional fees the customer ticks in the cart or checkout, such as gift wrapping, express handling or insurance.
* More than one condition group, reusable condition sets and scheduling by date, day and hour.
* Combined or grouped fee lines, first match only, an order fee ceiling and highlighting.
* A live fee breakdown on product pages, reports, change history, a debug panel, import and export, ready made fees and a REST API.

== More plugins from ProPluginsLab ==

Free on WordPress.org:

* [Back In Stock Notifier for WooCommerce](https://wordpress.org/plugins/back-in-stock-notifier-for-woocommerce/) - Waitlist and restock email alerts for out of stock products.
* [Recovero - Cart Recovery for WooCommerce](https://wordpress.org/plugins/recovero-cart-recovery-for-woocommerce/) - Recover abandoned carts with automated emails.
* [Anticipo - Pre-Orders for WooCommerce](https://wordpress.org/plugins/anticipo-pre-orders-for-woocommerce/) - Take pre-orders before a product launches.
* [Affireo - Affiliates for WooCommerce](https://wordpress.org/plugins/affireo-affiliates-for-woocommerce/) - Run an affiliate and referral program.
* [Storefold - Multivendor Marketplace for WooCommerce](https://wordpress.org/plugins/storefold-multivendor-for-woocommerce/) - Turn your store into a multivendor marketplace.
* [Dispatchio - Shipment Tracking for WooCommerce](https://wordpress.org/plugins/dispatchio-shipment-tracking-for-woocommerce/) - Add tracking numbers and shipment updates to orders.
* [Presentero - Gift Cards for WooCommerce](https://wordpress.org/plugins/presentero-gift-cards-for-woocommerce/) - Sell and redeem digital gift cards.
* [Kitero - Product Configurator for WooCommerce](https://wordpress.org/plugins/kitero-product-configurator-for-woocommerce/) - Build composite products and kits.
* [Inputo - Name Your Price for WooCommerce](https://wordpress.org/plugins/inputo-name-your-price-for-woocommerce/) - Let customers choose what they pay.
* [Mercenza - B2B for WooCommerce](https://wordpress.org/plugins/mercenza-b2b-for-woocommerce/) - Sell wholesale with customer groups, wholesale prices and trade accounts.
* [Visuaro - Product Designer for WooCommerce](https://wordpress.org/plugins/visuaro-product-designer-for-woocommerce/) - Let customers design custom products in the browser.
* [Christmas Snow - Festive Snowfall Effect](https://wordpress.org/plugins/christmas-snow-festive-snowfall-effect/) - Add a lightweight snowfall effect to any site.

Pro plugins at [propluginslab.io](https://propluginslab.io/product-category/pro-plugins/):

* [Recovero Pro](https://propluginslab.io/shop/plugins/pro-plugins/recovero-cart-recovery-for-woocommerce/)
* [Anticipo Pro](https://propluginslab.io/shop/plugins/pro-plugins/anticipo-pre-orders-for-woocommerce/)
* [Affireo Pro](https://propluginslab.io/shop/plugins/pro-plugins/affireo-affiliates-for-woocommerce/)
* [Storefold Pro](https://propluginslab.io/shop/plugins/pro-plugins/storefold-multivendor-for-woocommerce/)
* [Dispatchio Pro](https://propluginslab.io/shop/plugins/pro-plugins/dispatchio-advanced-shipment-tracking-for-woocommerce/)
* [Presentero Pro](https://propluginslab.io/shop/plugins/pro-plugins/presentero-gift-cards-for-woocommerce/)
* [Kitero Pro](https://propluginslab.io/shop/plugins/pro-plugins/kitero-product-configurator-for-woocommerce/)
* [Plusero Pro](https://propluginslab.io/shop/plugins/pro-plugins/plusero-extra-fees-for-woocommerce/)
* [Inputo Pro](https://propluginslab.io/shop/plugins/pro-plugins/inputo-name-your-price-for-woocommerce/)
* [Mercenza Pro](https://propluginslab.io/shop/plugins/pro-plugins/mercenza-b2b-for-woocommerce/)
* [Visuaro Pro](https://propluginslab.io/shop/plugins/pro-plugins/visuaro-product-designer-for-woocommerce/)
* [Back In Stock Notifier Add-ons](https://propluginslab.io/product-category/back-in-stock-notifier/) - 26 add-ons incl. Mailchimp, Klaviyo, Twilio SMS, WPML, or all of them in the [Bundle](https://propluginslab.io/shop/add-ons/back-in-stock-notifier/bundle-add-ons/).

== Changelog ==

= 1.3.0 - 2026-10-17 =
* Fix: saving a fee in the builder no longer switches it on by itself. The last step has a Switch this fee on when I save it box, ticked for a new fee and set to the current status when editing.
* Fix: a product fee whose product rules match no line in the cart now charges nothing instead of working its amount out from the whole cart. Each condition group is read with its own all match or any match logic when picking the lines.
* Fix: two fees with the same label are both charged. Before, WooCommerce kept only the first one.
* New: a shipping method rule can name one method in one shipping zone, such as an Express flat rate, as well as a whole method type. Every package is checked.
* New: fee descriptions and tooltips show under the fee in the block cart and checkout.
* Improved: the block checkout scripts load wherever the Cart or Checkout block is placed, including templates and template parts.
* Improved: saved product and category rules show their names when a fee is opened again, and the summary reads each condition group with its own logic.
* Improved: fee labels register with Polylang on every admin page load so they stay in its Strings translations list, and a fee without a label registers its name instead.
* Tested with WordPress 7.1.3 and WooCommerce 11.2.1.

= 1.2.0 - 2026-10-15 =
* New: the fee list can be narrowed to All, Active or Inactive fees, each with a count, and to fees charged in one place (product, cart, checkout, shipping or payment).
* Security hardening: posted settings and fee data are now cleaned as they are read, the fee being edited reaches the builder through a properly enqueued script instead of a printed one, and deleting the plugin keeps shared fees while the Pro edition is still installed.
* Changed: while the Pro edition is active this plugin stays idle and a note on the Plugins screen says it can be deactivated, instead of switching itself off.
* Tested with WordPress 7.1.3 and WooCommerce 11.2.1.

= 1.1.0 - 2026-09-22 =
* New: fee descriptions are now shown under the fee amount in the classic cart and checkout totals. The Show descriptions setting, on by default, switches them off for the whole shop.
* Links moved to propluginslab.io.
* Added Pro upgrade banner on plugin screens. It shows only on the Plusero Fees screens and can be dismissed.
* Tested with WordPress 7.1.1 and WooCommerce 11.1.1.

= 1.0.0 - 2026-09-07 =
* First release.
