# Status e ciclo de vida

> Os status de uma venda de cartão, quando cada um acontece em cada adquirente e o que fazer.

Fonte: https://app.thronecorporate.com/docs/cartao/status

## Os status

| Status | Quando | O que fazer |
|---|---|---|
| `pending` | Checkout aberto. **Uma recusa com tentativas sobrando não muda o status**: o comprador pode tentar de novo | Esperar. Não libere o pedido |
| `paid` | Pagamento confirmado | Liberar o pedido |
| `failed` | O checkout fechou por recusa (regra por adquirente abaixo) | Para vender de novo, criar um checkout novo |
| `expired` | O checkout passou da validade (24 horas) sem pagamento | Para vender de novo, criar um checkout novo |
| `refunded` | Estornada | Nada a fazer pela API |
| `chargeback` | Contestada pelo comprador | Acompanhar pelo painel |

Uma venda que entra em análise (o comprador vê "Pagamento em análise") continua `pending` até a decisão. Ela termina `paid` ou `failed`.

## Ciclo de vida

```text
pending -> paid -> refunded
                -> chargeback -> paid  (contestação revertida a seu favor)
pending -> failed  -> paid  (pagamento confirmado depois do fechamento)
pending -> expired -> paid  (pagamento confirmado depois da validade)
```

- `failed` e `expired` não são definitivos: se o pagamento for confirmado depois, a venda passa a `paid` e o webhook `transaction.paid` é enviado. Libere o pedido **sempre** pelo webhook ou pela consulta, nunca pela falta de erro.
- No cartão, o único webhook é `transaction.paid`. Recusa, fechamento, expiração, estorno e contestação aparecem só na consulta.
- **Estorno** não é feito pela API. Fale com o suporte do Throne.

## Quando a venda vira failed

| Adquirente | Fecha como `failed` |
|---|---|
| Sterling | Na 5ª recusa, ou 10 minutos depois de uma recusa sem nova tentativa. Uma recusa depois da análise antifraude também fecha na hora |
| Imperium | Na 5ª recusa, ou 10 minutos depois de uma recusa sem nova tentativa |
| NovaCorp | Logo depois da 6ª recusa. Com tentativas sobrando, a partir de 10 minutos depois da última recusa, sem nova tentativa e com o comprador fora da página de pagamento. Pode levar alguns minutos a mais |
| Eminence | Na 5ª recusa, ou 10 minutos depois de uma recusa sem nova tentativa. Uma recusa depois da análise antifraude ou de uma confirmação demorada também fecha na hora. Se a Eminence não aceitar o valor da venda, fecha já na primeira tentativa (a página recebe `limit`) |
| Apex | Na 5ª recusa, ou 10 minutos depois de uma recusa sem nova tentativa. Uma reprovação na análise antifraude conta como recusa e gasta uma tentativa. Se a Apex não aceitar o valor da venda, fecha já na primeira tentativa (a página recebe `limit`) |
| ShadowBank | Na 5ª recusa, ou 10 minutos depois de uma recusa sem nova tentativa. Uma reprovação na análise antifraude conta como recusa e gasta uma tentativa |
| Vortex | Na 5ª recusa, ou 10 minutos depois de uma recusa sem nova tentativa. Uma reprovação na análise antifraude conta como recusa e gasta uma tentativa |

As tentativas são contadas por checkout, no servidor. Recarregar a página não devolve tentativas.

## O que a consulta mostra em cada status

`GET /transactions/{id}` com o `transaction_id`:

| Status | Valores do seu saldo | Outros campos |
|---|---|---|
| `pending`, `failed`, `expired` | `amount_cents`, `fee_cents` e `net_amount_cents` iguais a 0 | `currency` e `native_amount_cents` com o que você mandou; `fx_rate` e `paid_at` nulos |
| `paid` | Preenchidos, em reais (a moeda da sua conta) | `fx_rate` como número (a cotação fixada na criação) e `paid_at` com a data do pagamento |

A consulta também traz `acquirer`, com a adquirente da venda. No Pix, `acquirer` vem nulo.

## Quanto tempo esperar

Não cancele um pedido por falta de webhook antes da validade de 24 horas. Na dúvida, consulte `GET /transactions/{id}`. Quando o webhook costuma chegar em cada adquirente está em [Comparar adquirentes](/docs/cartao/comparar) e em [Webhooks](/docs/webhooks#quando-o-webhook-chega).
