Referência vigente · verificada em 27 ago. 2026

Como a VendePay funciona hoje.

Esta é a leitura canônica para produto, design, engenharia e agentes de IA. Ela separa o comportamento em execução dos protótipos históricos preservados no hub.

Não use o caractere Unicode U+2014 nos textos atuais da interface. Prefira ponto, vírgula, dois-pontos, parênteses ou reformule a frase. Estados sem valor devem ter texto significativo e traduzido, sem confundir ausência com zero.

01

Fundamentos atuais

Marca e linguagem permanecem estáveis. Os valores abaixo refletem os tokens executados nos frontends.

PapelClaroEscuro
Brand#04D361#0BF372
Accent#049366#0BF372
Background#F8F9FA#070707
Surface#FFFFFF#101010
Texto primário#212529#E1E1E6
Texto terciário#667085#8A8A96
Borda#E6E9EF#29292E
PoppinsTítulos, KPIs e valores monetários.
Open SansCorpo, rótulos, campos e ajuda.
Escala de 8px4, 8, 12, 16, 24, 32, 48 e 64px.
Raios8px pequeno, 10px controle, 12px card, 16px grande e pill.
AcessibilidadeCor, ícone e texto juntos; foco visível; alvo de toque mínimo de 44px.
02

Padrões compartilhados

Reutilize os componentes do design system implementado antes de criar estilos ou variações locais.

Moeda dos painéis

Valores em reais

Os painéis financeiros de Seller e Gestão usam BRL sem seletor de moeda. URLs antigas com USD são normalizadas para BRL. Assinaturas mostram o preço contratado em reais; a moeda e o valor cobrados do comprador permanecem identificados separadamente. Previsões usam o preço base em BRL. Valores já pagos preservam a liquidação registrada, inclusive diferenças cambiais históricas, sem recalcular taxas ou comissões.

Principal e order bumps com a mesma agenda renovam juntos em uma cobrança e uma tarifa fixa. Agendas diferentes geram cobranças independentes, cada uma com sua tarifa. A compra inicial permanece única. O cancelamento do contrato agrupado abrange seus itens; contratos históricos não são reagrupados. O checkout informa todas as frequências selecionadas.

Condições do plano mostram reserva e taxa configurada em BRL, sem seletor. A reserva em reais inclui compras internacionais liquidadas em BRL; a referência de US$ 1,49 da tarifa fixa permanece identificada como valor convertido em reais.

Navegação

AppShell responsivo

Sidebar no desktop e navegação inferior com quatro ações primárias e menu “Mais” no mobile.

Editores

FocusEditor

Jornadas densas ocupam uma camada de foco e restauram o contexto anterior ao sair.

Detalhe

Drawer adaptativo

Painel lateral no desktop e superfície de largura total no mobile.

Atalhos para vendas, cobranças, extrato e documentos usam link verde com seta diagonal, sem caixa ou borda. Foco visível, texto que quebra no mobile e alvo de toque de 44px. Ações de confirmar, salvar, copiar, cancelar e reembolsar preservam seus controles.

Estados

Feedback completo

Skeleton com a forma do conteúdo, vazio com orientação e CTA, erro com recuperação, toast e banner acionável.

03

Produto, preço e funil

A experiência corrente é mais direta e tem invariantes explícitas no contrato.

Catálogo

Uma oferta e um plano principais

  • A V1 aceita uma oferta principal e um plano principal por produto.
  • Uma segunda criação ou identificador diferente recebe conflito 409.
  • Preço mínimo equivalente a 10 na moeda base.
  • Descritor de fatura é obrigatório.
Mercado global

Bruto comercial preservado

Em novas compras avulsas e pagamentos iniciais de assinaturas no checkout com cotação travada, um produto de R$ 100 mantém R$ 100 como base das taxas, reserva e participações. O preço em moeda estrangeira inclui a conversão paga pelo comprador.

A Gestão separa o bruto comercial, o bruto recebido da Stripe e o adicional de conversão. O valor comercial não é uma promessa de líquido disponível. O histórico mantém a regra da compra. Preço contratado é o snapshot da compra, após descontos, nunca o preço atual do catálogo. Variação cambial é o bruto comercial registrado menos esse preço. Mostrar ambos e o bruto da cobrança em Seller e Gestão, preservando taxas, comissão, reserva e histórico. A primeira cobrança protegida tem variação comercial zero; a diferença do bruto observado na Stripe permanece separada. Em Assinaturas, cobranças pagas usam a liquidação da venda vinculada; preço contratado não substitui dinheiro liquidado. Sem observação, mostrar liquidação em apuração. Previsões não prometem o mesmo BRL nas renovações. Tentativas pendentes ou recusadas não ocultam o detalhamento das cobranças efetivadas. Se os valores registrados fecham exatamente, mas o arredondamento individual gera diferença na soma visível, mostrar uma nota com essa diferença, sem redistribuir centavos ou alterar o ledger.

Editor

Etapas vigentes

Básico, Recursos, Preço, Funil, Afiliados e Links. Recorrência vive em Preço; o builder abre por Links.

Tracking é uma etapa própria com Meta, TikTok, Google Ads e UTMify.

Pixels novos começam em comissão. Em “Enviar valor”, a pessoa escolhe “Comissão” ou “Bruto”. Pixels existentes mantêm a escolha salva e pixels de afiliado continuam somente em comissão.

Vendas

9,9% + US$ 1,49 por cobrança

