Changelog

A plataforma, atualização por atualização

O que mudou no Repass: novos recursos, melhorias e API, na ordem em que foram ao ar.

Novidade

Indicações de parceiros

Nem toda venda chega por link ou cupom. Em muitos programas o parceiro conhece a empresa, abre a porta e a conversão acontece depois, fora do clique. Agora ele registra essa oportunidade no portal, e o gestor conduz a jornada no painel.

O canal liga no programa, com um formulário que o gestor desenha. Precisa de um e-mail obrigatório, para identificar a oportunidade. O parceiro envia e acompanha o status. O gestor aceita, rejeita, marca duplicata e avança a jornada. A comissão só nasce quando ele registra uma conversão a partir da indicação, com a mesma ação, hold, antifraude e payout que o programa já usa.

  • Canal ligado por programa, com formulário de até 20 campos: texto, e-mail, telefone, texto longo, lista, URL e arquivo.
  • Envio no portal do parceiro. Depois de enviar, ele não edita. Motivo de rejeição, duplicata ou perda fica visível para ele.
  • Fila do gestor em Indicações, com revisão, jornada e registro de conversão.
  • Uma indicação, uma conversão. Anular a conversão reabre a jornada.
  • A comissão segue a ação já configurada no programa.

Para começar, abra um programa, ligue o canal na aba Indicações e desenhe o formulário. O item aparece no portal do parceiro. A fila do gestor fica em Indicações.

Novidade

Ações de conversão configuráveis

Conversão não é só venda. Agora cada programa pode reconhecer e remunerar momentos importantes da jornada do cliente — como um lead qualificado, uma reunião realizada, uma ativação ou um contrato assinado — com a mesma atribuição, antifraude, comissão e auditoria que já existiam para o Stripe.

No painel do programa, o gestor cria ações com nome próprio, política de repetição e comissão fixa ou percentual. As ações nativas do Stripe continuam disponíveis, e ações não monetárias podem usar comissão fixa de R$ 0,00. Cada conversão guarda um snapshot da configuração usada no momento, então mudar uma ação não reescreve o histórico.

  • Ações nativas: assinatura criada, compra avulsa, trial convertido e upgrade.
  • Ações customizadas com actionKey estável, como lead_qualified ou contract_signed.
  • Repetição uma vez por cliente, uma vez por período ou em todas as ocorrências.
  • Comissão fixa ou percentual, com validação do valor do evento quando necessário.
  • Dedupe seguro por programa, cliente e ação, além da idempotência por sourceEventId.
  • Eventos server-to-server via API, MCP e CLI, usando o mesmo pipeline do Stripe.

Para começar, abra um programa e acesse a aba Ações. Depois, envie eventos customizados por POST /ingest/custom, pela tool repass.ingest.custom ou pelo comando repass ingest custom.

Melhoria

Desconto do cupom definido pelo gestor

Um cupom de afiliado com desconto livre vira política comercial na mão de quem digitou o código. O desconto passa a ser do programa: o gestor escolhe se o parceiro pode criar cupom e qual percentual ou valor fixo vale nessa criação.

O afiliado, quando autorizado, informa só o código. O desconto aparece no portal como texto, sem campo para alterar. No painel, o gestor continua criando um cupom pontual com tipo e valor livres, inclusive valor fixo. Mudar o padrão do programa não altera cupons já criados.

  • Criação pelo afiliado é opt-in nas regras do programa. Programas existentes ficam fechados até o gestor ligar.
  • Desconto padrão em percentual (0,01% a 100%) ou valor fixo em reais. Ligar a criação sem definir o desconto é recusado.
  • Portal: botão de novo cupom só aparece se a política estiver ligada; o formulário pede apenas o código.
  • Cupom criado pelo gestor no drawer do afiliado aceita percentual ou valor fixo, independente do padrão do programa.
Novidade

Insights determinísticos na home do gestor

A home do gestor agora traz leituras acionáveis calculadas direto das métricas do programa. Elas são determinísticas: cada insight vem de uma regra explícita sobre os números, sem IA generativa e sem caixa-preta.

Os cartões apontam o que pede atenção agora: queda ou zeragem da receita atribuída, conversões na fila antifraude, afiliados aguardando aprovação, PIX que falhou, notas fiscais pendentes, concentração num único afiliado ou um programa com ROI acima da mediana. Cada um traz uma ação e um link direto, e um insight descartado fica oculto por 7 dias.

  • Leituras calculadas das métricas e das pendências operacionais do programa.
  • Determinístico por regra, sem IA generativa.
  • Severidade em três níveis, com ação e link direto em cada cartão.
  • Insight descartado some por 7 dias.
