# Erros

Todo erro devolve o mesmo formato, com um `code` estável para o seu código decidir o que fazer e uma `message` humana para exibir ou logar.

_json_

```json
{
  "error": {
    "code": "validation_error",
    "message": "2 campos estão inválidos. Veja \"fields\".",
    "fields": {
      "customer.email": "E-mail inválido."
    },
    "request_id": "aac58b2b982c2b487df5de7cbb5f6cd0"
  }
}
```

Guarde o `request_id` ao reportar um problema ao suporte é o que localiza a chamada exata nos nossos logs.

## Códigos comuns

| HTTP | Código | Significado |
| --- | --- | --- |
| 401 | `missing_api_key` | Cabeçalho Authorization ausente. |
| 401 | `invalid_api_key` | Chave desconhecida ou malformada. |
| 401 | `revoked_api_key` | Chave revogada gere uma nova. |
| 403 | `account_inactive` | Conta suspensa ou bloqueada. |
| 403 | `kyc_required` | Verificação de identidade pendente para movimentar dinheiro. |
| 404 | `resource_not_found` | O objeto pedido não existe ou não é seu. |
| 409 | `idempotency_key_in_progress` | A mesma chamada ainda está sendo processada. |
| 422 | `validation_error` | Um ou mais campos do corpo são inválidos veja `fields`. |
| 422 | `idempotency_key_reused` | A Idempotency-Key já foi usada com um corpo diferente. |
| 422 | `insufficient_balance` | Saldo disponível não cobre o saque pedido. |
| 429 | `rate_limit_exceeded` | Limite de requisições excedido veja `Retry-After`. |
| 503 | `provider_not_configured` | Recebimento temporariamente indisponível. |
| 500 | `internal_error` | Falha nossa. Tente de novo; se persistir, contate o suporte com o request_id. |
