Magento 2 Difference between Order Invoice, Cancel, Void, Hold and Ship

These are the order completion steps:

Invoice: This step is payment confirmation receipt means when Admin get confirmation of payment then invoice should be generated it may be generated manually(offline or *online) by Admin or automatically in case of online payment with payment action Authorize and Capture.

*online capture(invoice generation) only available when only online payment gateway used with payment action Authorize Only.

Cancel This is just order cancellation process. When online payment used with order and amount authorized in this order then. Order cancellation process will call void action for cancel current transaction.

Void This process is for void the online transaction, if online payment method is used in order then this process will void current transaction and won't be able to further online transaction process for particular order. (For eg: if some order amount is authorize by third party payment gateway and if Admin apply void process he can't be able to capture payment further more) Although in case of void process order will going on smoothly just all process will only offline(i.e offline invoice, offline credit memo).

Hold: This process is only for holding current order, when Admin will unhold the current order then order will work smoothly as usual.

Ship This process is related to shipment action when product will shipped to customer then shipment will generated by Admin


You can check all Magento status and states from admin under admin->system->order statuses. Magento order statuses

Every order status have a specific state like in the screenshoot. You can try by yourself to see how order status and states are changing in real time. Place an order then open the mysql database using any tool.

Do the following query to get data for your order:

select * from sales_flat_order where increment_id = 'your order increment id you did'

You will see that your order status pending have a state new, when order is placed. Next you should invoice the order from the admin, and execute the above query again. You will see that the order status is changed to processing and order state is changed to processing Then you can ship the order, and order status is changed to complete and order state is changed to complete

This is how order status and state work. Order state is used by Magento.

you can find another info for order statuses in this stackoverflow post about order statuses

What are the definitions of the order statuses? OR: Where should I integrate my order state?


I am providing links of a User guide in that a clear explanation is there of what you asked so please refer these documents..

  1. http://docs.magento.com/m2/ce/user_guide/magento/magento-community-edition-2.1-user-guide.html
  2. http://docs.magento.com/m2/ee/user_guide/Resources/pdf/Magento_Enterprise_Edition_2.1_User_Guide.pdf