Novidade

Portal do afiliado whitelabel no domínio do cliente

O portal do afiliado agora pode rodar no domínio do próprio cliente, por exemplo parceiros.cliente.com, com a marca da organização em vez da marca Repass. É a extensão do domínio próprio dos links para o portal inteiro, oferecida nos planos maiores.

A organização pluga o domínio, sobe logo e cores e, se quiser, esconde a marca Repass. O login acontece no próprio domínio, com a sessão fixada ali. Os dados continuam vindo da API por trás, então o afiliado vê só a marca do cliente sem nenhuma mudança no fluxo.

  • Portal servido no domínio do cliente, com logo e cores da organização.
  • Opção de esconder a marca Repass.
  • Login no próprio domínio, com sessão fixada no host do cliente.
  • Mesma verificação de DNS e TLS dos links em domínio próprio.
API

CLI oficial com login por device flow

Chegou a CLI oficial da Repass: @repass/cli, com o binário repass. É uma camada fina sobre o @repass/sdk, com login por device flow OAuth (RFC 8628) ou por chave de API.

Os comandos são declarativos e cobrem toda a superfície de organização, de programas a webhooks. Ações destrutivas pedem confirmação interativa (com --yes para CI), a paginação por cursor tem --all e a saída sai em tabela ou --json.

  • Login por device flow OAuth (RFC 8628) ou chave de API.
  • Comandos declarativos para toda a superfície da organização.
  • Confirmação interativa em ações sensíveis, com --yes para pipelines.
  • Saída em tabela ou --json, com paginação por cursor via --all.
  • repass skills install instala uma skill de agente com as boas práticas de uso da CLI.
API

SDK TypeScript oficial

Agora existe um SDK TypeScript oficial para a API do Repass: @repass/sdk. Ele é altamente tipado e não traz nenhuma dependência de runtime, então roda em Node, no browser e no edge.

A cobertura é toda a superfície de organização: programas e seus tiers, regras de comissão e termos, afiliados, links, conversões, comissões, cupons, payouts, notas fiscais, antifraude, reprocessamento, eventos, webhooks e configurações. Retry com backoff, timeout, idempotência, auto-paginação e uma hierarquia de erros tipada já vêm no cliente.

  • Cliente tipado, sem dependências de runtime (Node 18+, browsers e edge).
  • Cobertura de toda a superfície de organização, de programas a webhooks.
  • Retry com backoff, timeout e idempotência embutidos.
  • Auto-paginação e hierarquia de erros tipada.
API

Tracker client-side com uma tag de script

Medir um programa de afiliados não deveria exigir uma sprint de backend. O novo pacote @repass/tracker captura o clique e o visitante direto da URL e dispara conversões pelo navegador, com uma única tag de script.

A tag usa a publishable key (pk_) no navegador; a chave secreta nunca é exposta. Por padrão, uma conversão disparada do browser nasce pendente e só libera comissão quando o seu servidor confirma o mesmo evento por server-to-server, que continua sendo a fonte da verdade.

  • Instalação por tag <script src="https://api.userepass.com/t.js" data-key="pk_...">, ou via npm em bundlers.
  • Captura de repass_cid e repass_vid da URL e identificação do visitante por e-mail, cross-device.
  • Publishable key no navegador; a chave secreta fica no servidor.
  • Conversão client-side reconciliada in-place quando o server-to-server confirma o mesmo evento.
Novidade

Portal self-service do afiliado

Programas de afiliados morrem afogados em ticket de "quanto eu ganhei esse mês?". Agora cada parceiro tem um portal próprio, separado do painel do gestor, onde acompanha tudo sozinho.

O parceiro entra por magic link, sem virar membro da sua organização, e vê saldo, gráfico de ganhos dos últimos seis meses, links, cupons, pagamentos e materiais. Ele mantém o próprio PIX em dia, o que libera o payout sem depender de você. Cada parceiro enxerga apenas os próprios dados.

  • Login sem senha por magic link, sem virar membro da organização.
  • Dashboard com saldo, ganhos dos últimos 6 meses, link principal e últimas comissões.
  • Links, cupons, pagamentos e materiais num lugar só.
  • Uma conta atende vários programas, com seletor por programa.
  • Escopo rigoroso: cada parceiro só vê os próprios dados.
