Widget & SDK
Embarque o programa de afiliados dentro do painel do seu próprio SaaS (o "indicar e ganhar") com poucas linhas, e leia o ?ref para anexar no checkout.
1. Carregue o afs.js
No HTML do seu painel. Ele persiste o ?ref da URL e expõe helpers globais (AFS.getRef(), AFS.renderReferralWidget()).
<script src="https://indicasaas.com/sdk/v1/afs.js"></script>
<div id="afs"></div>
2. Gere as chaves do SDK
No painel → Instalação → Chaves do SDK. A pk_ é pública; a sk_ é exibida uma vez — guarde e use só no backend.
3. Crie/recupere o afiliado (backend)
Do backend do seu SaaS, autenticando com a sk_ (nunca no front):
POST https://indicasaas.com/sdk/v1/affiliate
Authorization: Bearer sk_live_…
Content-Type: application/json
{ "email": "cliente@exemplo.com", "identityVerified": true }
→ { "affiliate": { "link": "…", "couponCode": null,
"reservedCouponCode": "JOAO10", "couponStatus": "pending",
"couponUsable": false, "status": "active" } }
identityVerified: true confirma que o seu backend autenticou esse e-mail. É obrigatório em toda chamada: sem ele a resposta é sempre 409 identity_verification_required, tenha o e-mail conta no IndicaSaaS ou não. Mande-o só quando o e-mail da sessão do cliente estiver verificado no seu SaaS.
O SDK não verifica o e-mail para login nem aceita termos em nome de uma conta já existente. Exiba couponCode somente quando couponUsable for true; a reserva aparece separada e não comprova desconto.
4. Renderize o widget (front)
AFS.renderReferralWidget('#afs', {
link: affiliate.link,
coupon: affiliate.couponUsable ? affiliate.couponCode : null,
});
5. Anexe o ref no checkout
Quando o seu cliente (que veio por um link de afiliado) for pagar, leia o ref e mande pro seu backend para anexar no gateway:
const ref = AFS.getRef(); // referência válida ou null
// → enviar 'ref' ao seu backend e usar como na página do seu gateway
Com vários programas no mesmo site, use AFS.getRef('ID_DO_PROGRAMA') para selecionar o programa do checkout. Sem argumento, o SDK retorna a indicação válida mais recente entre os programas conhecidos. Envie o valor completo; quando for null, omita a indicação.
Stats do afiliado
GET https://indicasaas.com/sdk/v1/affiliate/stats?email=cliente@exemplo.com
Authorization: Bearer sk_live_…
→ { "stats": { "clicks", "observedClicks", "unverifiedClicks",
"conversions", "releasedCents", "heldCents", "paidCents" } }
clicks conta só os cliques aprovados pelo filtro de borda; observedClicks inclui os não verificados (unverifiedClicks é a diferença). conversions conta pagamentos autenticados pelo gateway.
Cupom do afiliado (backend)
POST https://indicasaas.com/sdk/v1/affiliate/coupon
Authorization: Bearer sk_live_…
Content-Type: application/json
{ "email": "cliente@exemplo.com", "code": "JOAO10" }
→ { "couponCode": null, "reservedCouponCode": "JOAO10", "couponUsable": false, … }
Reserva o código do afiliado já existente no programa (code opcional: sem ele, o código é sugerido). Envie somente o e-mail da sessão autenticada do seu afiliado. Mesma regra do widget: exiba couponCode apenas com couponUsable: true. Falha no gateway volta 502 com retryable: true.
Registrar o cadastro do indicado (backend)
Com teste grátis, registre o signup por POST /sdk/v1/referral para a venda não depender do navegador até o pagamento. Contrato, campos e regras de prazo no guia de integração.