> ## Documentation Index
> Fetch the complete documentation index at: https://primer.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# fetchVaultedPaymentMethods

Get an array of `PrimerHeadlessUniversalCheckout.VaultedPaymentMethod` for the `customerId` attached to the [client session](https://primer.io/docs/api-reference/v2.4/api-reference/client-session-api/create-a-client-session.md#body-customer-id).
Build your own UI to display, manage and perform payments with them.

> [!WARNING]
>
> The list of vaulted payment methods is not affected by the checkout builder's conditions.
>
> For example, if you configured the checkout builder to not show `Paypal` with the current client session, but `Paypal` was vaulted previously, `fetchVaultedPaymentMethods` will still return it.
>
> **The mentioned issue will be addressed and resolved in an upcoming release,
> improving the overall functionality of the Vault Manager.**

```swift SWIFT theme={"dark"}
func fetchVaultedPaymentMethods(
    completion: @escaping (_ vaultedPaymentMethods: [PrimerHeadlessUniversalCheckout.VaultedPaymentMethod]?, _ error: Error?) -> Void
)
```

## Returns

The `fetchVaultedPaymentMethods` method fetches the vaulted payment methods for the `customerId` attached to the [client session](https://primer.io/docs/api-reference/v2.4/api-reference/client-session-api/create-a-client-session.md#body-customer-id)
and returns an array of `PrimerHeadlessUniversalCheckout.VaultedPaymentMethod` in case of success, or an error in case of failure.

**Return Values**

**completion**

Completion will be called when the operation has been completed and the result is available.

**Parameters**

**vaultedPaymentMethods** `Array\<PrimerHeadlessUniversalCheckout.VaultedPaymentMethod\>`

**PrimerHeadlessUniversalCheckout.VaultedPaymentMethod**

**id** `String` *required*

A *temporary* identifier for the `PrimerHeadlessUniversalCheckout.VaultedPaymentMethod` previously retrieved
with [fetchVaultedPaymentMethods](https://primer.io/docs/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods.md).

You can use `id` to [deleteVaultedPaymentMethod](https://primer.io/docs/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/deleteVaultedPaymentMethod.md),
[validate](https://primer.io/docs/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/validate.md) its additional data, or [start](https://primer.io/docs/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/startPaymentFlow.md) a payment flow.

ℹ️ This id changes with each call to [fetchVaultedPaymentMethods](https://primer.io/docs/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods.md).

**analyticsId** `String` *required*

An identifier for the vaulted payment method that doesn't change across calls to [fetchVaultedPaymentMethods](https://primer.io/docs/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods.md).

**paymentInstrumentType** `String` *required*

The type of the payment instrument associated to the vaulted payment method.

**paymentMethodType** `String` *required*

A unique string identifier for the vaulted payment method.

**paymentInstrumentData** `PaymentInstrumentData` *required*

Data associated to the payment instrument. You can use this information to display the vaulted payment method in your UI.

**Parameters**

**paymentMethodConfigId** `String`

**paymentMethodType** `String`

**sessionInfo** `SessionInfo`

**first6Digits** `String`

**firstDigits** `String`

**last4Digits** `String`

**accountNumberLast4Digits** `String`

**expirationMonth** `String`

**expirationYear** `String`

**cardholderName** `String`

**network** `String`

**isNetworkTokenized** `String`

**binData** `BinData`

**threeDSecureAuthentication** `ThreeDS.AuthenticationDetails`

**paypalBillingAgreementId** `String`

**externalPayerInfo** `ExternalPayerInfo`

**shippingAddress** `ShippingAddress`

**klarnaCustomerToken** `String`

**sessionData** `SessionData`

**bankName** `String`

**threeDSecureAuthentication** `ThreeDSAuthenticationData`

**error** `Error`

## Example

```swift SWIFT theme={"dark"}

import UIKit
import PrimerSDK

class MerchantHeadlesVaultManagerViewController: UIViewController {

  var vaultManager = PrimerHeadlessUniversalCheckout.VaultManager()

  override func viewDidLoad() {
    super.viewDidLoad()

    do {
      // Before you configure your vault manager you must have started
      // PrimerHeadlessUniversalCheckout with a client token.
      try self.vaultManager.configure()

    } catch {
      // Handler the error
    }
  }

  func fetchVaultedPaymentMethods() {
    // 👇 Call fetchVaultedPaymentMethods
    self.vaultManager.fetchVaultedPaymentMethods { vaultedPaymentMethods, err in
      if let err = err {
        // Handle the error

      } else if let vaultedPaymentMethods = vaultedPaymentMethods {
        // Populate your UI with the vaulted payment methods
      }
    }
  }
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.