Pular para o conteúdo
KrokoPay

Cartão · Produtos

Pagamentos com cartão que explicam cada recusa

O checkout valida o cartão enquanto o comprador digita, mostra a bandeira e, quando um pagamento falha, diz ao comprador o que fazer em seguida. Você recebe o mesmo motivo como failure_code no webhook charge.failed.

Neste site tudo roda em modo de teste: use os cartões de teste abaixo, nenhum cartão real é cobrado.

  • Validação enquanto digita
  • Detecção da bandeira
  • 5 códigos de falha documentados

Cartões de teste

Escolha um cartão para preencher o número. Qualquer validade futura e qualquer CVV funcionam.

O que o seu sistema vê

Pendentechg_7Lc3PvN8yHd2Ws
{
  "status": "pending",
  "failure_code": null
}

Dados fictícios. Nenhum pagamento real é feito.

Enquanto o comprador digita

Erros corrigidos antes do pagamento

A maioria dos erros de digitação nem chega a virar uma tentativa de pagamento. O checkout formata o número, detecta a bandeira e confere o tamanho e o dígito verificador enquanto o comprador digita.

  • Grupos de quatro dígitos, formatados automaticamente.
  • Bandeira detectada pelos primeiros dígitos.
  • Tamanho e dígito verificador conferidos antes do envio.
  • Tamanho do código de segurança de acordo com a bandeira.

Experimente: digite um número de cartão

Teste 4242 4242 4242 4242 ou troque um dígito.

Bandeira
Ainda não detectada
Dígitos
0 de 16
Dígito verificador
Aguardando todos os dígitos
Código de segurança
0 de 3 dígitos

O que você digita fica nesta aba do navegador, só na memória. Esta demonstração nunca armazena números de cartão.

Quando um pagamento falha

Toda recusa tem um motivo

Um pagamento com cartão recusado não é um beco sem saída. O comprador vê o que aconteceu e o que tentar em seguida. Você recebe o mesmo motivo como failure_code, e o suporte não precisa adivinhar.

O que o comprador vê

Seu cartão foi recusado. Tente outro cartão ou pague via Pix.

O que você recebe

failure_code: "card_declined"Cartão recusado

O emissor do cartão recusou o pagamento sem informar um motivo mais específico.

O que você pode fazer

Ofereça Pix ou outro cartão. Tentar o mesmo cartão logo em seguida costuma dar o mesmo resultado.

Cartão de teste4000 0000 0000 0002
charge.failedJSON
{  "id": "evt_7Pp8Qq9Rr0Ss1T",  "object": "event",  "type": "charge.failed",  "api_version": "2026-11-01",  "created_at": "2026-11-03T16:02:24.000Z",  "data": {    "object": {      "id": "chg_7Lc3PvN8yHd2Ws",      "object": "charge",      "amount": 49700,      "currency": "BRL",      "status": "failed",      "method": "card",      "card": {        "brand": "visa",        "last4": "0002"      },      "failure_code": "card_declined"    }  }}
Todos os códigos de erro

Cartões de teste

Provoque cada resultado de propósito

Use estes números no checkout de demonstração. Qualquer data de validade futura e qualquer código de segurança funcionam.

Números fictícios que só funcionam no modo de teste.

Documentação do ambiente de teste
Números de cartões de teste e o resultado de cada um
Número
4242 4242 4242 4242Aprovado
4000 0000 0000 0002Cartão recusadocard_declined
4000 0000 0000 9995Saldo insuficienteinsufficient_funds
4000 0000 0000 0069Cartão vencidoexpired_card
4000 0000 0000 0127Código de segurança incorretoincorrect_cvc

Reembolsos

Reembolse tudo ou só uma parte

Reembolse uma cobrança paga com cartão pelo painel ou pela proposta de API. A cobrança mantém o histórico e informa o reembolso com um evento.

  • Reembolso total

    Reembolsado

    O valor inteiro é devolvido. O status da cobrança passa para refunded.

  • Reembolso parcial

    Reembolso parcial

    Parte do valor é devolvida. O status passa para partially_refunded e refunded_amount mostra quanto foi devolvido.

charge.refunded Cada reembolso gera charge.refunded.

Quando o comprador recebe o dinheiro de voltaA definirVer preços
curl -X POST https://api.krokopay.app/v1/charges/chg_4Fp9KzW1xQm7Rt/refunds \  -H "Authorization: Bearer kp_test_sk_4f9a2c7e1b8d4a6f9c3e5d7b" \  -H "Idempotency-Key: refund_1042" \  -H "Content-Type: application/json" \  -d '{    "amount": 9900  }'
RespostaJSON
{  "id": "chg_4Fp9KzW1xQm7Rt",  "object": "charge",  "amount": 49700,  "currency": "BRL",  "status": "partially_refunded",  "refunded_amount": 9900}

Proposta provisória de contrato da API. São exemplos, não um endpoint em operação.

Sobre os dados do cartão

Esta demonstração nunca armazena números de cartão. Os termos de segurança de produção serão publicados.

Dúvidas sobre cartão, respondidas sem rodeios

Incluindo o que ainda não está definido.

Ainda não definido

  • TarifasA definir
  • Prazo para o dinheiro ficar disponívelA definir
  • Quando o reembolso chega ao compradorA definir

Aparece como “A definir” até as condições serem finais.

Ver preços

O checkout de demonstração detecta Visa, Mastercard, Elo e Amex pelos primeiros dígitos e ajusta o tamanho do número e do código de segurança à bandeira.

O comprador vê uma explicação curta e pode tentar outro cartão ou trocar para Pix na mesma página. Você recebe charge.failed com um failure_code: card_declined, insufficient_funds, expired_card, incorrect_cvc ou processing_error.

O comprador pode tentar de novo no checkout. Do lado da API, uma nova tentativa deve usar uma chave de idempotência para nunca criar uma cobrança duplicada.

Sim, total ou parcialmente, pelo painel ou pelo endpoint de reembolsos da proposta de API. Cada reembolso gera charge.refunded.

As condições comerciais, incluindo tarifas e o prazo para o dinheiro ficar disponível, ainda serão divulgadas. Não informamos números antes de serem finais.

Esta demonstração nunca armazena números de cartão. Os termos de segurança de produção serão publicados.

Teste cada resultado do cartão antes de entrar no ar

Crie uma conta, abra um checkout no painel de demonstração e experimente os cartões de teste.

Nenhum cartão real é cobrado.