Upsell depois do pagamento

Quem acabou de pagar leva mais um

Logo depois do pagamento, a tela de sucesso oferece mais um produto. No cartão, o cliente aceita com um clique e paga sem digitar nada; no Pix e no boleto, a cobrança nova sai na hora.

  • Oferta na tela de sucesso
  • Cartão cobrado sem digitar de novo
  • Pix ou boleto novo na hora
  • Webhook só do upsell

Configure pela API, na sua linguagem, ou peça pro seu agente pelo MCP.

  • Node.js
  • Python
  • PHP
  • Ruby
  • Go
  • Java
  • cURL
  • Next.js
  • Laravel
  • MCP
  • Claude
  • Cursor
  • ChatGPT
  • Lovable
  • n8n
  • Zapier

No mesmo meio da compra, sem o cliente recomeçar

O upsell é cobrado no meio de pagamento que o cliente acabou de usar. É uma cobrança à parte, no preço do produto, e a compra que ele já pagou fica como está.

  • Pagou no cartão

    Cobrado na hora, no mesmo cartão

    À vista, sem o cliente digitar o cartão de novo e sem passar pelo 3DS outra vez: o banco já confirmou que era ele na compra.

  • Pagou no Pix

    Um Pix novo, na mesma tela

    O checkout mostra o QR Code e o copia e cola do valor do upsell. Pagou, o dinheiro cai na hora, como em qualquer Pix.

  • Pagou no boleto

    Um boleto novo, com Pix junto

    Sai um boleto do valor do upsell, com o QR Code do Pix impresso nele pra quem quiser pagar na hora.

O que oferecer

O próximo passo de quem acabou de comprar

O upsell que mais vende completa a compra: o material de apoio do curso, a garantia do produto, a hora a mais com você. Qualquer produto avulso do seu catálogo vira a oferta.

  • Curso onlineComprou Fotografia com o celular+ Pack de presetsR$ 47,00
  • E-bookComprou Finanças pra autônomos+ Planilha de controleR$ 19,90
  • EventoComprou Ingresso do workshop+ Gravação das palestrasR$ 39,00
  • LojaComprou Cadeira Ergo Plus+ Garantia estendidaR$ 89,00
  • SaaSComprou Plano Pro+ Configuração assistidaR$ 297,00
  • MentoriaComprou Mentoria em grupo+ Sessão individualR$ 150,00

Pela API

Um campo no checkout, e a oferta aparece

Você não monta tela nenhuma. Escolhe o produto ao criar o checkout, e a AbacatePay mostra a oferta, cobra e avisa o seu servidor.

  1. Cadastre o produto da ofertaUm produto avulso e ativo, com descrição e imagem: é o que o cliente vê na tela de sucesso.
  2. Passe o upSellProductIdNo POST /v2/checkouts/create, com o id ou o externalId do produto. Pelo MCP, o createCheckout aceita o mesmo campo.
  3. O cliente paga e vê a ofertaA tela de sucesso mostra o produto e o botão “Aproveitar a oferta”. Com completionUrl, ela espera o cliente tocar em Continuar.
  4. Chega um segundo webhookPago o upsell, chega outro checkout.completed do mesmo checkout, com isUpSell: true e só o produto da oferta.
Linguagem do exemplo
terminal
curl -X POST https://api.abacatepay.com/v2/checkouts/create \
  -H "Authorization: Bearer $ABACATEPAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [{ "id": "prod_curso_foto", "quantity": 1 }],
    "methods": ["PIX", "CARD"],
    "upSellProductId": "presets-de-edicao"
  }'
checkout.mjs
const res = await fetch("https://api.abacatepay.com/v2/checkouts/create", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.ABACATEPAY_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    items: [{ id: "prod_curso_foto", quantity: 1 }],
    methods: ["PIX", "CARD"],
    // o produto da oferta, pelo id ou pelo externalId
    upSellProductId: "presets-de-edicao",
  }),
});

const { data, error } = await res.json();
if (error) throw new Error(error);

console.log(data.url); // o checkout, já com o upsell
checkout.py
import os
import requests

res = requests.post(
    "https://api.abacatepay.com/v2/checkouts/create",
    headers={"Authorization": f"Bearer {os.environ['ABACATEPAY_API_KEY']}"},
    json={
        "items": [{"id": "prod_curso_foto", "quantity": 1}],
        "methods": ["PIX", "CARD"],
        "upSellProductId": "presets-de-edicao",
    },
)
body = res.json()
if body["error"]:
    raise Exception(body["error"])

