I want to define some order states like "credit card payment received", the question is to which statuses they belong. Is there a definition for each of the built-in statuses?

Edit: Seems like I mixed up "status" and "state", I hope it gets clear from the context anyways. I blame the German Magento translation (State => Status, Status => Zustand)

4 Answers 4


According to "The Definitive Guide to Magento" [1], the order statuses are defined as follows:

  • Pending: Pending orders are brand new orders that have not been processed. Typically, these orders need to be invoiced and shipped.
  • Pending PayPal: Pending PayPal orders are brand new orders that have not been cleared by PayPal. [...]
  • Processing: Processing means that orders have either been invoiced or shipped, but not both.
  • Complete: Orders marked as complete have been invoiced and have shipped.
  • Cancelled: Cancelled orders should be used if orders are cancelled or if the orders have not been paid for.
  • Closed: Closed orders are orders that have had a credit memo assigned to it and the customer has been refunded for their order.
  • On Hold: Orders placed on hold must be taken off hold before continuing any further actions.

Therefore a state "credit card payment received" would belong to processing, providing that the order has not been shipped yet.

Aligent Consulting[2] created a flow chart for order states:

magento order state flow


  1. Adam McCombs and Robert Banh: "The Definitive Guide to Magento", Apress, 2009 (ISBN 1430272287, 9781430272281)
  2. https://twitter.com/aligent/status/509487359172177921/photo/1
  • I'm all for self-answered questions - but this just seems like low-quality seeding. A copy+paste answer that could otherwise easily be found online doesn't really add much value to this site. Feb 5, 2013 at 11:01
  • 6
    @sonassi: I respect your opinion and would not claim the question to be top-quality but I searched a while for this and did not find related questions here or on SO yet, so it might help someone else in the future. Feb 5, 2013 at 11:04
  • I found this super helpful. sometimes you find things more easily on stack than on google, since stack is pre-filtered, compared to google, so to speak. and if it is seeding, so be it. They provided value. I'm totally OK with the seeding.
    – ahnbizcad
    Aug 9, 2018 at 17:21

The different order states are defined in Mage_Sales_Model_Order:

const STATE_NEW             = 'new';
const STATE_PENDING_PAYMENT = 'pending_payment';
const STATE_PROCESSING      = 'processing';
const STATE_COMPLETE        = 'complete';
const STATE_CLOSED          = 'closed';
const STATE_CANCELED        = 'canceled';
const STATE_HOLDED          = 'holded';
const STATE_PAYMENT_REVIEW  = 'payment_review';
  • +1 Is this overridable? Is there a way to get this from the rest api? e.g. /config/sales/possibleStatusList?
    – Lzh
    Aug 10, 2018 at 23:43
  • 3
    Overwrite the constants? Why do you want to overwrite them? You can define new order statuses in backend (System > Order Statuses). If you mean 'change order statuses', yes this is possible. And yes, you can also get the order status from the API (sales_order.info method or sales_order.list method)
    – Stefan
    Aug 11, 2018 at 10:35
  • yes i meant change the list not the constants. do you know how i can access sales_order.info in rest api? whats the endpoint? i tried /salesorders/info relative url
    – Lzh
    Aug 11, 2018 at 19:39
  • Shouldn't be hard, see here for access in general: magento.stackexchange.com/a/33187/6291 and infos about sales_order.info here: devdocs.magento.com/guides/m1x/api/soap/sales/salesOrder/… Good luck!
    – Stefan
    Aug 13, 2018 at 5:54
  • Thanks for the reply but the SOAP api is really different than REST api. For some reason, I can't find that you talk about in the REST api docs: devdocs.magento.com/swagger/index.html Can you see it there? Maybe it's not included in the REST api?
    – Lzh
    Aug 13, 2018 at 9:40

Actually since 1.5 order statuses can be defined in Admin section and xml is not preferred way of adding/changing states or statuses. Please make a difference between state and status. State is 'processing' status is 'credit card payment received'

Update: Order statuses can be created and modified in admin/sales_order_status/, no need to do anything in XML You can assign a status only if order is in appropriate state. By default order goes into Processing state when it is invoiced or shipped.

  • Was this meant as a comment on Sebastian Lind's answer? As for states and statuses, seems like I mixed them up (again...), thanks for the correction. Feb 5, 2013 at 14:59

You can connect your new state to existing order statuses, or you create completely new. Simply modify the configuration file of the sales module as follows (app \ code \ core \ Mage \ Sales \ etc \ config.xml) with your new state:

<?xml version="1.0"?>
  <!-- ... -->
            <label>New Status</label>
            <description>Your Description here</description>

Refresh the cache, done.

  • 2
    Nothing about this answer is appropriate, I'm afraid.
    – benmarks
    Feb 5, 2013 at 18:40
  • 1
    Do not edit the Magento core. Rather create a configuration in your own module. Magento will merge yours and the core's configuration files.
    – Jacques
    Jan 5, 2017 at 11:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.