Skip to main content
Use Pix In para cobrar via QR Code dinâmico e confirmar pagamento por webhook.

Passo 1: criar transação

Crie a cobrança com method: "pix" e currency: "BRL".
const created = await client.transactions.create({
  amount: 1500, // R$15,00 em centavos
  currency: "BRL",
  method: "pix",
  notify_url: "https://seuapp.com/webhooks/pagou",
  buyer: {
    name: "Maria Silva",
    email: "maria@empresa.com",
    document: {
      type: "CPF",
      number: "12345678901",
    },
  },
  products: [{ name: "Pedido #1234", price: 1500, quantity: 1 }],
});

console.log(created.data.id, created.data.status);

Passo 2: exibir instrução de pagamento

Use os campos retornados em data.pix para renderizar QR Code e copia-e-cola no checkout.
const qrCodePayload = created.data.pix?.qr_code;
const expiresAt = created.data.pix?.expiration_date;

console.log(qrCodePayload, expiresAt);
Exemplo de sessão de checkout Pix com QR Code
O layout acima é apenas referência visual. Sempre use os dados Pix retornados pela API.

Passo 3: acompanhar status

Webhook é o canal principal. GET /v2/transactions/{id} é fallback para reconciliação.
app.post("/webhooks/pagou/payments", async (req, reply) => {
  const event = req.body as { id: string; event: string; data?: { id?: string; status?: string } };

  reply.code(200).send({ received: true });

  if (await alreadyProcessed(event.id)) {
    return;
  }

  const transactionId = event.data?.id;
  const status = event.data?.status;

  if (event.event === "transaction" && transactionId && status) {
    await updateTransactionStatus(transactionId, status);
  }
});

Passo 4: concluir pedido

Quando o status virar paid ou captured, finalize seu fluxo de negócio. Consulta de fallback:
const tx = await client.transactions.retrieve("id-da-transacao");
console.log(tx.data.status, tx.data.paid_at);
Para payload completo, filtros e reembolso, veja os endpoints da seção Pix.