No Seller, a fórmula informa “9,9% + US$ 1,49 por cobrança”. Quando o total inclui mais de uma tarifa fixa registrada, mostrar “N tarifas fixas neste total. Principal e order bump compartilham uma tarifa; cada cobrança adicional tem a sua.” Contar somente tarifas positivas das cobranças incluídas no serviço exibido, nunca produtos ou itens. Sem dados completos das tarifas, omitir a contagem. No detalhe de uma cobrança isolada, não somar tarifas de outras cobranças. Valores, cotações e deduções históricas permanecem inalterados.

Com cupom e cotação travada, aplicar o desconto primeiro no bruto comercial BRL e depois converter o valor final para a moeda cobrada, arredondando para cima. Usar a prévia calculada pelo servidor no resumo e nas wallets. Renovar a cotação também revalida o cupom e exige nova confirmação. A prévia corresponde à oferta selecionada. Trocar a oferta ou a cotação bloqueia o pagamento, a abertura e a confirmação de wallets até revalidar o cupom.

Novas cobranças usam 9,9% sobre o bruto comercial mais US$ 1,49, convertido na moeda da liquidação pela cotação registrada na cobrança. Não há tarifa adicional de conversão de 3%. O histórico preserva os valores da compra.

No Seller, Valores mostra itens, descontos, Valor da venda, Serviço VendePay e Sua comissão. Reserva e prazo de liberação permanecem explícitos. A Gestão mantém a discriminação e a cotação da tarifa fixa para auditoria e QA da mesma venda.

O valor de Serviço VendePay deve ser o mesmo no Seller e na Gestão para a mesma cobrança, preservando as deduções históricas. Conversão paga pelo comprador fica separada. A Gestão apresenta VendePay antes dos custos e os custos observados do provedor, sem nova dedução dos participantes. O resultado após custos é da cobrança original, antes de reembolsos, contestações e outros custos; não representa saldo disponível, pagamento bancário ou lucro final. Só calcular quando o custo estiver informado, as moedas coincidirem e a distribuição completa fechar com o bruto recebido do provedor. Ausência de observação é indisponibilidade, nunca zero. O total do grupo VendePay no extrato é anterior aos custos.

A cotação de pagamento travada protege o bruto comercial BRL das novas avulsas e dos pagamentos iniciais no checkout, incluindo planos, trials pagos, bumps e ofertas recorrentes. A cotação pertence somente a esse pagamento. Renovações preservam o valor contratado na moeda do comprador e liquidam pelo câmbio efetivo da nova cobrança; não reutilizam a cotação vencida. Trials gratuitos não geram pagamento inicial. Uma mudança de cotação exige reconfirmação do preço atualizado.

Funil

Árvore de conversão

Múltiplos order bumps, ramos de aceite/recusa, upsell e downsell, páginas hospedadas ou externas e planos recorrentes.

Ao salvar upsells e downsells, o aviso explica a causa e como corrigir: oferta repetida, conexões do funil, produto ou oferta indisponível, produtor, plano, preço, moeda base e URL da página própria. A mesma oferta não pode aparecer em duas etapas; a mensagem não bloqueia genericamente todo produto repetido. Motivos desconhecidos recebem orientação segura, sem IDs ou detalhes técnicos.

A comissão do afiliado pertence ao produto de entrada. Etapas marcadas herdam o percentual efetivo da venda principal; a configuração própria do produto adicional só vale quando ele é vendido como entrada.

Em Minhas afiliações, quando o percentual do acordo difere do padrão atual do produto, mostrar uma nota informativa com ícone e texto secundário legível distinguindo o padrão para novas afiliações da comissão preservada do afiliado. Manter o percentual do acordo em destaque nos itens do funil; omitir a nota para valores iguais, ausentes ou inválidos.

No editor, destaque essa regra junto à comissão padrão e mostre o percentual em cada etapa.

Trocar o produto ou o plano de uma etapa preserva a escolha de comissão já salva, inclusive ao selecionar uma assinatura.

Assinaturas de order bump, upsell e downsell herdam do produto de entrada a opção de comissão nas renovações. O contrato aceito congela essa escolha; desligá-la preserva a comissão inicial e não reescreve contratos anteriores.

O mesmo usuário não pode ser afiliado aprovado e coprodutor ativo do mesmo produto. Bloqueie o convite e revalide no aceite; bloqueie aprovação automática, manual e reaprovação da afiliação. Pedidos pendentes podem coexistir, mas não os dois vínculos ativos. Mostre o conflito no campo de e-mail e nas ações de aceite/aprovação. Preserve usuários distintos, produtos distintos e o histórico financeiro.

A prévia de coprodução fecha cada parcela na unidade da moeda; o produtor recebe o restante após a parcela do coprodutor.

04

Checkout Builder

Não modele campanhas como checkouts independentes. O modelo mental atual é único por produto.

Regra canônica1 Checkout principal · 1 Estilo principal

Personalize a mesma experiência; não ofereça criação ou seleção de múltiplos checkouts.

Configuração

Controles atuais

Modelo visual, cor, banner, campos, URL de obrigado, e-mail obrigatório, wallets, sessão, recuperação, cupom e páginas externas de funil.

A URL de obrigado é opcional. Quando preenchida, deve começar com https:// ou http://; um endereço incompleto recebe erro no campo e não pode ser salvo.

Global

Câmbio dinâmico

O vendedor define um preço base. A plataforma converte dinamicamente; não existe cadastro manual de preço por moeda.

A prévia de idioma cobre 12 idiomas.

Pagamento

Capacidade ≠ disponibilidade

