diff --git a/app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer/paypal.js b/app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer/paypal.js
index 075a1fdaf1fc118f42832fa438762715420a585a..2d5e0b3a270b71991a48e526aaa8248c9a60c87b 100644
--- a/app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer/paypal.js
+++ b/app/code/Magento/Braintree/view/frontend/web/js/view/payment/method-renderer/paypal.js
@@ -296,7 +296,7 @@ define([
         getShippingAddress: function () {
             var address = quote.shippingAddress();
 
-            if (address.postcode === null) {
+            if (_.isNull(address.postcode) || _.isUndefined(address.postcode)) {
 
                 return {};
             }
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml
index 7e38e6f0303b64e55ce6e126a2653f0ce7420df7..7bc8fe883dc2df1945871e039d9d67d52ab40516 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/OnePageCheckoutWithBraintreePaypalTest.xml
@@ -50,5 +50,21 @@
             <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
             <constraint name="Magento\Sales\Test\Constraint\AssertCaptureInCommentsHistory" />
         </variation>
+        <variation name="OnePageCheckoutWithBraintreePaypalTestVariation3" summary="Guest Checkout virtual quote with Braintree PayPal from Cart" ticketId="MAGETWO-41559">
+            <data name="products/0" xsi:type="string">catalogProductVirtual::product_50_dollar</data>
+            <data name="customer/dataset" xsi:type="string">default</data>
+            <data name="checkoutMethod" xsi:type="string">guest</data>
+            <data name="prices" xsi:type="array">
+                <item name="grandTotal" xsi:type="string">50.00</item>
+            </data>
+            <data name="payment/method" xsi:type="string">braintree_paypal</data>
+            <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_skip_order_review</data>
+            <data name="status" xsi:type="string">Processing</data>
+            <data name="tag" xsi:type="string">test_type:3rd_party_test, severity:S2</data>
+            <constraint name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertOrderGrandTotal" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" />
+        </variation>
     </testCase>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/PlaceOrderWithPaypalStep.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/PlaceOrderWithPaypalStep.php
index 0ff7f164b0996108ab332343b8b6528e0af54630..d61e2fff6337a4ddc3c616bd9dbc1ad2c8e0540e 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/PlaceOrderWithPaypalStep.php
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestStep/PlaceOrderWithPaypalStep.php
@@ -6,6 +6,7 @@
 namespace Magento\Braintree\Test\TestStep;
 
 use Magento\Checkout\Test\Constraint\AssertGrandTotalOrderReview;
+use Magento\Checkout\Test\Constraint\AssertBillingAddressAbsentInPayment;
 use Magento\Checkout\Test\Page\CheckoutOnepage;
 use Magento\Checkout\Test\Page\CheckoutOnepageSuccess;
 use Magento\Mtf\Fixture\FixtureFactory;
@@ -26,6 +27,11 @@ class PlaceOrderWithPaypalStep implements TestStepInterface
      */
     private $assertGrandTotalOrderReview;
 
+    /**
+     * @var AssertBillingAddressAbsentInPayment
+     */
+    private $assertBillingAddressAbsentInPayment;
+
     /**
      * @var CheckoutOnepageSuccess
      */
@@ -49,6 +55,7 @@ class PlaceOrderWithPaypalStep implements TestStepInterface
     /**
      * @param CheckoutOnepage $checkoutOnepage
      * @param AssertGrandTotalOrderReview $assertGrandTotalOrderReview
+     * @param AssertBillingAddressAbsentInPayment $assertBillingAddressAbsentInPayment
      * @param CheckoutOnepageSuccess $checkoutOnepageSuccess
      * @param FixtureFactory $fixtureFactory
      * @param array $products
@@ -57,6 +64,7 @@ class PlaceOrderWithPaypalStep implements TestStepInterface
     public function __construct(
         CheckoutOnepage $checkoutOnepage,
         AssertGrandTotalOrderReview $assertGrandTotalOrderReview,
+        AssertBillingAddressAbsentInPayment $assertBillingAddressAbsentInPayment,
         CheckoutOnepageSuccess $checkoutOnepageSuccess,
         FixtureFactory $fixtureFactory,
         array $products,
@@ -64,6 +72,7 @@ class PlaceOrderWithPaypalStep implements TestStepInterface
     ) {
         $this->checkoutOnepage = $checkoutOnepage;
         $this->assertGrandTotalOrderReview = $assertGrandTotalOrderReview;
+        $this->assertBillingAddressAbsentInPayment = $assertBillingAddressAbsentInPayment;
         $this->checkoutOnepageSuccess = $checkoutOnepageSuccess;
         $this->fixtureFactory = $fixtureFactory;
         $this->products = $products;
@@ -78,6 +87,9 @@ class PlaceOrderWithPaypalStep implements TestStepInterface
         if (isset($this->prices['grandTotal'])) {
             $this->assertGrandTotalOrderReview->processAssert($this->checkoutOnepage, $this->prices['grandTotal']);
         }
+
+        $this->assertBillingAddressAbsentInPayment->processAssert($this->checkoutOnepage);
+
         $parentWindow = $this->checkoutOnepage->getPaymentBlock()
             ->getSelectedPaymentMethodBlock()
             ->clickPayWithPaypal();
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Login.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Login.php
index 789069299d22c62342e65d46c8492d37d7600692..49b900e4eedce313df7809a574e150f3c63c4787 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Login.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Login.php
@@ -90,6 +90,19 @@ class Login extends Form
         $this->waitForElementNotVisible($this->loadingMask);
     }
 
+    /**
+     * Fill required fields for guest checkout.
+     *
+     * @param FixtureInterface $customer
+     * @return void
+     */
+    public function fillGuestFields(FixtureInterface $customer)
+    {
+        $mapping = $this->dataMapping();
+        $this->_rootElement->find($mapping['email']['selector'], $mapping['email']['strategy'])
+            ->setValue($customer->getEmail());
+    }
+
     /**
      * Click continue on checkout method block.
      *
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertBillingAddressAbsentInPayment.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertBillingAddressAbsentInPayment.php
new file mode 100644
index 0000000000000000000000000000000000000000..62fd88e98eed4b4ee9d19393525d55be898ca248
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/Constraint/AssertBillingAddressAbsentInPayment.php
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+
+namespace Magento\Checkout\Test\Constraint;
+
+use Magento\Checkout\Test\Page\CheckoutOnepage;
+use Magento\Mtf\Constraint\AbstractConstraint;
+
+/**
+ * Assert billing address is not present in selected payment method.
+ */
+class AssertBillingAddressAbsentInPayment extends AbstractConstraint
+{
+    /**
+     * Assert billing address is not present in selected payment method.
+     *
+     * @param CheckoutOnepage $checkoutOnepage
+     * @return void
+     */
+    public function processAssert(CheckoutOnepage $checkoutOnepage)
+    {
+        \PHPUnit_Framework_Assert::assertFalse(
+            $checkoutOnepage->getPaymentBlock()
+                ->getSelectedPaymentMethodBlock()
+                ->getBillingBlock()
+                ->isVisible(),
+            'Billing address is present in payment method'
+        );
+    }
+
+    /**
+     * Returns string representation of successful assertion
+     *
+     * @return string
+     */
+    public function toString()
+    {
+        return 'Billing address is absent in payment method';
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/SelectCheckoutMethodStep.php b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/SelectCheckoutMethodStep.php
index 444b98adb7f836b140a52d6c3644b6ee9e7c3c72..eef5f2fbdd03a9b7325b01aa8b5d4293e566ffbb 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/SelectCheckoutMethodStep.php
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/TestStep/SelectCheckoutMethodStep.php
@@ -51,6 +51,13 @@ class SelectCheckoutMethodStep implements TestStepInterface
      */
     private $clickProceedToCheckoutStep;
 
+    /**
+     * Shipping carrier and method.
+     *
+     * @var array
+     */
+    protected $shipping;
+
     /**
      * @constructor
      * @param CheckoutOnepage $checkoutOnepage
@@ -58,19 +65,22 @@ class SelectCheckoutMethodStep implements TestStepInterface
      * @param LogoutCustomerOnFrontendStep $logoutCustomerOnFrontend
      * @param ClickProceedToCheckoutStep $clickProceedToCheckoutStep
      * @param string $checkoutMethod
+     * @param array $shipping
      */
     public function __construct(
         CheckoutOnepage $checkoutOnepage,
         Customer $customer,
         LogoutCustomerOnFrontendStep $logoutCustomerOnFrontend,
         ClickProceedToCheckoutStep $clickProceedToCheckoutStep,
-        $checkoutMethod
+        $checkoutMethod,
+        array $shipping = []
     ) {
         $this->checkoutOnepage = $checkoutOnepage;
         $this->customer = $customer;
         $this->logoutCustomerOnFrontend = $logoutCustomerOnFrontend;
         $this->clickProceedToCheckoutStep = $clickProceedToCheckoutStep;
         $this->checkoutMethod = $checkoutMethod;
+        $this->shipping = $shipping;
     }
 
     /**
@@ -87,6 +97,10 @@ class SelectCheckoutMethodStep implements TestStepInterface
             } else {
                 $this->checkoutOnepage->getLoginBlock()->loginCustomer($this->customer);
             }
+        } elseif ($this->checkoutMethod === 'guest') {
+            if (empty($this->shipping)) {
+                $this->checkoutOnepage->getLoginBlock()->fillGuestFields($this->customer);
+            }
         }
     }
 
diff --git a/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/di.xml b/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/di.xml
index 2f20c20f6e87f2f0df2f8e4991d4d3d5a0b26970..24b369200e71d99df604457603969594b40862ca 100644
--- a/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/di.xml
+++ b/dev/tests/functional/tests/app/Magento/Checkout/Test/etc/di.xml
@@ -12,6 +12,11 @@
             <argument name="severity" xsi:type="string">middle</argument>
         </arguments>
     </type>
+    <type name="Magento\Checkout\Test\Constraint\AssertBillingAddressAbsentInPayment">
+        <arguments>
+            <argument name="severity" xsi:type="string">S2</argument>
+        </arguments>
+    </type>
     <type name="Magento\Checkout\Test\Constraint\AssertOrderSuccessPlacedMessage">
         <arguments>
             <argument name="severity" xsi:type="string">S0</argument>
diff --git a/dev/tests/functional/tests/app/Magento/Payment/Test/Repository/CreditCard.xml b/dev/tests/functional/tests/app/Magento/Payment/Test/Repository/CreditCard.xml
index f6c93407a0ccdb42eed3c22519c9d3b109e648a8..8e742ab30ba960dd022870fea86e08c74d71c3fd 100644
--- a/dev/tests/functional/tests/app/Magento/Payment/Test/Repository/CreditCard.xml
+++ b/dev/tests/functional/tests/app/Magento/Payment/Test/Repository/CreditCard.xml
@@ -14,6 +14,13 @@
             <field name="cc_cid" xsi:type="string">123</field>
         </dataset>
 
+        <dataset name="visa_alt">
+            <field name="cc_number" xsi:type="string">4012888888881881</field>
+            <field name="cc_exp_month" xsi:type="string">02 - February</field>
+            <field name="cc_exp_year" xsi:type="string">2021</field>
+            <field name="cc_cid" xsi:type="string">123</field>
+        </dataset>
+
         <dataset name="amex_default">
             <field name="cc_number" xsi:type="string">378282246310005</field>
             <field name="cc_exp_month" xsi:type="string">02 - February</field>
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml
index ac69bfb9f47e4550e6ab4592cccbdf56cf682da3..2cafc815fed1dfc1865d1f2627f536d1ba909563 100644
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestCase/DeleteSavedCreditCardTest.xml
@@ -26,7 +26,7 @@
                     <item name="method" xsi:type="string">payflowpro</item>
                     <item name="creditCardClass" xsi:type="string">credit_card</item>
                     <item name="creditCard" xsi:type="array">
-                        <item name="dataset" xsi:type="string">amex_default</item>
+                        <item name="dataset" xsi:type="string">visa_alt</item>
                     </item>
                 </item>
                 <item name="2" xsi:type="array">
@@ -43,7 +43,7 @@
                     <item name="method" xsi:type="string">payflowpro</item>
                     <item name="creditCardClass" xsi:type="string">credit_card</item>
                     <item name="creditCard" xsi:type="array">
-                        <item name="dataset" xsi:type="string">amex_default</item>
+                        <item name="dataset" xsi:type="string">visa_alt</item>
                     </item>
                     <item name="vault" xsi:type="array">
                         <item name="method" xsi:type="string">payflowpro_cc_vault</item>