# Confirm a SetupIntent

Confirm that your customer intends to set up the current or provided payment method. For example, you would confirm a SetupIntent when a customer hits the “Save” button on a payment method management page on your website.

If the selected payment method does not require any additional steps from the customer, the SetupIntent will transition to the `succeeded` status.

Otherwise, it will transition to the `requires_action` status and suggest additional actions via `next_action`. If setup fails, the SetupIntent will transition to the `requires_payment_method` status or the `canceled` status if the confirmation limit is reached.

## Prerequisites

Before you can run the following code snippet, you need to call these APIs with the provided parameters to set up the prerequisite API object(s).

1. createSetupIntent
POST /v1/setup_intents {"payment_method_types":["card"]}

## Request

```curl
curl https://api.stripe.com/v1/setup_intents/{{SETUP_INTENT_ID}}/confirm \
  -u "<<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2025-11-17.clover" \
  -d payment_method=pm_card_visa
```

### Response

```json
{
  "id": "seti_1Mm2cBLkdIwHu7ixaiKW3ElR",
  "object": "setup_intent",
  "application": null,
  "cancellation_reason": null,
  "client_secret": "seti_1Mm2cBLkdIwHu7ixaiKW3ElR_secret_NX6phB7HbSmlkpqzKZ3Bxr7uXFRf9Jg",
  "created": 1678918571,
  "customer": null,
  "description": null,
  "flow_directions": null,
  "last_setup_error": null,
  "latest_attempt": "setatt_1Mm2cBLkdIwHu7ixdEp1VkXJ",
  "livemode": false,
  "mandate": null,
  "metadata": {},
  "next_action": null,
  "on_behalf_of": null,
  "payment_method": "pm_1Mm2cBLkdIwHu7ixGoOfZSsV",
  "payment_method_options": {
    "card": {
      "mandate_options": null,
      "network": null,
      "request_three_d_secure": "automatic"
    }
  },
  "payment_method_types": [
    "card"
  ],
  "single_use_mandate": null,
  "status": "succeeded",
  "usage": "off_session"
}
```

## Returns

Returns the resulting SetupIntent after all possible transitions are applied.

## Parameters

- `confirmation_token` (string, optional)
  ID of the ConfirmationToken used to confirm this SetupIntent.

  If the provided ConfirmationToken contains properties that are also being provided in this request, such as `payment_method`, then the values in this request will take precedence.

- [`mandate_data`](https://docs.stripe.com/api/setup_intents/confirm.md?query=mandate_data) (object, optional)
  This hash contains details about the mandate to create

- `payment_method` (string, optional)
  ID of the payment method (a PaymentMethod, Card, or saved Source object) to attach to this SetupIntent.

- [`payment_method_data`](https://docs.stripe.com/api/setup_intents/confirm.md?query=payment_method_data) (object, optional)
  When included, this hash creates a PaymentMethod that is set as the [`payment_method`](https://docs.stripe.com/docs/api/setup_intents/object.md#setup_intent_object-payment_method) value in the SetupIntent.

- [`payment_method_options`](https://docs.stripe.com/api/setup_intents/confirm.md?query=payment_method_options) (object, optional)
  Payment method-specific configuration for this SetupIntent.

- `return_url` (string, optional)
  The URL to redirect your customer back to after they authenticate on the payment method’s app or site. If you’d prefer to redirect to a mobile application, you can alternatively supply an application URI scheme. This parameter is only used for cards and other redirect-based payment methods.

- `use_stripe_sdk` (boolean, optional)
  Set to `true` when confirming server-side and using Stripe.js, iOS, or Android client-side SDKs to handle the next actions.
