EspañolErrores

Errores

La API INFI devuelve los errores con un cuerpo simple:

{ "error": "mensagem em português" }

El HTTP status es la fuente primaria para clasificar el error programáticamente. No hay campo code estable; basa tu lógica en status + tipo de operación.

Sin requestId en el cuerpo

Si necesitas soporte para un caso, anota: fecha/hora UTC, endpoint y el cuerpo enviado. El equipo INFI correlaciona por los logs internos.

Por status

400 Bad Request — payload inválido

Ocurre cuando algún campo falta o tiene el tipo equivocado. Ejemplos:

MensajeEndpoint
"amountCents deve ser inteiro ≥ 100 (R$1,00 mínimo)."/v1/pix, /v1/withdraw
"customer.name obrigatório."/v1/pix
"customer.document.number e customer.document.type obrigatórios."/v1/pix
"customer.document.type é obrigatório."/v1/pix
"customer.document.type deve ser 'cpf' ou 'cnpj'. Recebido: '<valor>'."/v1/pix
"customer.document.number deve ter 11 dígitos para cpf. Recebido: <N> dígitos."/v1/pix
"customer.document.number deve ter 14 dígitos para cnpj. Recebido: <N> dígitos."/v1/pix
"pixKey obrigatória."/v1/withdraw
"pixKeyType deve ser 'cpf', 'cnpj', 'email', 'phone' ou 'evp'. Recebido: '<valor>'."/v1/withdraw
"Valor abaixo do mínimo (R$ X,YY)." / "acima do máximo"/v1/pix, /v1/withdraw
"transactionId inválido."/v1/transactions/:id

401 Unauthorized — autenticación

Mensaje
"API key obrigatória. Use: Authorization: Bearer <key>"
"API key inválida ou revogada."

403 Forbidden — autorización

MensajeCausa
"Conta não está aprovada para uso da API."KYC pendiente.
"Conta suspensa. Contate o suporte."Cuenta bloqueada.
"IP de origem não autorizado para esta chave."IP fuera de la lista permitida.
"Tipo de chave PIX 'X' não autorizado para esta conta."Restricción de configuración.
"Saque com chave CPF só permitido para o CPF do responsável cadastrado."Titularidad.
"Saque com chave CNPJ só permitido para o CNPJ cadastrado da empresa."Titularidad.

404 Not Found

Mensaje
"Transação não encontrada."

Las transacciones de otros comerciantes también devuelven 404 (no 403) — para no filtrar existencia.

422 Unprocessable Entity

MensajeEndpoint
"Saldo insuficiente para realizar o saque."/v1/withdraw

429 Too Many Requests — rate limit

MensajeEndpoint
"Limite de requisições atingido. Tente em 1 hora."/v1/pix
"Limite de saques atingido."/v1/withdraw

Ver Rate limits.

502 Bad Gateway

MensajeSignificado
"Erro ao comunicar com gateway. Tente novamente."Falla transiente del proveedor; puedes reintentar.
"Erro ao processar saque. O valor não foi debitado."Falla del proveedor con rollback hecho. Puedes reintentar.
"Saque iniciado mas confirmação interrompida. Consulte /v1/transactions/<id>"Operación concluida, respuesta interrumpida. No reintentes. Consulta el transactionId.

202 Accepted — retiro indeterminado

{
  "error": "Saque em verificação. Saldo debitado; status final em até 24h.",
  "transactionId": "...",
  "status": "failed_unknown"
}

INFI no sabe si el proveedor concluyó o no. No reenvíes. Espera la conciliación automática (hasta 24h) o consulta. Ver Estados / failed_unknown.

Estrategia de retry

Escenario¿Reintentar?
Timeout de red / 502 en POST /v1/pixSí, con externalRef para garantizar idempotencia.
502 en POST /v1/withdraw con mensaje “valor não foi debitado”Sí.
502 en POST /v1/withdraw con mensaje “confirmação interrompida”No. Consulta /v1/transactions/:id.
202 failed_unknownNo. Espera.
429Sí, tras esperar (sugerencia: 1h o backoff exponencial con jitter).
400, 401, 403, 422No — corrige la causa antes.
Usa siempre externalRef en /v1/pix

Para reintentos seguros sin duplicar cobros, envía siempre externalRef. Ver Idempotencia.