CheckMo Availability
v2.1.1
CheckMo Availability
- Updates and support included for 12 months
- License key delivered immediately by email
- 30-day money-back guarantee
- Full documentation included
- Composer-ready installation
Checkmo Availability
Restrict Magento's built-in Check / Money Order and Cash on Delivery payment methods to a chosen set of customer groups — and, for COD, to specific pickup shipping methods only. A small, surgical module for merchants who want these "trust-required" offline payment methods exposed to known wholesale or pro accounts, never to anonymous guests.
Magento natively offers no granular control over who can pay by COD or check: enabling the method exposes it to everyone. This module fills that gap with a customer-group whitelist and a checkout-side filter that removes the method from the available list at quote time.
Who it's for
- B2B merchants who accept offline payments (check, money order, COD) for wholesale or pro accounts but want guests and standard B2C customers to be limited to electronic methods
- Stores running a click-and-collect / pickup workflow where Cash on Delivery is only valid when the customer actually picks up at the warehouse
- Merchants who have been turning Check/MO and COD on and off globally to control fraud — this module replaces that workaround
Key benefits
- Customer-group whitelist — multiselect of allowed customer groups in the admin; everyone else simply doesn't see the methods at checkout.
- Pickup-aware COD — Cash on Delivery is filtered out at quote time unless both the customer's group is whitelisted AND the chosen shipping method is one of the configured pickup methods. No more COD on home delivery orders.
- No code changes, no template hacks — the filtering runs as a plugin on
Magento\Payment\Model\MethodList::getAvailableMethods, so it works with any frontend (Hyvä, Luma, Wimakeit Checkout) and any checkout UI that consumes the standard payment-methods list. - Disabled by default — installing the module changes nothing until you flip the
Enabletoggle and pick at least one customer group, so it's safe to deploy ahead of configuring it. - Lightweight — one plugin, one config model, no schema patches, no cron, no FPC impact.
Compatibility
- Magento 2.4.x / Mage-OS equivalent
- PHP 8.1, 8.2, 8.3
- Requires
wimakeit/module-core^3.0 - Works with the native Magento checkout, with Hyvä checkouts, and with Wimakeit Checkout
- Compatible with Varnish Full Page Cache (no impact — the filter runs in the customer session, not in cached pages)
Install this module via Composer. Make sure your auth.json is configured with your Wimakeit credentials.
$ composer require wimakeit/module-checkmo-availability:^2.1.1
$ bin/magento setup:upgrade
$ bin/magento setup:di:compile
Installation notes
The standard composer require + setup:upgrade + setup:di:compile flow applies. The points below cover what's specific to this module.
Required dependency
This module requires wimakeit/module-core ^3.0 (provides the shared Wimakeit admin tab and config helpers). Composer pulls it automatically from the Wimakeit registry as long as the registry is declared in your project's composer.json.
How it works
The module adds a plugin on Magento\Payment\Model\MethodList::getAvailableMethods. When the quote is loaded at checkout:
- checkmo (Check / Money Order) is removed unless the customer's group is in the configured whitelist.
- cashondelivery is removed unless the customer's group is whitelisted and the chosen shipping method matches one of the configured pickup methods.
The list of pickup methods is currently a constant (Config::PICKUP_AT_KITCROSS) — adjust in code if you need a different set. There is no admin field for it yet.
Configuration
Go to Stores > Configuration > Wimakeit > Checkmo Availability. The module is disabled by default — nothing changes until you turn it on and pick at least one group.
| Setting | Default |
|---|---|
| Enable | No |
| Customer Groups | (none — multiselect) |
Hold Ctrl (Cmd on Mac) to select several customer groups.
ACL
The module declares a Wimakeit_CheckmoAvailability::config ACL resource, granted to the Administrator role only. Assign it to back-office roles that should be allowed to edit the whitelist.
No cron, no patches, no env keys
The module has no cron jobs, no schema/data patches, and no app/etc/env.php keys to set.
- Version
- v2.1.1
- License
- Annual Subscription
- Support
- 12 months
- Last updated
- Jun 11, 2026
- Magento
- Magento 2.4.4 Magento 2.4.5 Magento 2.4.6 Magento 2.4.7 Mage-OS 2.0 Mage-OS 2.1
- PHP
- PHP 8.1 PHP 8.2 PHP 8.3
- Hyvä
- Not compatible
- Package
-
wimakeit/module-checkmo-availability
Compatibility checker
Pick your stack to see if this module fits.
Compatibility 4
Pricing & licensing 4
vendor/wimakeit/ once you composer require the package, so you can read it, audit it, and patch it locally for your own Magento install. You may NOT redistribute it, sublicense it, publish it on a public package registry, or sell it on. One licence = one production domain + one staging/dev domain (see terms for the full EULA). Wimakeit modules are NOT part of Magento's open-source repository on packagist.org — they are distributed exclusively via the private Composer registry packages.wimakeit.be. Installation & updates 6
composer require wimakeit/module-checkmo-availability:^2.0.8, then bin/magento setup:upgrade, bin/magento setup:di:compile, and finally bin/magento cache:flush. The Installation tab on this page lists every configuration step (ACLs, cron jobs, default values) so a deploy takes minutes, not hours. If you need a hand, Wimakeit offers Magento installation services from our Wallonian office (Presles, between Charleroi and Namur). auth.json: {"http-basic": {"packages.wimakeit.be": {"username": "YOUR-EMAIL", "password": "YOUR-TOKEN"}}}. Step 3: register the repo: composer config repositories.wimakeit composer https://packages.wimakeit.be. Step 4: composer require wimakeit/module-checkmo-availability:^2.0.8. In CI/CD pipelines, inject COMPOSER_AUTH as a JSON env var instead of committing auth.json. composer require, same module code, same database schema — no fork to maintain, no licence change. composer update is safe within a major. app/design/frontend/{YourVendor}/{theme}/Wimakeit_{Module}/templates/ keeping the same relative path. Blocks, ViewModels and Helpers are overridable via DI preference in your own custom module — declare <preference for="Wimakeit\…\OriginalClass" type="YourVendor\Override\Class" /> in etc/di.xml. Layout XML is extended (preferred) or overridden the standard Magento way. Wimakeit modules never use the final keyword on classes you might reasonably want to override — overriding is a first-class scenario, not a hack. Support & security 3
contact@wimakeit.com with the module name, version, Magento/Mage-OS version and the steps to reproduce. Fixes ship in the next patch release. Wimakeit support is staffed in French, English and Dutch on business days (CET working hours). contact@wimakeit.com with a clear [SECURITY] subject prefix — please include the module name, version and the steps to reproduce. We acknowledge promptly on business days and credit reporters in the Changelog if they wish. Wimakeit is a Belgian SRL (société à responsabilité limitée) bound by Belgian and EU privacy and disclosure law. About Wimakeit 1
Found something not covered by the FAQ?
Report a bug or ask a question — the form is prefilled with this module.
Changelog
Categories: Security, Feature, Fix, Perf, Admin, Deps.
[2.1.1] - 2026-06-10
Security
- Closed a bypass where the Check/Money Order and Cash on Delivery restrictions were only enforced on storefront-rendered pages: customers using the AJAX/REST checkout could see and select payment methods that should be locked to allowed customer groups. The plugins are now declared globally so the
webapi_restandgraphqlareas honour the same group restriction.
[2.0.9] - 2026-05-26
Deps
- Certified PHP 8.4 support. Composer
phpconstraint widened to>=8.1 <8.5.
[2.0.8] - 2026-05-08
Admin
- Admin menu group standardized — module appears under a top-level Wimakeit_CheckmoAvailability entry with a Settings child that opens directly on the configuration section. Module reordered into the Sales group.
[2.0.7] - 2026-04-29
Deps
- Certified PHP 8.1 → 8.3 support. Composer
phpconstraint tightened to>=8.1 <8.4.
[2.0.6] - 2026-04-14
Admin
- Composer/Satis distribution archives now exclude internal files (
.gitlab-ci.yml,.claude/,docs/,.gitattributes). - Internal release pipeline standardized (validate, tag, deploy, release stages).
[2.0.5] - 2026-04-10
Security
- Config path mismatch fixed — admin section now writes to
wimakeit_checkmo_availabilityand the runtime reader uses the same path. Previously the storefront kept reading the legacycheckmo_availabilitypath, so changes saved in the admin had no effect. - Forced
payment/checkmo/active=1removed fromconfig.xml— the module is a restriction layer, not an activator. Stores can now disable checkmo entirely. - ACL resource declared properly (
Wimakeit_CheckmoAvailability::config).
Perf
- The three payment plugins moved from global
di.xmltofrontend/di.xml— no more CLI / cron / admin instantiation overhead. - Unused
CheckoutSessiondependency removed from both Available plugins; session proxies configured for all remaining plugins.
Admin
strict_types=1added toGroup.php; deprecatedsetup_versionremoved frommodule.xml; emptyevent.xmldeleted.
[1.2.10] - 2026-04-10
Admin
- Duplicate admin tab definition removed — module now uses the shared Wimakeit tab from
wimakeit/module-core.
[1.2.9] - 2026-04-07
Deps
- Depends on
wimakeit/module-corefor shared admin-tab and config abstractions.
[1.2.8] - 2026-03-19
Admin
- Configuration access refactored from
Helper\DatatoModel\Configfor alignment with current Magento architecture and consistency with the other Wimakeit modules.
[1.2.7] - 2026-03-19
Fix
- Stray
src/folder accidentally shipped in the 1.2.6 archive removed — module loads cleanly again.
[1.2.5] - 2026-03-17
Admin
- Type safety tightened (typed properties, return types). Admin menu wiring cleaned up.
[1.2.4] - 2026-01-28
Admin
- Module version bumped in
composer.jsonfor marketplace alignment. No functional change.
[1.2.3] - 2025-12-17
Admin
- Logging clarified when the customer-group restriction kicks in (eases debugging on stores with many customer groups).
[1.2.2] - 2025-12-16
Fix
module.xmlsequence syntax corrected — fixes asetup:upgradeerror on stores that load modules in dependency order.
[1.2.1] - 2025-12-15
Deps
- Depends on
wimakeit/module-core.
[1.2.0] - 2025-12-15
Feature
- Initial public release of Wimakeit Checkmo Availability for Magento 2 / Mage-OS.
- Restricts the Check / Money Order payment method to a configurable allowlist of customer groups.
- Admin configuration under Stores → Configuration → Sales → Payment Methods → Check / Money Order with a multi-select of allowed customer groups.
- Plugins on the payment method's
isAvailable()and on the cart's payment-method list ensure the restriction is enforced in both the storefront checkout and REST API calls.
Found a bug? Tell us about it.
A short form opens in a new tab — the module name and your language are already filled in. Share what you tried, what went wrong, and we will get back to you within one business day.
Report a bug for CheckMo AvailabilityNeed help?
Our team is available to assist with integration.