diff --git a/app/code/Magento/Vault/Api/PaymentMethodListInterface.php b/app/code/Magento/Vault/Api/PaymentMethodListInterface.php
new file mode 100644
index 0000000000000000000000000000000000000000..f9d3e628594ef0f809429f39564271e6f52e7b23
--- /dev/null
+++ b/app/code/Magento/Vault/Api/PaymentMethodListInterface.php
@@ -0,0 +1,30 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Vault\Api;
+
+use Magento\Vault\Model\VaultPaymentInterface;
+
+/**
+ * Contains methods to retrieve vault payment methods
+ * This interface is consistent with \Magento\Payment\Api\PaymentMethodListInterface
+ * @api
+ */
+interface PaymentMethodListInterface
+{
+    /**
+     * Get list of available vault payments
+     * @param int $storeId
+     * @return VaultPaymentInterface[]
+     */
+    public function getList($storeId);
+
+    /**
+     * Get list of enabled in the configuration vault payments
+     * @param int $storeId
+     * @return VaultPaymentInterface[]
+     */
+    public function getActiveList($storeId);
+}
diff --git a/app/code/Magento/Vault/Model/PaymentMethodList.php b/app/code/Magento/Vault/Model/PaymentMethodList.php
new file mode 100644
index 0000000000000000000000000000000000000000..bec073df7971154ee74cd0b794d4cd11d347c832
--- /dev/null
+++ b/app/code/Magento/Vault/Model/PaymentMethodList.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Vault\Model;
+
+use Magento\Payment\Api\Data\PaymentMethodInterface;
+use Magento\Payment\Api\PaymentMethodListInterface;
+use Magento\Payment\Model\Method\InstanceFactory;
+use Magento\Payment\Model\MethodInterface;
+use Magento\Vault\Api\PaymentMethodListInterface as VaultPaymentMethodListInterface;
+
+/**
+ * Contains methods to retrieve configured vault payments
+ */
+class PaymentMethodList implements VaultPaymentMethodListInterface
+{
+    /**
+     * @var InstanceFactory
+     */
+    private $instanceFactory;
+
+    /**
+     * @var PaymentMethodListInterface
+     */
+    private $paymentMethodList;
+
+    /**
+     * PaymentMethodList constructor.
+     * @param PaymentMethodListInterface $paymentMethodList
+     * @param InstanceFactory $instanceFactory
+     */
+    public function __construct(PaymentMethodListInterface $paymentMethodList, InstanceFactory $instanceFactory)
+    {
+        $this->instanceFactory = $instanceFactory;
+        $this->paymentMethodList = $paymentMethodList;
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getList($storeId)
+    {
+        return $this->filterList($this->paymentMethodList->getList($storeId));
+    }
+
+    /**
+     * @inheritdoc
+     */
+    public function getActiveList($storeId)
+    {
+        return $this->filterList($this->paymentMethodList->getActiveList($storeId));
+    }
+
+    /**
+     * Filter vault methods from payments
+     * @param PaymentMethodInterface[] $list
+     * @return VaultPaymentInterface[]
+     */
+    private function filterList(array $list)
+    {
+        $paymentMethods = array_map(
+            function (PaymentMethodInterface $paymentMethod) {
+                return $this->instanceFactory->create($paymentMethod);
+            },
+            $list
+        );
+
+        $availableMethods = array_filter(
+            $paymentMethods,
+            function (MethodInterface $methodInstance) {
+                return $methodInstance instanceof VaultPaymentInterface;
+            }
+        );
+        return array_values($availableMethods);
+    }
+}
diff --git a/app/code/Magento/Vault/Model/Ui/TokensConfigProvider.php b/app/code/Magento/Vault/Model/Ui/TokensConfigProvider.php
index 060e16d1c3f1aa14e909dc3662315a35f4da680d..40343c29620e1a5c9ecc6e9779baf77336a09481 100644
--- a/app/code/Magento/Vault/Model/Ui/TokensConfigProvider.php
+++ b/app/code/Magento/Vault/Model/Ui/TokensConfigProvider.php
@@ -7,10 +7,9 @@ namespace Magento\Vault\Model\Ui;
 
 use Magento\Checkout\Model\ConfigProviderInterface;
 use Magento\Framework\App\ObjectManager;
-use Magento\Payment\Api\Data\PaymentMethodInterface;
 use Magento\Store\Model\StoreManagerInterface;
+use Magento\Vault\Api\PaymentMethodListInterface;
 use Magento\Vault\Model\CustomerTokenManagement;
-use Magento\Vault\Model\VaultPaymentInterface;
 
 /**
  * Class ConfigProvider
@@ -39,14 +38,9 @@ final class TokensConfigProvider implements ConfigProviderInterface
     private $customerTokenManagement;
 
     /**
-     * @var \Magento\Payment\Api\PaymentMethodListInterface
+     * @var PaymentMethodListInterface
      */
-    private $paymentMethodList;
-
-    /**
-     * @var \Magento\Payment\Model\Method\InstanceFactory
-     */
-    private $paymentMethodInstanceFactory;
+    private $vaultPaymentList;
 
     /**
      * Constructor
@@ -112,7 +106,8 @@ final class TokensConfigProvider implements ConfigProviderInterface
     private function getComponentProviders()
     {
         $providers = [];
-        $vaultPaymentMethods = $this->getVaultPaymentMethodList();
+        $storeId = $this->storeManager->getStore()->getId();
+        $vaultPaymentMethods = $this->getVaultPaymentList()->getActiveList($storeId);
 
         foreach ($vaultPaymentMethods as $method) {
             $providerCode = $method->getProviderCode();
@@ -141,60 +136,15 @@ final class TokensConfigProvider implements ConfigProviderInterface
     }
 
     /**
-     * Get list of active Vault payment methods.
-     *
-     * @return VaultPaymentInterface[]
-     */
-    private function getVaultPaymentMethodList()
-    {
-        $storeId = $this->storeManager->getStore()->getId();
-
-        $paymentMethods = array_map(
-            function (PaymentMethodInterface $paymentMethod) {
-                return $this->getPaymentMethodInstanceFactory()->create($paymentMethod);
-            },
-            $this->getPaymentMethodList()->getActiveList($storeId)
-        );
-
-        $availableMethods = array_filter(
-            $paymentMethods,
-            function (\Magento\Payment\Model\MethodInterface $methodInstance) {
-                return $methodInstance instanceof VaultPaymentInterface;
-            }
-        );
-
-        return $availableMethods;
-    }
-
-    /**
-     * Get payment method list.
-     *
-     * @return \Magento\Payment\Api\PaymentMethodListInterface
-     * @deprecated
-     */
-    private function getPaymentMethodList()
-    {
-        if ($this->paymentMethodList === null) {
-            $this->paymentMethodList = ObjectManager::getInstance()->get(
-                \Magento\Payment\Api\PaymentMethodListInterface::class
-            );
-        }
-        return $this->paymentMethodList;
-    }
-
-    /**
-     * Get payment method instance factory.
-     *
-     * @return \Magento\Payment\Model\Method\InstanceFactory
+     * Get instance of vault payment list instance
+     * @return PaymentMethodListInterface
      * @deprecated
      */
-    private function getPaymentMethodInstanceFactory()
+    private function getVaultPaymentList()
     {
-        if ($this->paymentMethodInstanceFactory === null) {
-            $this->paymentMethodInstanceFactory = ObjectManager::getInstance()->get(
-                \Magento\Payment\Model\Method\InstanceFactory::class
-            );
+        if ($this->vaultPaymentList === null) {
+            $this->vaultPaymentList = ObjectManager::getInstance()->get(PaymentMethodListInterface::class);
         }
-        return $this->paymentMethodInstanceFactory;
+        return $this->vaultPaymentList;
     }
 }
diff --git a/app/code/Magento/Vault/Model/Ui/VaultConfigProvider.php b/app/code/Magento/Vault/Model/Ui/VaultConfigProvider.php
index 9cd7b97562df98e309b9ddd182a5ced144b2e555..bc3110a101452b40deb5506bc659d88a5f4e34a1 100644
--- a/app/code/Magento/Vault/Model/Ui/VaultConfigProvider.php
+++ b/app/code/Magento/Vault/Model/Ui/VaultConfigProvider.php
@@ -8,9 +8,8 @@ namespace Magento\Vault\Model\Ui;
 use Magento\Checkout\Model\ConfigProviderInterface;
 use Magento\Framework\App\ObjectManager;
 use Magento\Framework\Session\SessionManagerInterface;
-use Magento\Payment\Api\Data\PaymentMethodInterface;
 use Magento\Store\Model\StoreManagerInterface;
-use Magento\Vault\Model\VaultPaymentInterface;
+use Magento\Vault\Api\PaymentMethodListInterface;
 
 class VaultConfigProvider implements ConfigProviderInterface
 {
@@ -32,14 +31,9 @@ class VaultConfigProvider implements ConfigProviderInterface
     private $session;
 
     /**
-     * @var \Magento\Payment\Api\PaymentMethodListInterface
+     * @var PaymentMethodListInterface
      */
-    private $paymentMethodList;
-
-    /**
-     * @var \Magento\Payment\Model\Method\InstanceFactory
-     */
-    private $paymentMethodInstanceFactory;
+    private $vaultPaymentList;
 
     /**
      * VaultConfigProvider constructor.
@@ -62,9 +56,9 @@ class VaultConfigProvider implements ConfigProviderInterface
     public function getConfig()
     {
         $availableMethods = [];
-        $vaultPayments = $this->getVaultPaymentMethodList();
-        $customerId = $this->session->getCustomerId();
         $storeId = $this->storeManager->getStore()->getId();
+        $vaultPayments = $this->getVaultPaymentList()->getActiveList($storeId);
+        $customerId = $this->session->getCustomerId();
 
         foreach ($vaultPayments as $method) {
             $availableMethods[$method->getCode()] = [
@@ -78,60 +72,15 @@ class VaultConfigProvider implements ConfigProviderInterface
     }
 
     /**
-     * Get list of active Vault payment methods.
-     *
-     * @return VaultPaymentInterface[]
-     */
-    private function getVaultPaymentMethodList()
-    {
-        $storeId = $this->storeManager->getStore()->getId();
-
-        $paymentMethods = array_map(
-            function (PaymentMethodInterface $paymentMethod) {
-                return $this->getPaymentMethodInstanceFactory()->create($paymentMethod);
-            },
-            $this->getPaymentMethodList()->getActiveList($storeId)
-        );
-
-        $availableMethods = array_filter(
-            $paymentMethods,
-            function (\Magento\Payment\Model\MethodInterface $methodInstance) {
-                return $methodInstance instanceof VaultPaymentInterface;
-            }
-        );
-
-        return $availableMethods;
-    }
-
-    /**
-     * Get payment method list.
-     *
-     * @return \Magento\Payment\Api\PaymentMethodListInterface
-     * @deprecated
-     */
-    private function getPaymentMethodList()
-    {
-        if ($this->paymentMethodList === null) {
-            $this->paymentMethodList = ObjectManager::getInstance()->get(
-                \Magento\Payment\Api\PaymentMethodListInterface::class
-            );
-        }
-        return $this->paymentMethodList;
-    }
-
-    /**
-     * Get payment method instance factory.
-     *
-     * @return \Magento\Payment\Model\Method\InstanceFactory
+     * Get vault payment list instance
+     * @return PaymentMethodListInterface
      * @deprecated
      */
-    private function getPaymentMethodInstanceFactory()
+    private function getVaultPaymentList()
     {
-        if ($this->paymentMethodInstanceFactory === null) {
-            $this->paymentMethodInstanceFactory = ObjectManager::getInstance()->get(
-                \Magento\Payment\Model\Method\InstanceFactory::class
-            );
+        if ($this->vaultPaymentList === null) {
+            $this->vaultPaymentList = ObjectManager::getInstance()->get(PaymentMethodListInterface::class);
         }
-        return $this->paymentMethodInstanceFactory;
+        return $this->vaultPaymentList;
     }
 }
diff --git a/app/code/Magento/Vault/Test/Unit/Model/PaymentMethodListTest.php b/app/code/Magento/Vault/Test/Unit/Model/PaymentMethodListTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..9e9d426fa8f3a487335f1f3fd0242833fbcc6e9d
--- /dev/null
+++ b/app/code/Magento/Vault/Test/Unit/Model/PaymentMethodListTest.php
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Vault\Test\Unit\Model;
+
+use Magento\Payment\Api\Data\PaymentMethodInterface;
+use Magento\Payment\Api\PaymentMethodListInterface;
+use Magento\Payment\Model\Method\InstanceFactory;
+use Magento\Payment\Model\MethodInterface;
+use Magento\Vault\Model\VaultPaymentInterface;
+use Magento\Vault\Model\PaymentMethodList;
+use PHPUnit_Framework_MockObject_MockObject as MockObject;
+
+class PaymentMethodListTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var PaymentMethodListInterface|MockObject
+     */
+    private $paymentMethodList;
+
+    /**
+     * @var InstanceFactory|MockObject
+     */
+    private $instanceFactory;
+
+    /**
+     * @var PaymentMethodList
+     */
+    private $vaultPaymentList;
+
+    protected function setUp()
+    {
+        $this->paymentMethodList = $this->getMock(PaymentMethodListInterface::class);
+        $this->instanceFactory = $this->getMockBuilder(InstanceFactory::class)
+            ->disableOriginalConstructor()
+            ->setMethods(['create'])
+            ->getMock();
+
+        $this->vaultPaymentList = new PaymentMethodList($this->paymentMethodList, $this->instanceFactory);
+    }
+
+    /**
+     * @covers \Magento\Vault\Model\PaymentMethodList::getActiveList
+     */
+    public function testGetActivePaymentList()
+    {
+        $storeId = 1;
+        $vaultPayment = $this->getMock(VaultPaymentInterface::class);
+        $paymentMethodInterface1 = $this->getMock(PaymentMethodInterface::class);
+        $paymentMethodInterface2 = $this->getMock(PaymentMethodInterface::class);
+        $activePayments = [
+            $paymentMethodInterface1,
+            $paymentMethodInterface2
+        ];
+
+        $this->paymentMethodList->expects(static::once())
+            ->method('getActiveList')
+            ->with($storeId)
+            ->willReturn($activePayments);
+
+        $this->instanceFactory->expects(static::exactly(2))
+            ->method('create')
+            ->willReturnMap([
+                [$paymentMethodInterface1, $this->getMock(MethodInterface::class)],
+                [$paymentMethodInterface2, $vaultPayment]
+            ]);
+
+        $vaultPayments = $this->vaultPaymentList->getActiveList($storeId);
+        static::assertCount(1, $vaultPayments);
+        static::assertInstanceOf(VaultPaymentInterface::class, $vaultPayment);
+    }
+}
diff --git a/app/code/Magento/Vault/Test/Unit/Model/Ui/TokensConfigProviderTest.php b/app/code/Magento/Vault/Test/Unit/Model/Ui/TokensConfigProviderTest.php
index d5ac3cac9563d4a8d8d4f294eca2dfaab8f44374..34b7c5240497164327cadac60fc00a33eb390c58 100644
--- a/app/code/Magento/Vault/Test/Unit/Model/Ui/TokensConfigProviderTest.php
+++ b/app/code/Magento/Vault/Test/Unit/Model/Ui/TokensConfigProviderTest.php
@@ -5,11 +5,11 @@
  */
 namespace Magento\Vault\Test\Unit\Model\Ui;
 
-use Magento\Customer\Model\Session;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Store\Api\Data\StoreInterface;
 use Magento\Store\Model\StoreManagerInterface;
 use Magento\Vault\Api\Data\PaymentTokenInterface;
+use Magento\Vault\Api\PaymentMethodListInterface;
 use Magento\Vault\Model\CustomerTokenManagement;
 use Magento\Vault\Model\Ui\TokensConfigProvider;
 use Magento\Vault\Model\Ui\TokenUiComponentInterface;
@@ -31,25 +31,10 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
      */
     private $storeManager;
 
-    /**
-     * @var \Magento\Payment\Api\PaymentMethodListInterface|MockObject
-     */
-    private $paymentMethodList;
-
-    /**
-     * @var \Magento\Payment\Model\Method\InstanceFactory|MockObject
-     */
-    private $paymentMethodInstanceFactory;
-
-    /**
-     * @var \Magento\Payment\Api\Data\PaymentMethodInterface|MockObject
-     */
-    private $vaultPayment;
-
     /**
      * @var VaultPaymentInterface|MockObject
      */
-    private $vaultPaymentInstance;
+    private $vaultPayment;
 
     /**
      * @var StoreInterface|MockObject
@@ -61,6 +46,11 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
      */
     private $customerTokenManagement;
 
+    /**
+     * @var PaymentMethodListInterface|MockObject
+     */
+    private $vaultPaymentList;
+
     /**
      * @var ObjectManager
      */
@@ -68,20 +58,12 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->paymentMethodList = $this->getMockBuilder(\Magento\Payment\Api\PaymentMethodListInterface::class)
-            ->disableOriginalConstructor()
-            ->getMockForAbstractClass();
-
-        $this->paymentMethodInstanceFactory = $this->getMockBuilder(
-            \Magento\Payment\Model\Method\InstanceFactory::class
-        )->disableOriginalConstructor()->getMock();
-
-        $this->vaultPayment = $this->getMockForAbstractClass(\Magento\Payment\Api\Data\PaymentMethodInterface::class);
-        $this->vaultPaymentInstance = $this->getMockForAbstractClass(VaultPaymentInterface::class);
+        $this->objectManager = new ObjectManager($this);
+        $this->vaultPaymentList = $this->getMock(PaymentMethodListInterface::class);
+        $this->vaultPayment = $this->getMockForAbstractClass(VaultPaymentInterface::class);
         $this->storeManager = $this->getMock(StoreManagerInterface::class);
         $this->store = $this->getMock(StoreInterface::class);
 
-        $this->objectManager = new ObjectManager($this);
         $this->customerTokenManagement = $this->getMockBuilder(CustomerTokenManagement::class)
             ->disableOriginalConstructor()
             ->getMock();
@@ -114,16 +96,12 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
             ->method('getId')
             ->willReturn($storeId);
 
-        $this->paymentMethodList->expects(static::once())
+        $this->vaultPaymentList->expects(static::once())
             ->method('getActiveList')
             ->with($storeId)
             ->willReturn([$this->vaultPayment]);
-
-        $this->paymentMethodInstanceFactory->expects($this->once())
-            ->method('create')
-            ->willReturn($this->vaultPaymentInstance);
         
-        $this->vaultPaymentInstance->expects(static::once())
+        $this->vaultPayment->expects(static::once())
             ->method('getProviderCode')
             ->willReturn($vaultProviderCode);
 
@@ -153,16 +131,10 @@ class TokensConfigProviderTest extends \PHPUnit_Framework_TestCase
                 $vaultProviderCode => $tokenUiComponentProvider
             ]
         );
