Erros
Todos os errorCode que a API devolve, gerados do código que os emite.
Toda resposta de erro tem o mesmo corpo. Decida pelo errorCode, nunca pelo
message — o texto é apresentação e pode mudar; o código é contrato.
{"errorCode": "insufficient_funds","message": "Saldo insuficiente para concluir a operação.","docs": "https://docs.api.corpx.com/baas/guias/referencia/erros#insufficient_funds","requestId": "3f7c2a9e-1b4d-4c8e-9f0a-2b6d7e8f9a0b","partner": { "code": "INSUFFICIENT_BALANCE", "message": "Saldo insuficiente" }}
| Campo | O que é |
|---|---|
errorCode | Código estável. A lista abaixo é gerada do código-fonte do gateway a cada release. |
message | Explicação em português, para log e suporte. Não faça parsing. |
docs | Link para a âncora do código nesta página. |
requestId | Id da requisição no gateway. Cite ao abrir chamado. |
partner | Só quando a falha veio do liquidante: o erro cru dele, para diagnóstico. |
Enum aberto
Novos códigos podem surgir sem mudança de versão. Trate um errorCode
desconhecido como erro genérico do mesmo status HTTP: 4xx é problema na
requisição (não repita sem mudar algo), 5xx e retryable: sim podem ser
repetidos com a mesma Idempotency-Key.
Gerais
Autenticação, headers, formato e disponibilidade. Podem acontecer em qualquer rota.
| Código | HTTP | O que aconteceu e o que fazer | Retentativa |
|---|---|---|---|
account_not_found | 404 | O accountId do path não existe. | não |
banking_unavailable | 503 | O provedor bancário não está disponível para esta operação neste momento. Repita em alguns segundos; nada foi executado. | sim |
beneficiary_check_unavailable | 503 | Não foi possível confirmar o destino da transferência interna por documento. Retente ou use /transfers/internal/by-bank-account. | não |
cognito_error | 502 | Falha no provedor de identidade ao criar ou alterar a credencial. Repita; se persistir, acione o suporte. | sim |
cognito_unavailable | 503 | Provedor de identidade indisponível. Repita em instantes. | sim |
credential_revoked | 403 | A credencial usada foi revogada. Gere uma nova credencial no internet banking (IB) ou com a CorpX (BaaS). | não |
db_error | 500 | Erro interno de persistência. | não |
db_unavailable | 503 | Banco de dados do gateway indisponível. Nada foi executado; repita em instantes. | sim |
evidence_not_approved | 422 | A evidência de biometria (biometry.evidenceId) ainda não passou pela verificação de conteúdo, ou foi recusada. Envie uma nova evidência. | não |
forbidden | 403 | Você não tem permissão para realizar esta ação no recurso solicitado. | não |
idempotency_conflict | 409 | A Idempotency-Key já foi usada por outro tenant em um endpoint que deriva identificadores dela (fluxos habilitados sob demanda). Reenviar uma Idempotency-Key com corpo diferente não devolve conflito nos demais endpoints: você recebe o resultado da operação original. Ver Idempotência. | não |
identity_not_approved | 409 | A verificação de identidade da jornada de consent ainda não foi aprovada. A jornada permanece pendente; o titular refaz a captura pelo mesmo link. | não |
identity_stale | 409 | A verificação de identidade expirou. A jornada permanece pendente; o titular refaz a captura pelo mesmo link. | não |
ingest_unavailable | 503 | Componente interno de ingestão indisponível. Repita em instantes. | sim |
init_error | 500 | Falha ao inicializar dependências do gateway. Repita; se persistir, acione o suporte com o requestId. | sim |
insufficient_scope | 403 | A credencial não tem o escopo necessário para a rota (ex.: qrcode.manage, pix_out.create), ou é somente leitura tentando uma escrita. A mensagem nomeia o escopo que falta. Veja o Guia de Autenticação. | não |
integrator_credential_required | 403 | A rota movimenta dinheiro e exige credencial de integrador (client_credentials) emitida pela CorpX. Token de sessão de usuário do Portal é recusado mesmo quando o usuário tem acesso à conta. | não |
internal_error | 500 | Ocorreu um erro inesperado em nossos servidores. | não |
invalid_account | 400 | accountId informado para a credencial não é um UUID ou não pertence ao tenant. | não |
invalid_body | 400 | O corpo não é um JSON válido. | não |
invalid_client | 400 | clientId mal formado. | não |
invalid_path | 400 | Um segmento do path está vazio ou mal formado (por exemplo transactionId ausente na timeline). | não |
invalid_scope | 400 | Um dos escopos pedidos para a credencial não existe. Veja a lista em Autenticação. | não |
invalid_state | 409 | A operação não se aplica ao estado atual do recurso. | não |
marshal_error | 500 | Falha interna ao serializar a resposta. Repita; se persistir, acione o suporte com o requestId. | sim |
method_not_allowed | 405 | O método HTTP não é aceito nesta rota. Confira o método na referência da API. | não |
missing_tenant | 400 | O header X-Tenant-Id é obrigatório e não foi informado. | não |
no_accounts | 404 | O tenant ainda não tem nenhuma conta. Conclua a abertura de conta antes de operar. | não |
payload_too_large | 413 | Corpo da requisição acima do limite da rota (evidência de MED: 10 MB). Reduza o arquivo ou use a URL de upload. | não |
rate_check_unavailable | 503 | Não foi possível validar o limite de jornadas agora. Retente em instantes. | não |
scope_not_self_service | 403 | Esse escopo só pode ser concedido pela CorpX, não pela própria credencial. | não |
storage_error | 502 | Falha ao gravar ou ler o arquivo de evidência. Repita; se persistir, acione o suporte. | sim |
temporal_unavailable | 503 | O orquestrador de operações assíncronas não respondeu; a operação não foi iniciada. Repita com a mesma Idempotency-Key. | sim |
tenant_disabled | 403 | O tenant está desativado: nenhuma rota da API responde. Fale com o suporte CorpX para reativar o acesso. | não |
tenant_forbidden | 403 | O token não está autorizado para o tenant do X-Tenant-Id. Vale para qualquer rota /v1/: a credencial e o header precisam apontar para o mesmo tenant. | não |
tenant_mismatch | 403 | O X-Tenant-Id não corresponde ao tenant da conta no path (ou ao tenantId do body). | não |
tenant_suspended | 403 | Há uma pendência em aberto e as operações de escrita estão suspensas. Consultas seguem funcionando. Fale com o suporte CorpX para regularizar. | não |
unauthorized | 401 | Header Authorization ausente. Token inválido ou expirado retorna 403 (obtenha um novo token via client_credentials). | não |
unsupported_media_type | 422 | Tipo de arquivo não aceito para evidência de MED. Envie PDF, PNG ou JPEG. | não |
user_token_forbidden_on_financial_op | 403 | Token de usuário não movimenta dinheiro: operações financeiras exigem credencial de aplicação (client_credentials). | não |
workflow_start_failed | 500 | Não foi possível iniciar a operação assíncrona. Repita com a mesma Idempotency-Key; se persistir, acione o suporte. | sim |
workflow_timeout | 504 | A operação não concluiu dentro da janela síncrona. O resultado é indeterminado: consulte o extrato ou o status antes de repetir. | não |
Liquidante
Recusas do banco liquidante traduzidas para código estável. O bloco partner traz o original.
PIX out
| Código | HTTP | O que aconteceu e o que fazer | Retentativa |
|---|---|---|---|
batch_not_found | 404 | BigPix: o batchId consultado não existe. | não |
batch_too_large | 400 | BigPix: o valor pedido geraria mais de 99 parcelas. | não |
beneficiary_incomplete | 422 | O beneficiário cadastrado não tem todos os dados necessários para a operação escolhida. | não |
beneficiary_not_active_at_partner | 422 | O beneficiário existe no cadastro mas ainda não está ativo no liquidante. | não |
beneficiary_not_found | 404 | O beneficiário informado não existe no cadastro da conta. | não |
dict_lookup_limit_exceeded | 429 | Os limites de consulta DICT foram atingidos: uma contagem absoluta (maxLookupsPerDay, maxLookupsPerMinute, maxNotFoundPer5min) ou uma taxa por janela de tempo (consultas por transferência, ou fração de consultas que não resolvem chave, de 5 min a 30 dias). Valem os da policy do tenant/conta e, para os campos não preenchidos, o default global — sempre contados por conta, nunca somados no tenant. A mensagem indica qual contador ou janela disparou. Aguarde a janela renovar (00:00 BRT para o limite diário; janela deslizante para as taxas) ou ajuste os limites no Backoffice. Consumo abusivo é acompanhado e tem consequências — ver Consultas de chave PIX. | não |
invalid_amount | 400 | amount ausente, não positivo ou com mais de duas casas decimais. | não |
invalid_bank_code | 400 | No PIX por dados bancários, bankCode aceita o Compe de 3 dígitos ou o ISPB de 8 dígitos. Em TED só o Compe é aceito — ver TED. | não |
invalid_identifier | 400 | O identifier excede o tamanho aceito ou usa caracteres não permitidos. | não |
policy_denied | 422 | Uma regra de política configurada para a conta ou tenant recusou a operação — transferência, criação de QR Code, criação de chave PIX ou estorno. O corpo traz violations com rule e message de cada regra violada. Ver Políticas e Regras. | não |
QR Code
Chaves PIX
Devolução
TED
Transferência interna
Extrato, lançamentos e exportações
Webhooks
| Código | HTTP | O que aconteceu e o que fazer | Retentativa |
|---|---|---|---|
account_id_required | 422 | A credencial está restrita a contas específicas: informe accountId na subscription. Ver Assinatura por conta. | não |
hookdeck_list_failed | 502 | O serviço de entregas não conseguiu listar as tentativas. Repita em instantes. | sim |
hookdeck_retry_failed | 502 | O serviço de entregas recusou o reenvio. Repita em instantes. | sim |
hookdeck_source_unavailable | 503 | Fonte de entregas do tenant indisponível no serviço de webhooks. Repita em instantes. | sim |
hookdeck_sync_failed | 502 | Falha ao registrar o destino no nosso entregador de webhooks. Pode ser repetido. | não |
hookdeck_unavailable | 503 | Serviço de entregas de webhook indisponível. Repita em instantes. | sim |
invalid_url | 400 | A url precisa usar https://. | não |
missing_delivery_id | 400 | deliveryId ausente no path. | não |
missing_subscription_id | 400 | subscriptionId ausente no path. | não |
no_hookdeck_destination | 410 | A subscription não tem mais destino de entrega ativo. Recrie a subscription. | não |
no_hookdeck_event_found | 410 | A entrega saiu da janela de retenção e não pode mais ser reenviada. | não |
reemit_failed | 500 | Falha ao reemitir o evento. Repita; se persistir, acione o suporte com o deliveryId. | sim |
replay_already_running | 409 | Já existe um replay em andamento para esta subscription. Aguarde a conclusão. | não |
unsupported_auth_type | 400 | authType da subscription fora dos valores aceitos (NONE, HMAC, BASIC, BEARER). | não |