Skip to main content

Cartão de Crédito

Tokenize os dados do cartão no navegador do cliente e finalize a cobrança no seu backend
O fluxo de cobrança em cartão acontece em duas etapas: tokenização do cartão (feita no navegador do comprador, usando apenas sua Public Key) e criação da transação (feita no seu backend, com o token gerado).

🚀 Como Funciona

💳 Cliente digita o cartão

No seu checkout, o comprador informa os dados do cartão

🔒 Cartão é tokenizado

O navegador chama a Velfy diretamente com sua Public Key, e recebe um token

📤 Seu backend cria a cobrança

Envie o token recebido no campo card.hash

⚡ Resposta imediata

A cobrança é processada de forma síncrona: a resposta já traz paid ou refused

🛠️ Implementação

1. Tokenizar o cartão

Todos os campos são strings, inclusive mês e ano de validade. A resposta é uma string — o token do cartão:
O token retornado tem validade curta. Gere-o imediatamente antes de criar a transação.

2. Criar a transação com o token

A ordem das chaves no Basic Auth é Secret Key primeiro: sk_xxx:pk_xxx. Invertida, a API responde Unauthorized.

3. Resposta

O campo refusedReason traz o motivo em português quando a cobrança é recusada — use-o para orientar o comprador. Em transações aprovadas ele vem como mensagem de sucesso.

📮 Endereço de cobrança (shipping)

O objeto shipping é opcional no contrato, mas recomendado em toda cobrança de cartão. O shipping.address é o que preenche o endereço de cobrança enviado à adquirente, e ele entra na análise de antifraude. Quando o endereço confere com o cadastro do portador do cartão, a chance de aprovação aumenta.
Se você não enviar shipping, a cobrança não falha — a Velfy completa o endereço para que a adquirente aceite o pedido. Mas o antifraude passa a analisar um endereço que não é o do comprador, e a taxa de aprovação cai. Envie o endereço real sempre que tiver.
Quando você envia shipping, o objeto address passa a ser obrigatório, e todos os campos dele também — exceto complement:
O shipping.fee não é somado ao amount. O valor cobrado do comprador é sempre o amount — se o frete deve ser cobrado, inclua-o no amount.
Com frete grátis, basta omitir o fee:

📊 Parâmetros Detalhados

Campos específicos do cartão

installments é uma string. Enviar o número 3 sem as aspas é recusado na validação.
card.id (cobrança em cartão salvo) ainda não é suportado. Enviar esse campo faz a transação falhar.
Consulte os campos comuns a toda transação para os demais parâmetros (amount, customer, items, etc).

📋 Status da Transação

A cobrança em cartão é síncrona: a resposta da criação já traz o resultado final.

⚠️ Erros Comuns

🛡️ Boas Práticas

  • Sempre tokenize o cartão no navegador do cliente, usando apenas a Public Key
  • Nunca envie o número do cartão para o seu próprio backend
  • Use HTTPS em todas as chamadas
  • Envie shipping.address com o endereço real do comprador
  • Envie o ip real do comprador, não o do seu servidor
  • Preencha customer.phone e customer.document corretamente
  • Use externalRef para relacionar a cobrança com seu pedido interno
  • Trate reenvios de webhook de forma idempotente

🎯 Próximos Passos

🔗 Configurar Webhooks

Receba a confirmação do pagamento automaticamente

🧾 Boleto

Aceite também pagamentos via boleto