Complete User Documentation

One Page Checkout
for Magento 2

Magento's own checkout on a single page: address, delivery and payment together, with the order summary beside them. Fully configurable from the admin, and RTL-ready.

Magento 2.4.x PHP 8.1 – 8.5 by PointOfCode

What is One Page Checkout?

One Page Checkout puts the shipping address, delivery method and payment on one page, with the order summary beside them. It rearranges Magento's native checkout rather than replacing it: the same components, validation, payment methods and order placement run underneath, so payment, shipping and delivery-date extensions built for the standard checkout keep working.

Everything on One Page
Address, delivery and payment in one view. The address and delivery method save automatically in the background as the customer types, and totals refresh without a Next button.
Built on the Native Checkout
Every native component, validator and API call is kept. Any payment method that works on the standard checkout appears here automatically.
Configurable Layout
Two-column or single-column layout, summary on either side, sticky summary on desktop, collapsible summary on mobile, and a simplified header.
Address Fields Table
Drag and drop to reorder address fields, relabel them, add placeholders, set widths (full, half, third) or hide optional fields. Applies to shipping and billing forms.
Design Without Compiling
Colours, corner radius, font and a trust bar, all from the admin. Changes appear after a cache flush, with no theme compilation or LESS changes.
RTL & Multilingual
Mirrors automatically on right-to-left store views such as Arabic. Every customer-facing text is editable per store view, and an Arabic translation is included.
Safe by Design
The module is installed switched off. If it ever hits an unexpected error, or a store domain is not licensed, customers get Magento's standard checkout. An order is never blocked by the module.

Requirements

ComponentRequirementNotes
Magento2.4.xOpen Source and Commerce editions. Constraint: magento/framework ^103.0
PHP8.1 – 8.5Whichever version your Magento release requires. Constraint: ~8.1 || ~8.2 || ~8.3 || ~8.4 || ~8.5
PointOfCode_Core1.2 or newerShared PointOfCode module (admin menu, licence validation). Included in the package; Composer pulls it in automatically as pointofcode/module-core ^1.2
ThemeLuma, Blank or based on themAny theme that uses Magento's standard checkout. See Compatibility
Magento CronMust be runningUsed to revalidate the license hourly. Run as www-data, not root
Outbound HTTPSTo store.pointofcode.comFor license activation only. Never contacted during a customer's checkout
Composer2.xOnly for Composer installation
Unsupported Themes
Themes that replace the checkout with their own implementation (Hyvä Checkout, Breeze and similar) are not supported, because there is no standard checkout left to rearrange.

Installation

1

Upload the Module

Extract the package zip. It contains two folders, Core and OnePageCheckout. Upload both to app/code/PointOfCode/ on your server using SFTP or SCP, so you have app/code/PointOfCode/Core/ and app/code/PointOfCode/OnePageCheckout/. If Core is already installed from another PointOfCode extension, keep whichever copy is newer.

Installing with Composer instead? composer require pointofcode/module-one-page-checkout installs both modules; then continue with step 2.

scp -r Core/ OnePageCheckout/ user@server:/var/www/magento/app/code/PointOfCode/
2

Enable the Module

SSH into your server and run these commands as the web user:

sudo -u www-data php bin/magento module:enable PointOfCode_Core PointOfCode_OnePageCheckout
sudo -u www-data php bin/magento setup:upgrade
sudo -u www-data php bin/magento setup:di:compile
sudo -u www-data php bin/magento setup:static-content:deploy -f
sudo -u www-data php bin/magento cache:flush
sudo systemctl reload php8.2-fpm  # use your PHP-FPM service name

Production mode: setup:upgrade empties pub/static, so always run setup:static-content:deploy in the same window — otherwise the storefront and admin load without their scripts and styles. Reloading PHP-FPM makes it drop the previously compiled code; without it the module can appear not to work. Both apply to every future update too.

3

Verify Installation

Check the module is active:

sudo -u www-data php bin/magento module:status PointOfCode_OnePageCheckout
# Expected output: Module is enabled
4

Activate and Turn It On

Enter your license key (next section), then enable the one page checkout per store view as described in Turning It On.

Nothing Changes Yet
The module is installed switched off, so installing it never changes a live checkout. Customers keep seeing Magento's standard checkout until you enable it.

License Activation

One Page Checkout uses domain-based license validation. Every store view's domain is activated when you save the key, and revalidated hourly in the background by cron — never while a customer is checking out.

1

Go to Configuration

Navigate to Stores → Configuration → PointOfCode → One Page Checkout → License (Default Config scope), or use PointOfCode → One Page Checkout in the admin menu.