O checkout aceita cartão de crédito e wallets lastreadas em cartão. Pix e boleto aparecem como “em breve”; Pix pertence à etapa futura do Mercado Nacional.

Dívida técnica conhecida: contratos internos ainda preservam checkouts[] e endpoint de criação por compatibilidade. Isso não autoriza uma experiência de múltiplos checkouts.

05

Recebimentos

O ledger comercial continua sendo a fonte do saldo; a Stripe informa o estado observado dos saques automáticos.

Regra canônicaO ledger registra apenas efeitos financeiros comprovados

Mantenha o saldo em BRL em Disponível, A liberar, Reservado e Em envio. A observação informa o saque; a conciliação registra o efeito financeiro no ledger.

Saldo do ledger

Saldos em reais

Preserve Disponível, A liberar, Reservado e Em envio conforme o ledger comercial, sempre com a moeda explícita. O saldo atual independe do período selecionado e não é substituído por observação da Stripe.

Liberações comerciais, créditos, débitos, ajustes e dívidas continuam seguindo seus registros e datas no ledger. Reserva comercial e elegibilidade ainda não comprovada não são saldo retido pelo banco.

O extrato mantém créditos, débitos, liberações, ajustes e dívidas com motivo, valor, data e venda de origem. Um reembolso de R$ 18 permanece um único débito de R$ 18 na data de origem, mesmo que a compensação interna ocorra em partes; preserve o crédito e a reserva originais.

Use os filtros Débitos e Créditos. No drawer, mostre evento, data, venda, motivo, carteira e IDs de rastreabilidade; não crie histórico de compensações ou vendas financiadoras. Totais carregados excluem INFO, mantêm seu escopo e não substituem o saldo atual.

Reconheça a dívida integral. Disputa ganha reverte o valor recuperado e a dívida pendente cancelada, sem provar que o valor esteja disponível. Compensações internas não criam lançamentos adicionais.

Extrato existente

Saque observado como INFO

Registre cada saque observado em wallet.statement_journal como WITHDRAWAL_OBSERVED, direção INFO, com amount (MoneyDto), detail.status e snapshot de detail.ledgerStatus. O registro informa a observação; não lança por si só crédito ou débito nem cria tabela financeira nova.

Mostre o estado informado pela Stripe em detail.status, separado da conciliação: pending, in_transit, paid, failed ou canceled. “Pago pela Stripe” descreve apenas o estado da Stripe; não confirma depósito bancário. Exiba arrival_date somente quando fornecida, separada de D5 e da data de liberação comercial.

Conciliação

Pendente sem efeito financeiro

Nos DTOs de /wallet/payouts e /admin/payouts, status e ledgerStatus ficam no topo; o card de conciliação usa ledgerStatus. Quando pendente, mostre “Conciliação do ledger pendente” mesmo se status for paid; isso não confirma chegada bancária nem aplica efeito financeiro.

Explique o motivo quando existir: composition_pending (composição em análise), composition_divergent (composição divergente) ou allocation_or_eligibility_unproven (alocação ou elegibilidade comercial aplicável não comprovada). Referências, composição, valores ou elegibilidade ainda não comprovados mantêm o efeito financeiro pendente.

Isso não cria espera por availableAt, D5 ou outra data local: pagamento paid totalmente comprovado pode ser baixado sem aguardar data local. Datas e condições comerciais e regras de dívida permanecem intactas.

A mudança para completed exige claim+complete atômico, payout com status=paid pela Stripe e elegibilidade comercial comprovada; use o estado do payout, não um snapshot histórico INFO. pending só se aplica enquanto o efeito financeiro ainda não foi comprovado. reversed só aparece após desfazer um efeito real. WITHDRAWAL_COMPLETED é saída apenas quando o efeito aconteceu; WITHDRAWAL_REVERTED é entrada apenas quando a reversão ocorreu.

Evidências

Origem e cobertura comprovadas

Preserve o banco informado para aquele saque no snapshot histórico. Se não houver essa evidência, mostre “Banco não identificado”; nunca preencha pelo banco atual.

Componha a observação apenas com balance transactions explicitamente vinculadas ao saque. Relacione venda somente por referências comprovadas de origem, transfer e alocação do settlement; nunca infira vínculo por valor, data ou venda mais recente.

Mantenha a conciliação pendente enquanto houver páginas faltantes ou cobertura incompleta do histórico necessário. Não declare divergência resolvida nem composição completa antes de conferir todas as páginas.

Sincronização

Ausência e cache desatualizado

Mostre quando ocorreu a última observação bem-sucedida e indique falha ou desatualização da consulta. Em falha de leitura ou sincronização, preserve o snapshot e identifique que ele pode estar desatualizado. Preserve também completed e reversed; pending só representa efeitos ainda não comprovados. Falha de leitura nunca rebaixa o estado financeiro.

Sem observação, banco ou arrival_date, use “indisponível”, “Banco não identificado” ou “Previsão indisponível”, conforme o dado; ausência nunca é zero nem uma data inferida.

A experiência não oferece solicitação manual, cotação, aprovação, recusa ou cancelamento do saque. A conciliação acompanha o efeito real no ledger sem ação local para comandar ou bloquear o payout automático.

Plano e taxas

Padrão global e condições personalizadas

Na Gestão, Usuários → Plano e taxas permite consultar condições e histórico. Somente a permissão específica de gerenciar planos libera a edição.

