{"id":1755,"date":"2024-10-10T18:45:28","date_gmt":"2024-10-10T15:45:28","guid":{"rendered":"https:\/\/plumrocket.com\/learn\/?p=1755"},"modified":"2026-09-03T15:30:40","modified_gmt":"2026-09-03T12:30:40","slug":"how-to-change-order-status-in-magento-2","status":"publish","type":"post","link":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status","title":{"rendered":"How to Change Order Status in Magento 2"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full disable_zoom\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"600\" src=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status.png\" alt=\"How to Change Order Status in Magento 2\" class=\"wp-image-1950\" srcset=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status.png 1600w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status-300x113.png 300w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status-1024x384.png 1024w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status-768x288.png 768w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status-1536x576.png 1536w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status-1568x588.png 1568w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Magento 2 provides a set of default statuses, which may vary depending on version and installed payment modules (e.g., PayPal adds additional statuses): <em>Received, Suspected Fraud, Processing, Pending Payment, Payment Review, Pending, On Hold, Complete, Closed, Canceled, Rejected, PayPal Canceled Reversal, Pending PayPal, PayPal Reversed.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These statuses help merchants track the progress of each order through the fulfillment process.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are <strong>several ways to change order status in Magento 2<\/strong>, depending on your requirements:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"#how-to-change-order-status-in-magento-2-manually-in-the-admin-panel\">Manually<strong> <\/strong>through the Magento Admin panel<\/a><\/li>\n\n\n\n<li><a href=\"#how-to-change-order-status-in-magento-2-programmatically\">Programmatically<strong> <\/strong>using custom code<\/a><\/li>\n\n\n\n<li><a href=\"#how-to-change-order-status-in-magento-2-rest-api-method\">Via Magento REST API<\/a><\/li>\n\n\n\n<li><a href=\"#how-to-change-order-status-in-magento-2-automatically\">Automatically<strong> <\/strong>using Magento 2 extensions<\/a><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">In this article, we will walk you through each of these methods. Choose the method that best aligns with your specific needs and technical capabilities.<\/p>\n\n\n\n<p style=\"background-color: #e8f2ff;min-height:100px;box-shadow: 0 3px 10px 0 rgba(0,0,0,.15); padding: 20px 20px;\">Improve order processing speed with automatic invoicing, shipping creation, and status updates using our <a href=\"\/magento-auto-invoice-shipment\" target=\"_blank\" rel=\"noreferrer noopener\">Auto Invoice &amp; Shipment Extension<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Change Order Status in Magento 2 Manually in the Admin Panel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In the Magento 2 admin panel, you can only manually change the order status to <em>On Hold<\/em> or <em>Canceled<\/em>. All other statuses depend on payment method, payment status, shipping, and refunds.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Steps to change order status to <em>Canceled <\/em>or <em>On hold <\/em>status:<\/p>\n\n\n\n<div class=\"wp-block-group pr-notice pr-notice-info\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"pr-notice-title\" style=\"margin-bottom: 25px;\">Step-by-step guide:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open the Magento 2 Orders grid page.<\/li>\n\n\n\n<li>Use checkboxes to select the orders you want to change the status of.<\/li>\n\n\n\n<li>Choose the <em>Cancel<\/em> or <em>Hold <\/em>option from the Actions drop-down.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div><\/div>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1206\" height=\"602\" src=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-1.png\" alt=\"Change Order Status in Magento 2 Manually in the Admin Panel\" class=\"wp-image-1758\" srcset=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-1.png 1206w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-1-300x150.png 300w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-1-1024x511.png 1024w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-1-768x383.png 768w\" sizes=\"auto, (max-width: 1206px) 100vw, 1206px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">How to Change Order Status in Magento 2 Programmatically<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Magento provides the OrderManagementInterface for performing standard order management actions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this example, we will create a Magento 2 model called ManageOrder that can <strong>hold, unhold, or cancel an order programmatically<\/strong>.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\" data-line=\"\">&lt;?php\n\ndeclare(strict_types=1);\n\nnamespace Vendor\\OrderManagement\\Model;\n\nuse Magento\\Sales\\Api\\OrderManagementInterface;\n\nclass ManageOrder\n{\n    public function __construct(\n        private readonly OrderManagementInterface $orderManagement\n    ) {\n    }\n\n    public function hold(int $orderId): void\n    {\n        $this-&gt;orderManagement-&gt;hold($orderId);\n    }\n\n    public function unhold(int $orderId): void\n    {\n        $this-&gt;orderManagement-&gt;unHold($orderId);\n    }\n\n    public function cancel(int $orderId): void\n    {\n        $this-&gt;orderManagement-&gt;cancel($orderId);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The following example shows how to use the ManageOrder model. Simply pass the order ID to the appropriate method depending on the action you pAGEwant to perform.<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\" data-line=\"\">&lt;?php\n\ndeclare(strict_types=1);\n\nnamespace Vendor\\OrderManagement\\Console\\Command;\n\nuse Vendor\\OrderManagement\\Model\\ManageOrder;\n\nclass Example\n{\n    public function __construct(\n        private readonly ManageOrder $manageOrder\n    ) {\n    }\n\n    public function execute(): void\n    {\n        $this-&gt;manageOrder-&gt;hold(123);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Here, the order with ID 123 will be placed on hold. In the same way, you can call unhold() or cancel() to perform the corresponding action.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Change Order Status in Magento 2 via REST API<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To cancel an order through the Magento 2 REST API, obtain an access token and then call the dedicated cancel endpoint.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Get an Admin Access Token<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">If two-factor authentication is not enabled for the admin account, use:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\" data-line=\"\">curl -X POST \\\n  &quot;https:\/\/magento-store.com\/rest\/V1\/integration\/admin\/token&quot; \\\n  -H &quot;Content-Type: application\/json&quot; \\\n  -d &#039;{\n    &quot;username&quot;: &quot;admin_username&quot;,\n    &quot;password&quot;: &quot;admin_password&quot;\n  }&#039;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If 2FA with Google Authenticator is enabled, send the current six-digit one-time password using the 2FA endpoint:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\" data-line=\"\">curl -X POST \\\n  &quot;https:\/\/magento-store.com\/rest\/V1\/tfa\/provider\/google\/authenticate&quot; \\\n  -H &quot;Content-Type: application\/json&quot; \\\n  -d &#039;{\n    &quot;username&quot;: &quot;admin_username&quot;,\n    &quot;password&quot;: &quot;admin_password&quot;,\n    &quot;otp&quot;: &quot;123456&quot;\n  }&#039;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A successful request returns an admin access token. The endpoint may differ if another 2FA provider is configured.<\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Cancel the Order<\/strong><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Replace <code class=\"\" data-line=\"\">&lt;access-token&gt;<\/code> with the returned token and <code class=\"\" data-line=\"\">&lt;orderId&gt;<\/code> with the internal Magento order entity ID:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\" data-line=\"\">curl -X POST \\\n  &quot;https:\/\/magento-store.com\/rest\/V1\/orders\/&lt;orderId&gt;\/cancel&quot; \\\n  -H &quot;Content-Type: application\/json&quot; \\\n  -H &quot;Authorization: Bearer &lt;access-token&gt;&quot;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Magento validates whether the order can be canceled and processes the cancellation using its standard order management logic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Similar REST API endpoints are available for other order operations, such as placing an order on hold or releasing it from hold:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-php\" data-line=\"\">POST \/rest\/V1\/orders\/&lt;orderId&gt;\/hold\nPOST \/rest\/V1\/orders\/&lt;orderId&gt;\/unhold\nPOST \/rest\/V1\/orders\/&lt;orderId&gt;\/cancel<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For operations such as invoicing or shipping, Magento provides separate REST API endpoints and request payloads.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Change Order Status in Magento 2 Automatically<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">One efficient way to automate order status updates in Magento 2 is by using the <a href=\"\/magento-auto-invoice-shipment\" target=\"_blank\" rel=\"noreferrer noopener\">Magento 2 Auto Invoice &amp; Shipment Extension<\/a>. This extension can automatically generate invoices and shipments, which triggers an automatic change in the order status to <em>Processing<\/em> or <em>Complete<\/em>, depending on the fulfillment stage.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Key features of this extension include:<\/h3>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Bulk Invoice and Shipment<\/strong><br>The extension enables store admins to generate Magento invoices and shipments in bulk, saving time and streamlining order processing.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:6%\"><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"412\" height=\"229\" src=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-2.png\" alt=\"\" class=\"wp-image-1759\" srcset=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-2.png 412w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-2-300x167.png 300w\" sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"478\" height=\"270\" src=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-3.png\" alt=\"\" class=\"wp-image-1764\" srcset=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-3.png 478w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-3-300x169.png 300w\" sizes=\"auto, (max-width: 478px) 100vw, 478px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:6%\"><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p style=\"margin-top:20px; margin-bottom:20px\"><strong>Flexible Rules<\/strong><br>You can configure specific rules to specify when and how invoices and shipments are created automatically. These rules allow you to set conditions based on payment methods, order status, or other criteria, ensuring that your workflow aligns with your business needs.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Support for Partial Invoices and Shipments<\/strong><br>If your business deals with partial shipments or split orders, the extension allows you to create partial invoices and shipments. This ensures that order statuses are updated correctly for each portion of the order that is fulfilled.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:6%\"><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"490\" height=\"320\" src=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-4.png\" alt=\"\" class=\"wp-image-1765\" srcset=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-4.png 490w, https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/09\/change-magento-order-status-4-300x196.png 300w\" sizes=\"auto, (max-width: 490px) 100vw, 490px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-cover alignwide is-light has-parallax\" style=\"min-height:55px;aspect-ratio:unset;\"><div class=\"wp-block-cover__image-background wp-image-1952 has-parallax\" style=\"background-position:50% 50%;background-image:url(https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status-0.png)\"><\/div><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<p class=\"has-text-align-center has-dark-gray-color has-text-color wp-block-paragraph\" style=\"font-size:18px\"><span class=\"has-inline-color has-dark-gray-color\">Automate the invoicing and shipping process to ensure order management efficiency and timely status updates.<\/span><\/p>\n\n\n\n<div class=\"wp-block-buttons is-horizontal is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-7d812b4c wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-background wp-element-button\" href=\"\/magento-auto-invoice-shipment\" style=\"border-radius:5px;background-color:#7d2c55\" target=\"_blank\" rel=\"\/magento-auto-invoice-shipment noopener\">Try Auto Invoice &amp; Shipment Extension<\/a><\/div>\n<\/div>\n<\/div><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions (FAQ)<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1788438433644\"><strong class=\"schema-faq-question\"><strong>Why can\u2019t I change the order status directly to Complete?<\/strong><\/strong> <p class=\"schema-faq-answer\">Magento restricts the <strong>Complete<\/strong> status because it should only be applied when an order has been fully invoiced and shipped. To set it programmatically, you must do it through custom code or an integration.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1788438440816\"><strong class=\"schema-faq-question\"><strong>Can I force an order status update through the API?<\/strong><\/strong> <p class=\"schema-faq-answer\">Yes, but Magento requires that the <code class=\"\" data-line=\"\">state<\/code> and <code class=\"\" data-line=\"\">status<\/code> pair be valid.<br>For example, you cannot set <code class=\"\" data-line=\"\">status = complete<\/code> unless the order state supports it or workflow rules are bypassed programmatically.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1788438467560\"><strong class=\"schema-faq-question\"><strong>How can I automate order status changes in Magento 2?<\/strong><\/strong> <p class=\"schema-faq-answer\">You can use automation tools such as the <a href=\"\/magento-auto-invoice-shipment\" target=\"_blank\" rel=\"noopener\">Auto Invoice &amp; Shipment Extension for Magento 2<\/a>, which automatically generates invoices and shipments. This triggers automatic status changes and reduces manual admin work.<\/p> <\/div> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Magento 2 offers a comprehensive order management system with 14 predefined order statuses, which help merchants track the progress of each order through the fulfillment process. There are <strong>several ways to change order status in Magento 2<\/strong>, depending on your requirements:<br \/>\n<!-- \/wp:paragraph --><\/p>\n<p><!-- wp:list {\"ordered\":true} --><\/p>\n<ol>\n<li>Manually<strong> <\/strong>through the Magento Admin panel<\/li>\n<li>Programmatically<strong> <\/strong>using custom code<\/li>\n<li>Via Magento REST API<\/li>\n<li>Automatically<strong> <\/strong> using Magento 2 extensions<\/li>\n<\/ol>\n<p><!-- \/wp:list --><\/p>\n<p>In this article, we will walk you through each of these methods. Choose the method that best aligns with your specific needs and technical capabilities.<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[122],"tags":[],"class_list":["post-1755","post","type-post","status-publish","format-standard","hentry","category-magento-management","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Change Order Status in Magento 2 (Programmatically, Rest API)<\/title>\n<meta name=\"description\" content=\"A step-by-step guide on different ways to change order status in Magento 2 - programmatically, via Rest API, or automatically using extensions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Change Order Status in Magento 2 (Programmatically, Rest API)\" \/>\n<meta property=\"og:description\" content=\"A step-by-step guide on different ways to change order status in Magento 2 - programmatically, via Rest API, or automatically using extensions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status\" \/>\n<meta property=\"og:site_name\" content=\"Magento Tutorials for Beginners &amp; Professionals\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-10T15:45:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-03T12:30:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Volodymyr Holovatskiy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Volodymyr Holovatskiy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Change Order Status in Magento 2 (Programmatically, Rest API)","description":"A step-by-step guide on different ways to change order status in Magento 2 - programmatically, via Rest API, or automatically using extensions.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status","og_locale":"en_US","og_type":"article","og_title":"Change Order Status in Magento 2 (Programmatically, Rest API)","og_description":"A step-by-step guide on different ways to change order status in Magento 2 - programmatically, via Rest API, or automatically using extensions.","og_url":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status","og_site_name":"Magento Tutorials for Beginners &amp; Professionals","article_published_time":"2024-10-10T15:45:28+00:00","article_modified_time":"2026-09-03T12:30:40+00:00","og_image":[{"width":1600,"height":600,"url":"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status.png","type":"image\/png"}],"author":"Volodymyr Holovatskiy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Volodymyr Holovatskiy","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#article","isPartOf":{"@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status"},"author":{"name":"Volodymyr Holovatskiy","@id":"https:\/\/plumrocket.com\/learn\/#\/schema\/person\/161911374678c2f70335dd5a1efac69f"},"headline":"How to Change Order Status in Magento 2","datePublished":"2024-10-10T15:45:28+00:00","dateModified":"2026-09-03T12:30:40+00:00","mainEntityOfPage":{"@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status"},"wordCount":785,"commentCount":0,"image":{"@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#primaryimage"},"thumbnailUrl":"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status.png","articleSection":["Managing Magento"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#respond"]}]},{"@type":["WebPage","FAQPage"],"@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status","url":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status","name":"Change Order Status in Magento 2 (Programmatically, Rest API)","isPartOf":{"@id":"https:\/\/plumrocket.com\/learn\/#website"},"primaryImageOfPage":{"@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#primaryimage"},"image":{"@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#primaryimage"},"thumbnailUrl":"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status.png","datePublished":"2024-10-10T15:45:28+00:00","dateModified":"2026-09-03T12:30:40+00:00","author":{"@id":"https:\/\/plumrocket.com\/learn\/#\/schema\/person\/161911374678c2f70335dd5a1efac69f"},"description":"A step-by-step guide on different ways to change order status in Magento 2 - programmatically, via Rest API, or automatically using extensions.","breadcrumb":{"@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#breadcrumb"},"mainEntity":[{"@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#faq-question-1788438433644"},{"@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#faq-question-1788438440816"},{"@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#faq-question-1788438467560"}],"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/plumrocket.com\/learn\/change-magento-2-order-status"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#primaryimage","url":"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status.png","contentUrl":"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/change-magento-order-status.png","width":1600,"height":600},{"@type":"BreadcrumbList","@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Learn","item":"https:\/\/plumrocket.com\/learn"},{"@type":"ListItem","position":2,"name":"How to Change Order Status in Magento 2"}]},{"@type":"WebSite","@id":"https:\/\/plumrocket.com\/learn\/#website","url":"https:\/\/plumrocket.com\/learn\/","name":"Magento Tutorials for Beginners &amp; Professionals","description":"Plumrocket Inc","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/plumrocket.com\/learn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/plumrocket.com\/learn\/#\/schema\/person\/161911374678c2f70335dd5a1efac69f","name":"Volodymyr Holovatskiy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/avatar_user_7_1729774175-96x96.png","url":"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/avatar_user_7_1729774175-96x96.png","contentUrl":"https:\/\/plumrocket.com\/learn\/wp-content\/uploads\/2024\/10\/avatar_user_7_1729774175-96x96.png","caption":"Volodymyr Holovatskiy"},"description":"Magento 2 developer passionate about creating efficient and functional ecommerce solutions. Loves skiing and hiking in the mountains, finding inspiration for new ideas and solutions in web development.","url":"https:\/\/plumrocket.com\/learn\/author\/volodymyr-holovatskiy"},{"@type":"Question","@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#faq-question-1788438433644","position":1,"url":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#faq-question-1788438433644","name":"Why can\u2019t I change the order status directly to Complete?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Magento restricts the <strong>Complete<\/strong> status because it should only be applied when an order has been fully invoiced and shipped. To set it programmatically, you must do it through custom code or an integration.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#faq-question-1788438440816","position":2,"url":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#faq-question-1788438440816","name":"Can I force an order status update through the API?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Yes, but Magento requires that the state and status pair be valid.<br>For example, you cannot set status = complete unless the order state supports it or workflow rules are bypassed programmatically.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#faq-question-1788438467560","position":3,"url":"https:\/\/plumrocket.com\/learn\/change-magento-2-order-status#faq-question-1788438467560","name":"How can I automate order status changes in Magento 2?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"You can use automation tools such as the <a href=\"\/magento-auto-invoice-shipment\" target=\"_blank\" rel=\"noopener\">Auto Invoice &amp; Shipment Extension for Magento 2<\/a>, which automatically generates invoices and shipments. This triggers automatic status changes and reduces manual admin work.","inLanguage":"en-US"},"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/plumrocket.com\/learn\/wp-json\/wp\/v2\/posts\/1755","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/plumrocket.com\/learn\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/plumrocket.com\/learn\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/plumrocket.com\/learn\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/plumrocket.com\/learn\/wp-json\/wp\/v2\/comments?post=1755"}],"version-history":[{"count":49,"href":"https:\/\/plumrocket.com\/learn\/wp-json\/wp\/v2\/posts\/1755\/revisions"}],"predecessor-version":[{"id":3051,"href":"https:\/\/plumrocket.com\/learn\/wp-json\/wp\/v2\/posts\/1755\/revisions\/3051"}],"wp:attachment":[{"href":"https:\/\/plumrocket.com\/learn\/wp-json\/wp\/v2\/media?parent=1755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/plumrocket.com\/learn\/wp-json\/wp\/v2\/categories?post=1755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/plumrocket.com\/learn\/wp-json\/wp\/v2\/tags?post=1755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}