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.
Requirements
| Component | Requirement | Notes |
|---|---|---|
| Magento | 2.4.x | Open Source and Commerce editions. Constraint: magento/framework ^103.0 |
| PHP | 8.1 – 8.5 | Whichever version your Magento release requires. Constraint: ~8.1 || ~8.2 || ~8.3 || ~8.4 || ~8.5 |
| PointOfCode_Core | 1.2 or newer | Shared PointOfCode module (admin menu, licence validation). Included in the package; Composer pulls it in automatically as pointofcode/module-core ^1.2 |
| Theme | Luma, Blank or based on them | Any theme that uses Magento's standard checkout. See Compatibility |
| Magento Cron | Must be running | Used to revalidate the license hourly. Run as www-data, not root |
| Outbound HTTPS | To store.pointofcode.com | For license activation only. Never contacted during a customer's checkout |
| Composer | 2.x | Only for Composer installation |
Installation
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/
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.
Verify Installation
Check the module is active:
sudo -u www-data php bin/magento module:status PointOfCode_OnePageCheckout
# Expected output: Module is enabled
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.
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.
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.
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.
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.
Turning It On
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.
Enable
Under General, set Enable One Page Checkout to Yes and click Save Config.
Flush the Cache
sudo -u www-data php bin/magento cache:flush
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.
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.
Behaviour
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.
| Column | What it does |
|---|---|
| Address Field | The address attribute. Required fields are marked (required). Address attributes added by other extensions appear here too. |
| Show | Set to No to hide an optional field. Required fields cannot be hidden. |
| Label | Custom label. Leave empty to keep Magento's translated default label (shown greyed as a hint). |
| Placeholder | Hint text shown inside the empty field. |
| Width | Full, 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. |
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.
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.
Save and Flush
Click Save Config, then flush the cache.
Order Summary
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.
| Setting | Default | Used for |
|---|---|---|
| Primary Colour | #15803d | Links, selected options, highlights, the trust badge and security note |
| Button Colour | #15803d | Place Order and other action buttons |
| Button Text Colour | #ffffff | Text on buttons. Use a colour that stays readable on the button colour |
| Page Background | #f4f8f5 | Background behind the checkout cards |
| Card Background | #ffffff | Background of the sections and order summary |
| Text Colour | #16202b | Headings and body text |
| Border Colour | #e1e6eb | Card and input borders |
| Corner Radius (px) | 16 | Rounding of cards (0–64). Inputs and buttons use the same value, capped at 10px |
| Font | System default | System default (matches the shopper's device), Sans serif, Serif or Monospace. No external fonts are loaded |
| Show Trust Bar | No | A secure checkout badge beside the page title |
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.
| Field | Default | Where it appears |
|---|---|---|
| Page Title | Checkout | Top of the checkout page |
| Trust Bar - Main | Secure Checkout | Trust bar badge (when enabled in Design) |
| Trust Bar - Secondary | Safe & secure payment | Second line of the trust bar |
| Security Note | Encrypted and secured transaction | Note beside the Place Order button |
| Security Note - Heading | Your information is encrypted and secure | Heading of the security note. Leave empty to hide it |
| Payment Placeholder | Choose a delivery method and your payment options will appear here. | Payment section, until a shipping method is chosen |
| Place Order Hint | Choose a delivery method above to complete your order. | Beside Place Order while it is not yet available |
| Mobile Summary - Show | Show order summary | Mobile summary toggle, collapsed |
| Mobile Summary - Hide | Hide order summary | Mobile summary toggle, expanded |
How the Checkout Works
What your customers experience on the one page checkout.
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.
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.
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.
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
i18nor 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.
| Resource | Allows |
|---|---|
| One Page Checkout | See PointOfCode → One Page Checkout in the admin menu |
| Edit One Page Checkout Settings | Open and change the configuration section, including the license key |
Compatibility
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.jsonin the module folder) - The list of other checkout, payment and shipping extensions installed
- Any related entry from
var/log/pointofcode.log