Title: Creating Order using Woocommerce API
Last modified: May 3, 2020

---

# Creating Order using Woocommerce API

 *  [nelglez](https://wordpress.org/support/users/nelglez/)
 * (@nelglez)
 * [6 years, 1 month ago](https://wordpress.org/support/topic/creating-order-using-woocommerce-api/)
 * WooCommerce API creates an empty order.
    When I create a new order in my app 
   I get the following response:
 *     ```
       { URL: https://www.mySite.com/wp-json/wc/v3/orders } { Status Code: 201, Headers {
           "Cache-Control" =     (
               "no-transform, no-cache, no-store, must-revalidate"
           );
           "Content-Encoding" =     (
               gzip
           );
           "Content-Length" =     (
               537
           );
           "Content-Type" =     (
               "application/json; charset=UTF-8"
           );
           Date =     (
               "Sun, 03 May 2020 12:47:57 GMT"
           );
           Expires =     (
               "Wed, 11 Jan 1984 05:00:00 GMT"
           );
           Link =     (
               "<https://www.mySite.com/wp-json/>; rel=\"https://api.w.org/\""
           );
           Location =     (
               "https://www.mySite.com/wp-json/wc/v3/orders/2235"
           );
           Server =     (
               cloudflare
           );
           Vary =     (
               "Accept-Encoding"
           );
           "access-control-allow-headers" =     (
               "Authorization, Content-Type"
           );
           "access-control-expose-headers" =     (
               "X-WP-Total, X-WP-TotalPages"
           );
           allow =     (
               "GET, POST"
           );
           "cf-cache-status" =     (
               DYNAMIC
           );
           "cf-ray" =     (
               "58da17e5db87cce2-EWR"
           );
           "cf-request-id" =     (
               027c2d43a20000cce2fc876200000001
           );
           "expect-ct" =     (
               "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\""
           );
           "x-content-type-options" =     (
               nosniff
           );
           "x-endurance-cache-level" =     (
               0
           );
           "x-robots-tag" =     (
               noindex
           );
       } }
       {
           "_links" =     {
               collection =         (
                               {
                       href = "https://www.mySite.com/wp-json/wc/v3/orders";
                   }
               );
               self =         (
                               {
                       href = "https://www.mySite.com/wp-json/wc/v3/orders/2235";
                   }
               );
           };
           billing =     {
               "address_1" = "";
               "address_2" = "";
               city = "";
               company = "";
               country = "";
               email = "";
               "first_name" = "";
               "last_name" = "";
               phone = "";
               postcode = "";
               state = "";
           };
           "cart_hash" = "";
           "cart_tax" = "0.00";
           "coupon_lines" =     (
           );
           "created_via" = "rest-api";
           currency = USD;
           "currency_symbol" = "$";
           "customer_id" = 0;
           "customer_ip_address" = "";
           "customer_note" = "";
           "customer_user_agent" = "";
           "date_completed" = "<null>";
           "date_completed_gmt" = "<null>";
           "date_created" = "2020-05-03T07:47:57";
           "date_created_gmt" = "2020-05-03T12:47:57";
           "date_modified" = "2020-05-03T07:47:57";
           "date_modified_gmt" = "2020-05-03T12:47:57";
           "date_paid" = "<null>";
           "date_paid_gmt" = "<null>";
           "discount_tax" = "0.00";
           "discount_total" = "0.00";
           "fee_lines" =     (
           );
           id = 2235;
           "line_items" =     (
           );
           "meta_data" =     (
           );
           number = 2235;
           "order_key" = "wc_order_h4OZfjXmPjrZB";
           "parent_id" = 0;
           "payment_method" = "";
           "payment_method_title" = "";
           "prices_include_tax" = 0;
           refunds =     (
           );
           shipping =     {
               "address_1" = "";
               "address_2" = "";
               city = "";
               company = "";
               country = "";
               "first_name" = "";
               "last_name" = "";
               postcode = "";
               state = "";
           };
           "shipping_lines" =     (
           );
           "shipping_tax" = "0.00";
           "shipping_total" = "0.00";
           status = pending;
           "tax_lines" =     (
           );
           total = "0.00";
           "total_tax" = "0.00";
           "transaction_id" = "";
           version = "3.9.3";
       }
       ```
   
 * It doesn’t create an order with info im setting. This is my implementation code:
 *     ```
        func createOrder() {
   
   
               let billingDict: [String : Any] = [
   
                       "first_name": "John",
                       "last_name": "Doe",
                       "address_1": "969 Market",
                       "address_2": "",
                       "city": "San Francisco",
                       "state": "CA",
                       "postcode": "94103",
                       "country": "US",
                       "email": "john.doe@example.com",
                       "phone": "(555) 555-5555"
                   ]
   
               let shippingDict: [String: Any] = [
   
                       "first_name": "John",
                       "last_name": "Doe",
                       "address_1": "969 Market",
                       "address_2": "",
                       "city": "San Francisco",
                       "state": "CA",
                       "postcode": "94103",
                       "country": "US"
                   ]
   
               let lineItemsDict: <a href="https://codex.wordpress.org/String:_Any">String: Any</a> =
                   [
                       [
                           "product_id": 93,
                           "quantity": 2
                       ],
                       [
                           "product_id": 22,
                           "variation_id": 23,
                           "quantity": 1
                       ]
                   ]
   
               let shippingLinesDict: <a href="https://codex.wordpress.org/String:_Any">String: Any</a> =
   
                    [
                       [
                           "method_id": "flat_rate",
                           "method_title": "Flat Rate",
                           "total": 10
                       ]
                   ]
   
   
               let params = ["payment_method": "bacs",
               "payment_method_title": "Direct Bank Transfer",
               "set_paid": true, "billing": billingDict, "shipping": shippingDict, "line_items": lineItemsDict, "shipping_lines": shippingLinesDict] as [String : Any]
   
   
   
               guard let url = URL(string: "https://www.mySite.com/wp-json/wc/v3/orders") else { return }
                      var request = URLRequest(url: url)
                      let username = "ck_******"
                      let password = "cs_*****"
                      let loginString = String(format: "%@:%@", username, password)
                      let loginData = loginString.data(using: String.Encoding.utf8)!
                      let base64LoginString = loginData.base64EncodedString()
                      request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
                      request.httpMethod = "POST"
                    //  request.setValue("Application/json", forHTTPHeaderField: "Content-Type")
   
               guard let httpBody = try? JSONSerialization.data(withJSONObject: params, options: [.fragmentsAllowed]) else {
                   return
               }
               request.httpBody = httpBody
   
               let session = URLSession.shared
               session.dataTask(with: request) { (data, response, error) in
                   if let response = response {
                       print(response)
                   }
                   if let data = data {
                       do {
                           let json = try JSONSerialization.jsonObject(with: data, options: [.allowFragments])
                           print(json)
                       } catch {
                           print(error)
                       }
                   }
                   }.resume()
   
           }
       ```
   
    -  This topic was modified 6 years, 1 month ago by [nelglez](https://wordpress.org/support/users/nelglez/).

The topic ‘Creating Order using Woocommerce API’ is closed to new replies.

 * ![](https://ps.w.org/woocommerce/assets/icon.svg?rev=3234504)
 * [WooCommerce](https://wordpress.org/plugins/woocommerce/)
 * [Frequently Asked Questions](https://wordpress.org/plugins/woocommerce/#faq)
 * [Support Threads](https://wordpress.org/support/plugin/woocommerce/)
 * [Active Topics](https://wordpress.org/support/plugin/woocommerce/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/woocommerce/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/woocommerce/reviews/)

## Tags

 * [woocommerce api](https://wordpress.org/support/topic-tag/woocommerce-api/)

 * 0 replies
 * 1 participant
 * Last reply from: [nelglez](https://wordpress.org/support/users/nelglez/)
 * Last activity: [6 years, 1 month ago](https://wordpress.org/support/topic/creating-order-using-woocommerce-api/)
 * Status: not resolved