Skip to main content
Quando uma request falha, a API da Chargefy responde com duas informações:
  • Um status HTTP, como 400, 401 ou 404, que diz a classe do problema.
  • Um objeto error, em JSON, com um code estável e uma mensagem legível.
O ponto mais importante: use error.code para lógica no seu sistema. Use error.message para log, suporte e debugging. Para recusas de cobrança, consulte também os Códigos de falha: o catálogo explica motivos como insufficient_funds e expired_card, a mensagem segura para o comprador e a orientação para uma nova tentativa. Nas cobranças, esses detalhes ficam em payment_error; no Payment Intent, em last_payment_error.

Formato

string
Código estável para tratamento programático. Exemplo: parameter_missing, authentication_failed, resource_missing.
string | null
Link para documentação adicional, quando disponível.
string
Texto em inglês explicando o problema. A mensagem pode mudar para ficar mais clara; não faça lógica usando essa string.
string | null
Campo relacionado ao erro, quando aplicável. Pode ser um campo do body, query param ou header.
string
Categoria do erro. Use para separar erros de validação, autenticação, pagamento, rate limit e erro interno.

Tipos de erro

Status HTTP

Exemplos comuns

Use esta tabela para reconhecer a causa e decidir a ação sem abrir vários blocos de exemplo:

amount_too_small

A confirmação retorna HTTP 400, type: invalid_request_error e param: amount quando a cobrança final não cobre o mínimo. A cobrança não é enviada ao processamento e a mesma tentativa não deve ser repetida automaticamente. A regra usa o plano efetivo, a bandeira, as parcelas e o contexto da plataforma. Ela é aplicada depois dos descontos e do cálculo de juros e repasse de taxas. Os juros pagos pela organização também precisam caber no valor disponível. minimum_amount representa o mínimo para os componentes de juros e repasse resolvidos nesta cotação; mudar a compra exige nova prévia e confirmação. Um item de catálogo de R$ 0,50 é válido. O mínimo se aplica à cobrança final, inclusive em faturas e renovações. Ciclos gratuitos não geram tentativa de cobrança.
Quando houver erro persistido, esses campos também acompanham payment_intent.last_payment_error e charge.payment_error, com categoria invalid e advice_code: do_not_try_again. Isso não é uma recusa do banco nem um pedido para trocar o cartão. No MCP, os mesmos campos aparecem no erro estruturado com retryable: false. A organização deve corrigir o valor, desconto ou configuração da venda antes de uma nova tentativa. Para o comprador, mostre: “A transação não pôde ser processada. Entre em contato com o vendedor.”

payment_method_not_allowed

Pix e boleto não são escolhas permitidas em checkout com trial gratuito, inclusive em sessões já existentes. A tela oferece cartão quando sua coleta for necessária; payment_method_collection: if_required permite começar sem método quando nada é devido hoje. Forçar Pix ou boleto na confirmação retorna HTTP 400, type: invalid_request_error, param: payment_method e code: payment_method_not_allowed, com mensagem explicando a restrição do trial e doc_url apontando para esta seção. Corrija o método ou a configuração do checkout; não repita automaticamente a mesma tentativa.

Request ID

Toda resposta pública inclui o header X-Request-Id. Guarde esse valor nos seus logs: ele ajuda o suporte da Chargefy a encontrar a request exata.
Quando abrir um chamado, envie:
  • O X-Request-Id.
  • O horário aproximado da chamada.
  • O endpoint chamado.
  • O error.code recebido.

Tratamento recomendado

Exemplo simples em Node:
Node

Boas práticas

  • Faça lógica com error.code, não com error.message.
  • Mostre mensagens de cartão ao comprador com cuidado e sem expor detalhes sensíveis.
  • Faça retry com backoff para 429 e 5xx apenas quando o error.code permitir. payment_result_unconfirmed exige consulta/reconciliação, nunca um novo write cego.
  • Não faça retry automático para 400, 401, 402, 403 ou 404 sem corrigir a causa.
  • Logue X-Request-Id em todas as falhas.

Próximos passos

Autenticação

Corrija erros de credencial, escopo e organização.

Paginação

Entenda erros de cursor, limite e filtros.

Idempotência

Evite duplicar writes em retries.

Datas, fusos e moedas

Corrija erros de formato em due_date.

Requests

Consulte requests registrados na API.