Pix2DePix

Erros

Toda resposta de erro tem a mesma forma, em qualquer endpoint e em qualquer código HTTP:

{
  "error": {
    "code": "external_id_conflict",
    "message": "Já existe uma cobrança com este externalId e dados diferentes.",
    "requestId": "8762ae31-b2c8-4032-800b-6d7f6a45331e"
  }
}

Escreva seu if em cima de code: ele não muda. A message é para humano ler e pode melhorar com o tempo. Guarde o requestId no seu log — é por ele que o suporte acha a requisição.

Em erro de validação vem também details, com um item por campo recusado.

CódigoHTTPSignifica
invalid_request400O corpo ou os parâmetros da requisição são inválidos.
invalid_api_keyChave de API ausente, malformada ou inexistente.
revoked_api_keyEsta chave de API foi revogada.
merchant_not_activated403A conta ainda não está liberada para cobrar. Conclua a ativação no painel.
charge_blocked403Esta conta está impedida de gerar cobranças.
missing_merchant_id403A conta ainda não tem identificador no provedor. Faça uma compra pelo painel primeiro.
charge_not_found404Cobrança não encontrada nesta conta.
external_id_conflict409Já existe uma cobrança com este externalId e dados diferentes.
charge_processing409Uma cobrança com este externalId está sendo criada agora. Tente de novo em instantes.
charge_not_cancelable409Só é possível cancelar uma cobrança que ainda não foi paga.
invalid_transition409A cobrança não pode ir para esse estado a partir do estado atual.
idempotency_key_conflict409Esta Idempotency-Key já foi usada com um corpo diferente.
rate_limited429Muitas requisições. Veja o cabeçalho Retry-After.
provider_error402O provedor de Pix recusou a cobrança.
provider_unavailableO provedor de Pix está indisponível. Tente de novo.
not_available_in_live403Esta rota só existe no ambiente de testes (chave p2d_test_).
internal_errorErro interno. Se persistir, fale com o suporte.

O que repetir e o que não

  • rate_limited (429) — espere o que diz o cabeçalho Retry-After e repita.
  • charge_processing (409) — a mesma cobrança está sendo criada agora, por outra requisição sua. Repita em 1 segundo.
  • provider_unavailable (503) e erros 5xx — repita com espera crescente.
  • provider_error (402) — o provedor recusou. Repetir igual dá igual.
  • external_id_conflict (409) — você mandou o mesmo externalId com outro valor. Confira qual dos dois pedidos está certo.
  • 4xx em geral — corrija a requisição antes de repetir.