API

Webhooks de saída com assinatura HMAC

O event store agora funciona como outbox: cada fato do programa pode virar uma entrega HTTP assinada, para você conectar seu sistema em tempo quase real sem construir uma fila de retry.

Cada entrega leva uma assinatura HMAC-SHA256 no header Repass-Signature, para você validar a origem. Se o seu endpoint cair, tentamos de novo até 7 vezes num cronograma exponencial; o que não entregar fica em dead letter, pronto para replay manual quando você quiser.

  • Assinatura HMAC-SHA256 por entrega no header Repass-Signature.
  • Retry exponencial de 7 tentativas (0s, 30s, 5m, 30m, 2h, 12h, 24h) antes do dead letter.
  • Replay manual, sem prazo, de qualquer entrega que falhou.
  • Rotação de secret com 24h de graça e assinatura dupla, sem janela de queda.
  • Auto-desativação de um endpoint que passa a falhar de forma consistente, com alerta ao gestor.
  • Fan-out idempotente e log de entregas de 30 dias.
Melhoria

Reprocessamento retroativo de comissões

Errar uma regra de comissão acontece. O difícil era corrigir o passado sem reescrever histórico nem gerar pagamento indevido. Agora dá para aplicar uma nova versão de regra a conversões históricas com trilha completa do que mudou.

Todo reprocessamento começa como dry-run: você vê as conversões afetadas, o delta total e as maiores variações por afiliado antes de aplicar. A execução roda numa transação única, a comissão já paga permanece intocada, e a diferença entra como ajuste no próximo payout.

  • Dry-run obrigatório com relatório de impacto antes de tocar em dinheiro.
  • Execução em transação única, com abort total se alguma comissão mudou desde o dry-run.
  • Comissão já paga é imutável: o delta vira um ajuste no próximo repasse, nunca pagamento duplicado.
  • Dupla confirmação quando o ajuste passa de um limiar (default R$ 1.000,00).
  • Trilha de auditoria encadeada: cada passo gera evento novo, o histórico não é reescrito.
Novidade

Nota fiscal validada antes do repasse

Repassar a um parceiro PJ no Brasil sem nota fiscal válida é risco tributário, e isso costumava viver numa planilha que ninguém auditava. Agora a obrigação de NF nasce junto do payout e trava a liquidação até a nota ser validada.

A validação confere o CNPJ do emissor, o valor declarado e o tomador contra o cadastro, na hora do upload. Se algo não bate, a NF volta rejeitada com os códigos do que divergiu, pronta para reenvio. O dinheiro só sai depois da nota validada.

  • A obrigação de NF é criada junto do payout e segura a liquidação.
  • Validação automática de CNPJ do emissor, valor declarado e tomador.
  • NF rejeitada retorna os códigos do que divergiu, com reenvio permitido.
  • Documentos guardados pelo prazo legal de 5 anos, com download por link temporário.
Novidade

Fechamento de payout com dry-run e PIX

Fechar comissão no escuro é a forma mais rápida de pagar o parceiro errado. Agora o fechamento começa como dry-run: ele agrega as comissões aprovadas por afiliado e devolve quem entra, quem é bloqueado (com o motivo) e o total a pagar, sem mover um centavo.

Quando você confirma, a reserva das comissões acontece de forma atômica na mesma transação, o que elimina pagamento em duplicidade mesmo sob concorrência. A liquidação sai via PIX pela chave congelada no fechamento, e a comissão só vira paga quando o pagamento confirma.

  • Dry-run é o padrão: rodar o fechamento sem confirmar calcula tudo e não persiste nada.
  • Seis motivos de bloqueio explícitos por afiliado (banido, perfil de pagamento incompleto, fraude em revisão, NF pendente, saldo não positivo, abaixo do mínimo).
  • Valor mínimo de repasse configurável (default R$ 50,00); abaixo dele, o saldo acumula para o próximo ciclo.
  • Reserva atômica na mesma transação, sem pagamento em duplicidade.
  • PIX pela chave congelada no fechamento: trocar a chave depois não desvia um pagamento em curso.
Novidade

Cupons de afiliado sincronizados com o gateway

Parceiros de podcast, evento e mídia offline não clicam em link, então a conversão deles ficava sem atribuição. Agora cada afiliado pode receber um cupom de desconto criado no Repass, que sincroniza automaticamente com o gateway de pagamento.

