OCMLABS/MODULE-EXTRA-FEES - No 004

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.

MAGENTO VERSIONS 2.4.7 - 2.4.8 (MAGENTO/FRAMEWORK 103.0.X)
PHP 8.3 - 8.4
DELIVERY COMPOSER - PRIVATE PACKAGIST

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.

YOUR-STORE - TERMINAL
# 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.
OCM Labs guarantee stamp

THE OCM LABS LICENSE

Your code. Your keys.

SOURCE CODEFULL ACCESS, UNENCRYPTED, FOREVER
DELIVERYCOMPOSER · PRIVATE PACKAGIST
AT EXPIRYFROZEN AT YOUR LAST VERSION - NEVER REVOKED
UPDATES12 MONTHS INCLUDED · RENEW WHEN YOU WANT
KILL SWITCHTHERE ISN'T ONE

MODULE QUESTIONS

Before you buy.

Yes. Mark a fee as Optional and it appears as a checkbox in the checkout order summary with its price. It is only charged when the shopper selects it. Selection also works over REST and GraphQL for headless storefronts.

Through Magento's tax engine, using the tax class you assign per fee (or a global default). The tax amount joins the order's Tax total rather than being hidden inside the fee line. If your prices include tax, enable Fee Amounts Include Tax and enter gross amounts.

The full fee is captured on the first invoice; later partial invoices add nothing. Credit memos refund the fee once, capped at what was invoiced. For a partial fee refund, use the Adjustment Refund field on the credit memo.

Yes. Cart totals render through the included Hyva compatibility module and checkout runs through the standard Luma checkout fallback. The native Magewire-based Hyva Checkout product is not supported.

Both. Each fee can target specific store views with its own label per store, and can carry Active From and Active To dates evaluated in the store's timezone.

Support & Documentation

Need more help?

Our support team typically responds within 1 business day.

Contact Us