Links de pagamento

Referência

A ValidaPay oferece duas formas de gerar uma página de pagamento hospedada sem escrever checkout transparente: o link de pagamento, reutilizável, e a sessão de pagamento, de uso único. Este guia explica quando usar cada um e o que muda por trás de cada rota.

Comparativo

AspectoLink de pagamentoSessão de pagamento
Endpoint de criaçãoPOST /v1/checkoutsPOST /v1/checkout-sessions
Prefixo do identificadorpl_ (ou SANDBOX_pl_)cs_ (ou SANDBOX_cs_)
ReusoReutilizável: a mesma URL pode ser paga por clientes diferentes, várias vezesPensada para uso único, por um cliente específico
Cliente pré-preenchidoNãoOpcional, via customer no corpo da requisição
Criar produto/preço inlineSim, com product no corpo (mesma validação de Criar Produto)Não: exige um priceId já cadastrado
ExpiraçãoNão expira sozinho: fica active até você desativarExpira sozinho 30 dias após a criação, se não for usada
Depois de pagoContinua active e reutilizávelNo cartão aprovado o status vira completed na hora; no Pix e no boleto a sessão fica active até o pagamento ser confirmado, para o comprador poder reabrir o link e pagar o código já emitido
AtualizaçãoPUT /v1/checkouts/:idNão existe endpoint de atualização
ConsultaGET /v1/checkouts/:id, autenticado, valida o donoGET /v1/checkout-sessions/:id, público

Formas de pagamento e Pix Automático

allowedPaymentMethods aceita pix, creditcard, boleto e pix_automatico. No link de pagamento o campo é obrigatório; na sessão é opcional e, se omitido, a sessão usa o padrão do price.

Pix Automático só é aceito para contas PJ (documento com 14 dígitos) e em preços recorrentes (WEEKLY, MONTHLY, QUARTERLY, SEMIANNUAL ou YEARLY). O cliente autoriza a recorrência uma única vez no aplicativo do banco; enquanto o banco não confirma, a assinatura fica PENDING. O valor mínimo por cobrança é R$ 4,99.

Consultar status

GET /v1/checkouts/:id é autenticado e valida que o checkout pertence à conta do token. O status do link é active, inactive (desativado, por exemplo ao arquivar o produto) ou completed.

GET /v1/checkout-sessions/:id é público, pensado para a própria página de pagamento consultar os dados. O status da sessão é active, completed (já paga) ou expired (30 dias sem uso).

Quando a sessão tem um Pix ou um boleto emitido e ainda não pago, a resposta traz também chargeId, transactionId e o bloco pix ou boleto com o código já gerado. É isso que permite reabrir o link e continuar o mesmo pagamento, em vez de esperar o código anterior expirar para gerar outro.

O que a API permite

OperaçãoDescrição
Criar link de pagamentopriceId existente ou product inline; formas de pagamento, cores e order bumps configuráveis.
Listar links de pagamentoLista paginada, com filtro por status e busca textual.
Buscar link de pagamentoDetalhes completos de um checkout, autenticado.
Atualizar link de pagamentoTroca de preço, parcelamento, aparência e propagação de branding.
Criar sessão de pagamentoAcesso de uso único a um price, com cliente pré-preenchido.
Buscar sessão de pagamentoConsulta pública do status e dos itens de uma sessão.

Erros comuns

codeStatusQuando acontece
INVALID_DATA400Corpo não passa na validação Zod ao criar um link ou uma sessão.
INVALID_PRODUCT_DATA400O objeto product enviado inline no link de pagamento não passa na validação de produto. Não se aplica à sessão, que não aceita product inline.
PRICE_NOT_FOUND404priceId informado não existe, ao criar ou atualizar um link, ou ao criar uma sessão.
PRICE_INACTIVE400O price informado existe mas está inativo, por exemplo porque foi removido do produto. Vale para o price principal e para os itens enviados em items.
PRODUCT_NOT_FOUND404O price existe, mas o produto vinculado a ele não foi encontrado.
PIX_AUTOMATICO_PJ_ONLY400allowedPaymentMethods inclui pix_automatico e a conta autenticada não é PJ.
PIX_AUTOMATICO_MIN_AMOUNT400allowedPaymentMethods inclui pix_automatico e o valor do price é menor que R$ 4,99.
CHECKOUT_NOT_FOUND404:id não corresponde a nenhum link de pagamento, ao buscar ou atualizar.
FORBIDDEN401O link, a sessão ou o preço referenciado pertence a outra conta.
SESSION_NOT_FOUND404:id não corresponde a nenhuma sessão de pagamento.
SESSION_EXPIRED400A sessão encontrada já passou dos 30 dias de validade sem ser usada.

Perguntas frequentes

Devo usar link ou sessão de pagamento?▾
Link quando você quer uma única URL compartilhável e reutilizável, por exemplo uma oferta divulgada em vários canais para clientes diferentes. Sessão quando você quer gerar um acesso individual para um cliente específico no momento da contratação, com os dados dele pré-preenchidos, e quer que esse acesso não sirva para mais ninguém depois de usado.
Uma sessão de pagamento pode criar um produto e um preço novos, como o link permite?▾
Não. POST /v1/checkout-sessions exige um priceId de um price já cadastrado. Para criar produto e preço ao mesmo tempo, cadastre antes em POST /v1/products, ou use POST /v1/checkouts com product inline, que cria o produto por trás dos panos.
A sessão de pagamento expira?▾
Sim, automaticamente 30 dias após a criação, se ninguém pagar (status vira expired). A sessão também deixa de aceitar novo pagamento quando o status vira completed, o que acontece assim que o pagamento é aprovado no cartão. No Pix e no boleto, emitir o código não fecha a sessão: ela continua active enquanto o pagamento não é confirmado, para o comprador poder recarregar a página ou reabrir o link e pagar o mesmo código.
O link de pagamento expira sozinho?▾
Não. Ele fica active até você desativar manualmente, por exemplo arquivando o produto vinculado, o que desativa automaticamente os checkouts ativos daquele price.
Como aplico a mesma identidade visual a todos os links de um produto?▾
Envie applyBrandingToAllPrices: true em PUT /v1/checkouts/:id. A API propaga primaryColor, secondaryColor, fontColor e showProductImage para o produto e para todo outro checkout ativo que use um price do mesmo produto.
Posso usar pix_automatico em qualquer link ou sessão?▾
Só se a conta autenticada for PJ (documento com 14 dígitos) e o price referenciado for recorrente (WEEKLY, MONTHLY, QUARTERLY, SEMIANNUAL ou YEARLY). Conta PF recebe PIX_AUTOMATICO_PJ_ONLY. O valor mínimo por cobrança é R$ 4,99, senão a API responde PIX_AUTOMATICO_MIN_AMOUNT.
Essa página foi útil?