https://open.velan.app/v1
A API de pagamentos é separada do painel: usa um endereço próprio, chaves próprias e não lê dados do dash. Uma chave de pagamentos não funciona em
api.velan.app, e uma chave de leitura (MCP) não funciona aqui.Como funciona
1
Crie uma chave de pagamentos
No painel, vá em Configurações → Chaves de API e clique em Criar chave de pagamento. Copie a chave (
vk_live_…): ela aparece uma única vez. Veja o passo a passo em Gerar a chave de API.2
Crie o link pela API
Seu sistema chama
POST /v1/payment-links com o código da oferta ou do plano, os dados do comprador e a sua referência (external_reference).3
Envie o link ao comprador
A resposta traz a
url e a short_url (curta, boa para WhatsApp e SMS). O comprador abre o checkout com nome, e-mail, telefone e CPF preenchidos.4
Receba a confirmação
O webhook
order.paid chega com external_reference e payment_link. Você também pode consultar GET /v1/payment-links/{id}.Gerar a chave de API
A chave identifica a sua empresa em todas as chamadas. Só o dono da empresa cria e revoga chaves.1
Abra Chaves de API
No painel da Velan, vá em Configurações → Chaves de API. No bloco Chaves de pagamento, clique em Criar chave de pagamento, ou em Chave de teste para o ambiente de teste.
2
Dê um nome
Use um nome que diga onde a chave será usada (por exemplo, “ERP da empresa”). Marque Chave de teste se quiser integrar sem cobrar ninguém.

3
Copie e guarde
Clique em Criar chave e copie o valor (
vk_live_… ou vk_test_…). Ele aparece uma única vez: depois o painel mostra só o início mascarado. Se perder, revogue e crie outra.4
Teste a chave
Liste as suas ofertas. Resposta
200 significa que a chave está funcionando:- Guarde a chave em variável de ambiente ou cofre de segredos do seu servidor. Nunca coloque a chave em site, app ou qualquer código que roda no navegador ou no celular do cliente.
- Use uma chave por sistema (ERP, CRM, bot). Assim você revoga uma sem derrubar as outras.
- A chave não expira. Para trocar sem parar a integração: crie a nova, atualize o seu sistema e só então revogue a antiga.
- Cada empresa pode ter até 10 chaves ativas, somando as de leitura e as de pagamentos.
- A coluna Último uso no painel mostra se a chave está sendo usada. Revogar é imediato.
Ambiente de teste
Para integrar sem cobrar ninguém, crie uma chave de teste: em Configurações → Chaves de API, no bloco Chaves de pagamento, clique em Chave de teste. Ela começa comvk_test_ e usa o mesmo endereço https://open.velan.app/v1.
- Links criados com chave de teste têm
"livemode": falsee abrem a página de simulação (https://pay.velan.app/teste/{id}), não o checkout. Nada é cobrado. - Na página, os botões Simular pagamento aprovado, recusado ou expirado disparam os seus webhooks como se fosse um pedido real, com
"test": truee"sandbox": trueno corpo, e com o seuexternal_reference. - Para testes automatizados, use
POST /v1/payment-links/{id}/simulatecom{"outcome": "paid" | "failed" | "expired"}. - A simulação não cria pedido, não entra no financeiro e só é entregue a integrações do tipo webhook (Webhook, Make, SNS, Supabase). Área de membros e nota fiscal nunca recebem eventos de teste.
- Chave de teste só enxerga links de teste, e chave de produção só links de produção. Um link de teste nunca é aceito no checkout real.
Autenticação
Envie a chave no cabeçalho de toda requisição:vk_live_… são de produção e vk_test_… são do ambiente de teste. Revogue a chave no painel a qualquer momento: o bloqueio é imediato.
Criar um link de pagamento
POST /v1/payment-links
Resposta
201:
Os dados do comprador não vão na URL. O link carrega só um token, e o checkout busca os dados na Velan. Assim e-mail e CPF não ficam em histórico de navegador, logs ou ferramentas de análise.
Idempotência
Envie o cabeçalhoIdempotency-Key (até 64 caracteres) para repetir uma requisição com segurança. Se a mesma chave chegar de novo, a API devolve o mesmo link com status 200, sem criar outro. Use algo único do seu lado, como o número da fatura.
Consultar um link
GET /v1/payment-links/{id}
Devolve o link com o status atual e, quando existe, o pedido gerado:
Listar links
GET /v1/payment-links?external_reference=fatura-2026-0042&status=active&limit=20
A resposta é
{"object": "list", "data": [...], "has_more": false}, do mais recente para o mais antigo.
Cancelar um link
POST /v1/payment-links/{id}/cancel
O comprador passa a ver o aviso de link cancelado e não consegue pagar. Um link já pago não pode ser cancelado (409): use o reembolso do pedido no painel.
Ofertas e planos
Para descobrir os códigos sem abrir o painel:GET /v1/offers: ofertas da empresa comcode,name,status,pricee produto.GET /v1/plans: planos comcode,name,status,priceebilling_cycle.
status active aceitam link de pagamento.
Webhooks
Os eventos de pedido (order.paid, order.created, order.failed, order.expired e os demais) de um pedido feito por link trazem a sua referência em dois lugares:
external_reference e payment_link chegam como null. Veja como configurar em Webhook.
Para assinaturas, o link cobre a primeira compra do plano. As renovações seguem a régua normal da assinatura e chegam como
order.paid da mesma assinatura, sem external_reference. Guarde o código da assinatura do primeiro pedido para relacionar as renovações.