2

Enter License Key

Paste your license key in the format POC-XXXX-XXXX-XXXX-XXXX. This key was emailed to you after purchase from store.pointofcode.com.

3

Save and Validate

Click Save Config. A message confirms each store domain that was activated. If a domain fails while others pass, you see a warning naming it.

Settings Require a Valid Key
None of the One Page Checkout settings can be saved until a valid license key has been entered. Enter the key first.
Unlicensed Means Native, Not Broken
A store domain without a valid license shows Magento's standard checkout, so an expired or missing license never blocks an order. When the module is enabled on a store view whose domain is not licensed, an admin notice names that domain. If our server is unreachable, the module keeps working for 30 days.
Domain Detection
Domains are read from each store view's base URL; no manual domain entry is required. One license covers one production domain plus its development and staging copies. If you move the store to a new domain you can change it yourself from My Account › My Licenses on store.pointofcode.com. The number of self-service changes is limited (2 per year by default); contact support if you need more.

Turning It On

1

Choose the Scope

In Stores → Configuration → PointOfCode → One Page Checkout, pick the store view from the scope switcher, or keep Default Config to enable it everywhere.

2

Enable

Under General, set Enable One Page Checkout to Yes and click Save Config.

3

Flush the Cache

sudo -u www-data php bin/magento cache:flush
Test Before Going Live
Before enabling it on your live store, place a test order on a staging copy with every payment and shipping method you offer.

With the module set to No, the checkout is exactly Magento's native checkout. The module adds no markup, stylesheet or configuration to the page.


General

Every setting in this guide is under Stores → Configuration → PointOfCode → One Page Checkout and can be set per store view (except the license key). Every field also shows its default and a Use system value checkbox to restore it.

Enable One Page Checkout
Default: No
Replaces the standard checkout with the one page checkout on this store view. All other settings are shown only when this is Yes.
Fall Back to Standard Checkout on Error
Default: Yes
If the one page checkout cannot be built for a visit, that visit gets Magento's standard checkout and the error is logged to var/log/pointofcode.log. Set to No only while troubleshooting.

Layout

How the page is arranged: columns, the order summary, and the store header and footer.

Layout
Default: Two Column
Two Column shows the order summary beside the checkout on desktop. Single Column stacks everything in one column. On mobile both are a single column.
Order Summary Side
Default: End
End is right in LTR, left in RTL. Start is left in LTR, right in RTL. Mirrored automatically on right-to-left store views. Applies to the Two Column layout.
Sticky Order Summary
Default: Yes
Keeps the order summary in view while scrolling on desktop.
Collapsible Order Summary on Mobile
Default: Yes
Shows the order summary behind a "Show order summary" toggle on small screens, so the form comes first.
Show Store Header and Footer
Default: Yes
No hides the store header and footer on the checkout page, as the standard checkout does.
Simplify Header
Default: Yes
Hides the menu, search, mini cart and account links on the checkout page and keeps the logo. Shown only when Show Store Header and Footer is Yes.
Show "Ship To" Summary
Default: No
Repeats the shipping address and method beside the order summary.

Behaviour

Auto-Save Delay (ms)
Default: 600
Delay after the customer stops editing the address or shipping method before it is saved and totals are refreshed. Range: 0–5000. Lower values feel more immediate; higher values send fewer requests while the customer is still typing. Saves never overlap, even at 0.

Address Fields

A drag-and-drop table of the address form. Changes apply to the shipping address form and every billing address form. With nothing saved, the table is prefilled with the fields your checkout shows, in checkout order.

ColumnWhat it does
Address FieldThe address attribute. Required fields are marked (required). Address attributes added by other extensions appear here too.
ShowSet to No to hide an optional field. Required fields cannot be hidden.
LabelCustom label. Leave empty to keep Magento's translated default label (shown greyed as a hint).
PlaceholderHint text shown inside the empty field.
WidthFull, Half or Third of the row. Defaults: First/Last Name half; State/Province, City and Zip third; the rest full. On tablets and phones all fields are full width.
1

Reorder

Drag a row by its handle (at the start of the row) to move the field. The order is saved when you click Save Config.

2

Customise

Change label, placeholder, width or visibility on any row. Use Add Field to add a row for a field not yet in the table.

3

Save and Flush

Click Save Config, then flush the cache.

Required Fields
Which fields are required (for example Company, Telephone or Middle Name) is set by Magento in Stores → Configuration → Customers → Customer Configuration → Name and Address Options. The State/Province row applies to both the region list and the region text box used for countries without a region list.

