title: Magento 2: create order with REST API
body: <p>I'm using REST API with token authentication to export data from a M1 to a fresh installation of M2.2.0 installation. </p>
  
  <p>Everything works fine with customers and products, but I cannot manage to understand how to create an order without creating a cart.</p>
  
  <p>I mean, I already have all needed data from the order, there should be no need to create a cart before, as suggested in all the solutions I found (also in the official magento <a href="http://devdocs.magento.com/guides/v2.1/get-started/order-tutorial/order-create-order.html" rel="nofollow noreferrer">guide</a>).</p>
  
  <p>I'm following same steps in the above mentioned guide, but trying to post data about the order, I keep getting the error:</p>
  
  <pre><code>"Fatal Error: 'Uncaught Error: Call to a member function getMethodInstance() on null in \/var\/www\/html\/app\/code\/Magento\/Payment\/Observer\/SalesOrderBeforeSaveObserver.php:24\nStack trace:\n#0 \/var\/www\/html\/lib\/internal\/Magento\/Framework\/Event\/Invoker\/InvokerDefault.php(72): Magento\\Payment\\Observer\\SalesOrderBeforeSaveObserver-&gt;execute(Object(Magento\\Framework\\Event\\Observer))\n#1 \/var\/www\/html\/lib\/internal\/Magento\/Framework\/Event\/Invoker\/InvokerDefault.php(60): Magento\\Framework\\Event\\Invoker\\InvokerDefault-&gt;_callObserverMethod(Object(Magento\\Payment\\Observer\\SalesOrderBeforeSaveObserver), Object(Magento\\Framework\\Event\\Observer))\n#2 \/var\/www\/html\/lib\/internal\/Magento\/Framework\/Event\/Manager.php(66): Magento\\Framework\\Event\\Invoker\\InvokerDefault-&gt;dispatch(Array, Object(Magento\\Framework\\Event\\Observer))\n#3 \/var\/www\/html\/generated\/code\/Magento\/Framework\/Event\/Manager\/Proxy.php(95): Magento\\Framework\\Event\\Manager-&gt;dispatch('sales_order_sav...', Array)\n#4 \/var\/www\/html\/lib\/internal\/Magento\/Framework\/Model\/AbstractModel.php(694):' in '\/var\/www\/html\/app\/code\/Magento\/Payment\/Observer\/SalesOrderBeforeSaveObserver.php' on line 24"
  </code></pre>
  
  <p>and this is a sample JSON I'm using to make my tries:</p>
  
  <pre><code>{
      "entity": {
          "customer_email": "provacustomer@mail.com",
          "customer_firstname": "mario",
          "customer_lastname": "rossi",
          "base_grand_total": 120,
          "discount_amount": 0,
          "grand_total": 120,
          "increment_id": "200001414155",
          "shipping_amount": 7,
          "status": "processing",
          "store_id": 1,
          "subtotal": 100,
          "tax_amount": 20,
          "items": {
              "description": "prodotto mio",
              "item_id": 3,
              "price": 10,
              "product_id": 3,
              "product_type": "simple",
              "qty_ordered": 2,
              "sku": "002",
              "tax_amount": 2,
              "weight": 1
          }
      },
      "billing_address": {
          "firstname": "giuseppa",
          "lastname": "rossi",
          "company": "mycompany",
          "city": "rome",
          "region": "california",
          "region_id": 12,
          "postcode": "12312",
          "telephone": "1234556677",
          "country_id": "US",
          "street": ["via prima", "via seconda"]
      },
      "payment": {
          "amount_paid": 120,
          "method": "checkmo"
      },
      "status_histories": [{
          "comment": "new order",
          "status": "processing"
      }],
      "extension_attributes": {
          "shipping_assignments": [{
              "shipping": {
                  "address": [{
                      "firstname": "franca",
                      "lastname": "vardididi",
                      "company": "mycompany",
                      "city": "rome",
                      "region": "california",
                      "region_id": 12,
                      "postcode": "12312",
                      "telephone": "1234556677",
                      "country_id": "US",
                      "street": ["via prima", "via seconda"]
                  }],
                  "method": "checkmo",
                  "total": {
                      "base_shipping_amount": 7
                  }
              },
              "items": [{
                  "description": "prodotto mio",
                  "item_id": 3,
                  "price": 10,
                  "product_id": 3,
                  "product_type": "simple",
                  "qty_ordered": 2,
                  "sku": "002",
                  "tax_amount": 2,
                  "weight": 1
              }]
          }]
      }
  }
  </code></pre>
  
  <p><strong>EDIT</strong></p>
  
  <p>Using  the json in this <a href="https://stackoverflow.com/questions/42201253/magento-2-rest-api-to-create-order-not-adding-shipping-address?rq=1">question</a> I managed to create the order.</p>