diff --git a/app/code/Magento/Braintree/Model/Ui/Adminhtml/PayPal/TokenUiComponentProvider.php b/app/code/Magento/Braintree/Model/Ui/Adminhtml/PayPal/TokenUiComponentProvider.php
new file mode 100644
index 0000000000000000000000000000000000000000..fd94e18e2cd94b4e4abca81c28d5dcf90c56ff92
--- /dev/null
+++ b/app/code/Magento/Braintree/Model/Ui/Adminhtml/PayPal/TokenUiComponentProvider.php
@@ -0,0 +1,84 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Braintree\Model\Ui\Adminhtml\PayPal;
+
+use Magento\Braintree\Gateway\Config\PayPal\Config;
+use Magento\Braintree\Model\Ui\ConfigProvider;
+use Magento\Braintree\Model\Ui\PayPal\ConfigProvider as PayPalConfigProvider;
+use Magento\Framework\UrlInterface;
+use Magento\Framework\View\Element\Template;
+use Magento\Vault\Api\Data\PaymentTokenInterface;
+use Magento\Vault\Model\Ui\TokenUiComponentInterfaceFactory;
+use Magento\Vault\Model\Ui\TokenUiComponentProviderInterface;
+
+/**
+ * Gets Ui component configuration for Braintree PayPal Vault
+ */
+class TokenUiComponentProvider implements TokenUiComponentProviderInterface
+{
+
+    /**
+     * @var TokenUiComponentInterfaceFactory
+     */
+    private $componentFactory;
+
+    /**
+     * @var UrlInterface
+     */
+    private $urlBuilder;
+
+    /**
+     * @var Config
+     */
+    private $config;
+
+    /**
+     * @param TokenUiComponentInterfaceFactory $componentFactory
+     * @param UrlInterface $urlBuilder
+     * @param Config $config
+     */
+    public function __construct(
+        TokenUiComponentInterfaceFactory $componentFactory,
+        UrlInterface $urlBuilder,
+        Config $config
+    ) {
+        $this->componentFactory = $componentFactory;
+        $this->urlBuilder = $urlBuilder;
+        $this->config = $config;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getComponentForToken(PaymentTokenInterface $paymentToken)
+    {
+        $data = json_decode($paymentToken->getTokenDetails() ?: '{}', true);
+        $data['icon'] = $this->config->getPayPalIcon();
+        $component = $this->componentFactory->create(
+            [
+                'config' => [
+                    'code' => PayPalConfigProvider::PAYPAL_VAULT_CODE,
+                    'nonceUrl' => $this->getNonceRetrieveUrl(),
+                    TokenUiComponentProviderInterface::COMPONENT_DETAILS => $data,
+                    TokenUiComponentProviderInterface::COMPONENT_PUBLIC_HASH => $paymentToken->getPublicHash(),
+                    'template' => 'Magento_Braintree::form/paypal/vault.phtml'
+                ],
+                'name' => Template::class
+            ]
+        );
+
+        return $component;
+    }
+
+    /**
+     * Get url to retrieve payment method nonce
+     * @return string
+     */
+    private function getNonceRetrieveUrl()
+    {
+        return $this->urlBuilder->getUrl(ConfigProvider::CODE . '/payment/getnonce', ['_secure' => true]);
+    }
+}
diff --git a/app/code/Magento/Braintree/Model/Ui/Adminhtml/TokenUiComponentProvider.php b/app/code/Magento/Braintree/Model/Ui/Adminhtml/TokenUiComponentProvider.php
index 6cfc96ea23d0d158646c4e30be4f63aeb8ca2cd0..420b8365b3ea4f64de1ad6008238c4a706aaa4b6 100644
--- a/app/code/Magento/Braintree/Model/Ui/Adminhtml/TokenUiComponentProvider.php
+++ b/app/code/Magento/Braintree/Model/Ui/Adminhtml/TokenUiComponentProvider.php
@@ -49,6 +49,7 @@ class TokenUiComponentProvider implements TokenUiComponentProviderInterface
         $component = $this->componentFactory->create(
             [
                 'config' => [
+                    'code' => ConfigProvider::CC_VAULT_CODE,
                     'nonceUrl' => $this->getNonceRetrieveUrl(),
                     TokenUiComponentProviderInterface::COMPONENT_DETAILS => $data,
                     TokenUiComponentProviderInterface::COMPONENT_PUBLIC_HASH => $paymentToken->getPublicHash(),
diff --git a/app/code/Magento/Braintree/Test/Unit/Model/Ui/Adminhtml/PayPal/TokenUiComponentProviderTest.php b/app/code/Magento/Braintree/Test/Unit/Model/Ui/Adminhtml/PayPal/TokenUiComponentProviderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..bdc39cbc5b868b52484cd550c833cfa147e68407
--- /dev/null
+++ b/app/code/Magento/Braintree/Test/Unit/Model/Ui/Adminhtml/PayPal/TokenUiComponentProviderTest.php
@@ -0,0 +1,114 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Braintree\Test\Unit\Model\Ui\Adminhtml\PayPal;
+
+use Magento\Braintree\Gateway\Config\PayPal\Config;
+use Magento\Braintree\Model\Ui\Adminhtml\PayPal\TokenUiComponentProvider;
+use Magento\Framework\UrlInterface;
+use Magento\Vault\Api\Data\PaymentTokenInterface;
+use Magento\Vault\Model\Ui\TokenUiComponentInterface;
+use Magento\Vault\Model\Ui\TokenUiComponentInterfaceFactory;
+use PHPUnit_Framework_MockObject_MockObject as MockObject;
+
+/**
+ * Contains methods to test PayPal token Ui component provider
+ */
+class TokenUiComponentProviderTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var TokenUiComponentInterfaceFactory|MockObject
+     */
+    private $componentFactory;
+
+    /**
+     * @var UrlInterface|MockObject
+     */
+    private $urlBuilder;
+
+    /**
+     * @var Config|MockObject
+     */
+    private $config;
+
+    /**
+     * @var TokenUiComponentProvider
+     */
+    private $tokenUiComponentProvider;
+
+    protected function setUp()
+    {
+        $this->componentFactory = $this->getMockBuilder(TokenUiComponentInterfaceFactory::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+
+        $this->urlBuilder = $this->getMock(UrlInterface::class);
+
+        $this->config = $this->getMockBuilder(Config::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['getPayPalIcon'])
+            ->getMock();
+
+        $this->tokenUiComponentProvider = new TokenUiComponentProvider(
+            $this->componentFactory,
+            $this->urlBuilder,
+            $this->config
+        );
+    }
+
+    /**
+     * @covers \Magento\Braintree\Model\Ui\Adminhtml\PayPal\TokenUiComponentProvider::getComponentForToken
+     */
+    public function testGetComponentForToken()
+    {
+        $nonceUrl = 'https://payment/adminhtml/nonce/url';
+        $payerEmail = 'john.doe@test.com';
+        $icon = [
+            'url' => 'https://payment/adminhtml/icon.png',
+            'width' => 48,
+            'height' => 32
+        ];
+
+        $expected = [
+            'code' => 'vault',
+            'nonceUrl' => $nonceUrl,
+            'details' => [
+                'payerEmail' => $payerEmail,
+                'icon' => $icon
+            ],
+            'template' => 'vault.phtml'
+        ];
+
+        $this->config->expects(static::once())
+            ->method('getPayPalIcon')
+            ->willReturn($icon);
+
+        $paymentToken = $this->getMock(PaymentTokenInterface::class);
+        $paymentToken->expects(static::once())
+            ->method('getTokenDetails')
+            ->willReturn('{"payerEmail":" ' . $payerEmail . '"}');
+        $paymentToken->expects(static::once())
+            ->method('getPublicHash')
+            ->willReturn('cmk32dl21l');
+
+        $this->urlBuilder->expects(static::once())
+            ->method('getUrl')
+            ->willReturn($nonceUrl);
+
+        $tokenComponent = $this->getMock(TokenUiComponentInterface::class);
+        $tokenComponent->expects(static::once())
+            ->method('getConfig')
+            ->willReturn($expected);
+
+        $this->componentFactory->expects(static::once())
+            ->method('create')
+            ->willReturn($tokenComponent);
+
+        $component = $this->tokenUiComponentProvider->getComponentForToken($paymentToken);
+        static::assertEquals($tokenComponent, $component);
+        static::assertEquals($expected, $component->getConfig());
+    }
+}
diff --git a/app/code/Magento/Braintree/Test/Unit/Model/Ui/Adminhtml/TokenUiComponentProviderTest.php b/app/code/Magento/Braintree/Test/Unit/Model/Ui/Adminhtml/TokenUiComponentProviderTest.php
index d1665c71804cfa0c4ce8d1a6d2db96e09afd932c..f159136cf4c460d43b9191b58b536ff646da8b9c 100644
--- a/app/code/Magento/Braintree/Test/Unit/Model/Ui/Adminhtml/TokenUiComponentProviderTest.php
+++ b/app/code/Magento/Braintree/Test/Unit/Model/Ui/Adminhtml/TokenUiComponentProviderTest.php
@@ -7,10 +7,10 @@ namespace Magento\Braintree\Test\Unit\Model\Ui\Adminhtml;
 
 use Magento\Braintree\Model\Ui\Adminhtml\TokenUiComponentProvider;
 use Magento\Framework\UrlInterface;
-use Magento\Framework\View\Element\Template;
 use Magento\Vault\Api\Data\PaymentTokenInterface;
 use Magento\Vault\Model\Ui\TokenUiComponentInterface;
 use Magento\Vault\Model\Ui\TokenUiComponentInterfaceFactory;
+use PHPUnit_Framework_MockObject_MockObject as MockObject;
 
 /**
  * Class TokenUiComponentProviderTest
@@ -19,12 +19,12 @@ class TokenUiComponentProviderTest extends \PHPUnit_Framework_TestCase
 {
 
     /**
-     * @var TokenUiComponentInterfaceFactory|\PHPUnit_Framework_MockObject_MockObject
+     * @var TokenUiComponentInterfaceFactory|MockObject
      */
     private $componentFactory;
 
     /**
-     * @var UrlInterface|\PHPUnit_Framework_MockObject_MockObject
+     * @var UrlInterface|MockObject
      */
     private $urlBuilder;
 
@@ -59,6 +59,7 @@ class TokenUiComponentProviderTest extends \PHPUnit_Framework_TestCase
         $expirationDate = '12/2015';
 
         $expected = [
+            'code' => 'vault',
             'nonceUrl' => $nonceUrl,
             'details' => [
                 'type' => $type,
diff --git a/app/code/Magento/Braintree/etc/adminhtml/di.xml b/app/code/Magento/Braintree/etc/adminhtml/di.xml
index f252b977f20bd8b8616c7ddd90c08dd7ad0c5435..d154aabbb01b5cdd9db9beba05481c167fbec65d 100644
--- a/app/code/Magento/Braintree/etc/adminhtml/di.xml
+++ b/app/code/Magento/Braintree/etc/adminhtml/di.xml
@@ -47,6 +47,7 @@
         <arguments>
             <argument name="tokenUiComponentProviders" xsi:type="array">
                 <item name="braintree" xsi:type="object">Magento\Braintree\Model\Ui\Adminhtml\TokenUiComponentProvider</item>
+                <item name="braintree_paypal" xsi:type="object">Magento\Braintree\Model\Ui\Adminhtml\PayPal\TokenUiComponentProvider</item>
             </argument>
         </arguments>
     </type>
diff --git a/app/code/Magento/Braintree/etc/config.xml b/app/code/Magento/Braintree/etc/config.xml
index 095a8419c8529f20beb5f9a2be4499bade1f1301..bf19324ae7a0225b82106f26f291462b9d1e0b12 100644
--- a/app/code/Magento/Braintree/etc/config.xml
+++ b/app/code/Magento/Braintree/etc/config.xml
@@ -71,7 +71,8 @@
             </braintree_cc_vault>
             <braintree_paypal_vault>
                 <model>BraintreePayPalVaultFacade</model>
-                <title>Vault Token (Braintree PayPal)</title>
+                <title>Stored Accounts (Braintree PayPal)</title>
+                <can_use_internal>1</can_use_internal>
             </braintree_paypal_vault>
         </payment>
     </default>
diff --git a/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_index.xml b/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_index.xml
index 571c5ededeb993fd0e45d91cc2d1512d531179de..5e4f36e1c1fb4d4916e620cb440829357b1071ea 100644
--- a/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_index.xml
+++ b/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_index.xml
@@ -18,6 +18,10 @@
                 <argument name="method" xsi:type="string">braintree_cc_vault</argument>
                 <argument name="template" xsi:type="string">Magento_Vault::form/vault.phtml</argument>
             </action>
+            <action method="setMethodFormTemplate">
+                <argument name="method" xsi:type="string">braintree_paypal_vault</argument>
+                <argument name="template" xsi:type="string">Magento_Vault::form/vault.phtml</argument>
+            </action>
         </referenceBlock>
         <referenceBlock name="content">
             <block name="braintree_payment_script"
diff --git a/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_load_block_billing_method.xml b/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_load_block_billing_method.xml
index 68e0abc0cd009d9c2a30dff4cb545aa1b85f151c..579b82c61f690ed59bf94423e4aab00348a1546e 100644
--- a/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_load_block_billing_method.xml
+++ b/app/code/Magento/Braintree/view/adminhtml/layout/sales_order_create_load_block_billing_method.xml
@@ -18,6 +18,10 @@
                 <argument name="method" xsi:type="string">braintree_cc_vault</argument>
                 <argument name="template" xsi:type="string">Magento_Vault::form/vault.phtml</argument>
             </action>
+            <action method="setMethodFormTemplate">
+                <argument name="method" xsi:type="string">braintree_paypal_vault</argument>
+                <argument name="template" xsi:type="string">Magento_Vault::form/vault.phtml</argument>
+            </action>
         </referenceBlock>
     </body>
 </page>
\ No newline at end of file
diff --git a/app/code/Magento/Braintree/view/adminhtml/templates/form/paypal/vault.phtml b/app/code/Magento/Braintree/view/adminhtml/templates/form/paypal/vault.phtml
new file mode 100644
index 0000000000000000000000000000000000000000..22930bbc656660efb6f5981fd2fb8e137ac591df
--- /dev/null
+++ b/app/code/Magento/Braintree/view/adminhtml/templates/form/paypal/vault.phtml
@@ -0,0 +1,30 @@
+<?php
+use Magento\Vault\Model\Ui\TokenUiComponentProviderInterface;
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+// @codingStandardsIgnoreFile
+
+/** @var \Magento\Framework\View\Element\Template $block */
+$details = $block->getData(TokenUiComponentProviderInterface::COMPONENT_DETAILS);
+$icon = $details['icon'];
+$id = $block->escapeHtml($block->getData('id'));
+?>
+<div data-mage-init='{
+        "Magento_Braintree/js/vault": {
+            "container": "payment_<?php /* @noEscape */ echo $id; ?>",
+            "publicHash": "<?php echo $block->escapeHtml($block->getData(TokenUiComponentProviderInterface::COMPONENT_PUBLIC_HASH)); ?>",
+            "code": "<?php echo $block->escapeHtml($block->getData('code')); ?>",
+            "nonceUrl": "<?php echo $block->escapeUrl($block->getData('nonceUrl')); ?>"
+        }
+    }' id="payment_<?php /* @noEscape */ echo $id;?>" class="admin__field">
+    <div class="admin__field-control control">
+        <input type="radio" id="token_switcher_<?php /* @noEscape */ echo $id; ?>" name="payment[token_switcher]"/>
+        <img src="<?php echo $block->escapeUrl($icon['url']); ?>"
+             width="<?php echo $block->escapeHtml($icon['width']); ?>"
+             height="<?php echo $block->escapeHtml($icon['height']); ?>"
+             class="payment-icon" >
+        <span><?php echo $block->escapeHtml($details['payerEmail']); ?></span>
+    </div>
+</div>
diff --git a/app/code/Magento/Braintree/view/adminhtml/templates/form/vault.phtml b/app/code/Magento/Braintree/view/adminhtml/templates/form/vault.phtml
index 38114618847259c143ec2794d13ccaf5a5ff1349..001422d4bf911a40094d2174f9bb346866175c59 100644
--- a/app/code/Magento/Braintree/view/adminhtml/templates/form/vault.phtml
+++ b/app/code/Magento/Braintree/view/adminhtml/templates/form/vault.phtml
@@ -7,7 +7,7 @@ use Magento\Vault\Model\Ui\TokenUiComponentProviderInterface;
 // @codingStandardsIgnoreFile
 
 /** @var \Magento\Framework\View\Element\Template $block */
-$details = $block->getData('details');
+$details = $block->getData(TokenUiComponentProviderInterface::COMPONENT_DETAILS);
 $icon = $block->getData('icons')[$details['type']];
 $id = $block->escapeHtml($block->getData('id'));
 ?>
@@ -15,6 +15,7 @@ $id = $block->escapeHtml($block->getData('id'));
         "Magento_Braintree/js/vault": {
             "container": "payment_<?php /* @noEscape */ echo $id; ?>",
             "publicHash": "<?php echo $block->escapeHtml($block->getData(TokenUiComponentProviderInterface::COMPONENT_PUBLIC_HASH)); ?>",
+            "code": "<?php echo $block->escapeHtml($block->getData('code')); ?>",
             "nonceUrl": "<?php echo $block->escapeUrl($block->getData('nonceUrl')); ?>"
         }
     }' id="payment_<?php /* @noEscape */ echo $id;?>" class="admin__field">
diff --git a/app/code/Magento/Braintree/view/adminhtml/web/js/vault.js b/app/code/Magento/Braintree/view/adminhtml/web/js/vault.js
index fcff173e7fcd44f714a6ec9f4282f838b04654aa..ea832acb537e0051e34f976c050c9b8bd7d289b7 100644
--- a/app/code/Magento/Braintree/view/adminhtml/web/js/vault.js
+++ b/app/code/Magento/Braintree/view/adminhtml/web/js/vault.js
@@ -14,7 +14,8 @@ define([
     return Class.extend({
         defaults: {
             $selector: null,
-            selector: 'edit_form'
+            selector: 'edit_form',
+            $container: null
         },
 
         /**
@@ -25,17 +26,18 @@ define([
             var self = this;
 
             self.$selector = $('#' + self.selector);
+            self.$container =  $('#' + self.container);
             self.$selector.on(
                 'setVaultNotActive',
                 function () {
-                    self.$selector.off('submitOrder.braintree_vault');
+                    self.$selector.off('submitOrder.' + self.getCode());
                 }
             );
-            this._super();
+            self._super();
 
-            this.initEventHandlers();
+            self.initEventHandlers();
 
-            return this;
+            return self;
         },
 
         /**
@@ -43,14 +45,14 @@ define([
          * @returns {String}
          */
         getCode: function () {
-            return 'braintree';
+            return this.code;
         },
 
         /**
          * Init event handlers
          */
         initEventHandlers: function () {
-            $('#' + this.container).find('[name="payment[token_switcher]"]')
+            $(this.$container).find('[name="payment[token_switcher]"]')
                 .on('click', this.selectPaymentMethod.bind(this));
         },
 
@@ -66,7 +68,7 @@ define([
          * Enable form event listeners
          */
         enableEventListeners: function () {
-            this.$selector.on('submitOrder.braintree_vault', this.submitOrder.bind(this));
+            this.$selector.on('submitOrder.' + this.getCode(), this.submitOrder.bind(this));
         },
 
         /**
@@ -129,7 +131,7 @@ define([
             this.createPublicHashSelector();
 
             this.$selector.find('[name="payment[public_hash]"]').val(this.publicHash);
-            this.$selector.find('#braintree_nonce').val(nonce);
+            this.$container.find('#' + this.getNonceSelectorName()).val(nonce);
         },
 
         /**
@@ -138,16 +140,16 @@ define([
         createPublicHashSelector: function () {
             var $input;
 
-            if (this.$selector.find('#braintree_nonce').size() === 0) {
+            if (this.$container.find('#' + this.getNonceSelectorName()).size() === 0) {
                 $input = $('<input>').attr(
                     {
                         type: 'hidden',
-                        id: 'braintree_nonce',
+                        id: this.getNonceSelectorName(),
                         name: 'payment[payment_method_nonce]'
                     }
                 );
 
-                $input.appendTo(this.$selector);
+                $input.appendTo(this.$container);
                 $input.prop('disabled', false);
             }
         },
@@ -160,6 +162,14 @@ define([
             alert({
                 content: message
             });
+        },
+
+        /**
+         * Get selector name for nonce input
+         * @returns {String}
+         */
+        getNonceSelectorName: function () {
+            return 'nonce_' + this.getCode();
         }
     });
 });
diff --git a/app/code/Magento/Vault/Model/Method/Vault.php b/app/code/Magento/Vault/Model/Method/Vault.php
index 41a2d6b0e26efcd1c6745f5d5fbc2842ae6c8513..ca6fe06f91eef8ce52e5f0c5b0cdbd7f439f5710 100644
--- a/app/code/Magento/Vault/Model/Method/Vault.php
+++ b/app/code/Magento/Vault/Model/Method/Vault.php
@@ -5,17 +5,16 @@
  */
 namespace Magento\Vault\Model\Method;
 
-use Magento\Framework\DataObject;
 use Magento\Framework\Event\ManagerInterface;
 use Magento\Framework\ObjectManagerInterface;
 use Magento\Payment\Gateway\Command;
-use Magento\Sales\Api\Data\OrderPaymentExtensionInterfaceFactory;
 use Magento\Payment\Gateway\Config\ValueHandlerPoolInterface;
 use Magento\Payment\Gateway\ConfigFactoryInterface;
 use Magento\Payment\Gateway\ConfigInterface;
 use Magento\Payment\Model\InfoInterface;
 use Magento\Payment\Model\MethodInterface;
 use Magento\Payment\Observer\AbstractDataAssignObserver;
+use Magento\Sales\Api\Data\OrderPaymentExtensionInterfaceFactory;
 use Magento\Sales\Api\Data\OrderPaymentInterface;
 use Magento\Sales\Model\Order\Payment;
 use Magento\Vault\Api\Data\PaymentTokenInterface;
@@ -275,7 +274,12 @@ final class Vault implements VaultPaymentInterface
      */
     public function canUseInternal()
     {
-        return $this->getVaultProvider()->canUseInternal();
+        $isInternalAllowed = $this->getConfiguredValue('can_use_internal');
+        // if config has't been specified for Vault, need to check payment provider option
+        if ($isInternalAllowed === null) {
+            return $this->getVaultProvider()->canUseInternal();
+        }
+        return (bool) $isInternalAllowed;
     }
 
     /**
diff --git a/app/code/Magento/Vault/Model/Ui/Adminhtml/TokensConfigProvider.php b/app/code/Magento/Vault/Model/Ui/Adminhtml/TokensConfigProvider.php
index 98e7728f732fe51bcea79e555c5333a9cbd86684..f3a2cbfa78739d0ee748b5e38a01176ae6ed7e67 100644
--- a/app/code/Magento/Vault/Model/Ui/Adminhtml/TokensConfigProvider.php
+++ b/app/code/Magento/Vault/Model/Ui/Adminhtml/TokensConfigProvider.php
@@ -221,9 +221,11 @@ final class TokensConfigProvider
      */
     private function getPaymentTokenEntityId()
     {
-        return $this->getPaymentTokenManagement()
-            ->getByPaymentId($this->getOrderPaymentEntityId())
-            ->getEntityId();
+        $paymentToken = $this->getPaymentTokenManagement()->getByPaymentId($this->getOrderPaymentEntityId());
+        if ($paymentToken === null) {
+            throw new NoSuchEntityException(__('No available payment tokens for specified order payment.'));
+        }
+        return $paymentToken->getEntityId();
     }
 
     /**
diff --git a/app/code/Magento/Vault/Test/Unit/Model/Method/VaultTest.php b/app/code/Magento/Vault/Test/Unit/Model/Method/VaultTest.php
index 8bded498dab765a442ced658ba2562db81ca5b7e..ade93c9367858eafb1cfdf64035d2d4f9354e8a0 100644
--- a/app/code/Magento/Vault/Test/Unit/Model/Method/VaultTest.php
+++ b/app/code/Magento/Vault/Test/Unit/Model/Method/VaultTest.php
@@ -8,6 +8,8 @@ namespace Magento\Vault\Test\Unit\Model\Method;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Payment\Gateway\Command\CommandManagerInterface;
 use Magento\Payment\Gateway\Command\CommandManagerPoolInterface;
+use Magento\Payment\Gateway\Config\ValueHandlerInterface;
+use Magento\Payment\Gateway\Config\ValueHandlerPoolInterface;
 use Magento\Payment\Gateway\ConfigInterface;
 use Magento\Payment\Model\InfoInterface;
 use Magento\Payment\Model\MethodInterface;
@@ -19,6 +21,7 @@ use Magento\Vault\Api\Data\PaymentTokenInterface;
 use Magento\Vault\Api\PaymentTokenManagementInterface;
 use Magento\Vault\Model\Method\Vault;
 use Magento\Vault\Model\VaultPaymentInterface;
+use PHPUnit_Framework_MockObject_MockObject as MockObject;
 
 /**
  * Class VaultTest
@@ -31,9 +34,15 @@ class VaultTest extends \PHPUnit_Framework_TestCase
      */
     private $objectManager;
 
+    /**
+     * @var MethodInterface|MockObject
+     */
+    private $vaultProvider;
+
     public function setUp()
     {
         $this->objectManager = new ObjectManager($this);
+        $this->vaultProvider = $this->getMock(MethodInterface::class);
     }
 
     /**
@@ -137,8 +146,6 @@ class VaultTest extends \PHPUnit_Framework_TestCase
         $commandManagerPool = $this->getMock(CommandManagerPoolInterface::class);
         $commandManager = $this->getMock(CommandManagerInterface::class);
 
-        $vaultProvider = $this->getMock(MethodInterface::class);
-
         $tokenManagement = $this->getMock(PaymentTokenManagementInterface::class);
         $token = $this->getMock(PaymentTokenInterface::class);
 
@@ -161,7 +168,7 @@ class VaultTest extends \PHPUnit_Framework_TestCase
             ->method('setVaultPaymentToken')
             ->with($token);
 
-        $vaultProvider->expects(static::atLeastOnce())
+        $this->vaultProvider->expects(static::atLeastOnce())
             ->method('getCode')
             ->willReturn($vaultProviderCode);
         $commandManagerPool->expects(static::once())
@@ -188,7 +195,7 @@ class VaultTest extends \PHPUnit_Framework_TestCase
             [
                 'tokenManagement' => $tokenManagement,
                 'commandManagerPool' => $commandManagerPool,
-                'vaultProvider' => $vaultProvider
+                'vaultProvider' => $this->vaultProvider
             ]
         );
         $model->authorize($paymentModel, $amount);
@@ -235,10 +242,9 @@ class VaultTest extends \PHPUnit_Framework_TestCase
     {
         $storeId = 1;
         $quote = $this->getMockForAbstractClass(CartInterface::class);
-        $vaultProvider = $this->getMockForAbstractClass(MethodInterface::class);
         $config = $this->getMockForAbstractClass(ConfigInterface::class);
 
-        $vaultProvider->expects(static::once())
+        $this->vaultProvider->expects(static::once())
             ->method('isAvailable')
             ->with($quote)
             ->willReturn($isAvailableProvider);
@@ -255,7 +261,7 @@ class VaultTest extends \PHPUnit_Framework_TestCase
         /** @var Vault $model */
         $model = $this->objectManager->getObject(Vault::class, [
             'config' => $config,
-            'vaultProvider' => $vaultProvider
+            'vaultProvider' => $this->vaultProvider
         ]);
         $actual = $model->isAvailable($quote);
         static::assertEquals($expected, $actual);
@@ -281,11 +287,9 @@ class VaultTest extends \PHPUnit_Framework_TestCase
     public function testIsAvailableWithoutQuote()
     {
         $quote = null;
-
-        $vaultProvider = $this->getMockForAbstractClass(MethodInterface::class);
         $config = $this->getMockForAbstractClass(ConfigInterface::class);
 
-        $vaultProvider->expects(static::once())
+        $this->vaultProvider->expects(static::once())
             ->method('isAvailable')
             ->with($quote)
             ->willReturn(true);
@@ -298,8 +302,60 @@ class VaultTest extends \PHPUnit_Framework_TestCase
         /** @var Vault $model */
         $model = $this->objectManager->getObject(Vault::class, [
             'config' => $config,
-            'vaultProvider' => $vaultProvider
+            'vaultProvider' => $this->vaultProvider
         ]);
         static::assertFalse($model->isAvailable($quote));
     }
+
+    /**
+     * @covers \Magento\Vault\Model\Method\Vault::canUseInternal
+     * @param bool|null $configValue
+     * @param bool|null $paymentValue
+     * @param bool $expected
+     * @dataProvider internalUsageDataProvider
+     */
+    public function testCanUseInternal($configValue, $paymentValue, $expected)
+    {
+        $handlerPool = $this->getMock(ValueHandlerPoolInterface::class);
+        $handler = $this->getMock(ValueHandlerInterface::class);
+
+        $handlerPool->expects(static::once())
+            ->method('get')
+            ->with('can_use_internal')
+            ->willReturn($handler);
+
+        $handler->expects(static::once())
+            ->method('handle')
+            ->with(['field' => 'can_use_internal'], null)
+            ->willReturn($configValue);
+
+        $this->vaultProvider->expects(static::any())
+            ->method('canUseInternal')
+            ->willReturn($paymentValue);
+
+        /** @var Vault $model */
+        $model = $this->objectManager->getObject(Vault::class, [
+            'vaultProvider' => $this->vaultProvider,
+            'valueHandlerPool' => $handlerPool,
+        ]);
+        static::assertEquals($expected, $model->canUseInternal());
+    }
+
+    /**
+     * Get list of variations for testing canUseInternal method
+     * @return array
+     */
+    public function internalUsageDataProvider()
+    {
+        return [
+            ['configValue' => true, 'paymentValue' => true, 'expected' => true],
+            ['configValue' => true, 'paymentValue' => null, 'expected' => true],
+            ['configValue' => true, 'paymentValue' => false, 'expected' => true],
+            ['configValue' => false, 'paymentValue' => true, 'expected' => false],
+            ['configValue' => false, 'paymentValue' => false, 'expected' => false],
+            ['configValue' => null, 'paymentValue' => true, 'expected' => true],
+            ['configValue' => null, 'paymentValue' => false, 'expected' => false],
+            ['configValue' => null, 'paymentValue' => null, 'expected' => false],
+        ];
+    }
 }
diff --git a/app/code/Magento/Vault/Test/Unit/Model/Ui/Adminhtml/TokensConfigProviderTest.php b/app/code/Magento/Vault/Test/Unit/Model/Ui/Adminhtml/TokensConfigProviderTest.php
index 38948b004eebc358ce82eddf8bf2af88e1685c8c..bbac491386c44a231a1cc650a2ba3acfca791282 100644
--- a/app/code/Magento/Vault/Test/Unit/Model/Ui/Adminhtml/TokensConfigProviderTest.php
+++ b/app/code/Magento/Vault/Test/Unit/Model/Ui/Adminhtml/TokensConfigProviderTest.php
@@ -13,6 +13,7 @@ use Magento\Framework\Api\SearchCriteriaBuilder;
 use Magento\Framework\Exception\InputException;
 use Magento\Framework\Exception\NoSuchEntityException;
 use Magento\Framework\Intl\DateTimeFactory;
+use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Framework\TestFramework\Unit\Matcher\MethodInvokedAtIndex;
 use Magento\Payment\Helper\Data;
 use Magento\Sales\Api\Data\OrderInterface;
@@ -29,7 +30,6 @@ use Magento\Vault\Model\Ui\TokenUiComponentInterface;
 use Magento\Vault\Model\Ui\TokenUiComponentProviderInterface;
 use Magento\Vault\Model\VaultPaymentInterface;
 use PHPUnit_Framework_MockObject_MockObject as MockObject;
-use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 
 /**
  * Class TokensConfigProviderTest
@@ -104,11 +104,21 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
      */
     private $orderRepository;
 
+    /**
+     * @var TokenUiComponentProviderInterface|MockObject
+     */
+    private $tokenComponentProvider;
+
     /**
      * @var ObjectManager
      */
     private $objectManager;
 
+    /**
+     * @var TokensConfigProvider
+     */
+    private $configProvider;
+
     protected function setUp()
     {
         $this->paymentTokenRepository = $this->getMockBuilder(PaymentTokenRepositoryInterface::class)
@@ -138,6 +148,38 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
         $this->vaultPayment = $this->getMockForAbstractClass(VaultPaymentInterface::class);
         
         $this->objectManager = new ObjectManager($this);
+
+        $this->initStoreMock();
+
+        $this->tokenComponentProvider = $this->getMock(TokenUiComponentProviderInterface::class);
+
+        $this->configProvider = new TokensConfigProvider(
+            $this->session,
+            $this->paymentTokenRepository,
+            $this->filterBuilder,
+            $this->searchCriteriaBuilder,
+            $this->storeManager,
+            $this->dateTimeFactory,
+            [
+                self::VAULT_PROVIDER_CODE => $this->tokenComponentProvider
+            ]
+        );
+
+        $this->objectManager->setBackwardCompatibleProperty(
+            $this->configProvider,
+            'paymentDataHelper',
+            $this->paymentDataHelper
+        );
+        $this->objectManager->setBackwardCompatibleProperty(
+            $this->configProvider,
+            'paymentTokenManagement',
+            $this->paymentTokenManagement
+        );
+        $this->objectManager->setBackwardCompatibleProperty(
+            $this->configProvider,
+            'orderRepository',
+            $this->orderRepository
+        );
     }
 
     /**
@@ -147,8 +189,6 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
     {
         $customerId = 1;
 
-        $this->initStoreMock();
-
         $this->session->expects(static::once())
             ->method('getCustomerId')
             ->willReturn($customerId);
@@ -170,7 +210,7 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
         $token = $this->getMockBuilder(PaymentTokenInterface::class)
             ->getMockForAbstractClass();
 
-        list($tokenUiComponent, $tokenUiComponentProvider) = $this->getTokenUiComponentProvider($token);
+        $tokenUiComponent = $this->getTokenUiComponentProvider($token);
 
         $searchCriteria = $this->getSearchCriteria($customerId, self::ENTITY_ID, self::VAULT_PROVIDER_CODE);
 
@@ -197,25 +237,7 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
             ->method('getItems')
             ->willReturn([$token]);
 
-        $configProvider = new TokensConfigProvider(
-            $this->session,
-            $this->paymentTokenRepository,
-            $this->filterBuilder,
-            $this->searchCriteriaBuilder,
-            $this->storeManager,
-            $this->dateTimeFactory,
-            [
-                self::VAULT_PROVIDER_CODE => $tokenUiComponentProvider
-            ]
-        );
-
-        $this->objectManager->setBackwardCompatibleProperty(
-            $configProvider,
-            'paymentDataHelper',
-            $this->paymentDataHelper
-        );
-
-        static::assertEquals([$tokenUiComponent], $configProvider->getTokensComponents(self::VAULT_PAYMENT_CODE));
+        static::assertEquals([$tokenUiComponent], $this->configProvider->getTokensComponents(self::VAULT_PAYMENT_CODE));
     }
 
     /**
@@ -263,7 +285,7 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
             ->method('getEntityId')
             ->willReturn(self::ENTITY_ID);
 
-        list($tokenUiComponent, $tokenUiComponentProvider) = $this->getTokenUiComponentProvider($token);
+        $tokenUiComponent = $this->getTokenUiComponentProvider($token);
 
         $searchCriteria = $this->getSearchCriteria($customerId, self::ENTITY_ID, self::VAULT_PROVIDER_CODE);
 
@@ -290,35 +312,7 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
             ->method('getItems')
             ->willReturn([$token]);
 
-        $configProvider = new TokensConfigProvider(
-            $this->session,
-            $this->paymentTokenRepository,
-            $this->filterBuilder,
-            $this->searchCriteriaBuilder,
-            $this->storeManager,
-            $this->dateTimeFactory,
-            [
-                self::VAULT_PROVIDER_CODE => $tokenUiComponentProvider
-            ]
-        );
-
-        $this->objectManager->setBackwardCompatibleProperty(
-            $configProvider,
-            'paymentDataHelper',
-            $this->paymentDataHelper
-        );
-        $this->objectManager->setBackwardCompatibleProperty(
-            $configProvider,
-            'paymentTokenManagement',
-            $this->paymentTokenManagement
-        );
-        $this->objectManager->setBackwardCompatibleProperty(
-            $configProvider,
-            'orderRepository',
-            $this->orderRepository
-        );
-
-        static::assertEquals([$tokenUiComponent], $configProvider->getTokensComponents(self::VAULT_PAYMENT_CODE));
+        static::assertEquals([$tokenUiComponent], $this->configProvider->getTokensComponents(self::VAULT_PAYMENT_CODE));
     }
 
     /**
@@ -330,8 +324,6 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
     {
         $customerId = null;
 
-        $this->initStoreMock();
-
         $this->session->expects(static::once())
             ->method('getCustomerId')
             ->willReturn($customerId);
@@ -366,35 +358,7 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
         $this->searchCriteriaBuilder->expects(self::never())
             ->method('addFilters');
 
-        $configProvider = new TokensConfigProvider(
-            $this->session,
-            $this->paymentTokenRepository,
-            $this->filterBuilder,
-            $this->searchCriteriaBuilder,
-            $this->storeManager,
-            $this->dateTimeFactory,
-            [
-                self::VAULT_PROVIDER_CODE => $this->getMock(TokenUiComponentProviderInterface::class)
-            ]
-        );
-
-        $this->objectManager->setBackwardCompatibleProperty(
-            $configProvider,
-            'paymentDataHelper',
-            $this->paymentDataHelper
-        );
-        $this->objectManager->setBackwardCompatibleProperty(
-            $configProvider,
-            'paymentTokenManagement',
-            $this->paymentTokenManagement
-        );
-        $this->objectManager->setBackwardCompatibleProperty(
-            $configProvider,
-            'orderRepository',
-            $this->orderRepository
-        );
-
-        static::assertEmpty($configProvider->getTokensComponents(self::VAULT_PAYMENT_CODE));
+        static::assertEmpty($this->configProvider->getTokensComponents(self::VAULT_PAYMENT_CODE));
     }
 
     /**
@@ -453,18 +417,66 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
         static::assertEmpty($configProvider->getTokensComponents(self::VAULT_PAYMENT_CODE));
     }
 
+    /**
+     * @covers \Magento\Vault\Model\Ui\Adminhtml\TokensConfigProvider::getTokensComponents
+     */
+    public function testGetTokensComponentsForGuestCustomerWithoutStoredTokens()
+    {
+        $this->session->expects(static::once())
+            ->method('getCustomerId')
+            ->willReturn(null);
+
+        $this->paymentDataHelper->expects(static::once())
+            ->method('getMethodInstance')
+            ->with(self::VAULT_PAYMENT_CODE)
+            ->willReturn($this->vaultPayment);
+
+        $this->vaultPayment->expects(static::once())
+            ->method('isActive')
+            ->with(self::STORE_ID)
+            ->willReturn(true);
+        $this->vaultPayment->expects(static::once())
+            ->method('getProviderCode')
+            ->willReturn(self::VAULT_PROVIDER_CODE);
+
+        $this->session->expects(static::once())
+            ->method('getReordered')
+            ->willReturn(self::ORDER_ID);
+        $this->orderRepository->expects(static::once())
+            ->method('get')
+            ->with(self::ORDER_ID)
+            ->willReturn($this->getOrderMock());
+
+        $this->paymentTokenManagement->expects(static::once())
+            ->method('getByPaymentId')
+            ->with(self::ORDER_PAYMENT_ENTITY_ID)
+            ->willReturn(null);
+
+        $this->filterBuilder->expects(static::once())
+            ->method('setField')
+            ->with(PaymentTokenInterface::ENTITY_ID)
+            ->willReturnSelf();
+        $this->filterBuilder->expects(static::never())
+            ->method('setValue');
+
+        $this->searchCriteriaBuilder->expects(static::never())
+            ->method('addFilters');
+
+        static::assertEmpty($this->configProvider->getTokensComponents(self::VAULT_PAYMENT_CODE));
+    }
+
     /**
      * Create mock object for store
      */
     private function initStoreMock()
     {
         $this->store = $this->getMock(StoreInterface::class);
-        $this->store->expects(static::once())
+        $this->store->expects(static::any())
             ->method('getId')
             ->willReturn(self::STORE_ID);
 
         $this->storeManager = $this->getMock(StoreManagerInterface::class);
-        $this->storeManager->expects(static::once())
+        $this->storeManager->expects(static::any())
             ->method('getStore')
             ->with(null)
             ->willReturn($this->store);
@@ -476,39 +488,37 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
      */
     private function getOrderMock()
     {
-        /** @var OrderInterface|MockObject $orderMock */
-        $orderMock = $this->getMockBuilder(OrderInterface::class)
+        /** @var OrderInterface|MockObject $order */
+        $order = $this->getMockBuilder(OrderInterface::class)
             ->getMockForAbstractClass();
-        /** @var OrderPaymentInterface|MockObject $orderPaymentMock */
-        $orderPaymentMock = $this->getMockBuilder(OrderPaymentInterface::class)
+        /** @var OrderPaymentInterface|MockObject $orderPayment */
+        $orderPayment = $this->getMockBuilder(OrderPaymentInterface::class)
             ->getMockForAbstractClass();
 
-        $orderMock->expects(static::once())
+        $order->expects(static::once())
             ->method('getPayment')
-            ->willReturn($orderPaymentMock);
-        $orderPaymentMock->expects(static::once())
+            ->willReturn($orderPayment);
+        $orderPayment->expects(static::once())
             ->method('getEntityId')
             ->willReturn(self::ORDER_PAYMENT_ENTITY_ID);
 
-        return $orderMock;
+        return $order;
     }
 
     /**
      * Get mock for token ui component provider
      * @param PaymentTokenInterface $token
-     * @return array
+     * @return TokenUiComponentInterface|MockObject
      */
     private function getTokenUiComponentProvider($token)
     {
         $tokenUiComponent = $this->getMock(TokenUiComponentInterface::class);
-
-        $tokenUiComponentProvider = $this->getMock(TokenUiComponentProviderInterface::class);
-        $tokenUiComponentProvider->expects(static::once())
+        $this->tokenComponentProvider->expects(static::once())
             ->method('getComponentForToken')
             ->with($token)
             ->willReturn($tokenUiComponent);
 
-        return [$tokenUiComponent, $tokenUiComponentProvider];
+        return $tokenUiComponent;
     }
 
     /**
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderWithPayPalBraintreeVaultBackendTest.php b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderWithPayPalBraintreeVaultBackendTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..6fde39412d1fe66a987b12cf5cb29e09d81327fe
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderWithPayPalBraintreeVaultBackendTest.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Braintree\Test\TestCase;
+
+use Magento\Mtf\TestCase\Scenario;
+
+/**
+ * Preconditions:
+ * 1. Configure shipping method.
+ * 2. Configure payment method.
+ * 3. Create products.
+ * 4. Create and setup customer.
+ *
+ * Steps:
+ * 1. Log in Storefront.
+ * 2. Add products to the Shopping Cart.
+ * 3. In 'Estimate Shipping and Tax' section specify destination using values from Test Data.
+ * 4. Click the 'Proceed to Checkout' button.
+ * 5. Fill shipping information.
+ * 6. Select shipping method.
+ * 8. Select payment method
+ * 9. Verify order total on review step.
+ * 10. Click 'Continue to PayPal' button.
+ * 11. Click 'Proceed purchase' in popup.
+ * 12. Log in Admin panel.
+ * 13. Open placed order.
+ * 14. Click 'Reorder' button.
+ * 15. Select stored Braintree PayPal token.
+ * 16. Click 'Submit Order'.
+ * 17. Perform assertions.
+ *
+ * @group Braintree
+ * @ZephyrId MAGETWO-59259
+ */
+class CreateOrderWithPayPalBraintreeVaultBackendTest extends Scenario
+{
+    /* tags */
+    const MVP = 'yes';
+
+    const TEST_TYPE = '3rd_party_test';
+
+    const SEVERITY = 'S0';
+    /* end tags */
+
+    /**
+     * Runs test scenario
+     * @return void
+     */
+    public function test()
+    {
+        $this->executeScenario();
+    }
+}
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderWithPayPalBraintreeVaultBackendTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderWithPayPalBraintreeVaultBackendTest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..03e0ba330fa3b74e2a33c2983655ced95cf3dbfe
--- /dev/null
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateOrderWithPayPalBraintreeVaultBackendTest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+ -->
+<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../vendor/magento/mtf/etc/variations.xsd">
+    <testCase name="Magento\Braintree\Test\TestCase\CreateOrderWithPayPalBraintreeVaultBackendTest" summary="Checkout with PayPal Braintree Vault token from Admin">
+        <variation name="CreateOrderWithPayPalBraintreeVaultBackendTestVariation1" summary="Checkout with PayPal Braintree Vault token from Admin" ticketId="MAGETWO-59259">
+            <data name="tag" xsi:type="string">est_type:3rd_party_test, severity:S0</data>
+            <data name="products/0" xsi:type="string">catalogProductSimple::product_10_dollar</data>
+            <data name="customer/dataset" xsi:type="string">default</data>
+            <data name="shippingAddress/dataset" xsi:type="string">US_address_1_without_email</data>
+            <data name="checkoutMethod" xsi:type="string">login</data>
+            <data name="shipping/shipping_service" xsi:type="string">Flat Rate</data>
+            <data name="shipping/shipping_method" xsi:type="string">Fixed</data>
+            <data name="payment/method" xsi:type="string">braintree_paypal</data>
+            <data name="vault/method" xsi:type="string">braintree_paypal_vault</data>
+            <data name="status" xsi:type="string">Processing</data>
+            <data name="configData" xsi:type="string">braintree, braintree_paypal, braintree_paypal_use_vault, braintree_paypal_skip_order_review</data>
+            <data name="prices" xsi:type="array">
+                <item name="grandTotal" xsi:type="string">15.00</item>
+            </data>
+            <constraint name="Magento\Sales\Test\Constraint\AssertOrderSuccessCreateMessage" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertOrderStatusIsCorrect" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertAuthorizationInCommentsHistory" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGrid" />
+            <constraint name="Magento\Sales\Test\Constraint\AssertOrderInOrdersGridOnFrontend" />
+        </variation>
+    </testCase>
+</config>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml
index 4f05723609c2a8305f68a6893787684ae2e3d9df..df6e56eb14826dbcda2ed7c780d2bb02d823b3ea 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/CreateVaultOrderBackendTest.xml
@@ -19,6 +19,7 @@
                 <item name="grandTotal" xsi:type="string">15.00</item>
             </data>
             <data name="payment/method" xsi:type="string">braintree</data>
+            <data name="vault/method" xsi:type="string">braintree_cc_vault</data>
             <data name="creditCardClass" xsi:type="string">credit_card_braintree</data>
             <data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
             <data name="creditCardSave" xsi:type="string">Yes</data>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml
index 88ab2ef65c9a0e75d2eafff8c53fe898d9504efe..2ab0134e62b7add65f9189e89123443099283032 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/TestCase/ReorderUsingVaultTest.xml
@@ -19,6 +19,7 @@
                 <item name="grandTotal" xsi:type="string">15.00</item>
             </data>
             <data name="payment/method" xsi:type="string">braintree</data>
+            <data name="vault/method" xsi:type="string">braintree_cc_vault</data>
             <data name="creditCardClass" xsi:type="string">credit_card_braintree</data>
             <data name="creditCard/dataset" xsi:type="string">visa_braintree</data>
             <data name="configData" xsi:type="string">braintree, braintree_use_vault</data>
diff --git a/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/testcase.xml b/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/testcase.xml
index 34f4be6493838598b9872225997736da38b07ff7..495f455c43a72f4d61029a07a8633fc09744c2f0 100644
--- a/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/testcase.xml
+++ b/dev/tests/functional/tests/app/Magento/Braintree/Test/etc/testcase.xml
@@ -158,4 +158,21 @@
         <step name="changeOrderStatusToPaymentReview" module="Magento_Braintree" next="denyPayment" />
         <step name="denyPayment" module="Magento_Braintree" />
     </scenario>
+    <scenario name="CreateOrderWithPayPalBraintreeVaultBackendTest" firstStep="setupConfiguration">
+        <step name="setupConfiguration" module="Magento_Config" next="createProducts" />
+        <step name="createProducts" module="Magento_Catalog" next="addProductsToTheCart" />
+        <step name="addProductsToTheCart" module="Magento_Checkout" next="estimateShippingAndTax" />
+        <step name="estimateShippingAndTax" module="Magento_Checkout" next="clickProceedToCheckout" />
+        <step name="clickProceedToCheckout" module="Magento_Checkout" next="createCustomer" />
+        <step name="createCustomer" module="Magento_Customer" next="selectCheckoutMethod" />
+        <step name="selectCheckoutMethod" module="Magento_Checkout" next="fillShippingAddress" />
+        <step name="fillShippingAddress" module="Magento_Checkout" next="fillShippingMethod" />
+        <step name="fillShippingMethod" module="Magento_Checkout" next="selectPaymentMethod" />
+        <step name="selectPaymentMethod" module="Magento_Checkout" next="placeOrderWithPaypal" />
+        <step name="placeOrderWithPaypal" module="Magento_Braintree" next="openOrder"/>
+        <step name="openOrder" module="Magento_Sales" next="reorder" />
+        <step name="reorder" module="Magento_Sales" next="useVaultPaymentToken" />
+        <step name="useVaultPaymentToken" module="Magento_Vault" next="submitOrder" />
+        <step name="submitOrder" module="Magento_Sales" />
+    </scenario>
 </config>
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml
index 64a191040b8a451aede65fe73dc9785747509c4f..f431bf4d6a5edf4c9cd67cf97796558ffadb59b8 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/CreateVaultOrderBackendTest.xml
@@ -19,6 +19,7 @@
                 <item name="grandTotal" xsi:type="string">15.00</item>
             </data>
             <data name="payment/method" xsi:type="string">payflowpro</data>
+            <data name="vault/method" xsi:type="string">payflowpro_cc_vault</data>
             <data name="creditCardClass" xsi:type="string">credit_card_admin</data>
             <data name="creditCard/dataset" xsi:type="string">visa_default</data>
             <data name="creditCardSave" xsi:type="string">Yes</data>
diff --git a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml
index bc3ee3cef1c68ba1668891cce3e6f2eb45a4d86d..d74d93053196b39f32c2430c70d0dfddee0d5c50 100644
--- a/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml
+++ b/dev/tests/functional/tests/app/Magento/Paypal/Test/TestCase/ReorderUsingVaultTest.xml
@@ -19,6 +19,7 @@
                 <item name="grandTotal" xsi:type="string">15.00</item>
             </data>
             <data name="payment/method" xsi:type="string">payflowpro</data>
+            <data name="vault/method" xsi:type="string">payflowpro_cc_vault</data>
             <data name="creditCardClass" xsi:type="string">credit_card</data>
             <data name="creditCard/dataset" xsi:type="string">visa_default</data>
             <data name="configData" xsi:type="string">payflowpro, payflowpro_use_vault</data>
diff --git a/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/UseVaultPaymentTokenStep.php b/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/UseVaultPaymentTokenStep.php
index ad693923955d4f439340970eb07ebb7c14789574..066dc7786d892619e84272c69b655cfd8a74f140 100644
--- a/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/UseVaultPaymentTokenStep.php
+++ b/dev/tests/functional/tests/app/Magento/Vault/Test/TestStep/UseVaultPaymentTokenStep.php
@@ -17,20 +17,20 @@ class UseVaultPaymentTokenStep implements TestStepInterface
      * @var OrderCreateIndex
      */
     private $orderCreatePage;
-    
+
     /**
      * @var array
      */
-    private $payment;
+    private $vault;
 
     /**
      * @param OrderCreateIndex $orderCreateIndex
-     * @param array $payment
+     * @param array $vault
      */
-    public function __construct(OrderCreateIndex $orderCreateIndex, array $payment)
+    public function __construct(OrderCreateIndex $orderCreateIndex, array $vault)
     {
         $this->orderCreatePage = $orderCreateIndex;
-        $this->payment = $payment;
+        $this->vault = $vault;
     }
 
     /**
@@ -39,8 +39,7 @@ class UseVaultPaymentTokenStep implements TestStepInterface
     public function run()
     {
         $block = $this->orderCreatePage->getCreateBlock();
-        $this->payment['method'] .= '_cc_vault';
-        $block->selectPaymentMethod($this->payment);
-        $block->selectVaultToken('token_switcher_' . $this->payment['method']);
+        $block->selectPaymentMethod($this->vault);
+        $block->selectVaultToken('token_switcher_' . $this->vault['method']);
     }
 }
diff --git a/dev/tests/integration/testsuite/Magento/Braintree/Model/Ui/Adminhtml/PayPal/TokenUiComponentProviderTest.php b/dev/tests/integration/testsuite/Magento/Braintree/Model/Ui/Adminhtml/PayPal/TokenUiComponentProviderTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..e79f4ad361e36d315e7bc30846325bbe97445d1e
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Braintree/Model/Ui/Adminhtml/PayPal/TokenUiComponentProviderTest.php
@@ -0,0 +1,62 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Braintree\Model\Ui\Adminhtml\PayPal;
+
+use Magento\Braintree\Model\Ui\Adminhtml\PayPal\TokenUiComponentProvider;
+use Magento\Braintree\Model\Ui\PayPal\ConfigProvider;
+use Magento\Framework\ObjectManagerInterface;
+use Magento\TestFramework\Helper\Bootstrap;
+use Magento\Vault\Model\PaymentTokenManagement;
+use Magento\Vault\Model\Ui\TokenUiComponentProviderInterface;
+
+/**
+ * Contains tests for PayPal token Ui component provider
+ */
+class TokenUiComponentProviderTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var ObjectManagerInterface
+     */
+    private $objectManager;
+
+    /**
+     * @var TokenUiComponentProvider
+     */
+    private $tokenComponentProvider;
+
+    protected function setUp()
+    {
+        $this->objectManager = Bootstrap::getObjectManager();
+        $this->tokenComponentProvider = $this->objectManager->get(TokenUiComponentProvider::class);
+    }
+
+    /**
+     * @covers \Magento\Braintree\Model\Ui\Adminhtml\PayPal\TokenUiComponentProvider::getComponentForToken
+     * @magentoDataFixture Magento/Braintree/_files/paypal_vault_token.php
+     * @magentoAppArea adminhtml
+     */
+    public function testGetComponentForToken()
+    {
+        $customerId = 1;
+        $token = 'mx29vk';
+        $payerEmail = 'john.doe@example.com';
+
+        /** @var PaymentTokenManagement $tokenManagement */
+        $tokenManagement = $this->objectManager->get(PaymentTokenManagement::class);
+        $paymentToken = $tokenManagement->getByGatewayToken($token, ConfigProvider::PAYPAL_CODE, $customerId);
+
+        $component = $this->tokenComponentProvider->getComponentForToken($paymentToken);
+        $config = $component->getConfig();
+
+        static::assertNotEmpty($config[TokenUiComponentProviderInterface::COMPONENT_DETAILS]);
+        static::assertNotEmpty($config[TokenUiComponentProviderInterface::COMPONENT_PUBLIC_HASH]);
+        static::assertEquals(ConfigProvider::PAYPAL_VAULT_CODE, $config['code']);
+
+        $details = $config[TokenUiComponentProviderInterface::COMPONENT_DETAILS];
+        static::assertEquals($payerEmail, $details['payerEmail']);
+        static::assertNotEmpty($details['icon']);
+    }
+}