Autenticação 3DS no cartão

O banco confirma quem está comprando

Na primeira compra no cartão, o banco do cliente confirma que é ele mesmo: no app, por código ou sem pedir nada. O risco de chargeback cai 92%, e a fraude autenticada fica na conta do banco.

  • Incluso na taxa do cartão
  • Já vem no abacatepay.js
  • App, código ou sem atrito
  • Chargeback por fraude com o banco

Autenticação nas bandeiras, carteiras e navegadores do seu cliente.

  • Visa
  • Mastercard
  • Apple Pay
  • Google Pay
  • Android
  • Chrome
  • Safari
  • Firefox
  • JavaScript
  • React
  • Next.js
  • Vue.js

Como o 3DS funciona

Entre o clique em pagar e a cobrança, a AbacatePay pergunta ao banco do cartão se é mesmo o titular. Tudo em segundos, dentro do checkout.

Quando o banco reconhece, o cliente nem percebe

Quem decide como autenticar é o banco do cartão. Quando ele reconhece a compra, confirma sozinho; quando não, pede um toque no app ou um código. Veja o que o cliente vê em cada caso.

Como o banco autentica

Frictionless

O banco confirma sozinho

Com os dados da compra, o banco reconhece o cliente e autentica sem pedir nada. A janela pisca e some: pra quem compra, é como se o 3DS nem existisse.

Quando costuma acontecer

  • Cliente e aparelho conhecidos do banco
  • Valor dentro do costume do cartão

Desafio

Confirmação no celular

O banco manda um pedido pro app dele no celular do cliente. Um toque com Face ID ou digital confirma, e o checkout segue sozinho.

Quando costuma acontecer

  • Compra fora do padrão do cartão
  • Banco com confirmação pelo app

Desafio

Código de uso único

O banco envia um código por SMS e o cliente digita na janela. Funciona com qualquer celular, sem precisar do app do banco instalado.

Quando costuma acontecer

  • Compra fora do padrão do cartão
  • Banco que confirma por SMS

Liability shift

Chargeback por fraude? Com 3DS, quem paga é o banco

Quando o banco autentica a compra, ele assume a responsabilidade se o titular disser depois que não reconhece a compra. É por isso que o 3DS reduz em 92% o risco de chargeback. Na AbacatePay, a primeira compra de cada cartão já sai autenticada.

92%menos risco de chargeback com a autenticação 3DS
Venda com ou sem 3DS
Disputa por fraude

“Não reconheço esta compra.”Fone Lume Pro · R$ 1.290,00 · Visa •• 4242

Quem responde pela fraude
A sua lojaO banco emissor do cartãomuda
Seu saldo
Pode perder o valor da vendaNão paga a fraudemuda
Prova de quem comprou
Você junta as evidênciasA autenticação do bancomuda
Desacordo comercial
Continua com a lojaigual

Pra disputa por desacordo comercial, o painel sugere as evidências de cada motivo.Ver como responder →

Como ligar

O 3DS já vem no abacatepay.js

Você não integra 3DS: ele está dentro do pagamento. O script abre a janela do banco quando ele pede, espera o cliente confirmar e só então devolve o token pra cobrar.

  1. Checkout e link de pagamentoNada a fazer: a página de pagamento da AbacatePay já autentica o cartão com o banco.
  2. Checkout transparenteCarregue o abacatepay.js e chame tokenize() no clique de pagar. O 3DS acontece ali.
  3. Cobre com o tokenO backend cria a cobrança com o ctok_, que vale 60 segundos e uma cobrança só.
  4. Próximas cobrançasGuarde o cardToken da resposta pra cobrar o mesmo cartão depois, sem pedir 3DS de novo.
Onde fica o código
pagamento.html
<script src="https://abacatepay.com/abacatepay.js"></script>

<div id="cartao"></div>
<button id="pagar" disabled>Pagar</button>

<script type="module">
  const botao = document.getElementById('pagar')
  const checkout = AbacatePay.create({
    publicKey: 'pk_sua_chave_publica',
    amount: 129000, // centavos: o mesmo valor da cobrança
    onCardChange: ({ canTokenize }) => (botao.disabled = !canTokenize),
  })
  await checkout.mount('#cartao')

  botao.addEventListener('click', async () => {
    try {
      // abre a janela do banco se ele pedir, e fecha sozinha
      const { token } = await checkout.tokenize({
        name: 'Paula Mendes',
        email: 'paula@exemplo.com',
        taxId: '529.982.247-25',
      })
      // mande o token pro seu backend em até 60 segundos
    } catch (error) {
      if (error.code === 'THREE_DS_FAILED') {
        // o cliente não confirmou: deixe tentar de novo
      }
    }
  })
