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ávelStatus vira completed; não aceita novo pagamento
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).

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.
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). Depois de paga, a sessão também para de aceitar novo pagamento, mas por um motivo diferente: o status vira completed.
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?