Existem apenas Padrão e Personalizado para cartão de crédito. O Padrão atual começa com 9,90% mais fixa da moeda e reserva comercial de 7% por 90 dias nas novas vendas, sem exceção para valores pequenos. D5 é a referência comercial do plano. A previsão por cobrança Connect vem da conta de pagamento e não determina a chegada bancária. Pix entra em etapa futura do Mercado Nacional.

Nas vendas Stripe Connect, a previsão de liberação de USER/COMMISSION vem de available_on da transação validada do recebedor; a cobrança fornece previsão provisória enquanto essa transação não existe. Disponível exige status available na conta conectada, sem inferir pelo relógio. O país emissor vem de payment_method_details.card.country, nunca de endereço, IP ou moeda. Sem data conhecida, mostrar Aguardando previsão de liberação e manter o valor em A liberar. Aplicar em Dashboard, Vendas e renovações, Finanças, agenda, extrato, itens e exportações de Seller e Gestão. Datas previstas usam o dia UTC. Valores, taxas, reservas e histórico contábil permanecem preservados. arrival_date continua exclusivo da previsão bancária do payout. A disponibilidade do recebível permanece visível junto a A liberar mesmo com reserva positiva; a orientação da reserva fica separada. A Gestão preserva awaitingAvailability ao converter o saldo. Restituições de disputa usam a disponibilidade de sua própria transferência DISPUTE_RETURN, sem herdar a previsão da cobrança original.

Separe as datas de liberação comercial e de chegada bancária. Mostre arrival_date somente quando retornada para o payout; sem esse dado, não derive uma data fixa do país, da moeda ou de D5.

Nos planos Padrão e Personalizado, as reservas nacional e internacional exigem percentuais inteiros em todas as moedas. Valores fracionários bloqueiam a revisão e a gravação, com mensagem no campo; não são arredondados. Valores inteiros armazenados como 7.000 continuam válidos. Taxas comerciais podem ter casas decimais e o histórico mantém seus valores originais.

Em Gestão → Configurações, a equipe com permissão de gerenciar planos edita as condições globais do Padrão, com motivo, revisão antes de salvar e histórico. Em Usuários → Plano e taxas, cada campo negociado no Personalizado fica protegido da edição global. Se apenas a taxa fixa em USD foi personalizada, ela permanece enquanto as demais condições acompanham o Padrão vigente. No Seller, Configurações apenas consulta as condições vigentes; o vendedor não troca de plano.

Cada pagamento confirmado, inclusive renovação, usa o plano vigente naquele momento. Vendas e recebíveis anteriores mantêm suas condições comerciais; trocar o plano nunca recalcula o passado. A liberação comercial segue o ledger; estado Stripe e chegada bancária são observações separadas.

Assinaturas

Projeção sem promessa

O vendedor escolhe o período. Destaque o valor bruto já cobrado e pago, antes de taxas e divisões; não é saldo disponível. Agendado e previsto, recuperação e ainda cobrável são indicadores secundários. Base ativa e MRR usam o fim do período limitado a hoje; churn usa a base inicial e LTV usa meses completos anteriores.

O afiliado da compra de origem acompanha todos os produtos, contratos e cobranças dessa compra, incluindo bump, funil e renovações sem comissão. Bruto é o valor completo da operação; líquido é somente a parte do usuário, podendo ser zero. Comissão não filtra a visibilidade. Permissões de reembolso, cobrança e cancelamento permanecem separadas e restritas aos papéis autorizados. Base e previsão são brutas, sem promessa de ganho. Linha e detalhe de cobrança usam o mesmo escopo, sem somar o upsell separado duas vezes.

Já cobrado mantém primeiras cobranças e renovações pagas no mês mesmo após cancelar a assinatura; cobranças fechadas sem pagamento não entram. Cancelamento remove valores agendados e em recuperação, sem apagar pagamentos anteriores. Uma cobrança compartilhada por principal e order bump entra uma única vez no total cobrado, mantendo a contagem de assinaturas.

Fechamento monetário: cada nova operação fecha no backend na menor unidade da moeda. Taxas, reservas e parcelas dos participantes são gravadas uma vez; saldo, extrato, agenda e detalhes somam esses mesmos valores. A interface não redistribui centavos nem acrescenta uma linha de arredondamento. Estornos parciais preservam o fechamento acumulado. Aguarde todas as páginas para conferir o total completo. Na Gestão, lançamentos pendentes e em processamento incluem reservas e taxas; os recebíveis comerciais do participante permanecem separados na auditoria, sem comprovar saldo disponível na Stripe.

06

Entrada e KYC

A tela única “Cadastro e documentação” mantém quatro seções visíveis: 1. Dados cadastrais, 2. Verificação de identidade, 3. Conta bancária e Situação operacional. Somente a etapa atual fica expandida; etapas concluídas mostram resumo e divulgação acessível.

Acesso

Autenticação atual

Login por e-mail e senha, recuperação/redefinição e verificação de e-mail. Não prometa login com Google sem implementação correspondente.

O cadastro exige “Confirmar senha” logo após “Senha”, com entrada oculta e opção de exibição independente. Frontend e API exigem igualdade exata, sem remover espaços ou alterar maiúsculas. Ausência mostra “Confirme a senha.”; divergência mostra “As senhas não coincidem.” junto ao campo, resumo de validação e foco no primeiro erro. A confirmação não é persistida nem devolvida na sessão.

O cadastro exige aceite desmarcado por padrão. A linha de consentimento abre os Termos de Uso completos em um Drawer standard, com texto limitado a 68ch, cinco links e o rodapé “Li e aceito”; fechar sem aceitar não altera o checkbox. Política de Privacidade da VendePay e Contrato de Conta Conectada da Stripe permanecem links diretos.