-
-        $this->objectManager->setBackwardCompatibleProperty(
-            $configProvider,
-            'paymentMethodList',
-            $this->paymentMethodList
-        );
         $this->objectManager->setBackwardCompatibleProperty(
             $configProvider,
-            'paymentMethodInstanceFactory',
-            $this->paymentMethodInstanceFactory
+            'vaultPaymentList',
+            $this->vaultPaymentList
         );
 
         static::assertEquals($expectedConfig, $configProvider->getConfig());
diff --git a/app/code/Magento/Vault/Test/Unit/Model/Ui/VaultConfigProviderTest.php b/app/code/Magento/Vault/Test/Unit/Model/Ui/VaultConfigProviderTest.php
index d00531637b86d4e509662a31ce2da32752ba4a8b..e9d6af3bec356f518fbea6b1ce8be5ab841f78d4 100644
--- a/app/code/Magento/Vault/Test/Unit/Model/Ui/VaultConfigProviderTest.php
+++ b/app/code/Magento/Vault/Test/Unit/Model/Ui/VaultConfigProviderTest.php
@@ -9,35 +9,20 @@ use Magento\Customer\Model\Session;
 use Magento\Framework\TestFramework\Unit\Helper\ObjectManager;
 use Magento\Store\Api\Data\StoreInterface;
 use Magento\Store\Model\StoreManagerInterface;
