Links de pagamento
Criar um link de pagamento
Cria um payment link.
Cria um payment link — uma URL pública compartilhável. A cada clique de um comprador, uma nova
Cenários de
Existem três formas válidas de descrever um item. Use a mais idiomática pro seu caso.
Quando o
Pra que o link seja recorrente, adicione
checkout.session é materializada, copiando os line_items e metadata do link. Use pra bio do Instagram, e-mail marketing, QR codes, “comprar agora” em landing page.
Só line_items é obrigatório. O link é reutilizável e não expira:
nasce com is_active: true e só sai do ar quando você desativar ou deletar. A
experiência do checkout vem do
Checkout Builder da organização, não do payload
do link.
Para cobrar uma invoice existente, não crie um payment link: compartilhe
invoice.hosted_invoice_url, retornado pelos endpoints de invoices.
Autenticação
Aceita dois tipos de API key:
O valor do header
Organization deve ser uma organização conectada ativa vinculada à plataforma; caso contrário retorna 403.
Attributes
boolean
default:"false"
Quando
true, o checkout das sessões geradas por este link mostra o campo de
código de desconto e aceita o pré-preenchimento de código pela URL
(?prefilled_promo_code=…). Veja Parâmetros de
URL.string
Pra onde o comprador é redirecionado se cancelar/abandonar o checkout.
string
ID de um desconto a aplicar automaticamente em todas as sessões geradas.
boolean
default:"false"
Quando
true, o comprador cobre a taxa da organização: o total é acrescido do
repasse para que a organização receba líquido o valor da venda. Vale para
qualquer método escolhido pelo comprador, somente em cobrança avulsa: um link
com item recorrente não aceita repasse e a criação retorna 400. Veja
Repassar a tarifa de venda ao
comprador.string
Nome interno do link (visível só pra organização). Não aparece pro comprador.
array
required
Itens do link. Cada item aponta pra um preço do catálogo (
price_id) ou descreve um preço inline (price_data) — exatamente um dos dois; os dois juntos ou nenhum retorna 400.Restrições de integridade aplicadas em todo o array:- todos os itens compartilham a mesma
currency; - ou todos são recorrentes, ou nenhum é (não pode misturar);
- quando
price_dataé usado, exatamente um entreproduct_ideproduct_datadeve acompanhá-lo — os dois juntos ou nenhum retorna 400.
object
Objeto chave-valor livre. Cada session gerada do link recebe esse
metadata
copiado. Padrão: {}.string
default:"always"
if_required deixa o comprador iniciar a assinatura sem informar forma de
pagamento — use junto de subscription_data.trial_period_days para oferecer
avaliação gratuita sem cartão. always sempre coleta. Só vale para link
recorrente; em link avulso retorna 400.object
Configuração da assinatura que o link vai criar. Copiada para cada session
gerada. Só vale para link recorrente; em link avulso retorna 400.
string
Pra onde o comprador é redirecionado após pagamento aprovado.
Cenários de line_items
Existem três formas válidas de descrever um item. Use a mais idiomática pro seu caso.
(a) Preço do catálogo
Caminho mais curto — e também o menor request válido: sóline_items. Resolve produto, preço e (se for o caso) recorrência automaticamente a partir do price_id.
price_id referencia um preço cujo type = recurring, as sessões geradas nascem em mode: subscription sem nenhum campo extra.
(b) Produto do catálogo + preço ad-hoc
Reusa nome/descrição/imagem do produto cadastrado, mas usa um valor único pra esse link. Útil pra promoção pontual sem criar preço novo no catálogo.recurring em price_data:
(c) Produto e preço ad-hoc
Nada vem do catálogo — útil pra integrações headless que não cadastram produto.(d) Link completo: retorno, repasse e correlação
Os cenários acima cobrem sóline_items. Um link de produção normalmente
também define para onde o comprador volta, se repassa taxas e a chave de
correlação com o seu sistema. Esses campos são opcionais.
(e) Link com desconto pré-aplicado
discount_id aplica o desconto direto no checkout, sem o comprador digitar
código. O desconto precisa estar ativo, dentro da validade e compatível com a
moeda dos itens — caso contrário a criação falha com 400.
Como plataforma (em nome de uma organização conectada)
Adicione o headerOrganization apontando pra organização conectada. O body é
idêntico aos cenários acima — só a chave (platform_admin) e o header
Organization mudam.
O que a Chargefy resolve sozinha
urlpública do link é gerada na criação — é só compartilhar. Cada clique materializa umacheckout.sessionnova copiandoline_itemsemetadata.is_activenascetruee o link não expira. Ele só para de aceitar cliques quando você desativa (update ou delete com histórico).modedas sessões geradas é derivado dos itens: qualquer item recorrente →subscription; nenhum →payment.- Aparência e comportamento do checkout vêm da única configuração atual da organização e não são copiados para o link.
Resposta
200 OK com o objeto canônico do payment link.
string
Identificador, prefixo
plink_.string
Sempre
payment_link.string | null
URL de cancelamento configurada.
null se não enviado.string
ISO 8601.
string | null
ID do desconto auto-aplicado, ou
null.boolean
true quando o comprador cobre a taxa da organização.boolean
true enquanto o link aceita cliques. Vira false quando desativado via
update ou delete com histórico, e cliques retornam 404. Sessões já
materializadas continuam vivas.string
Nome interno (visível só pra organização).
null se não enviado.array
Itens fixados. Cada session gerada do link copia 1:1.
boolean
Indica se o link foi criado em modo live.
object
Metadata configurada.
string
always ou if_required. Cada session gerada nasce com esse valor.object
Configuração da assinatura fixada no link.
{} quando o link não é recorrente
ou não configura nada.string | null
URL de sucesso configurada.
null se não enviado.string | null
ISO 8601 da última edição, ou
null se nunca editado.string
URL pública pra compartilhar com compradores. Cada clique materializa uma
checkout.session.Erros comuns
Webhooks
Cada criação dispara o eventopayment.link.created para todos os endpoints de webhook ativos da organização dona e das plataformas vinculadas a ela. Payload é o mesmo objeto retornado pelo POST em data.object, dentro do payload Standard Webhooks ({ id, object: "event", created_at, data: { object }, livemode, organization, type }).