Após o signup, a tela de cadastro mostra uma única vez “Enviamos um link de confirmação para <e-mail>.”. Se a verificação falhar, “Reenviar link” reutiliza a operação de reenvio do shell.

Recebimentos

Ativação automática

A tela única “Cadastro e documentação” reúne o primeiro preenchimento e a edição dos campos permitidos, sem upload de documentos; documentos e verificações ficam no painel de verificação. O formulário abre automaticamente antes de salvar, em correções ou após erro; quando concluído, mostra um resumo e “Ver dados”. A identidade persistida fica somente leitura e “Dados completos” acompanha “Salvar dados”. Em correção, requisitos conhecidos aparecem no próprio campo com “<rótulo> precisa ser corrigido.”; os demais aparecem em “Confira também: <rótulos>.”.

O perfil é a fonte única dos dados: inclui site, descrição e categoria do negócio; para PJ, quem preenche é o representante legal, com CPF e cargo. Um único campo de CPF ou CNPJ deriva PF ou PJ, mostra a pessoa reconhecida e fica bloqueado depois de salvo. Alterar a identidade exige uma nova conta VendePay. Depois da ativação, cada salvamento também envia os dados; o retorno informa quando foram enviados, não aceitos, estão em andamento ou ainda não foram enviados.

A seção 1 agrupa “Seus dados”, “Empresa”, “Endereço” e “Seu negócio”; PJ também mostra “Representante legal”. O CEP é o primeiro campo de endereço e preenche rua, cidade e estado quando completo, mas os campos continuam editáveis. O estado começa vazio, a validação ocorre ao sair do campo e o telefone é reaproveitado do signup; em PJ, telefone e endereço informam “Dados do representante legal.”

Tentativas pendentes reutilizam o estado persistido. Uma etapa já iniciada nunca é repetida. A disponibilidade do retry vem de enrollment.retryAvailable, calculada no servidor; enquanto disponível, a falha aparece inline com “Não foi possível concluir seu cadastro agora. Tente novamente.” e “Tentar novamente”. Se o retry falhar novamente, mostre somente “Não conseguimos concluir seu cadastro automaticamente” e “Fale com o suporte da VendePay para continuarmos a análise.”

O suporte genérico aparece somente em estado impossível de resolver no fluxo: cadastro rejeitado, requisito que exige suporte, falha repetida do retry ou configuração indisponível. Estados normais de preenchimento, espera e análise não mostram esse banner.

Fora do consentimento legal, a jornada do vendedor não expõe o provedor nem o conceito de conta conectada. Verificação, documentação e liberação operacional continuam em etapas posteriores.

Ativação

KYC condiciona a operação

A seção 2 mostra uma única linha agrupada, “Documento com foto e selfie”, e abre “Verificação de identidade” em Drawer standard, com body sem padding e um único container rolável. Enquanto carrega, mostre “Carregando a verificação…” com status; se falhar, “Não foi possível carregar esta etapa.” e “Tentar novamente” recria a sessão. Ao sair, mostre “Atualizando seu cadastro…” e depois o feedback de análise, pendências, conclusão ou falha; consulte a view a cada 5 segundos por até 60 segundos ou até a etapa mudar. Use “Pendente”, “Em análise”, “Corrigir” e “Concluído”; durante a análise mostre “Atualizado há X min” e “Atualizar status”. A badge geral usa “Cadastro em andamento”, “Em análise”, “Correção necessária” ou “Cadastro aprovado”.

Validação incompleta pode impedir vendas ou recebimentos bancários pelas regras de identidade e do provedor; não existe comando local para bloquear um payout. O cadastro não solicita um destino PIX ou cripto.

O painel separa o que deve ser completado no perfil, documentos, verificações e conta bancária. Antes da conta ser vinculada, as seções 2 e 3 exibem “Disponível após salvar os dados cadastrais.”; a conta bancária fica disponível assim que vinculada, mesmo com a identidade em análise.

Quando só há pendências da próxima etapa, mostra um estado neutro de verificação de identidade, com documento com foto e selfie; erros, prazos próximos e campos recusados mostram ação necessária.

A conta bancária usa uma busca por código e nome em uma lista estática de bancos brasileiros; “Outro banco (informar código)” revela o código de 3 dígitos. A agência tem 4 dígitos e a conta tem dígito. O titular deve ser o vendedor PF ou a razão social PJ. Nas listas, mostre apenas o nome do banco e os 4 últimos dígitos. Validações do provedor com parâmetro de conta mostram “Confira o número da conta.” no campo de conta; parâmetros de roteamento mostram “Confira o banco e a agência.” nos campos correspondentes; parâmetros desconhecidos mantêm a mensagem geral.

A conta bancária é a terceira seção da mesma tela “Cadastro e documentação”. O cabeçalho mostra um único chip: “Pendente”, “Em análise”, “Corrigir” ou “Concluído”, conforme a prontidão e as pendências da conta padrão. Não exiba “Prazo vencido”, “Outra informação bancária” nem requisitos sem rótulo.

Na troca, a conta atual recebe repasses até a nova virar padrão. Se a troca falhar, a nova fica como “Tentativa de substituição”, com “Tentar novamente”; contas anteriores podem ser reativadas com “Usar esta conta”. Contas bancárias nunca são excluídas.

