Y Yuupe Pay API v1Painel
Boas práticas

Erros e mensagens

Quando um pagamento não passa, a API diz o que mostrar ao comprador e se vale tentar de novo. O texto técnico fica para o log.

Formato do erro

Toda resposta de erro tem o mesmo formato. erro.codigo é estável: trate por ele, não pela mensagem.

JSON
HTTP/1.1 400
{
  "erro": {
    "codigo": "requisicao_invalida",
    "mensagem": "No Pix, o endereço do comprador é obrigatório (exigência da operadora).",
    "campo": "comprador.endereco",
    "motivo": {
      "codigo": "dados_comprador_invalidos",
      "mensagem_comprador": "Confira seus dados (CPF e endereço) e tente de novo.",
      "tentar_novamente": "sim",
      "detalhe_operadora": null
    }
  }
}

Mensagem para o comprador

O bloco motivo vem no pedido recusado, expirado ou erro e nas respostas de erro que o comprador pode resolver:

{
  "id": "…",
  "status": "recusado",
  "motivo_recusa": "Transação não autorizada - saldo insuficiente",
  "motivo": {
    "codigo": "cartao_sem_limite",
    "mensagem_comprador": "Seu cartão não tem limite disponível para esta compra. Tente outro cartão ou pague com Pix.",
    "tentar_novamente": "outro_meio",
    "detalhe_operadora": { "codigo": "51", "mensagem": "Transação não autorizada - saldo insuficiente" }
  }
}
Os textos são mantidos pela Yuupe e podem melhorar com o tempo; os códigos, não mudam. Um motivo.codigo que você não conhece trate como outro_meio.

Motivos

motivo.codigoQuandotentar_novamente
cartao_sem_limiteSaldo ou limite insuficienteoutro_meio
cartao_vencidoCartão vencidooutro_meio
cartao_dados_invalidosNúmero, validade ou código de segurança erradossim
cartao_bloqueadoCartão bloqueado ou não permitido pelo bancooutro_meio
suspeita_de_fraudeO banco suspeitou da compraoutro_meio
banco_indisponivelO banco do cartão não respondeusim
nao_autorizadoRecusa genérica do bancooutro_meio
autenticacao_falhouConfirmação do banco não concluída ou negadasim
autenticacao_expirouO comprador não confirmou com o banco em 5 minutossim
pix_expiradoO Pix não foi pago no prazosim
dados_comprador_invalidosCPF/CNPJ ou endereço faltando ou recusadossim
comprador_igual_vendedorDados do próprio vendedor usados como compradornao
pagamento_indisponivelProblema do lado da loja ou da operadoraoutro_meio
valor_fora_do_permitidoAbaixo do mínimo do cartão ou parcelas fora do permitidooutro_meio

Perdido, roubado e suspeita de fraude nunca aparecem como tal para o comprador: a mensagem é genérica, como manda a boa prática.

Códigos de erro

Erros da integração (chave, campo, idempotência) vêm sem motivo: são para você corrigir, não para o comprador.

erro.codigoHTTPQuando
nao_autenticado401Chave ausente, com formato errado ou inexistente
chave_revogada401Chave revogada no painel
conta_inativa403Conta Yuupe Pay da loja desativada
conta_nao_configurada503A loja ainda não está pronta para cobrar neste ambiente
requisicao_invalida400Campo faltando ou inválido (veja erro.campo)
valor_invalido400Total do pedido zero ou inválido
parcelas_nao_permitidas400Parcelas fora do que a loja aceita para o valor
metodo_indisponivel400Forma de pagamento desligada na loja
token_cartao_obrigatorio400Cartão sem token_cartao
valor_abaixo_minimo_3ds422Cartão abaixo do mínimo; nada foi cobrado
dados_recusados422A operadora recusou os dados enviados
autenticacao_indisponivel503Confirmação do banco indisponível na operadora; nada foi cobrado
pedido_nao_encontrado404Id ou número inexistente neste ambiente
idempotency_key_obrigatoria400Estorno sem o cabeçalho Idempotency-Key
valor_acima_do_estornavel409Estorno maior que o saldo
estorno_nao_permitido409Pedido que não pode ser estornado
erro_gateway502A operadora falhou ou recusou a operação
limite_de_requisicoes429Mais de 600 requisições por minuto
erro_interno500Erro do nosso lado: tente de novo; se persistir, fale com a Yuupe

A lista fechada também está na Referência.