Extra Fees
Define product and cart condition fees that appear as individual line items at cart and checkout. Fixed or percentage amounts with caps, optional add-on fees shoppers select themselves, store view scoping, scheduling, tax engine integration, and full order, invoice, credit memo, and PDF coverage.
✦Documents that foot
The fee is charged once on the first invoice and refunded at most what was invoiced. Order, invoice, credit memo, and PDF totals always reconcile, even across partial invoices and multiple refunds.
✦Real tax engine, not a bolt-on
Fee tax runs through Magento's own tax calculation with a tax class per fee. The tax lands in the order's Tax line where your reports expect it, and tax-inclusive entry is one setting away.
✦Shoppers pick their add-ons
Optional fees render as checkboxes in the checkout summary. Gift wrapping, priority handling, insurance: the shopper opts in, totals update instantly, and the choice survives login and cart merge.
✦Rules, not code
Product attribute and cart conditions with six operators, AND/OR logic, store view scoping, and scheduling. A holiday surcharge for one store view configures itself and switches off on the date you set.
Charge for What Actually Costs You Money
OCMLabs Extra Fees adds rule-driven surcharges to Magento 2. Define a fee once: what triggers it, what it costs, where it applies. When a cart qualifies, the fee appears as its own labeled line at cart and checkout, follows the order through invoicing and refunds, and prints on the PDF documents. Customers see what they pay for. Accounting sees documents that foot.
How It Works
Each fee is a named rule: a fixed amount or a percentage of matching items, conditions that decide when it applies, and scope that decides where. Conditions cover product attributes (select, multiselect, text, and numeric, with equals, not-equals, and range operators) and cart facts: subtotal, quantity, destination country, region, or postcode, customer group, shipping method, and payment method. Combine conditions with AND or OR. Configurable products match on both parent and selected variant attributes.
Fees stack. A hazmat charge, an oversized-delivery premium, and a cold-chain fee can all land in one cart as three separate lines, in the order you set.
Optional Add-On Fees
Mark a fee optional and it becomes a checkbox in the checkout summary. Gift wrapping, priority handling, insurance: the shopper ticks the box, totals update on the spot, and the charge follows the order like any other fee. Selections survive logging in mid-checkout, and the same selection flow is exposed over REST and GraphQL for headless storefronts.
Scoping and Scheduling
Assign each fee to specific store views or all of them, and give it a different customer-facing label per store view. Put a fee on a schedule with from and to dates, evaluated in the store's timezone: a holiday handling surcharge starts and stops itself.
Tax, Currency, and Refunds Done Right
Fee tax runs through Magento's tax engine, not a side calculation. Pick a tax class per fee or set one default for all fees; the tax lands in the order's Tax line where reports expect it. If your market prices tax-inclusive, enter fee amounts gross and the module works out the exclusive base. Multi-currency stores get true base and display amounts converted at the current rate, and percentage fees accept a minimum and maximum cap.
The fee is charged exactly once, on the first invoice, and refunded at most what was invoiced. Partial invoices and multiple credit memos stay consistent: the documents always sum to the order total, and the fee line prints on PDF invoices and credit memos.
Visible Everywhere
Cart and checkout totals, order confirmation, invoice, and credit memo emails, the customer's account order pages, guest order lookup, print views, admin order screens, the admin order create form, and a dedicated column in the orders grid.
Built for Operating, Not Just Installing
A Fee Revenue report shows what each order earned in fees, with CSV export. A Change Log records every create, edit, enable, disable, duplicate, and delete: who did it, when, and the before and after values. Duplicate a complex fee instead of rebuilding it. Give support staff a view-only role with the dedicated ACL resource. Manage fees over the admin REST API or read them over GraphQL. Translations ship as a standard i18n dictionary, and module:uninstall removes every table, column, and config row the module created.
Who It's For
Merchants whose products carry real handling, compliance, or service costs: home goods, automotive parts, food and beverage, regulated categories. Price the cost where it belongs and show it to the customer at checkout, not as a surprise on the invoice.
✦ IN THE STORE & IN THE ADMIN
See it working.
✦ INSTALLATION
Two commands. Like it should be.
# keys provisioned to your dashboard at purchase $ composer require ocmlabs/module-extra-fees-hyva $ bin/magento setup:upgrade
✦ RELEASE LOG
Maintained like production code - because it is.
1.1.0
Added
- Optional customer-selected fees with checkout checkboxes, REST and GraphQL selection.
- Store view scoping with per-store labels, and Active From / Active To scheduling.
- Per-fee tax class, tax-inclusive entry option, multi-currency support, and min/max caps on percentage fees.
- Shipping method, payment method, and destination cart conditions; six operators on product attribute conditions.
- Fee Revenue report, Change Log audit grid, duplicate action, CSV export, and a view-only admin role.
- Fee lines on PDF invoices and credit memos, guest order views, and admin order create.
- Admin REST CRUD and GraphQL cart and order coverage.
Fixed
- Invoice and credit memo totals collectors now run and reconcile exactly; fees are never double-refunded.
- Orders grid fee column populates under asynchronous grid indexing.
1.0.1
Added
- Initial release: attribute-condition fees with AND/OR logic, cart and checkout line items, order lifecycle integration.
✦ THE OCM LABS LICENSE
Your code. Your keys.
✦ MODULE QUESTIONS
Before you buy.
Support & Documentation
Need more help?
Our support team typically responds within 1 business day.