> ## 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.

# startPaymentFlow

Starts the payment flow for the vaulted payment method. You can get the `id` from any instance of `PrimerHeadlessUniversalCheckout.VaultedPaymentMethod`
returned by [fetchVaultedPaymentMethods](https://primer.io/docs/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods.md).

Additionally you may pass `vaultedPaymentMethodAdditionalData`, which might be required by some payment methods (e.g.
you might need to pass CVV which can be recommended to increase auth rates).

Make sure that `vaultedPaymentMethodAdditionalData` is [validated](https://primer.io/docs/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/validate.md) before being passed to this method.

Upon a successful invocation of this function, the SDK will automatically trigger the standard payment [delegate methods](https://primer.io/docs/sdk/ios/v2.x.x/primer-headless-checkout/delegates/PrimerHeadlessUniversalCheckoutDelegate.md).

```swift SWIFT theme={"dark"}
func startPaymentFlow(vaultedPaymentMethodId: String, vaultedPaymentMethodAdditionalData: PrimerVaultedPaymentMethodAdditionalData? = nil)
```

## Parameters

**Properties**

**vaultedPaymentMethodId** `String` *required*

The `id` of a `PrimerHeadlessUniversalCheckout.VaultedPaymentMethod` previously retrieved with [fetchVaultedPaymentMethods](https://primer.io/docs/sdk/ios/v2.x.x/primer-headless-checkout/vault-manager/fetchVaultedPaymentMethods.md).

**vaultedPaymentMethodAdditionalData** `PrimerVaultedPaymentMethodAdditionalData`

**Direct Subclasses**

**PrimerVaultedCardAdditionalData**

**Properties**

**cvv** `String` *required*

CVV value associated with the vaulted card.

## Example

It's provided that you have started `PrimerHeadlessUniversalCheckout` with a client token, and you know
the vaulted payment method id.

### Without additional data

```swift SWIFT theme={"dark"}
var vaultManager = PrimerHeadlessUniversalCheckout.VaultManager()

func payWithVaultedPaymentMethod(with id: String) {
    self.vaultManager.startPaymentFlow(vaultedPaymentMethodId: id)
}
```

### With additional data

```swift SWIFT theme={"dark"}
var vaultManager = PrimerHeadlessUniversalCheckout.VaultManager()

func payWithVaultedPaymentMethod(with id: String) {
    let vaultedCardAdditionalData = PrimerVaultedCardAdditionalData(cvv: "123")
    self.vaultManager.startPaymentFlow(vaultedPaymentMethodId: id, vaultedPaymentMethodAdditionalData: vaultedCardAdditionalData)
}
```


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