diff --git a/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js b/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js
index f88b11bf87a43e7b2feb4ec95fb3eafb6f69d056..2d142417ac099b023d2e715cbac026cfdada14e9 100644
--- a/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js
+++ b/app/code/Magento/Checkout/view/frontend/web/js/action/place-order.js
@@ -6,48 +6,31 @@ define(
     [
         'Magento_Checkout/js/model/quote',
         'Magento_Checkout/js/model/url-builder',
-        'mage/storage',
-        'Magento_Checkout/js/model/error-processor',
         'Magento_Customer/js/model/customer',
-        'Magento_Checkout/js/model/full-screen-loader'
+        'Magento_Checkout/js/model/place-order'
     ],
-    function (quote, urlBuilder, storage, errorProcessor, customer, fullScreenLoader) {
+    function (quote, urlBuilder, customer, placeOrderService) {
         'use strict';
 
         return function (paymentData, messageContainer) {
-            var serviceUrl,
-                payload;
+            var serviceUrl, payload;
 
-            /** Checkout for guest and registered customer. */
-            if (!customer.isLoggedIn()) {
+            payload = {
+                cartId: quote.getQuoteId(),
+                billingAddress: quote.billingAddress(),
+                paymentMethod: paymentData
+            };
+
+            if (customer.isLoggedIn()) {
+                serviceUrl = urlBuilder.createUrl('/carts/mine/payment-information', {});
+            } else {
                 serviceUrl = urlBuilder.createUrl('/guest-carts/:quoteId/payment-information', {
                     quoteId: quote.getQuoteId()
                 });
-                payload = {
-                    cartId: quote.getQuoteId(),
-                    email: quote.guestEmail,
-                    paymentMethod: paymentData,
-                    billingAddress: quote.billingAddress()
-                };
-            } else {
-                serviceUrl = urlBuilder.createUrl('/carts/mine/payment-information', {});
-                payload = {
-                    cartId: quote.getQuoteId(),
-                    paymentMethod: paymentData,
-                    billingAddress: quote.billingAddress()
-                };
+                payload.email = quote.guestEmail;
             }
 
-            fullScreenLoader.startLoader();
-
-            return storage.post(
-                serviceUrl, JSON.stringify(payload)
-            ).fail(
-                function (response) {
-                    errorProcessor.process(response, messageContainer);
-                    fullScreenLoader.stopLoader();
-                }
-            );
+            return placeOrderService(serviceUrl, payload, messageContainer);
         };
     }
 );
diff --git a/app/code/Magento/Checkout/view/frontend/web/js/model/place-order.js b/app/code/Magento/Checkout/view/frontend/web/js/model/place-order.js
new file mode 100644
index 0000000000000000000000000000000000000000..68548cb1b28d3e2a4abe66c8be13c9dd48b73ec2
--- /dev/null
+++ b/app/code/Magento/Checkout/view/frontend/web/js/model/place-order.js
@@ -0,0 +1,27 @@
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+define(
+    [
+        'mage/storage',
+        'Magento_Checkout/js/model/error-processor',
+        'Magento_Checkout/js/model/full-screen-loader'
+    ],
+    function (storage, errorProcessor, fullScreenLoader) {
+        'use strict';
+
+        return function (serviceUrl, payload, messageContainer) {
+            fullScreenLoader.startLoader();
+
+            return storage.post(
+                serviceUrl, JSON.stringify(payload)
+            ).fail(
+                function (response) {
+                    errorProcessor.process(response, messageContainer);
+                    fullScreenLoader.stopLoader();
+                }
+            );
+        };
+    }
+);