Mostre uma mensagem de prontidão por estado: pronta, “Conta pronta para receber repasses”; sem conta padrão, “Cadastre a conta bancária que vai receber os repasses.”; repasse falhou, “Um repasse para esta conta falhou. Cadastre outra conta ou confira os dados com o banco.”; não validada, “A conta não pôde ser validada. Cadastre outra conta.”; conta bancária necessária, “Cadastre uma conta bancária para liberar os repasses.”; repasses ainda não liberados, “Os repasses ainda não foram liberados. Conclua as demais etapas da verificação.” Nunca afirme que o vendedor está habilitado a vender ou “verificado” antes da verificação.

No fluxo do vendedor, o cadastro não pergunta como receber e as telas para cadastrar ou gerenciar destinos PIX/cripto foram removidas. Configurações direciona à etapa bancária. Na Gestão, o status de verificação mostra prontidão e um resumo bancário somente leitura, com papel e número mascarado; a aba de recebimentos não oferece destinos nem cartões de prontidão PIX/cripto.

A quarta seção, “Situação operacional”, lê onboarding.operations de GET /kyc/verification e mostra “Vendas” e “Recebimentos”. A situação dos recebimentos depende dos requisitos de identidade, conta bancária e habilitação do provedor. Estar habilitado não comprova saldo disponível nem chegada ao banco. Preserve os marcadores existentes com ícone e texto: cadastro pendente usa marcador neutro; análise mantém o tom de espera; restrições bancárias ou de identidade mostram a orientação correspondente, sem bloqueio local de payout.

O shell, Wallet e Config usam a mesma linguagem: “Conclua seu cadastro para vender e receber.” e links “Concluir cadastro”. Quando a atenção não tiver um requisito com rótulo, o banner usa o prazo de currentDeadline ou “Confira as pendências indicadas abaixo”.

Validação incompleta pode impedir vendas ou recebimentos bancários pelas regras de identidade e do provedor; não existe comando local para bloquear um payout.

Na afiliação por marketplace ou convite, documentação do afiliado ainda não aprovada deve ter mensagem específica: acessar o cadastro de recebimento, concluir pendências ou aguardar a aprovação se os documentos já foram enviados. Bloqueios de vendas e do produtor mantêm orientação de recebimento; não atribuir esses bloqueios ao KYC do afiliado.

07

Status e jornada de vendas

Os seis enums abaixo são a base. A interface também deriva situações compostas sem inventar novos contratos.

EnumRótuloFamília
PENDINGPendenteAguardando
PAIDPagaSucesso
FAILEDRecusadaEncerrado
REFUND_REQUESTEDAguardando reembolsoAguardando
REFUNDEDEstornoInformativo
CHARGED_BACKChargebackEncerrado

Apresentações derivadas observadas: Reembolso parcial, Reembolso de chargeback, Disputa ganha, Assinatura encerrada e Situação mista. A jornada com cobranças em estados diferentes usa Situação mista; o estado de cada cobrança permanece visível. Reembolso solicitado informa processamento pendente e consulta a confirmação. Sempre comunique estado, causa e próximo passo.

Venda compartilhada

Uma taxa por cobrança

Distribuição da venda mostra os valores da operação inteira: VendePay, conversão e participações. A mesma taxa pode ser consultada nas contas do produtor, coprodutor e afiliado; não representa uma cobrança adicional para cada um.

Quando houver indicação, identifique a parcela paga pela VendePay e a receita restante da plataforma.

Após estornos

Compra e resultado são valores diferentes

Uma compra de R$ 150 com R$ 50 de upsell estornados mantém R$ 100 de bruto válido. O status agregado aparece na lista e na gaveta, com a contagem das cobranças em cada situação.

A lista e a gaveta usam o mesmo resumo das cobranças. O bruto válido da compra é separado do resultado do participante. Preserve o líquido original, incluindo reserva. O resultado após ajustes desconta apenas a responsabilidade do participante nos estornos e contestações ativos, as perdas cambiais e as multas já descontadas; a recuperação de dívida não é uma segunda perda. Reversões não geram um segundo crédito sobre o líquido histórico. Dados incompletos ou estado independente da multa não confirmado direcionam ao extrato. Esses indicadores não substituem nem comprovam o saldo financeiro do ledger.

Resultado individual

Sua parte já considera o rateio

Separe o líquido, a reserva, os valores a liberar e os abatimentos do participante. Não apresente a taxa total como uma dedução pessoal.

Quando afiliado e coprodutor participam juntos, o coprodutor recebe seu percentual sobre o líquido que resta ao lado produtor. A parcela da taxa já atribuída ao afiliado não é descontada novamente dessa base. Com afiliado de 50% e coprodutor de 50%, produtor e coprodutor dividem esse líquido igualmente, respeitando os centavos.

A taxa exibida é estável entre participantes. Preserve os valores históricos e as regras das cobranças sem os três participantes; não recalcule os recebíveis para fechar uma tela.

Chargeback parcial mostra cada disputa e soma somente os valores contestados, preservando o restante válido. Há uma multa fixa ativa por cobrança. Ganhar uma disputa libera suas parcelas e reverte seu principal sem esperar as demais ou a multa. A multa é revertida quando todas forem ganhas e restabelecida se houver nova disputa. Reapresentações preservam o histórico e os centavos das disputas ainda abertas. Saldo em carteira e valor válido da cobrança são conceitos separados.

Perda cambial e transparência da dívida

Somente a perda cambial efetivamente observada na Stripe gera ajuste de dívida. Ganhos permanecem com a VendePay, sem bônus. A base é a parcela da conversão original em reais, sem incluir novamente serviço, conversão do comprador ou taxa do provedor.