print(body["data"]["url"])
checkout.php
<?php
$ch = curl_init("https://api.abacatepay.com/v2/checkouts/create");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer " . getenv("ABACATEPAY_API_KEY"),
        "Content-Type: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode([
        "items" => [["id" => "prod_curso_foto", "quantity" => 1]],
        "methods" => ["PIX", "CARD"],
        "upSellProductId" => "presets-de-edicao",
    ]),
]);
$body = json_decode(curl_exec($ch), true);

echo $body["data"]["url"];

checkout.completedo webhook que chega quando o upsell é pago

{
  "id": "log_7Hq2mX9pL4vR1nK8",
  "event": "checkout.completed",
  "data": {
    "checkout": {
      "id": "bill_abc123xyz",
      "isUpSell": true,
      "amount": 4700,
      "paidAmount": 24400,
      "items": [{ "id": "prod_presets", "quantity": 1 }]
    }
  }
}

Venda a mais, sem mexer na compra

A compra paga fica como está. O upsell é uma cobrança à parte, com aviso próprio, e você libera o que ele comprou.

Cada upsell, um aviso

A compra e o upsell chegam em dois checkout.completed do mesmo checkout. O do upsell vem com isUpSell: true.

Do seu catálogo

Qualquer produto avulso e ativo vira a oferta, com o nome, a imagem e o preço que você cadastrou.

Webhook separado

O upsell chega no seu servidor com isUpSell: true e só o produto dele nos itens.

Tempo pra decidir

Com completionUrl, a tela de sucesso só leva o cliente pro seu site quando ele toca em Continuar.

Pelo MCP também

Peça pro seu agente criar o checkout com o upsell: o createCheckout já tem o campo.

1 cliquepro cliente levar mais um
Sem custo extra

No cartão, ele toca em “Aproveitar a oferta” e pronto: sem digitar o cartão, sem 3DS de novo.

Qual usar?

Order bump ou upsell?

Os dois aumentam o ticket, em momentos diferentes da compra. Dá pra usar os dois na mesma venda.

  1. Escolhe o produto
  2. Order bump
  3. Paga
  4. Upsell

Dúvidas sobre o upsell

O que mais perguntam os lojistas antes de ligar a oferta depois do pagamento.

O que é upsell?

É a oferta de mais um produto logo depois do pagamento, na tela de sucesso do checkout. O cliente acabou de confiar na sua loja e já pagou: é a hora em que ele mais aceita levar mais um.

Qual a diferença entre upsell e order bump?

O order bump aparece no checkout, antes de pagar, e entra no mesmo pedido, numa cobrança só. O upsell aparece depois do pagamento aprovado e é uma cobrança à parte: a compra que o cliente já pagou não muda.

Como eu configuro?

Pela API: no POST /v2/checkouts/create, passe o upSellProductId com o id ou o externalId de um produto do seu catálogo. A tela de sucesso mostra a oferta sozinha, sem você montar nada. Pelo MCP, o createCheckout aceita o mesmo campo.

Que produto pode ser o upsell?

Qualquer produto ativo e avulso do seu catálogo, sem ciclo de assinatura: um e-book, uma aula bônus, uma garantia, uma sessão extra. Preencha a descrição e a imagem, porque é isso que o cliente vê na oferta. Vale um upsell por checkout.

O cliente precisa digitar o cartão de novo?

Não. Se ele pagou no cartão, o upsell é cobrado na hora, à vista, no mesmo cartão e sem passar pelo 3DS outra vez. Se pagou no Pix, a tela mostra um Pix novo do valor do upsell; no boleto, sai um boleto novo, com o Pix impresso nele.

Como fico sabendo que o cliente aceitou?

Quando o upsell é pago, chega outro checkout.completed, com o mesmo id do checkout, isUpSell: true e só o produto do upsell nos itens. O paidAmount soma a compra e o upsell. Trate a duplicidade pelo id do evento, não pelo id do checkout, pra não descartar o upsell.

O cupom da compra vale no upsell?

Não. O upsell é cobrado pelo preço do produto que você cadastrou. Quer dar um preço especial na oferta? Cadastre o produto do upsell com esse preço.

O cliente vai direto pro meu site depois de pagar?

Com completionUrl, a tela de sucesso só leva o cliente pra sua página quando ele toca em Continuar, pra dar tempo de ver a oferta.

Quanto custa?

Nada a mais. O upsell vem com a conta: você paga só a taxa da cobrança dele, a mesma de qualquer venda. R$ 0,80 no Pix, R$ 2,50 no boleto pago e 5,42% + R$ 0,60 no cartão à vista, recebendo em D+1. Sem mensalidade e sem adesão.

Preciso de CNPJ?

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

Falar com vendas

Sem mensalidade e sem adesão.

Quem já pagou
leva mais um.

Crie a conta, cadastre o produto da oferta e passe o upSellProductId no próximo checkout.

Criar conta grátis

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

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