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

# Tentativa de cadastro

> Registro imutável de cada tentativa de confirmar um cadastro de cartão.

Um `setup_attempt` registra **uma tentativa de salvar o cartão**. O
`setup_intent` mostra o estado atual do cadastro; as tentativas preservam o que
aconteceu em cada confirmação, inclusive erros anteriores.

Uma tentativa nasce somente depois que os parâmetros básicos foram validados e
a confirmação começou. Erros como `client_secret` ausente ou customer
inexistente não criam tentativa.

O `latest_attempt` do cadastro aponta para a tentativa mais recente. Para ver o
histórico, use [`GET /v1/setup-attempts`](/api-reference/setup-attempts/list).

## Data Object

```json theme={"theme":"css-variables"}
{
  "id": "setatt_L6ZmE4rSCaYzP5wJ",
  "object": "setup_attempt",
  "created_at": "2026-08-07T12:01:00Z",
  "customer": "cus_AAMdwCYQ7FEPFrBX",
  "livemode": false,
  "payment_method": "pm_Be2jZhX6ifbAAP46",
  "payment_method_details": {
    "credit_card": {
      "brand": "visa",
      "exp_month": 12,
      "exp_year": 2030,
      "last4": "4242"
    },
    "type": "credit_card"
  },
  "setup_error": null,
  "setup_intent": "seti_VsaygQA79ZNhy4CQ",
  "status": "succeeded",
  "usage": "off_session"
}
```

<ResponseField name="id" type="string">
  Identificador da tentativa. Usa o prefixo `setatt_*`.
</ResponseField>

<ResponseField name="object" type="string">
  Sempre `"setup_attempt"`.
</ResponseField>

<ResponseField name="created_at" type="string">
  Início da tentativa em ISO 8601.
</ResponseField>

<ResponseField name="customer" type="string | null">
  Customer do cadastro no momento da confirmação.
</ResponseField>

<ResponseField name="livemode" type="boolean">
  `true` em produção; `false` no ambiente de teste.
</ResponseField>

<ResponseField name="payment_method" type="string | null">
  `pm_*` usado ou criado. Pode ser `null` quando o processador recusa o cartão
  antes que a Chargefy consiga criar o payment method.
</ResponseField>

<ResponseField name="payment_method_details" type="object">
  Snapshot seguro do método naquela tentativa: tipo, bandeira, validade e
  últimos quatro dígitos. PAN e CVC nunca aparecem.
</ResponseField>

<ResponseField name="setup_error" type="object | null">
  Erro da tentativa. Quando presente, usa `type`, `code`, `message` e `param`
  quando o erro está ligado a um campo.
</ResponseField>

<ResponseField name="setup_intent" type="string">
  Cadastro (`seti_*`) ao qual esta tentativa pertence.
</ResponseField>

<ResponseField name="status" type="string">
  Estado final ou atual da tentativa.

  <Expandable title="Valores de status">
    <ResponseField name="requires_confirmation" type="string">
      Aguarda a confirmação efetiva.
    </ResponseField>

    <ResponseField name="requires_action" type="string">
      Exige ação do comprador. O processador atual não produz este estado no
      fluxo de cartão.
    </ResponseField>

    <ResponseField name="processing" type="string">
      A confirmação está em andamento.
    </ResponseField>

    <ResponseField name="succeeded" type="string">
      O cartão foi salvo com sucesso.
    </ResponseField>

    <ResponseField name="failed" type="string">
      A confirmação falhou; veja `setup_error`.
    </ResponseField>

    <ResponseField name="abandoned" type="string">
      Outra confirmação ganhou a disputa e esta tentativa não foi processada.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="usage" type="string">
  Contexto de reutilização copiado do cadastro: `off_session` ou `on_session`.
  Hoje os cadastros da Chargefy usam `off_session`.
</ResponseField>
