Pular para o conteúdo principal
O caminho mais curto entre “tenho um produto publicado” e “alguém me pagou”. Você cria um link, manda pra pessoa, e acabou — não tem checkout pra construir: sem página de pagamento, sem input de cartão, sem SDK de provedor no seu app, sem escopo PCI.
Essa linha só funciona se as duas peças abaixo existirem — as duas vêm de catálogo: O slug é o do seu tenant e entra na URL pública, então ele é argumento: o SDK não deduz isso de uma secret key.

O que acontece quando alguém abre

O link não tem pagador. Quem abre preenche os próprios dados e paga; o cliente e a fatura são materializados no submit. Isso é o que permite mandar o mesmo link pra várias pessoas — ou pra um grupo — sem cadastrar ninguém antes. A venda é no Brasil (você e o comprador no Brasil), por Pix ou cartão à vista, em ambiente de teste, e a cobrança cai na sua conta de recebimento no provedor de pagamento. Venda internacional pela Infi UK Ltd está em breve. Sem o cadastro de recebimento pronto, o link abre mas a loja ainda não recebe, e o checkout avisa isso. Veja colocar em produção.
O contrato ainda pede taxId ao abrir a sessão. O POST .../sessions aceita email e taxId (CPF/CNPJ válido) juntos, e recusa um sem o outro. Se você montar o checkout no seu app em vez de usar o link, passe taxId junto do cliente.

Pra onde o pagador vai depois

Por padrão ele fica no nosso recibo. Se você quer o pagador de volta no seu site, passe as URLs na criação do link:
Depois de pagar, o checkout leva o pagador pra successUrl com ?status=success&invoice=<id> anexado — os seus parâmetros ficam. cancelUrl aparece como “Voltar para {sua loja}” enquanto o checkout está aberto. As duas precisam ser URL absoluta http(s); caminho relativo ou qualquer outro esquema responde 422. O mesmo par existe em infi.checkout({ successUrl, cancelUrl }) pra faturas criadas no seu servidor, e no embed (@beinfi/checkout) o equivalente é a prop returnUrl.
Redirect não é confirmação. status=success na URL é um evento do navegador do pagador. Libere o produto no webhook payment.confirmed, nunca pelo parâmetro.

Listar e revogar

Revogar é definitivo. O token para de resolver na hora. Faturas que já saíram daquele link continuam pagáveis — quem estava no meio do checkout não perde a cobrança que tem em mão.

E como eu sei que pagaram?

Não é pelo retorno de links.create: pagamento é assíncrono. Em produção, webhook assinado (payment.confirmed); em sandbox, polling da fatura — os dois em webhooks.

Use o link

Venda pontual, cobrança por WhatsApp, primeira venda antes de ter app.

Use metering

Cobrança por uso contínuo (tokens, requests), onde o valor só existe depois que o cliente consumiu — veja SDK.
O fluxo do comprador por HTTP — abrir sessão, cobrar, e onde a fatura aparece — está em a página de obrigado.