Caminho feliz
- Chame
POST /v2/checkout-linkscom sua API key. - Envie
products[](referenciados pelo seu próprioexternal_id) ou umamountsó-valor. - A Pagou faz upsert de cada produto por
external_id, monta o link e anexa automaticamente os métodos de pagamento ativos da company e qualquer order bump / upsell elegível. - Use a
data.urlretornada — ela já vem com o domínio custom quando há um ativo.
Autenticação
Envie sua API key secreta como Bearer token (a mesma usada em transações):x-api-key: SUA_API_KEY também é aceito.
Produtos por external_id (upsert)
Cada item deproducts[] é identificado pelo external_id — o seu próprio identificador do
produto. A cada chamada a Pagou faz upsert por (company, external_id):
- Primeira vez: cria o produto no seu catálogo (
origin = api). - Próximas vezes: reutiliza o mesmo produto e atualiza nome/preço/campos a partir do payload (revivendo se estava arquivado). Nunca duplica.
external_id é o único identificador que você passa.
Preços são inteiros em centavos (
7990 = R$ 79,90). Reenviar o mesmo external_id sobrescreve
nome, preço, descrição e imagem do produto a partir do payload, então envie sempre o estado completo
do produto que você quer.Exemplo de requisição — produtos
Link só-valor
Omitaproducts e envie amount (em centavos) para gerar um link rápido, só-valor. O title é
opcional — quando ausente, é gerado automaticamente.
products ou amount — nunca os dois, nunca nenhum.
Exemplo de resposta
Campos da requisição
| Campo | Tipo | Obrigatório | Notas |
|---|---|---|---|
currency | string | não | Moeda do link. Default BRL. |
title | string | não | Gerado automaticamente quando ausente. |
amount | inteiro (centavos) | um dos dois | Link só-valor. Mutuamente exclusivo com products. |
products[] | array | um dos dois | Link por produtos. Mutuamente exclusivo com amount. |
products[].external_id | string | sim | Seu identificador; chave do upsert. |
products[].name | string | sim | Nome do produto. |
products[].price | inteiro (centavos) | sim | Preço unitário. |
products[].quantity | inteiro | não | Default 1. |
products[].currency | string | não | Herda a moeda do link. |
products[].type | string | não | physical ou digital. Default physical. |
products[].description | string | não | |
products[].image_url | string (url) | não | |
products[].compare_price | inteiro (centavos) | não | Preço “de” para exibir desconto. |
Erro comum
Status422 — nem amount nem products foi enviado (ou os dois foram):
Usar com IA
Cole isto no Claude Code, Cursor, Codex, Copilot, Lovable, Bolt, ou qualquer agente de IA:Observações
- Métodos de pagamento são sempre derivados das permissões ativas da company — você não os passa.
- Order bumps e upsells elegíveis para os produtos são anexados automaticamente.
- Domínio custom é aplicado na URL retornada quando a company tem um ativo.
- Fora de escopo (v1): variantes de produto por
external_id, assinaturas/recorrência, e editar ou listar links pela API.