Order Summary

Coupon Form Position
Default: Order summary
Order summary, above the totals places the discount code form where the customer sees its effect. Payment section (Magento default) keeps it where the standard checkout puts it. The coupon component is moved, not rewritten, so CAPTCHA and extensions that modify it keep working.

Design

Match the checkout to your brand. Colours use a colour picker or a #rrggbb value. Changes appear on the storefront after the cache is flushed; no theme compilation or static content deploy is needed.

SettingDefaultUsed for
Primary Colour#15803dLinks, selected options, highlights, the trust badge and security note
Button Colour#15803dPlace Order and other action buttons
Button Text Colour#ffffffText on buttons. Use a colour that stays readable on the button colour
Page Background#f4f8f5Background behind the checkout cards
Card Background#ffffffBackground of the sections and order summary
Text Colour#16202bHeadings and body text
Border Colour#e1e6ebCard and input borders
Corner Radius (px)16Rounding of cards (0–64). Inputs and buttons use the same value, capped at 10px
FontSystem defaultSystem default (matches the shopper's device), Sans serif, Serif or Monospace. No external fonts are loaded
Show Trust BarNoA secure checkout badge beside the page title
Fixed Colours
Error, success and muted text colours are kept fixed so messages stay recognisable and accessible whatever brand colours you choose.

Texts

Every customer-facing phrase the module adds, prefilled with its default. Defaults are translated automatically for each store view's language. To use your own wording on one store view, switch to that store view and untick the checkbox beside the field. Texts are plain text (HTML is removed), up to 255 characters.

FieldDefaultWhere it appears
Page TitleCheckoutTop of the checkout page
Trust Bar - MainSecure CheckoutTrust bar badge (when enabled in Design)
Trust Bar - SecondarySafe & secure paymentSecond line of the trust bar
Security NoteEncrypted and secured transactionNote beside the Place Order button
Security Note - HeadingYour information is encrypted and secureHeading of the security note. Leave empty to hide it
Payment PlaceholderChoose a delivery method and your payment options will appear here.Payment section, until a shipping method is chosen
Place Order HintChoose a delivery method above to complete your order.Beside Place Order while it is not yet available
Mobile Summary - ShowShow order summaryMobile summary toggle, collapsed
Mobile Summary - HideHide order summaryMobile summary toggle, expanded
Custom Text Is Not Translated
Only the untouched defaults are translated per language. If you type your own wording at Default Config, every store view shows it as typed. On a multilingual store, set custom wording on each store view instead.

How the Checkout Works

What your customers experience on the one page checkout.

1

Shipping Address

Guests enter their email and address; logged-in customers pick a saved address or add a new one. As soon as the address is complete, available delivery methods load.

2

Delivery

The customer picks a delivery method. The address and method save automatically in the background (after the Auto-Save Delay), and the order totals update, with no Next button and no full-page loader.

3

Payment

Payment methods appear once the delivery method is saved. Until then the section shows the Payment Placeholder text. The billing address, coupon form (if placed here) and Place Order button work exactly as in Magento's checkout.

4

Place Order

Right before the order is placed, the shipping information is saved once more and the shipping section's validation runs again, so nothing entered at the last moment is lost and a missing required value is highlighted instead of failing.

Virtual and downloadable products are supported: when the cart needs no shipping, the address and delivery sections are skipped and the page goes straight to payment.


Right-to-Left & Translations

Nothing to configure. On a store view whose locale is right-to-left (for example Arabic), the layout mirrors automatically, including the column order.

  • Included translations: English (en_US) and Arabic (ar_SA) for all of the module's own texts, in the storefront and admin.
  • Magento's own checkout labels such as First Name, Email Address and Place Order are translated to Arabic by PointOfCode Core, included in the package. Shipping and payment method names are store settings: set them per store view under Stores → Configuration → Sales → Delivery Methods / Payment Methods.
  • Other languages: add a CSV to Magento's standard translation mechanism (theme i18n or a language pack), or set your wording per store view in Texts.

Admin Permissions

The module adds two ACL resources under PointOfCode in System → Permissions → User Roles → Role Resources.

ResourceAllows
One Page CheckoutSee PointOfCode → One Page Checkout in the admin menu
Edit One Page Checkout SettingsOpen and change the configuration section, including the license key

Compatibility

Payment methods
The payment list is Magento's own, so any payment method that works on the standard checkout appears here.
Delivery-date, order-comment and other shipping-step extensions
The latest shipping information, including anything such an extension adds, is saved again right before the order is placed. The extension's own validation still blocks the order when a required value is missing.
Custom address attributes
Address attributes added by other extensions are shown in the address form and can be reordered in the Address Fields table.
Coupon form
The component is moved, not rewritten, so its CAPTCHA and any extension that modifies it keep working.
Luma, Blank and themes based on them
Tested on Luma and Blank, in LTR and RTL, desktop and mobile.
Hyvä Checkout, Breeze and other checkout replacements
Not supported: these replace Magento's standard checkout, so there is nothing for the module to rearrange.
An Extension Misbehaves?
Set Enable One Page Checkout to No for that store view to return to the native checkout immediately, then contact support with the extension's name.

Troubleshooting

The checkout looks unchanged after enabling.

Flush the cache: sudo -u www-data php bin/magento cache:flush. In production mode, also run setup:static-content:deploy -f and reload PHP-FPM.

The checkout shows Magento's standard layout even though the module is enabled.

First check the admin notifications: if the store's domain is not licensed, a notice names it. Save the license key again to revalidate, and check that cron runs and the server can reach store.pointofcode.com. Otherwise the fallback setting caught an error; it is recorded in var/log/pointofcode.log. Send us that entry.

I cannot save the settings.

The settings require a valid license key. Enter it under License at Default Config scope and save.

A colour or text change does not show.

These settings are cached with the page. Flush the cache. Also check you are looking at the store view you edited, and that a store-view value is not overriding your Default Config value.

The admin or storefront has no styles after installing or updating.

setup:upgrade emptied pub/static and no static content deploy followed. Run sudo -u www-data php bin/magento setup:static-content:deploy -f, then cache:flush.

Changes or an update have no effect.

PHP-FPM is still serving the previously compiled code. Run setup:di:compile, then reload PHP-FPM (for example sudo systemctl reload php8.2-fpm).

Labels such as "First Name" are still in English on my Arabic store.

Make sure the PointOfCode Core folder from this package is installed (it adds Arabic for Magento's checkout labels), then run setup:static-content:deploy ar_SA -f and cache:flush. Shipping and payment method names are store settings: translate them per store view under Stores → Configuration → Sales.


Uninstalling

Installed with Composer:

sudo -u www-data php bin/magento module:uninstall PointOfCode_OnePageCheckout
sudo -u www-data php bin/magento cache:flush

This removes the module's code, its saved settings and its license record. The module has no database tables of its own.

Installed manually in app/code: Magento runs uninstall scripts only for Composer packages, so remove the module and then its settings yourself:

sudo -u www-data php bin/magento module:disable PointOfCode_OnePageCheckout
rm -rf app/code/PointOfCode/OnePageCheckout/
sudo -u www-data php bin/magento setup:upgrade
sudo -u www-data php bin/magento cache:flush
-- optional, in MySQL (add your table prefix if you use one)
DELETE FROM core_config_data WHERE path LIKE 'poc_onepagecheckout/%';
DELETE FROM poc_core_license WHERE product_sku = 'POC-OPC-M2';

Leftover settings are harmless if you skip the SQL. Leave PointOfCode_Core installed if you use any other PointOfCode extension.


Frequently Asked Questions

Does it replace Magento's checkout?

No. It rearranges Magento's native checkout onto one page. The same components, validation, payment methods and order placement run underneath, which is why extensions built for the standard checkout keep working.

Can I enable it on some store views only?

Yes. Every setting, including Enable One Page Checkout, can be set per store view. Store views where it is off show Magento's standard checkout.

What happens if my license expires?

Customers get Magento's standard checkout on that domain. Orders are never blocked. Renew the license and save the key again to restore the one page checkout.

Does the license check slow down checkout?

No. The license is checked only when you save the key and hourly by cron. A customer's checkout never contacts our server.

Can I use one license on several stores?

One license covers one production domain plus its development and staging copies. For stores on different domains, purchase a license for each. Contact support at store.pointofcode.com for multi-domain licenses.

Can I add custom CSS or HTML to the checkout?

Not from the module's settings: every design value is validated so nothing unsafe can reach the checkout page. For deeper styling, override the checkout styles in your theme as you would for the standard checkout.

Does it collect or send customer data?

No. The only data sent anywhere is your license key and store domains, to store.pointofcode.com over HTTPS. Error logs contain the error only, never quote or customer data.


Support

Email support@pointofcode.com or visit store.pointofcode.com. When reporting a problem, include:

  • Your Magento and PHP versions, and your theme
  • The module version (composer.json in the module folder)
  • The list of other checkout, payment and shipping extensions installed
  • Any related entry from var/log/pointofcode.log