O cupom só fica utilizável depois que a sincronização confirma, então o desconto existe de fato no checkout antes de o parceiro divulgar. Uma conversão que informa o código credita a comissão ao dono do cupom, sem depender de cookie ou link rastreado. Se a sincronização falhar, o cupom fica bloqueado com resync disponível, em vez de um código quebrado na mão do parceiro.

  • Sincronização com o gateway (Stripe e Pagar.me) antes de ativar o cupom.
  • Código único por programa, com desconto percentual (de 0,01% a 100%) ou valor fixo.
  • Conversão por código credita o dono, sem link rastreado.
  • Conflito entre cupom e clique resolvido pela política do programa: cupom vence, clique vence ou divisão 50/50.
Novidade

Antifraude determinístico com fila de revisão

Toda conversão passa por um motor antifraude que atribui um score de risco a partir de sinais explicáveis como autorreferência, conta recém-criada, burst de cliques e e-mail descartável. Não é ML caixa-preta: você vê quais sinais dispararam e por quê.

As conversões de baixo risco são aprovadas sozinhas; as de alto risco travam numa fila de revisão manual, onde você inspeciona o score e decide. Confirmar fraude anula apenas aquela conversão, com isolamento por afiliado, sem derrubar o programa.

  • Score determinístico por soma ponderada de sinais, todos visíveis.
  • Faixas de aprovação, monitoramento e revisão configuráveis por organização.
  • Fila de revisão manual para o que fica acima do seu limiar de risco.
  • Isolamento por afiliado: fraude confirmada anula só a conversão envolvida.
  • Cada decisão fica congelada num snapshot imutável para auditoria.
Novidade

Cinco modelos de atribuição por programa

Pagar só o último clique injustiça quem abriu a jornada. Agora cada programa escolhe entre cinco modelos de atribuição (first_click, last_click, linear, time_decay e position_based), e o crédito é dividido entre os afiliados que participaram.

Os pesos são calculados em basis points e sempre somam exatos 100%, sem centavo perdido. O modelo, a janela e os cliques candidatos ficam congelados num snapshot por conversão, com um winner por clique para reconstruir a decisão depois.

  • Cinco modelos configuráveis por programa.
  • Time-decay com meia-vida de 7 dias: o peso de um clique cai pela metade a cada 7 dias.
  • Position-based que dá 40% ao primeiro toque, 40% ao último e 20% ao meio.
  • Pesos em basis points que somam exatos 100%, com desempate determinístico.
  • Um winner por clique para auditoria, uma comissão por afiliado com os pesos agregados.
Novidade

Regras de comissão versionadas e imutáveis

Editar a regra de comissão de um programa não deveria reescrever o que já foi prometido aos parceiros. Agora cada salvamento cria uma versão nova e numerada, a anterior nunca é tocada, e cada conversão guarda um snapshot congelado da regra que valia naquele momento.

O cálculo usa esse snapshot, nunca a regra viva. Mudar a regra hoje deixa as comissões de ontem exatamente como foram calculadas, e o histórico prova qual versão valia em cada conversão.

  • Nova configuração entra como versão nova; a regra anterior permanece imutável.
  • Cada conversão congela um snapshot da regra resolvida e calcula a partir dele.
  • Três tipos de regra: percentual, valor fixo e faixas por volume.
  • Base de cálculo por programa: bruta ou líquida das taxas do gateway.
  • Aritmética 100% inteira (centavos e basis points), com arredondamento half-up determinístico.
  • Cada comissão traz o objeto que reconstrói o valor: base, peso, regra, taxa e recorrência.
Novidade

Event store auditável para todo o programa

Toda mudança de estado no programa passou a gravar, na mesma transação, o novo dado e um evento de domínio. O resultado é uma trilha de auditoria contínua, do clique ao pagamento, que você lê por API em vez de reconstruir a partir de log de aplicação e dump de banco.

O registro é imutável por construção: um trigger no Postgres rejeita UPDATE e DELETE na tabela de eventos, então o passado do programa não muda. São 70 tipos de evento versionados, no formato recurso.acao.

  • Estado e evento gravados na mesma transação, nunca um sem o outro.
  • Imutabilidade garantida no banco: UPDATE e DELETE são rejeitados por trigger.
  • Consulta por API com paginação por cursor e filtro por tipo, agregado, ator e período.
  • Cada evento carrega o ator (usuário, chave de API ou sistema), o payload e os horários de ocorrência e de gravação.
  • Timeline visual por entidade (afiliado, conversão, comissão, payout) no painel.