Magento Order Statuses Tutorial

How to manage order statuses in Magento

When you process orders in Magento the status of each order changes according to its current state in the order processing workflow. For example, when an order is placed but it's not paid and shipped yet, meaning no invoice and shipments are submitted, the status of the order is set automatically to Pending. After you generate an invoice or you submit the shipment the status is changed to Processing, and when you both generate an invoice and you ship the order the status is changed to Complete. If you need information on how to process orders check out the tutorial on managing orders in Magento.

The admin panel of Magento has options with which you can edit the preconfigured order statuses and you can add new ones. Notice that in Magento there is a distinction between order statuses and order states. The order state is what defines the position of the order in the order processing workflow. Order statuses are assigned to order states. The thing that you see in the admin panel when you view and manage orders is the status of the order not the state:

Order Statuses on the Admin Panel Orders Page

The order states are:

  • New
  • Pending Payment
  • Processing
  • Complete
  • Closed
  • Canceled
  • On Hold
  • Payment Review

The order statuses that come preconfigured with Magento are:

  • Processing
  • Pending Payment
  • Suspected Fraud
  • Payment Review
  • Pending
  • On Hold
  • Complete
  • Closed
  • Canceled
  • Pending PayPal

With a single exception all of these statuses are assigned to an order state. There can be more than one status assigned to a state but one of these statuses is set to be the default one. This means that when the state of an order changes the default status assigned to it is displayed. To add, edit and assign/unassign order statuses log in to the admin panel of your Magento and go to System menu>Order Statuses:

Accessing the Order Statuses Options

On the page that opens you'll see a table listing all the existing order statuses. If the status is assigned to a state, the name and code of the order state will also be listed and in this case there will also be a column that indicates whether the status is the default one or not. For each of the statuses that are assigned there's an Unassign button in the table on which you can click if you want to unassign the status.

To edit an existing order status click on its name in the table. You can change its name and also set a specific label per store view (if you have more than one store view). To create a new status click on the Create New Status button that's in the upper right corner of the page:

Creating an Order Status

This will open a new page with the status settings:

Order Status Settings

Type a code for the status in the field for Status Code. You can use lower case letters and numbers. If the code consists of more than one word, you can separate the words with underscores (_). Type whatever you want the name of the status to be in the field for Status Label. If you have more than one store view you can specify a label for each store view in the respective fields. If you don't, the default label from the Status Label option will be used. After you're done don't forget to click on the Save Status button.

To assign an order status to an order state click on the Assign Status to State button that's on the page listing all the statuses:

Assigning an Order Status to an Order State

On the page that opens select the status from the Order Status drop-down menu and the state to which you want to assign it from the Order State drop-down menu:

Settings for Assigning an Order Status

If you want the status to be the default one for the order state, mark the checkbox labeled Use Order Status As Default. Then click on the Save Status Assignment button.