If you are looking for the fix for opencart version 1+, or you want to know the details I didn’t put in here, click the link below to take a quick look before you start.

Opencart hide / remove step 4 Delivery Method in checkout


So, I have a several people asking me about the same fix for version 2. I only test out the code based on version 2.3, so let me know if it’s not working on your version and I’ll take a look when I can.

Same step to follow from the previous post:

  1. Enable at least 1 shipping method (“Free shipping”) so the system have a default value to pass in for validation.
  2. Make sure you edit your order related emails and view.


Update your checkout.tpl

Open \catalog\view\theme\yourselectedtheme\template\checkout\checkout.tpl and look for the following code:


Add style=”display:none” in to hide the div


Then search for this function,

$(document).delegate('#button-shipping-address', 'click', function() {


navigate to the end of the ajax call to

          url: 'index.php?route=checkout/payment_address',

and add these in


}, 100);

The first line manually collapse step 3 – shipping address section.

The reason why I added a delay before calling the function is to wait for the browser to get the information of the default selected delivery method and pass back to the controller. If you remove this, it will return an error asking to select a shipping method. Feel free to share it if you have better way.


Now search for this function

$(document).delegate('#button-shipping-method', 'click', function() {

Copy everything inside the function and put it into a new function call button_shipping_method_clicked(). We’ll need to change a small thing in this function.


Navigate to this ajax call within the function:

       url: 'index.php?route=checkout/payment_method',

replace this line


with this line:

$('#collapse-payment-method').removeClass("collapse").addClass("collapsing").removeClass("collapsing").addClass("collapse in");


Change steps number in checkout controller

Unlike version 1, steps number are controlled in the controller. Open \catalog\controller\checkout\checkout.php

Look for this at around line 64:

if ($this->cart->hasShipping()) {
			$data['text_checkout_payment_method'] = sprintf($this->language->get('text_checkout_payment_method'), 5);
			$data['text_checkout_confirm'] = sprintf($this->language->get('text_checkout_confirm'), 6);
		} else {

and replace with this code (reduce number by 1):

if ($this->cart->hasShipping()) {
			$data['text_checkout_payment_method'] = sprintf($this->language->get('text_checkout_payment_method'), 4);
			$data['text_checkout_confirm'] = sprintf($this->language->get('text_checkout_confirm'), 5);
		} else {

and that should do the trick.


Download this two files here:


Related Post:

Opencart hide / remove step 4 Delivery Method in checkout


Share this tutorial if you like it!

Leave a Reply

Your email address will not be published. Required fields are marked *