Todo erro volta no mesmo formato:
error e code trazem o mesmo valor. Programe contra o code, nunca contra a message, que é livre e pode mudar. Erros de validação invalid_request podem trazer um campo details com os erros por campo:

Autenticação e autorização

Conta e vínculo

404 não significa só “conta errada”. Saldo e status de transação passam por uma verificação que exige o cadastro aprovado. Uma conta recém-aberta, ainda em under_review, responde 404 account_not_found em GET /v1/accounts/{accountId}/balance e em /transactions/{transactionId}, mesmo sendo sua.Antes de concluir que perdeu o vínculo, consulte GET /v1/accounts/{accountId}/status: essa rota funciona desde a criação. Ver Contas gerenciadas.

Abertura de conta

Se você recebeu cpf_already_registered numa retentativa e não guardou o accountId, recupere-o em GET /v1/accounts. A conta foi criada uma vez só; a janela de idempotência apenas parou de repetir a resposta original. Ver Idempotência.

Validação e idempotência

Dinheiro

Estes códigos aparecem quando as rotas de pagamento estiverem liberadas para a sua credencial.

Limite de uso

Indisponibilidade

Um 422 invalid_request nem sempre é culpa do seu payload. Erros do provedor nunca aparecem em estado bruto, mas a tradução depende do tipo: indisponibilidade e falha de autenticação viram 503, enquanto uma recusa do provedor vira 422 invalid_request. Se o corpo passou na validação de campos e ainda assim voltou 422, o motivo pode estar do lado do provedor, não do seu.

Política de retry

Repita automaticamente apenas:

409 request_in_progress

Aguarde e tente de novo. A primeira requisição ainda está rodando.

429

Espere o Retry-After (60 s) antes da próxima tentativa.

503

Backoff exponencial. Vale para os quatro códigos 503.
Não repita automaticamente:
  • idempotency_conflict: corrija o corpo ou use uma chave nova.
  • payment_pending_confirmation: exige decisão de um operador.
  • 500 internal_error: uma retentativa isolada é aceitável, mas não entre em laço. Se repetir, é problema nosso, não seu.
  • Qualquer outro 4xx: é erro de requisição, repetir não muda o resultado.
Toda retentativa precisa de X-Timestamp novo e assinatura nova. Uma assinatura já usada é recusada como repetição, e você recebe 401 no lugar do erro real. Mantenha a mesma Idempotency-Key para que a operação continue sendo a mesma.

Exemplo de retry