Payment Links
Create a Payment Link
Cria um payment link.
Cria um payment link — uma URL pública compartilhável. A cada clique de um comprador, uma nova
O valor do header
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.
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:| Token | Header | Comportamento |
|---|---|---|
API key da organização (write ou admin) | Authorization: Bearer ch_live_... | Cria para a própria organização da chave. O header Organization é proibido (400). |
API key da plataforma (platform_admin) | Authorization: Bearer ch_live_... + Organization: <organization_id> | Cria em nome da organização conectada indicada. Sem Organization → 403. |
Organization deve ser uma organização conectada ativa vinculada à plataforma; caso contrário retorna 403.
Attributes
Se o comprador pode inserir cupom no checkout.
Pra onde o comprador é redirecionado se cancelar/abandonar o checkout.
ID de um desconto a aplicar automaticamente em todas as sessões geradas.
Nome interno do link (visível só pra organização). Não aparece pro comprador.
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.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.
Objeto chave-valor livre. Cada session gerada do link recebe esse
metadata copiado.Opções por método de pagamento. Quando omitido, aplicam-se os padrões da
organização.
Quando
true, endereço de cobrança é obrigatório no checkout. Quando omitido,
herda a política de checkout da organização. Boleto sempre exige.Quando
true, o documento (CPF/CNPJ) do comprador é obrigatório no checkout.
Quando omitido, herda a política da organização (padrão true). Boleto sempre
exige documento.Quando
true, o telefone do comprador é obrigatório no checkout. Quando
omitido, herda a política da organização (padrão false).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. Resolve produto, preço e (se for o caso) recorrência automaticamente a partir doprice_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.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.
Resposta
200 OK com o objeto canônico do payment link.
Identificador, prefixo
plink_.Sempre
payment_link.Se cupons são permitidos no checkout.
URL de cancelamento configurada.
null se não enviado.ISO 8601.
ID do desconto auto-aplicado, ou
null.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.Nome interno (visível só pra organização).
null se não enviado.Itens fixados. Cada session gerada do link copia 1:1.
Indica se o link foi criado em modo live.
Metadata configurada.
Opções por método.
credit_card.installments.has_interest (boolean) indica se o comprador paga o acréscimo do parcelamento; credit_card.installments.max_count (integer 1–12) é o número máximo de parcelas.Se endereço de cobrança é obrigatório. Boleto sempre exige.
Se o documento (CPF/CNPJ) é obrigatório. Boleto sempre exige.
Se o telefone do comprador é obrigatório.
URL de sucesso configurada.
null se não enviado.ISO 8601 da última edição, ou
null se nunca editado.URL pública pra compartilhar com compradores. Cada clique materializa uma
checkout.session.Erros comuns
| HTTP | Razão |
|---|---|
400 | line_items ausente, vazio ou item sem price_id nem price_data. |
400 | Item com price_id e price_data enviados juntos (envie exatamente um). |
400 | price_data enviado sem product_id nem product_data — ou com ambos. Envie exatamente um. |
400 | price_data.recurring.interval inválido (use day, week, month ou year). |
400 | Mistura de itens recorrentes e únicos no mesmo link. Ou todos são recorrentes, ou nenhum. |
400 | Currency divergente entre os items. |
400 | price_id / product_id não pertence à org alvo. |
400 | O header Organization enviado com chave de organização (chave já trava na própria org). |
403 | Token de plataforma sem header Organization. |
403 | O header Organization aponta pra org que não é organização conectada ativa da plataforma. |
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 envelope Standard Webhooks ({ id, object: "event", created_at, data: { object }, livemode, organization, type }).