A venda mostra a situação e o acesso ao extrato, sem aba Acontecimentos. No extrato, separe perda cambial, reembolso e multa. O detalhe do lançamento preserva a base original, o débito efetivo na devolução e a perda total; o valor lançado é a parcela do participante. Seller usa linguagem da operação, sem citar o provedor nesses textos. Gestão mantém a referência Stripe.

Dívida cancelada não é dinheiro devolvido. Mostre responsabilidade original, valor coberto, devolução confirmada e pendência. A correção de uma cobrança cambial anterior não é bônus. Dados ausentes permanecem indisponíveis.

Na confirmação de reembolso, destaque USD ou EUR devolvidos ao comprador e a base histórica em BRL separadamente. No checkout, preserve o resumo e mostre o estado atual de reembolso ou chargeback de cada cobrança.

A ação de reembolso na VendePay continua total por cobrança. Produto principal e order bump na mesma cobrança não são reembolsados separadamente pela plataforma. Eventos externos parciais são reconhecidos; essa limitação da interface não deve ser atribuída ao gateway.

08

Operação atual

O produto cresceu além das telas do primeiro handoff.

Dashboard

Visão gerencial

Dashboard e Assinaturas compartilham os indicadores: histórico e previsão brutos da compra vinculada, mesmo sem comissão, MRR, recuperação, churn da base inicial e LTV por meses completos. Sem base inicial, o churn não é apresentado como zero. Origem conta cobranças pagas e Top produtos conta itens pagos; ambos incluem renovações.

Gráfico de bruto vendido com total em destaque e menu de três pontos com Acumulado/Diário e check na opção ativa, começando em Acumulado. Inclui avulsas, primeiras cobranças e renovações; dias sem vendas mantêm a curva horizontal.

O período vale para indicadores, percentuais, rankings, recorrência e últimas vendas, sempre em BRL. Não há seletor de moeda ou de tipo.

O saldo do dashboard segue o ledger em BRL e independe do período dos indicadores comerciais. Observações de saques da Stripe no extrato não substituem esse saldo nem alteram seus valores. Premiações, incluindo Mestre das vendas, usam sempre o acumulado elegível em reais pelo snapshot das vendas. Meta, progresso e valor faltante não variam com moeda ou período.

Temas claro e escuro, consulta por toque e teclado e rótulos de datas adaptados a telas desde 320px e números do eixo vertical ocultos no mobile.

Vendas e assinaturas

Jornadas agrupadas

O afiliado da compra de origem acompanha todos os produtos, contratos e cobranças dessa compra, incluindo bump, funil e renovações sem comissão. Bruto é o valor completo da operação; líquido é somente a parte do usuário, podendo ser zero. Comissão não filtra a visibilidade. Permissões de reembolso, cobrança e cancelamento permanecem separadas e restritas aos papéis autorizados. Base e previsão são brutas, sem promessa de ganho. Linha e detalhe de cobrança usam o mesmo escopo, sem somar o upsell separado duas vezes.

Faturas sem venda efetiva ficam no histórico de Assinaturas, sem abrir detalhe de venda. Preserve a primeira compra, as linhas já carregadas em caso de falha e a paginação sem duplicações. Previsão e ações continuam restritas aos papéis autorizados.

Cobranças por jornada, projeção por período, MRR, LTV, churn, reembolso total ou parcial, chargeback evitado/disputa ganha, retentativas, dunning, trial e cancelamento ao fim do período.

Seller

Áreas adicionais

Coproduções, Configurações e Webhooks complementam produtos, afiliados, vendas, assinaturas e finanças.

Gestão: Usuários

Customer Success

Seis indicadores por conta: GMV confirmado, variação, tempo até a primeira venda, adoção, última atividade e risco de churn com motivo.

GMV compartilha a fonte paga do seller, com avulsas e recorrências por moeda. Últimos X dias incluindo hoje, em Brasília, comparados aos X anteriores. Sem base ou histórico completo, a variação fica indisponível.

Adoção cs-v2 considera três evidências: elegibilidade Connect para receber, canal com oferta e checkout ativos e primeira venda confirmada. Produto próprio ou parceria aprovada atendem ao canal. Cada recurso tem o mesmo peso e aparece na lista expansível.

Último login registrado ou pagamento confirmado determina a atividade. Logins antigos não são inventados. Ativação e adoção usam toda a conta; receita usa o período escolhido em BRL.

Risco mostra Alto, Médio, Baixo ou Dados insuficientes, com ícone e motivo. A regra inicial prioriza bloqueio de vendas, primeira venda após 14 dias, inatividade de 30/14 dias e queda de 50%/20%, além de adoção baixa. Não é probabilidade nem churn de assinaturas.

Permissões de usuário e receita protegem os mesmos indicadores expostos ao CRM. Filtros acima dos seis cartões, estados vazios explícitos e grade adaptada ao mobile.

Adquirentes

Prontidão de Apple Pay e Google Pay

A Gestão destaca a conta configurada para novas cobranças e mantém contas históricas para conciliação. Não há controles de distribuição global ou por usuário.

Apple Pay e Google Pay aparecem separadamente por conta, sempre com status, causa e próximo passo.

As credenciais são gerenciadas pela equipe técnica no ambiente. A Gestão permite editar o nome, sem cadastrar ou alterar chaves. Contas existentes usam diagnóstico somente leitura e correção explícita confirmada pelo operador.

A ativação da adquirente só fica disponível quando a saúde geral e os dois status de carteira estiverem aprovados.

