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

# Confirm a Setup Intent

> Confirma um setup intent.

Confirma o `setup_intent` usando o `payment_method` já definido nele, um
`payment_method` informado na chamada, ou um cartão tokenizado no cliente. Ao
confirmar, o método passa a ser o método padrão do customer.

Se o setup intent estiver ligado a uma subscription em trial pelo campo
`pending_setup_intent`, a confirmação também define o
`default_payment_method` dessa subscription, limpa o setup intent pendente e
emite `subscription.updated`.

<ParamField path="id" type="string" required>
  ID do setup intent (`seti_*`).
</ParamField>

<ParamField body="payment_method" type="string">
  ID de um payment method já salvo (`pm_*`). Use este campo quando o método já
  existe e ainda não foi definido no setup intent.
</ParamField>

<ParamField body="token_id" type="string">
  Token de cartão de uso único gerado no cliente. Use quando quer salvar um novo
  cartão.
</ParamField>

<ParamField body="card_id" type="string">
  ID de cartão já salvo que **pertence a este customer**. Alternativa a `token_id`. A propriedade é validada antes de salvar; um cartão que não pertence ao customer é recusado com `402 card_error`. Prefira `token_id` no fluxo padrão.
</ParamField>

<ParamField body="customer" type="string">
  Customer. Obrigatório se o setup intent foi criado sem customer.
</ParamField>

<RequestExample>
  ```bash cURL theme={}
  curl -X POST "https://api.chargefy.io/v1/setup-intents/seti_123/confirm" \
    -H "Authorization: Bearer {{API_KEY}}"
  ```
</RequestExample>

## Resposta

`200 OK` com `status: "succeeded"` e `payment_method` apontando para o
`pm_*` salvo.

Se a confirmação falhar ao salvar o cartão, o setup intent volta para
`requires_payment_method`, preenche `last_setup_error` e emite
[`setup.intent.failed`](/api-reference/webhooks/setup.intent.failed).