</script>
PagamentoCartao.jsx
export function PagamentoCartao({ publicKey, amount, cliente }) {
  const area = useRef(null)
  const checkout = useRef(null)
  const [podePagar, setPodePagar] = useState(false)

  useEffect(() => {
    const instancia = window.AbacatePay.create({
      publicKey,
      amount,
      onCardChange: ({ canTokenize }) => setPodePagar(canTokenize),
    })
    checkout.current = instancia
    instancia.mount(area.current)
    return () => instancia.destroy()
  }, [publicKey, amount])

  async function pagar() {
    setPodePagar(false)
    // o 3DS acontece aqui dentro, quando o banco pede
    const { token } = await checkout.current.tokenize(cliente)
    await fetch('/pagar', { method: 'POST', body: JSON.stringify({ token }) })
  }

  return (
    <>
      <div ref={area} />
      <button onClick={pagar} disabled={!podePagar}>Pagar</button>
    </>
  )
}
server.mjs
// POST /pagar: cobra o cartão com o token que veio do navegador
const resposta = await fetch('https://api.abacatepay.com/v2/transparents/create', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.ABACATEPAY_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    method: 'CARD',
    data: {
      amount: 129000, // o mesmo valor do AbacatePay.create
      token, // ctok_ já autenticado pelo 3DS
      installmentCount: 3,
      customer: { name, email, taxId, cellphone },
    },
  }),
})
const { data } = await resposta.json()

// Guarde data.cardToken: a próxima cobrança deste cartão
// vai com cardToken no lugar do token, sem o cliente e sem 3DS

No modo de teste, o formulário vem com o cartão 4242 4242 4242 4242 e não pede 3DS: a janela do banco aparece em produção.

3DS onde protege, sem atrito onde não precisa

A primeira compra de cada cartão é autenticada. Depois, o cartão salvo cobra sem pedir nada ao cliente.

Autentica uma vez, cobra sem atrito

A primeira compra passa pelo 3DS. Renovações e o upsell de um clique usam o cartão salvo, sem o cliente confirmar de novo.

Biometria ou código

O banco escolhe: Face ID ou digital no app dele, código por SMS ou nada.

Assinaturas sem atrito

O 3DS vale na primeira cobrança. As renovações usam o cartão salvo, sem o cliente.

Apple Pay e Google Pay

A carteira já autentica no aparelho, com Face ID, digital ou senha.

Junto com o antifraude

A análise de risco e o 3DS trabalham juntos em cada venda no cartão.

92%menos risco de chargeback com o 3DS
Incluso no cartão

Sem custo extra: já vem na taxa do cartão, de 5,42% + R$ 0,60 à vista em D+1.

Dúvidas sobre o 3DS

O que mais perguntam sobre a autenticação do cartão e o chargeback.

O que é 3DS (3-D Secure)?

É a autenticação das bandeiras em que o banco do cartão confirma que quem está comprando é o titular, antes de a compra ser aprovada. O banco recebe os dados da compra e decide se autentica sozinho ou se pede uma confirmação ao cliente, no app ou por código.

O 3DS tem custo?

Não. A autenticação 3DS e o antifraude já estão na taxa do cartão: de 5,42% + R$ 0,60 à vista a 17,37% + R$ 0,60 em 12x, recebendo em D+1. Sem mensalidade e sem adesão.

O cliente sempre vai precisar digitar um código?

Não. Quando o banco reconhece o cliente e a compra, ele autentica sem pedir nada e a janela fecha sozinha. A confirmação no app do banco ou por código só aparece quando o banco quer ter certeza.

Preciso integrar alguma coisa pra ter 3DS?

No checkout e no link de pagamento da AbacatePay, não: o 3DS já roda. No checkout transparente, o tokenize() do abacatepay.js faz a autenticação, abrindo a janela do banco quando ele pede. Você só espera a Promise e manda o token pro backend.

O que é liability shift?

É a troca de responsabilidade que o 3DS traz: quando o banco autentica a compra, um chargeback por fraude (o titular dizendo que não reconhece a compra) passa a ser responsabilidade do banco emissor, e não da loja.

O 3DS acaba com todo chargeback?

Reduz em 92% o risco. Ele protege contra o chargeback por fraude, quando o titular diz que não reconhece a compra. Disputas por desacordo comercial, como produto não entregue ou cancelamento, continuam com a loja: pra elas, o painel sugere as evidências de cada motivo.

Assinatura e cartão salvo pedem 3DS toda vez?

Não. O 3DS vale na primeira compra, com o cliente presente. As renovações da assinatura e as cobranças com o cardToken são feitas pela loja, sem o cliente, e não pedem confirmação de novo.

E se o cliente não confirmar no banco?

A compra não é cobrada. No checkout transparente, o tokenize() rejeita com o código THREE_DS_FAILED, e o cliente pode tentar de novo ou usar outro cartão.

Quais cartões passam pelo 3DS?

Os cartões de crédito Visa e Mastercard, à vista ou parcelado em até 12x. No Apple Pay e no Google Pay, a autenticação acontece no próprio aparelho, com Face ID, digital ou senha.

Dá pra testar o 3DS?

No modo de teste, o formulário vem com o cartão 4242 4242 4242 4242 e não pede 3DS, pra você testar o fluxo inteiro sem banco. A janela de autenticação aparece em produção, com cartões de verdade.

Preciso de CNPJ?

Sim. Por enquanto a AbacatePay é só pra CNPJ. MEI serve.

Falar com um especialista

3DS e antifraude sem custo extra.

Deixa o banco
confirmar por você.

Crie a conta e, com o cartão liberado, a primeira compra de cada cartão já sai autenticada. Sem mensalidade e sem adesão.

Criar conta grátis

Sem mensalidade. Aprovação não leva semanas.

Ilustração renascentista com anjos e um abacate numa concha