Revisão de chargebacks

Alertas Chargeblast sem correspondência são reavaliados após um minuto desde a última busca. Antes de informar ausência depois de 23 horas do recebimento, o worker procura novamente a venda. Tipos sem automação, inclusive Cancel, permanecem em Revisão manual. TC40, TC15 e SAFE são informativos. Uma revisão já aberta continua exigindo decisão do operador.

Chargebacks: dados divergentes, evidência insuficiente, múltiplas vendas compatíveis ou busca incompleta exigem Revisão manual, com motivo e conferência da transação antes de associar e processar. Código de autorização isolado não autoriza estorno. Diferenças entre cartão físico e token de carteira exigem confirmação. A aprovação vale para os dados conferidos; alterações exigem nova revisão antes da execução. A venda digitada e a justificativa pertencem somente ao caso selecionado; não devem ser reaproveitadas ao avançar na lista.

Painel administrativo separado

Origens do checkout é exclusiva da Gestão. A versão funcional inicial oferece navegação por nomes, totais por origem e prévia isolada. A evolução de design aprovada separa Players e Páginas em abas superiores dentro do conteúdo, preservando o menu lateral da aplicação. Players usa diretório pesquisável por nome, e-mail e ID; cada player tem análise própria com abas Origens, Produtos e Ofertas. A busca por e-mail exige revisar a permissão de identidade. O protótipo em /prototypes/kan-295/index.html usa dados fictícios e buscas locais; sua integração ao produto e as consultas remotas ainda estão pendentes. A prévia do protótipo restaura o painel lateral completo, com contexto, URL, total, aviso, recarregar e iframe HTTPS isolado. example.com é a origem de demonstração; as contagens permanecem fictícias. Na aplicação, páginas externas podem bloquear a incorporação; conteúdo atual não é prova histórica nem confirmação de fraude. Não expor dados no Seller ou checkout.

Dashboard, Vendas, Finanças, Assinaturas, Produtos, Alertas, Chargebacks, Reconciliação, Contabilidade, Recebimentos, Usuários, Adquirentes, Equipe e Configurações/Webhooks.

Gestão

Indicadores e acompanhamento ao vivo

Filtros

Escopo explícito

No topo do detalhe da cobrança na Gestão, destaque o valor bruto da liquidação na moeda do ledger e identifique ao lado o valor pago pelo comprador na moeda da cobrança. Use os valores registrados, sem recalcular câmbio. Sem lançamentos, informe ausência de liquidação; pagamentos pendentes ou recusados não aparecem como pagos. Liquidação não representa o líquido do participante nem confirma depósito bancário.

Na composição da cobrança, identifique também o valor da liquidação e o valor pago de cada item com suas moedas. Sem liquidação registrada para o item, mostre “Não informada”, sem usar o valor cobrado como substituto.

Hoje por padrão. Hoje e Este mês usam Brasília; datas personalizadas são inclusivas, limitadas a 366 dias. Histórico completo exige escolha explícita.

Dashboard, Vendas e Assinaturas compartilham esta barra. Indicadores ficam somente no dashboard; as listas usam data de criação, com paginação no servidor. Nelas, Hoje e os outros atalhos incluem todo o dia civil, até a meia-noite seguinte em Brasília; não congelam no horário da abertura.

Mais filtros busca nome ou e-mail com espera de 300 ms e oito sugestões. Selecionar e aplicar atualiza os dados; digitar preserva o usuário aplicado. Limpar pelo chip ou pela lista redefine o rascunho. 90 dias e Histórico completo ficam selecionados na barra quando aplicados.

Indicadores

Volume, taxas e ocorrências

Volume de cobranças pagas considera criação e estado atual. Taxas VendePay sobre vendas e Tarifas de conversão de moeda são valores monetários. O Seller mantém sua própria base de pagamento.

Reembolsos totais inclui Prevenções de chargeback. Não some prevenção novamente. Percentuais operacionais usam pagas + reembolsadas + chargebacks como base; sem base não é zero. Conversão incompleta exige aviso de total parcial.

Hoje

Ao vivo para acompanhar na TV

Opcional e desligado por padrão. Consulta a cada 30 segundos na aba visível, com janela renovada e última atualização identificada. Gráfico e cards atualizam juntos; erro pausa as consultas e identifica valores antigos.

A meta é combinada pela equipe fora do sistema. Não há campo de meta. O gráfico continua diário, sem simular distribuição horária. Outros períodos têm atualização manual.

09

O que mudou desde o snapshot

Use esta tabela como proteção contra decisões antigas que ainda aparecem nos protótipos de junho de 2026.

ÁreaNo snapshotHoje
Checkout BuilderVários checkouts e campanhasUm Checkout principal e um Estilo principal por produto
RecebimentosSaldo e extrato do ledger comercialLedger preservado; observação INFO separada dos efeitos comprovados no extrato existente
Mercado globalPreço definido por moedaConversão dinâmica a partir do preço base
ProdutoEtapas dinâmicas antigasUma oferta e um plano principais; tracking e links reorganizados
KYCOnboarding antigo em quatro passosJornada unificada PF/PJ/PEP para vendas e recebimentos bancários
StatusRótulos e estados antigosSeis enums base, com Estorno para REFUNDED e estados derivados

Rastreabilidade

Verificação ponta a ponta

Conferido em 27/08/2026 contra core/checkout, painel do vendedor, painel de gestão e navegação real do ambiente de homologação. Mudanças futuras devem atualizar esta página e os endpoints para IA no mesmo ciclo.