Checkout
v1.7.18
Checkout
- Updates and support included for 12 months
- License key delivered immediately by email
- 30-day money-back guarantee
- Full documentation included
- Compatible with Hyvä themes
- Composer-ready installation
Checkout
A modern, fast and fully configurable Magento checkout — built with Alpine.js, server-rendered for speed, and compatible with Luma, Hyvä (via the companion module) and Swissup Breeze. Replaces Magento's default checkout with a one-page or multi-step layout that addresses the well-known pain points: slow rendering, fragile session handling, missing post-order redirects for off-site gateways, no payment method icons, and a generic success page.
The whole flow runs on the standard Magento REST endpoints (no proprietary JSON-API), so existing extensions for shipping, payment, tax, gift messages, coupons and newsletters keep working. The Alpine.js component is small (~30 KB), CSP-safe via SecureHtmlRenderer, and has a robust fallback that rebuilds the checkout config from the database when DefaultConfigProvider crashes.
Who it's for
- Merchants whose conversion rate suffers from Magento's slow native checkout and want a faster, more focused experience
- Stores using off-site payment gateways (MultiSafepay, Mollie, PayNL, Buckaroo, Adyen, Stripe…) that need the customer redirected to the hosted payment step reliably after
placeOrder - B2B and B2C teams that need a configurable success page (thank-you message, next-order coupon, social share, related-product upsells)
- Agencies who want the same checkout module to work on Luma, Breeze and Hyvä (via the dedicated
wimakeit/module-checkout-hyvacompanion)
Key benefits
- Two layout modes — one-page (all sections visible) or multi-step (guided), switchable per store from the admin.
- Off-site gateway redirects done right — built-in post-
placeOrderredirect map for MultiSafepay, Mollie (mollie_methods_*), PayNL and Buckaroo, plus an admin field to add any other gateway (Adyen HPP, Stripe redirect…) without touching code. - Payment method icons — ships with 5 neutral SVGs (card, bank, wallet, cash, voucher) auto-mapped to major gateways plus a title-keyword fallback (bancontact, iDEAL, PayPal, Apple/Google Pay, Klarna…). Override per code via the admin: full URL, module-relative path, or built-in slug.
- Smart features merchants actually need — guest-email detection with login suggestion, address autocomplete (Google Places or HERE Geocoding), saved customer addresses, editable quantities in the sidebar, coupon code, newsletter opt-in, order comments, gift messages, checkout agreements, virtual/downloadable cart support, configurable accent color, step indicator.
- Configurable success page — replaces the native Magento order confirmation with a hero, order recap, copy-to-clipboard next-order coupon, social share row, and an upsell grid built from the just-bought items' related products — each section individually toggleable.
- Theme-aware build — single LESS source shimmed into Luma (
_module.less, auto-imported by_extend.less), Breeze (breeze/_checkout.less, critical-CSS wrapped) and Hyvä (tailwind/module.css, scanned by Hyvä's Tailwind build). The Alpine.js component runs natively on Hyvä and Breeze, and is bundled with Alpine 3.14 for Luma.
Compatibility
- Magento 2.4.x / Mage-OS equivalent
- PHP 8.1, 8.2, 8.3
- Requires
wimakeit/module-core^3.0.9 - Native checkout, Swissup Breeze and Hyvä supported (Hyvä via the companion
wimakeit/module-checkout-hyva≥ 1.1.0) - CSP-compliant (inline scripts rendered via SecureHtmlRenderer)
- Translations shipped: en_US, fr_FR, nl_NL
Install this module via Composer. Make sure your auth.json is configured with your Wimakeit credentials.
$ composer require wimakeit/module-checkout:^1.7.18
$ 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.9. Composer pulls it automatically from the Wimakeit registry as long as the registry is declared in your project's composer.json.
Soft dependencies on magento/module-gift-message, magento/module-newsletter, magento/module-checkout-agreements, magento/module-catalog and magento/module-sales are declared but require no manual action on a standard Magento install (these modules are always present).
Hyvä compatibility
On Hyvä stores, install the companion module wimakeit/module-checkout-hyva ≥ 1.1.0 in addition to this one. It ships the compiled stylesheets, the <link rel="stylesheet"> injection and the hyva_config_generate_before observer that registers the Tailwind sources of this module. After enabling both modules:
bin/magento hyva:config:generate
cd app/design/frontend/<Vendor>/<theme>/web/tailwind && npm run build-prod
Configuration
All settings live under Stores > Configuration > WiMakeIT > Checkout. Defaults are production-safe — enable the module, deploy, then fine-tune.
General
| Setting | Default |
|---|---|
| Enable Custom Checkout | Yes |
| Layout Mode | One-page |
| Enable Debug Logging | No — leave off in production |
Features
| Setting | Default |
|---|---|
| Show Coupon Code | Yes |
| Show Newsletter Opt-in | Yes |
| Show Order Comments | No |
| Show Gift Message | No |
| Guest Email Detection | Yes |
| Editable Quantities in Sidebar | Yes |
Address
| Setting | Default |
|---|---|
| Default Country | BE (Belgium) |
| Address Autocomplete | No |
| Autocomplete Provider | Google Places |
| API Key | (blank — encrypted when set) |
Set the API Key on the website / store scope, not the default scope, when you operate multiple stores with different keys.
Success Page
| Setting | Default |
|---|---|
| Enable Custom Success Page | Yes |
| Thank-you Message | (blank) |
| Next-order Coupon Code | (blank — section hidden when empty) |
| Coupon Description | (blank) |
| Show Social Share Buttons | Yes |
| Show Upsell Products | Yes |
| Upsell Products Limit | 4 |
Payment
| Setting | Default | |
|---|---|---|
| Show Payment Method Icons | Yes | |
| Custom Icon Overrides | *(blank — one `prefix\ | value` per line)* |
| Off-site Gateway Redirect URLs | (blank — built-in defaults already cover MultiSafepay, Mollie, PayNL, Buckaroo) |
Custom Icon Overrides values can be:
- a full URL (
https://…) - a module-relative path (
images/payment/my-logo.svg) - a built-in slug (
_card,_bank,_wallet,_cash,_voucher)
Off-site Gateway Redirect URLs entries can be absolute or start with / (prepended with the store base URL).
Design
| Setting | Default |
|---|---|
| Accent Color | #ef6f14 |
| Show Step Indicator | Yes |
ACL
The module declares a Wimakeit_Checkout::config ACL resource, granted to the Administrator role only. Assign it to your team roles as needed.
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
- v1.7.18
- License
- Annual Subscription
- Support
- 12 months
- Last updated
- Jun 5, 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ä
- Compatible
- Package
-
wimakeit/module-checkout
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-checkout:^1.7.14, 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-checkout:^1.7.14. 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.
[1.7.14] - 2026-05-26
Fix
- MultiSafepay redirect handshake fixed (orders no longer bounce back to /checkout/cart/). The redirect token sent to MultiSafepay is now generated as a 32-character hex string instead of a 36-character UUIDv4 — the
multisafepay_redirect_token.tokencolumn isVARCHAR(32), so MySQL was silently truncating the UUID and the redirect controller's later lookup never found the row, throwing "Redirect token does not exist" after every Place Order on stores runningmultisafepay/magento2 4.2+. - Removed the diagnostic logging added in 1.7.12/1.7.13 that flooded
system.logwhile we tracked the issue down.
[1.7.11] - 2026-05-26
Fix
- MultiSafepay 4.2 redirect_token now persists end-to-end. Magento's REST
ServiceInputProcessorwas stripping theredirect_tokenfromadditional_databefore MultiSafepay's observer could read it (signature mismatch onPaymentInterface::setAdditionalData). A newCaptureMultisafepayRedirectTokenPluginonMagento\Quote\Model\Quote\Payment::importDatacaptures the value from the raw input and writes it toadditional_informationso MultiSafepay's place-order observer can persist the redirect_token row.
[1.7.10] - 2026-05-26
Fix
- MultiSafepay checkout restored after
multisafepay/magento2 4.2upgrade. The 4.2 metapackage requires token-based redirect handling (PLGMAG2V2-888) — the gateway redirect controller refuses session-based lookups and demands a?token=...query string. The Hyvä checkout JS now generates a per-order token, sends it aspaymentMethod.additional_data.redirect_token, and appends it to the redirect URL for allmultisafepay*gateway codes. Other off-site gateways (Mollie, PayNL, Buckaroo) are untouched. WMI-130.
[1.7.9] - 2026-05-26
Fix
- Post-order redirect no longer leaves the customer on
/checkout/cart/with the page looking like they've been logged out. Theprivate-content-loadedevent dispatched after a successful payment now carries a{detail: {data: {}}}payload, fixing aCannot read properties of nullthrown by Hyvä's messages section listener.
[1.7.8] - 2026-05-20
Fix
- Order summary now shows whole quantities as
1instead of the raw1.0000decimal returned by Magento's quote API. The sidebar item count and the in-summary+ / −quantity buttons also stop misbehaving (the previous code was string-concatenating qty values instead of summing them numerically). - One-page checkout no longer leaves shoppers stuck on "Please complete the shipping step first to see payment methods" after they pick a shipping method. The first user click now reliably loads the payment methods (the previous one-page watcher silently swallowed the very first selection when no shipping method was preselected).
- Added missing French and Dutch translations for "Back to cart" and "Loading payment methods…" — both strings now render in the active store language instead of leaking English on non-English storefronts.
[1.7.7] - 2026-05-19
Fix
- Logged-in customers whose Magento session became corrupted were re-exposed to the storefront as guests, so the checkout silently tried a guest place-order. On stores with downloadable products (where guest checkout is disabled by default), the place-order then aborted with "guest checkout not available" even though the shopper was logged in. The session fallback now restores the logged-in flag and customer profile from the quote's stored customer link. WMI-130.
[1.7.6] - 2026-05-19
Fix
- Downloadable-only carts (a cart of only digital / module products) no longer freeze on the shipping step waiting for a method that will never appear. The checkout now treats a cart of only virtual/downloadable items as virtual regardless of Magento's stored
is_virtualflag and goes straight to billing + payment. WMI-130. - Order summary thumbnails now fall back through
thumbnail → small_image → imageso marketplace products that only carry a base image still render their picture in the cart and on the success page. WMI-130.
[1.7.5] - 2026-05-19
Fix
- Order summary and totals no longer render every amount as the literal "0,00 €" on locales where Magento's
Currency::getOutputFormat()returns a formatted zero instead of the%s €template. The checkout config is now repaired after serialization (re-injecting%sinto the pattern) andformatPrice()falls back to%s €if a broken pattern still leaks through. WMI-130.
[1.7.4] - 2026-05-18
Fix
- Virtual and downloadable-only carts no longer trigger the full-page loader while the customer is still typing their address. The billing / payment-methods / totals preload now runs against a localized
paymentMethodsLoadingflag and surfaces as a small inline "Loading payment methods…" indicator inside the payment section. The full-page loader is preserved for genuine blocking operations (Place Order, Set Shipping Info, cart item updates). Fixes WMI-124.
[1.7.3] - 2026-05-10
Feature
- New Enable Debug Logging toggle (Stores → Configuration → Wimakeit → Checkout → General), off by default. Internal traces in success-page hydration, checkout data provider, config provider and the payment-information plugins (logged-in + guest) are gated behind it;
error/criticalalways log.
Perf
- Production stores stop emitting hot-path traces from the checkout pipeline into
var/log/system.logonce the toggle is left off.
Deps
- Requires
wimakeit/module-core3.0.9+ for the shared debug logger virtual type.
[1.7.2] - 2026-05-08
Admin
- Admin menu group standardized — module appears under a top-level Wimakeit_Checkout entry with a Settings child that opens directly on the configuration section.
- New
Wimakeit_Checkout::configACL resource so the Settings entry can be granted independently of code edits.
Deps
- Certified PHP 8.1 → 8.3 support. Composer
phpconstraint tightened to>=8.1 <8.4.
[1.7.1] - 2026-04-29
Admin
- Internal release pipeline standardized (validate, tag, deploy, release stages). No functional change for merchants.
[1.7.0] - 2026-04-30
Feature
- New payment method icons — 5 neutral SVG categories (card, bank, wallet, cash, voucher) auto-mapped to the major gateways (MultiSafepay, Mollie, PayNL, Buckaroo, Adyen, Stripe, native PayPal/Braintree) and generic codes (cashondelivery, checkmo, banktransfer, sepa, klarna, afterpay…), with a title-keyword fallback (bancontact, iDEAL, PayPal, Apple/Google Pay, Klarna, sofort, giropay, payconiq, FR/NL translations).
- Expanded post-order redirect defaults to cover
multisafepay,mollie_methods,mollie,paynl_payment,buckaroo_magento2. Previously only MultiSafepay was handled server-side, so Mollie iDEAL/Bancontact customers were dropped on the native success page before the gateway could redirect them.
Admin
- New Show Payment Method Icons toggle (default on) under Stores > Configuration > WiMakeIT > Checkout > Payment.
- New Custom Icon Overrides field (multiline
prefix|valuetextarea) — value can be a full URL, a module-relative path, or a built-in slug. - New Off-site Gateway Redirect URLs field (multiline
prefix|urltextarea) — URLs starting with/are prefixed with the store base URL, letting integrators add gateways without touching code.
[1.6.1] - 2026-04-25
Fix
- Off-site payment gateways (MultiSafepay and similar) no longer drop customers on the native success page right after placing the order. The Alpine place-order handler now resolves the gateway redirect URL from the server-side map instead of always navigating to
successUrl.
[1.6.0] - 2026-04-20
Admin
- Module is now laser-focused on Luma + Breeze. Hyvä-specific surface area (Tailwind module,
hyva_config_generate_beforeobserver,etc/frontend/events.xml, pre-compiled CSS) moved to the companionwimakeit/module-checkout-hyva≥ 1.1.0. - Removed pre-compiled
checkout.css/success.cssand the non-partial LESS entries that existed only for the Hyvä<css src=>publisher.
Deps
- Hyvä sites must now install
wimakeit/module-checkout-hyva≥ 1.1.0 (ships its own compiled stylesheets and a proper<link rel="stylesheet">injection).
[1.5.2] - 2026-04-15
Admin
- Dropped
<head><css src="…"/>fromcheckout_index_index.xmlandcheckout_onepage_success.xml— Hyvä's page-config renderer was stripping therel="stylesheet"from it, leaving the browser with a bare<link>it never loaded. Luma and Breeze still pick up the styles via their existing_extend.less/ critical-CSS pipelines. - Ship compiled
checkout.cssandsuccess.cssalongside the LESS partials so the Hyvä companion module can reference them.
[1.5.1] - 2026-04-12
Fix
- Restored the runtime LESS entry points (
checkout.less,success.less) after the 1.5.0 cleanup so themes that don't bundle our partials still get styled.
Feature
- Native Hyvä Tailwind registration via the
hyva_config_generate_beforeobserver — themes that opt-in to the proper pipeline no longer double-load the styles.
[1.5.0] - 2026-04-10
Admin
- Frontend assets restructured into a single LESS source under
view/frontend/web/css/source/: _variables.less— design tokens (text, font-size, radius, breakpoints, transitions, dark-mode palette)._mixins.less— spinner, input-base, selectable-card, button-base, visually-hidden._checkout.less,_success.less— fully nested page partials._module.less— Luma bundle entry (auto-included via_extend.less).- New Breeze critical-CSS entry at
view/frontend/web/css/breeze/_checkout.lessper breezefront convention. - New Hyvä Tailwind source at
view/frontend/tailwind/module.cssso Hyvä's Tailwind build keeps the.wm-co-*classes. - New Breeze JS widget shim registered in
breeze_checkout_index_index.xml— Breeze can defer / bundle the Alpine component instead of treating the<script src>as a standalone asset.
[1.4.4] - 2026-04-08
Fix
- Custom success page no longer renders a duplicate native "Thank you for your purchase!" heading nor the "Print" link above our hero.
- Product thumbnails on the success page no longer produce a broken
placeholder/.jpgURL when the product has nosmall_image. Magento's normal placeholder URL is now returned. - Social share text now reads "I just placed an order at WiMakeIT" instead of the raw store-view code (was "FR").
[1.4.3] - 2026-04-05
Admin
- "Place Order" button now uses the configured Accent Color instead of the neutral text color, so the primary CTA matches the brand. Hover darkens via
filter: brightness(.92).
[1.4.2] - 2026-04-03
Fix
- Minicart no longer shows the items from the order just placed. After a successful
payment-informationPOST, thecart,checkout-data,cart-data,last-ordered-itemsandmessageskeys are wiped frommage-cache-storage, section cookies expired, and the Hyväreload-customer-section-data/private-content-loadedevents dispatched.
[1.4.1] - 2026-04-02
Fix
placeOrderno longer fails silently when a shipping/billing field is invalid. The validator now sets a global error (with the offending field's message) and scrolls/focuses the first invalid input. Previously the button stayed enabled while the click did nothing.
[1.4.0] - 2026-04-01
Feature
- New custom order success page with five individually toggleable sections:
- Hero with personalised greeting, order number and confirmation email line.
- Order summary card listing each item (thumbnail, qty, line total) plus the grand total.
- Next-order coupon card with a copy-to-clipboard button (Alpine, no extra JS).
- Social share row (Facebook, X, LinkedIn, WhatsApp, email) with brand-coloured hover.
- Upsells grid built from related products of the just-bought items, deduped against the order itself and capped to a configurable limit (default 4).
- New
SuccessDataViewModel that pulls the last real order from the checkout session, formats prices viaPricing\Helper\Data, and degrades gracefully when the order is no longer available (empty-state with "continue shopping" CTA).
Admin
- Module now sequences
Magento_CatalogandMagento_Salesfor the upsell + order data needed by the success page.
[1.3.0] - 2026-03-28
Feature
- New extension attribute
wm_newsletter_emailso the newsletter subscription uses the email actually captured in the checkout form rather thanbilling.email. Avoids subscribing the wrong address after the user changes the email in a later step. Falls back to billing/quote email if missing or invalid. - New
getDeliveryEstimate(method)helper exposing per-method delivery ETAs when the carrier provides them (extension_attributes.delivery_date,eta,lead_time,estimated_delivery). Displayed under the carrier title.
Perf
- Shipping form no longer issues redundant
POST /billing-addresscalls — the request is now skipped when neither the address nor the cart changed since the last successful load.
Admin
- Bundled
phpstan.neon(level 8) andphpcs.xml(PSR-12 + Magento2) so the module ships with a clean static-analysis baseline.
[1.2.0] - 2026-03-25
Feature
- Virtual / downloadable cart support — when
$quote->isVirtual()is true, the shipping leg is skipped, the address form becomes the billing address, and payment methods are loaded viaPOST /billing-address+GET /payment-methods+GET /totals. - Step indicator shows "Billing" instead of "Shipping" for virtual carts.
Admin
- Removed the "billing address same as shipping" toggle and the secondary billing form for virtual carts — the displayed address IS the billing address.
[1.1.0] - 2026-03-20
Feature
- Order comments now persisted on the quote and copied to
sales_order.customer_note(plugin onPaymentInformationManagementInterface+ guest variant). - Newsletter opt-in actually subscribes the email after a successful order, for both customer and guest checkout.
- Gift message UI (sender / recipient / message) wired to the native
Magento_GiftMessageREST endpoint, called before order placement. - Real address autocomplete implementation for both Google Places and HERE Geocoding — country-restricted suggestions under the street field, with a session token to keep Google billing on the autocomplete-only tier.
- Bundled Alpine.js 3.14.1 in
view/frontend/web/js/vendor/alpine.min.jsso Luma works out of the box (Hyvä and Breeze keep using their native Alpine). - Telephone validation (E.164-ish: 7–20 digits after stripping separators).
Security
- Email validation now uses the WHATWG HTML5 regex with a 254-char cap.
isEmailAvailablecalls are debounced and rate-limited (≥ 1.5s between requests) to slow down enumeration probes.
Admin
- Declared
extension_attributesonQuote\Api\Data\PaymentInterface:wm_customer_note,wm_subscribe_newsletter. - Removed the
0000000000telephone fallback — the field is now properly required.
Deps
- Soft dependency on
magento/module-gift-messageandmagento/module-newsletterdeclared incomposer.jsonandmodule.xml.
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 CheckoutNeed help?
Our team is available to assist with integration.