Começando

Erros

A API usa os status HTTP convencionais e sempre retorna um envelope de erro padronizado, com um código estável para tratamento programático e uma mensagem legível em português.

Envelope de erro

CampoTipoObrigatórioDescrição
errorobjectSimPresente em todas as respostas de erro.
error.codestringSimCódigo estável em snake_case. Use-o na sua lógica.
error.messagestringSimDescrição legível (pt-BR). Pode mudar; não faça parse.
error.detailsarray | objectNãoInformações extras. Em validation_error é uma lista [{ field, message }]; em duplicate_external_id traz transaction_id.

Status HTTP

StatusSignificado
200 / 201Sucesso. 201 indica recurso criado.
400Requisição malformada (JSON inválido, credenciais ausentes).
401Autenticação ausente, inválida ou expirada.
403Sem permissão: conta bloqueada ou em análise, saques bloqueados, 2FA inativo ou IP não autorizado.
404Recurso não encontrado.
409Conflito: external_id duplicado.
413Corpo da requisição maior que 64 KB.
422Parâmetros válidos em formato, mas recusados pela regra de negócio ou validação.
429Limite de requisições excedido.
500Erro interno. Pode ser retentado com segurança se você usar external_id.
502Instituição parceira indisponível no momento. Tente novamente em instantes com o mesmo external_id.

Códigos de erro

CódigoHTTPDescrição
invalid_json400O corpo não é um JSON válido.
invalid_request400Faltam client_id e/ou client_secret na emissão de token.
unauthorized401Header Authorization: Bearer ausente.
invalid_token401Token inválido, expirado ou credencial revogada.
invalid_client401client_id/client_secret incorretos ou revogados.
account_pending403Conta em análise — operações financeiras ficam bloqueadas até a aprovação.
account_blocked403Conta bloqueada. Fale com o suporte.
kyc_required403Verificação de identidade (KYC) não aprovada: sem cobranças, saques, links ou API até a aprovação. Envie os documentos no painel.
two_factor_required403Saque solicitado por conta sem verificação em duas etapas (2FA) ativa.
cashout_disabled403Saques bloqueados para a conta. Fale com o suporte.
ip_not_allowed403IP de origem não está na allowlist da credencial.
not_found404Transação não encontrada (ou de outra conta).
duplicate_external_id409Já existe transação com este external_id.
payload_too_large413Corpo maior que 64 KB.
validation_error422Um ou mais campos inválidos — veja details.
amount_too_low422Valor abaixo do mínimo ou insuficiente para cobrir as taxas.
amount_too_high422Valor acima do máximo permitido para uma cobrança PIX.
insufficient_balance422Saldo disponível insuficiente para o saque (valor + taxa).
invalid_pix_key422Chave PIX inválida para o tipo informado.
method_unavailable422Meio de pagamento indisponível em um link de pagamento. Use ["pix"].
rate_limited429Limite de requisições excedido.
internal_error500Erro inesperado no servidor.
provider_unavailable502Não foi possível gerar o PIX na instituição parceira agora. Tente novamente.
Exemplos de erro
{
  "error": {
    "code": "validation_error",
    "message": "Parâmetros inválidos",
    "details": [
      {
        "field": "amount",
        "message": "no máximo 2 casas decimais"
      }
    ]
  }
}