+use Magento\Vault\Api\PaymentMethodListInterface;
 use Magento\Vault\Model\Ui\VaultConfigProvider;
 use Magento\Vault\Model\VaultPaymentInterface;
 use PHPUnit_Framework_MockObject_MockObject as MockObject;
 
 /**
  * Class VaultConfigProviderTest
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
  */
 class VaultConfigProviderTest extends \PHPUnit_Framework_TestCase
 {
-    /**
-     * @var \Magento\Payment\Api\PaymentMethodListInterface|MockObject
-     */
-    private $paymentMethodList;
-
-    /**
-     * @var \Magento\Payment\Model\Method\InstanceFactory|MockObject
-     */
-    private $paymentMethodInstanceFactory;
-
-    /**
-     * @var \Magento\Payment\Api\Data\PaymentMethodInterface|MockObject
-     */
-    private $vaultPayment;
-
     /**
      * @var VaultPaymentInterface|MockObject
      */
-    private $vaultPaymentInstance;
+    private $vaultPayment;
 
     /**
      * @var Session|MockObject
@@ -54,6 +39,11 @@ class VaultConfigProviderTest extends \PHPUnit_Framework_TestCase
      */
     private $storeManager;
 
+    /**
+     * @var PaymentMethodListInterface|MockObject
+     */
+    private $vaultPaymentList;
+
     /**
      * @var VaultConfigProvider
      */
@@ -61,33 +51,20 @@ class VaultConfigProviderTest extends \PHPUnit_Framework_TestCase
 
     protected function setUp()
     {
-        $this->paymentMethodList = $this->getMockBuilder(\Magento\Payment\Api\PaymentMethodListInterface::class)
-            ->disableOriginalConstructor()
-            ->getMockForAbstractClass();
-
-        $this->paymentMethodInstanceFactory = $this->getMockBuilder(
-            \Magento\Payment\Model\Method\InstanceFactory::class
-        )->disableOriginalConstructor()->getMock();
-
-        $this->vaultPayment = $this->getMockForAbstractClass(\Magento\Payment\Api\Data\PaymentMethodInterface::class);
-        $this->vaultPaymentInstance = $this->getMockForAbstractClass(VaultPaymentInterface::class);
+        $this->vaultPayment = $this->getMockForAbstractClass(VaultPaymentInterface::class);
         $this->storeManager = $this->getMockForAbstractClass(StoreManagerInterface::class);
         $this->store = $this->getMockForAbstractClass(StoreInterface::class);
         $this->session = $this->getMockBuilder(Session::class)
             ->disableOriginalConstructor()
             ->getMock();
+        $this->vaultPaymentList = $this->getMock(PaymentMethodListInterface::class);
 
         $objectManager = new ObjectManager($this);
         $this->vaultConfigProvider = new VaultConfigProvider($this->storeManager, $this->session);
         $objectManager->setBackwardCompatibleProperty(
             $this->vaultConfigProvider,
-            'paymentMethodList',
-            $this->paymentMethodList
-        );
-        $objectManager->setBackwardCompatibleProperty(
-            $this->vaultConfigProvider,
-            'paymentMethodInstanceFactory',
-            $this->paymentMethodInstanceFactory
+            'vaultPaymentList',
+            $this->vaultPaymentList
         );
     }
 
@@ -112,26 +89,21 @@ class VaultConfigProviderTest extends \PHPUnit_Framework_TestCase
         $this->session->expects(static::once())
             ->method('getCustomerId')
             ->willReturn($customerId);
-        $this->storeManager->expects(static::exactly(2))
+        $this->storeManager->expects(static::once())
             ->method('getStore')
             ->willReturn($this->store);
-        $this->store->expects(static::exactly(2))
+        $this->store->expects(static::once())
             ->method('getId')
             ->willReturn($storeId);
 
-        $this->paymentMethodList->expects(static::once())
+        $this->vaultPaymentList->expects(static::once())
             ->method('getActiveList')
-            ->with($storeId)
             ->willReturn([$this->vaultPayment]);
 
-        $this->paymentMethodInstanceFactory->expects($this->once())
-            ->method('create')
-            ->willReturn($this->vaultPaymentInstance);
-
-        $this->vaultPaymentInstance->expects(static::once())
+        $this->vaultPayment->expects(static::once())
             ->method('getCode')
             ->willReturn($vaultPaymentCode);
-        $this->vaultPaymentInstance->expects($customerId !== null ? static::once() : static::never())
+        $this->vaultPayment->expects($customerId !== null ? static::once() : static::never())
             ->method('isActive')
             ->with($storeId)
             ->willReturn($vaultEnabled);
diff --git a/app/code/Magento/Vault/etc/di.xml b/app/code/Magento/Vault/etc/di.xml
index e44e1da3e3d61f3c5d230c978b798fa05e84db7e..14354da7e2c528e910a0af6bd15706f25dbeadb4 100644
--- a/app/code/Magento/Vault/etc/di.xml
+++ b/app/code/Magento/Vault/etc/di.xml
@@ -11,6 +11,7 @@
     <preference for="Magento\Vault\Api\Data\PaymentTokenInterface" type="Magento\Vault\Model\PaymentToken"/>
     <preference for="Magento\Vault\Api\PaymentTokenRepositoryInterface" type="Magento\Vault\Model\PaymentTokenRepository" />
     <preference for="Magento\Vault\Api\PaymentTokenManagementInterface" type="Magento\Vault\Model\PaymentTokenManagement" />
+    <preference for="Magento\Vault\Api\PaymentMethodListInterface" type="Magento\Vault\Model\PaymentMethodList" />
     <preference for="Magento\Vault\Api\Data\PaymentTokenSearchResultsInterface" type="Magento\Framework\Api\SearchResults" />
     <preference for="Magento\Vault\Model\Ui\TokenUiComponentInterface" type="Magento\Vault\Model\Ui\TokenUiComponent" />
 
diff --git a/dev/tests/integration/testsuite/Magento/Braintree/Model/PaymentMethodListTest.php b/dev/tests/integration/testsuite/Magento/Braintree/Model/PaymentMethodListTest.php
new file mode 100644
index 0000000000000000000000000000000000000000..0e38adda5498facd9f6213193f536128f2b20c8f
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Braintree/Model/PaymentMethodListTest.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+namespace Magento\Braintree\Model;
+
+use Magento\Braintree\Model\Ui\ConfigProvider;
+use Magento\Braintree\Model\Ui\PayPal\ConfigProvider as PayPalConfigProvider;
+use Magento\Store\Model\StoreManagerInterface;
+use Magento\TestFramework\Helper\Bootstrap;
+use Magento\Vault\Api\PaymentMethodListInterface;
+use Magento\Vault\Model\VaultPaymentInterface;
+
+/**
+ * Contains tests for vault payment list methods
+ */
+class PaymentMethodListTest extends \PHPUnit_Framework_TestCase
+{
+    /**
+     * @var PaymentMethodListInterface
+     */
+    private $paymentMethodList;
+
+    /**
+     * @var int
+     */
+    private $storeId;
+
+    protected function setUp()
+    {
+        $objectManager = Bootstrap::getObjectManager();
+        $this->storeId = $objectManager->get(StoreManagerInterface::class)
+            ->getStore()
+            ->getId();
+        $this->paymentMethodList = $objectManager->get(PaymentMethodListInterface::class);
+    }
+
+    /**
+     * @magentoDataFixture Magento/Braintree/_files/payments.php
+     */
+    public function testGetList()
+    {
+        $vaultPayments = $this->paymentMethodList->getList($this->storeId);
+
+        static::assertNotEmpty($vaultPayments);
+
+        $paymentCodes = array_map(function (VaultPaymentInterface $payment) {
+            return $payment->getCode();
+        }, $vaultPayments);
+
+        $expectedCodes = [
+            PayPalConfigProvider::PAYPAL_VAULT_CODE,
+            ConfigProvider::CC_VAULT_CODE
+        ];
+        static::assertNotEmpty(array_intersect($expectedCodes, $paymentCodes));
+    }
+
+    /**
+     * @magentoDataFixture Magento/Braintree/_files/payments.php
+     */
+    public function testGetActiveList()
+    {
+        $vaultPayments = $this->paymentMethodList->getActiveList($this->storeId);
+
+        static::assertNotEmpty($vaultPayments);
+        static::assertCount(1, $vaultPayments);
+        $payment = array_pop($vaultPayments);
+        static::assertEquals(PayPalConfigProvider::PAYPAL_VAULT_CODE, $payment->getCode());
+    }
+}
diff --git a/dev/tests/integration/testsuite/Magento/Braintree/_files/payments.php b/dev/tests/integration/testsuite/Magento/Braintree/_files/payments.php
new file mode 100644
index 0000000000000000000000000000000000000000..99ff4481f2982f5076282161931017893380e491
--- /dev/null
+++ b/dev/tests/integration/testsuite/Magento/Braintree/_files/payments.php
@@ -0,0 +1,16 @@
+<?php
+/**
+ * Copyright © 2016 Magento. All rights reserved.
+ * See COPYING.txt for license details.
+ */
+use Magento\Braintree\Model\Ui\PayPal\ConfigProvider;
+use Magento\Config\Model\Config;
+use Magento\TestFramework\Helper\Bootstrap;
+
+$objectManager = Bootstrap::getObjectManager();
+/** @var Config $config */
+$config = $objectManager->get(Config::class);
+$config->setDataByPath('payment/' . ConfigProvider::PAYPAL_CODE . '/active', 1);
+$config->save();
+$config->setDataByPath('payment/' . ConfigProvider::PAYPAL_VAULT_CODE . '/active', 1);
+$config->save();