Vitrin Digital — Manual da Plataforma
Guia para donos de organizações que utilizam a Vitrin Digital para processar pagamentos.
1. Acessando o Painel
Acesse https://vitrin.digital/login com o email e senha cadastrados no signup.
Após o login, você será redirecionado ao Dashboard com o resumo da sua operação.
1.5. Suas chaves de API
Ao criar sua conta, você recebe 2 chaves:
| Chave | Prefixo | Quando funciona | Conecta a |
|---|---|---|---|
| Produção | vd_live_* | Após aprovação pela equipe Vitrin + contratos assinados | Processador real (dinheiro real) |
| Sandbox (teste) | vd_test_* | Imediatamente — mesmo antes da aprovação | Simulação (sem dinheiro real) |
Sandbox: teste antes de operar
Enquanto aguarda a aprovação do seu cadastro, você pode usar a chave vd_test_* pra integrar e testar toda a API:
- Criar clientes, gerar cobranças (Pix, boleto, cartão), configurar webhooks
- Tudo funciona igual à produção, mas sem mover dinheiro real
- Ideal pra validar a integração e ter tudo pronto antes de ir pro ar
Onde encontrar suas chaves
- No momento do cadastro: ambas as chaves são exibidas na resposta. Anote a
vd_live_*— ela é mostrada apenas uma vez. - No dashboard: acesse Configurações (
/dashboard/settings/) pra consultar. - Rotacionar: se uma chave for comprometida, regenere em Configurações (requer PIN).
Fluxo de ativação
- Cadastro — você preenche dados pessoais/empresa, endereço, conta bancária de repasse e PIN. Status "Aguardando revisão". Sua chave
vd_test_*já funciona. - Envie documentos — aba Onboarding. RG/CNH e Contrato Social (se CNPJ).
- Equipe Vitrin revisa — aprova ou solicita ajustes por email.
- Ativação — status "Ativa". Sua chave
vd_live_*é enviada por email (uma única vez). Assine os contratos comerciais em/dashboard/contract. - Checklist pós-aprovação — um widget aparece no Overview com 4 passos pra você operar: conta bancária ✓ (vem do signup), webhook, primeiro plano/produto, primeira cobrança.
- Operação — cobre via
vd_live_*.
Dica pra vibecoders: cole o conteúdo de https://vitrin.digital/llms-full.txt no seu LLM favorito (Claude, Cursor, etc.) e peça pra ele fazer a integração. Mais detalhes em https://vitrin.digital/docs/llm.
SDKs oficiais
Se o seu (ou o do seu time) backend é Node ou Python, instale o SDK oficial em vez de chamar a API com fetch/requests cru — vem com retry, erros tipados e validação de webhook prontos.
Exemplos completos no guia de integração ou nos READMEs em sdk/node/ e sdk/python/.
2. Dashboard (Overview)
A página inicial mostra:
- MRR — Receita recorrente mensal (soma dos planos ativos)
- Assinaturas ativas — Quantos clientes assinam planos
- Volume do período — Total cobrado no período selecionado (7d / 30d / 90d)
- Churn — Taxa de cancelamento de assinaturas
- Mix de pagamento — Distribuição entre Pix, Cartão e Boleto
- Transações recentes — Últimas cobranças com status
Banners de status
Dependendo do estado da sua conta, banners informativos aparecem no topo do dashboard:
- Aguardando revisão (azul) — "Seu cadastro está em análise". Inclui orientação pra usar a
vd_test_*pra integrar enquanto aguarda, com links pra documentação. - Onboarding (amarelo) — conta aprovada pela equipe Vitrin, aguardando verificação documental pelo processador. Envie os documentos pela aba Onboarding.
- Cadastro não aprovado (vermelho) — seu cadastro não foi aprovado. Contate contato@vitrin.digital.
Os banners desaparecem automaticamente quando sua conta é ativada.
3. Transações
Lista todas as cobranças da sua organização com filtros:
- Status: Pendente, Confirmado, Recebido, Vencido, Reembolsado, Chargeback
- Tipo: Pix, Cartão, Boleto
- Data: De / Até
Ações disponíveis
- Clicar na transação → Modal com detalhes completos (valores, taxas, dados Pix/boleto)
- Reembolsar → Reembolso parcial ou total (requer PIN)
- Cancelar → Cancela cobranças pendentes
- Dossiê de defesa → Gera relatório completo com evidências para contestar chargebacks
4. Assinaturas
Gerencie assinaturas recorrentes vinculando clientes a planos. Esta seção é o coração da operação pra negócios baseados em mensalidade — cobrança recorrente sem fricção pro cliente, controle de inadimplência e visibilidade do MRR.
4.1. Lista, filtros e busca
Na página Dashboard → Assinaturas você vê todas as assinaturas da sua org com:
- Cliente + ID (cópia rápida)
- Plano
- Valor cobrado por ciclo + badge:
personalizado(teal) — assinatura usa preço diferente do plano (ver 4.3)do plano(cinza) — usa o preço padrão do plano
- Tipo (PIX, Cartão, Boleto)
- Status (Ativa, Inadimplente, Pendente, Cancelada, Expirada)
- Criado
Filtros disponíveis na toolbar acima da lista:
- Busca — nome, email ou CPF/CNPJ do cliente (350ms de debounce)
- Situação — filtra por status
- Plano — só assinaturas do plano selecionado
- Preços —
Todos/Personalizados/Do plano
Combine filtros para auditar contratos B2B Enterprise, identificar inadimplência por plano específico, ou bater carteira de bolsistas.
Clique em qualquer linha para abrir o painel de detalhes (ver 4.4).
4.2. Criar uma assinatura individual
Botão "Nova assinatura" abre o formulário:
- Cliente — busca pelos clientes já cadastrados na sua org
- Plano — busca pelos planos ativos
- Preço personalizado (opcional) — ver seção 4.3
- Forma de pagamento — PIX, Cartão ou Boleto (depende do que sua org permite em Configurações)
- Token do cartão (opcional, só Cartão) — se você já tem o token tokenizado, cola aqui; senão, deixa vazio e o link de cobrança aparece após criar
Se o cliente paga com cartão sem token, um link aparece pra você copiar e mandar pro cliente ativar a assinatura inserindo o cartão.
4.3. Preço personalizado por contrato
Esta funcionalidade é o que permite um mesmo plano cobrar valores diferentes por contrato, sem precisar criar dezenas de planos.
Ative o toggle "Preço personalizado para este contrato" no formulário de nova assinatura. Você verá:
- Preço padrão do plano (referência)
- Campo valor cobrado por ciclo — substitui o preço do plano só pra esta assinatura
- Aviso âmbar: "Após criada, alteração de valor exige cancelar e recriar a assinatura" (workflow descrito em 4.5)
Quando usar:
- B2B Enterprise — cada cliente fechou um valor diferente
- Bolsa escolar / desconto fidelidade — mesmo plano, preço reduzido
- Condomínio — valor por unidade (fração ideal)
- Loja maçônica / clube — mensalidade base + FAM por idade do membro
- Doação recorrente / dízimo — apoiador define o valor que vai dar
💡 Pra valor que muda toda cobrança (consumo medido, mensalidade + extras variáveis), use PIX Automático — explicado na seção dedicada do manual. Subscription com preço personalizado é pra valor estável (revisão raramente, ex: anual).
4.4. Detalhe da assinatura
Clicar numa linha abre o painel com:
- Valor por ciclo — destaque do valor cobrado, com discriminação:
- Plano padrão — quanto o plano cobra de quem não tem override
- Sobrescrito — o valor personalizado, quando há (badge teal)
- Forma de pagamento, próxima cobrança, datas, IDs (Vitrin + provedor) com cópia rápida
- Cancelar assinatura — interrompe a recorrência
- Alterar valor — workflow descrito em 4.5
4.5. Alterar valor de uma assinatura ativa
A integração com o provedor não suporta atualizar o valor de uma assinatura já ativa diretamente. Pra mudar o valor, a Vitrin executa o seguinte na ordem:
- Cria nova assinatura no provedor com o novo valor
- Cancela a assinatura antiga
- Atualiza o registro local — o ID interno (Vitrin) é preservado, só o ID no provedor muda
No painel: botão "Alterar valor" no detalhe da assinatura. Modal pede o novo valor + motivo (vai pro audit). Vazio remove o override e volta ao plano padrão.
O que muda pro cliente:
- PIX Automático: nada visível — próxima cobrança sai com novo valor
- Cartão: token do cartão pode precisar ser revalidado dependendo do provedor; o link de cobrança nova aparece após confirmar
Quando usar:
- Reajuste IGPM anual de aluguel
- Mudança de tier de cliente B2B
- Alteração da cota FAM por mudança de idade
- Aplicação de desconto de retenção
4.6. Importar assinaturas em massa (CSV)
Pra onboarding de uma carteira inteira (loja maçônica com 200 membros, escola com 80 alunos, condomínio com 60 unidades), use "Importar CSV" no header da página.
Passo 1. Baixe o template — colunas:
| Coluna | Obrigatória? | Descrição |
|---|---|---|
cpf_cnpj | sim | Identifica/cria o Customer (upsert) |
name | sim | Nome do cliente |
email | sim | Email único do cliente |
phone | não | Telefone do cliente |
plan_slug | sim | Slug do plano (visível na lista de planos) |
billing_type | sim | PIX, CREDIT_CARD ou BOLETO |
amount_override | não | Preço personalizado (vazio = preço do plano) |
Passo 2. Preencha o CSV. Limite 500 linhas por lote.
Passo 3. Volte e clique "Importar CSV" → arquivo. A pré-visualização mostra 50 linhas; confirme.
Resultado mostra:
- ✅ Criadas — assinaturas novas que entraram no provedor
- ➖ Já existiam — pulou porque o cliente já tem assinatura ativa pra esse plano (não duplica)
- ❌ Erros — tabela com linha + CPF + motivo (ex: plano não encontrado, billing_type inválido)
Cada linha é processada independente — uma falhar não derruba as outras.
4.7. Exportar assinaturas (CSV)
Botão "Exportar" baixa um CSV com a listagem atual (respeita os filtros aplicados). Colunas:
subscription_id, customer_cpf_cnpj, customer_name,
customer_email, plan_slug, plan_name, plan_price,
amount_override, effective_amount, billing_type, status,
created_at, canceled_at, provider_subscription_id.
Util pra reconciliação contábil, importação em ERP, e auditoria externa.
4.8. Cancelar uma assinatura
Botão Cancelar no card da lista ou no detalhe abre confirmação. Após confirmar:
- Status passa pra
canceledlocalmente - A próxima cobrança recorrente não acontece
- Histórico de transações antigas continua íntegro
5. Planos
Defina os planos que seus clientes podem assinar.
Campos básicos
- Nome, preço, ciclo — semanal, quinzenal, mensal, bimestral, trimestral, semestral, anual
- Descrição — texto curto exibido no checkout
- Ativo/Inativo — desative sem excluir
- Features — tags descritivas do que o plano inclui
- Capa — URL de imagem exibida na página pública do checkout
Trial e cobranças avançadas
Acessível pelo bloco "Trial e cobranças avançadas" ao criar/editar:
| Campo | Função |
|---|---|
| Dias de teste | Atrasa a primeira cobrança (ex.: 7). Cliente entra ativo sem pagar nada. 0 desativa o trial. |
| Valor do trial | Valor cobrado durante o período de teste. Hoje suportamos apenas trial gratuito (R$ 0,00); trial pago entra em rodada futura. |
| Máximo de ciclos | Cancela a assinatura após N cobranças. 0 = renovação indeterminada. |
| Taxa de adesão | Cobrança única adicional na primeira mensalidade (setup fee). |
| URL da capa | Imagem 1200×600 recomendada para o checkout público. |
Compartilhar checkout
Cada plano gera um link público. No card do plano clique em "Copiar link" — formato https://vitrin.digital/c/<sua-org>/<slug-do-plano>. Compartilhe esse link e o cliente assina sem precisar de conta.
6. Produtos
Para vendas avulsas (não recorrentes), com 4 tipos:
| Tipo | Quando usar |
|---|---|
| Pagamento único | Curso, ebook, evento — um valor fixo |
| Pacote | N unidades por um preço (ex.: 5 eventos por R$ 1.297) |
| Créditos | Saldo consumível (créditos para uma plataforma sua) |
| Contribuição | Doação, gorjeta, "pague quanto quiser" — pagador define o valor |
| Combo | Bundle de outros produtos com preço promocional |
Modo de preço
Independente do tipo (exceto Contribuição, que sempre usa "pagador escolhe"):
- Preço fixo — você define, o cliente paga exatamente isso.
- Pagador escolhe o valor — cliente digita no checkout. Use para apoio voluntário em qualquer tipo. Configure valor mínimo (piso aceito) e valor máximo (teto opcional). O preço informado vira sugestão pré-preenchida.
Exemplo: produto "Apoie meu canal" tipo Pagamento único + modo Pagador escolhe + mínimo R$ 5 + sugestão R$ 25.
Página de venda & checkout
Bloco expansível com campos pra rica conversão:
| Campo | Função |
|---|---|
| Descrição longa | Texto rico exibido na página pública (markdown suportado) |
| URL da capa | Banner do produto |
| URL do vídeo | YouTube/Vimeo embed exibido inline |
| URL após pagamento | Cliente é redirecionado pra cá quando o pagamento é aprovado (área de membros, download, etc.) |
| Permitir parcelamento | Desative pra forçar à vista mesmo em cartão |
| Máximo de parcelas | Limite por produto (1–21x), respeitando o teto da org |
Compartilhar checkout
Botão "Copiar link" no card do produto — https://vitrin.digital/c/<sua-org>/<slug-do-produto>. Compartilhe na bio, em campanhas de email, em anúncios.
6.0.1. Combo (bundle de produtos)
Combine vários produtos seus em uma única venda com preço promocional.
Como funciona:
- Crie os produtos individuais primeiro (Pagamento único, Pacote, etc.).
- Crie um novo produto tipo Combo, definindo o preço total do combo (geralmente menor que a soma individual).
- Salve, depois adicione os produtos incluídos no combo (com quantidade por item).
- Compartilhe o link do combo. O pagador vê a lista de produtos incluídos com a economia em destaque ("De R$ X por R$ Y").
- Após o pagamento, um Order parent registra a receita + N child Orders (
unit_price=0, marcados viametadata.bundle_parent_id) para você provisionar entrega individual de cada item via webhook.
Bundle não suporta valor aberto — o preço promocional é fixo e definido pela org.
Aninhamento não permitido — um combo não pode incluir outro combo.
6.1. Order Bumps
Ofertas adicionais que aparecem no checkout do produto principal.
Order Bumps → Novo bump:
| Campo | Função |
|---|---|
| Aparece no checkout de | Produto principal cujo checkout exibirá a oferta |
| Produto adicional | Item complementar que será oferecido |
| Título da oferta | Ex.: "Adicione o ebook complementar" |
| Descrição | Texto curto explicando o benefício |
| Desconto sobre o preço original | % aplicado em cima do preço do produto adicional |
No checkout, o cliente vê uma checkbox com a oferta. Múltiplos bumps podem ser aceitos no mesmo checkout — cada um entra no total. Quando o pagamento é confirmado, o Order parent registra a receita total e cada bump aceito gera um child Order separado (marcado via metadata.parent_order_id), permitindo provisionamento independente via webhook.
Exemplo: cliente comprando "Curso Pro (R$ 297)" recebe a oferta "Adicione o e-book de bônus por R$ 19 (de R$ 47)". Aceitando, paga R$ 316 em uma transação só.
6.2. Cupons
Códigos de desconto aplicáveis no checkout público.
Cupons → Novo cupom:
| Campo | Função |
|---|---|
| Código | Token digitado pelo cliente (ex.: BLACKFRIDAY). Único por organização, case-insensitive. |
| Tipo | Percentual (10%) ou Valor fixo (R$ 50) |
| Valor do desconto | Conforme o tipo |
| Validade | Data limite. Vazio = sem prazo |
| Limite de usos | Quantos clientes podem usar. 0 = ilimitado |
| Compra mínima | Valor mínimo da venda para o cupom valer |
O contador times_used é atualizado automaticamente a cada uso bem-sucedido. Cupons podem ser limitados a planos/produtos específicos via API (a UI dá escopo global por enquanto).
6.3. Programa de Afiliados
Transforme clientes, parceiros e creators em uma rede que vende para você em troca de comissão por venda atribuída. Mesmo modelo de Hotmart e Kiwify: o afiliado se cadastra na Vitrin, pede para promover seu produto, recebe um link único e ganha comissão automática a cada venda que vier desse link.
Acesse em Dashboard → Afiliados.
6.3.1. Ligar o programa
Na página inicial Afiliados → Programa, ligue a chave "Programa ativo" e ajuste:
| Campo | Função |
|---|---|
| Janela de atribuição | Quanto tempo (7 a 90 dias) o clique do afiliado conta pra uma venda. Padrão 30 dias. Modelo "last-click": se o cliente clicar em mais de um afiliado, vale o último. |
| Comissão default — primeira venda | % aplicada quando o produto/plano não define comissão própria. |
| Comissão default — renovações | Pra planos. Em branco, usa a comissão da primeira venda. |
| Exigir aprovação manual | Quando ligado, cada pedido de afiliação fica pending até você aprovar. Recomendado para programas curados. |
| Listar publicamente no marketplace | Quando ligado, seus produtos aparecem para qualquer afiliado descobrir no marketplace público da Vitrin. Quando desligado, só convidados acessam. |
A taxa Vitrin que sua loja paga não muda quando você liga o programa. A comissão do afiliado sai do líquido da sua venda — exatamente o que Hotmart e Kiwify fazem.
6.3.2. Configurar por produto / plano
A comissão pode ser diferente para cada item. Em Afiliados → Configurar por produto/plano, clique em Configurar ao lado do item:
| Campo | Função |
|---|---|
| Afiliação habilitada | Liga ou desliga o item no marketplace. |
| Comissão | % sobre o preço do produto. Em planos, há dois campos: primeira venda + renovação. |
| Cap de renovações com comissão | (Planos) Limita por quantas renovações o afiliado continua ganhando. Em branco = vitalícia enquanto a assinatura existir. |
| Auto-aprovar afiliados | Pedidos pra este item específico viram aprovados sem moderação — útil pra produtos de baixo risco. |
| Limite de afiliados | Quantos afiliados podem promover este item ao mesmo tempo. |
Cartão parcelado: a comissão é calculada sobre o preço do produto, não sobre o que o cliente paga com juros. Os juros de parcelamento são receita exclusiva da plataforma e nunca compõem a base da comissão.
6.3.3. Aprovar afiliados
Em Afiliados → Pedidos de afiliação você vê todos os pedidos por status:
- Aguardando: você aprova, rejeita ou ajusta a comissão personalizada.
- Aprovado: o afiliado já consegue criar links no painel dele.
- Rejeitado: o afiliado vê o motivo (se preenchido).
- Revogado: você cortou um afiliado que tinha sido aprovado. Comissões já liquidadas não voltam — mas novas vendas dele não geram mais comissão.
Na hora de aprovar, dá pra sobrescrever a comissão só pra este afiliado (parceiros estratégicos, influencers maiores etc) sem mexer no padrão do produto.
6.3.4. Relatório
Em Afiliados → Relatório de comissões você acompanha:
- Liquidada: comissão que já caiu na carteira dos afiliados.
- Pendente: comissão registrada mas ainda não liquidada (cobrança em processamento).
- Estornada: comissões revertidas por chargeback ou refund.
- Por produto/plano: ranking dos itens que mais geram comissão.
- Comissões recentes: lista das últimas 200, com loja, item, valor de venda, % aplicada, valor de comissão e status.
6.3.5. Estornos e chargebacks
Se uma venda com comissão for estornada (refund manual ou chargeback do cliente), a Vitrin reverte a comissão proporcionalmente:
- Refund total → 100% da comissão revertida.
- Refund parcial (ex: 50%) → 50% da comissão revertida.
Se o afiliado já tinha sacado, o saldo dele fica negativo e é compensado no próximo repasse automático. Você nunca precisa cobrar do afiliado — a Vitrin opera essa conciliação.
6.3.6. Webhook
Toda cobrança atribuída a um afiliado traz um bloco affiliate no webhook que sua loja recebe (configurado em Dashboard → Configurações → Webhook). O bloco carrega o slug do afiliado, o valor da comissão e o status atual (pending / settled / reversed).
Use isso para:
- Acionar régua de relacionamento com afiliados que vendem (e-mail de parabéns, ranking interno).
- Reconciliar receita do programa de afiliação contra seu BI.
- Notificar afiliados em canais externos (Telegram, Discord).
O formato exato e a lista de campos está no Guia de Integração.
6.3.7. Coprodutores
Coprodutor é diferente de afiliado: é parceiro fixo de um produto específico (ex: editora que dividiu o lançamento, instrutor que co-criou o curso). Não tem janela de atribuição — o split sempre vale, em toda venda do produto.
Coprodutores são cadastrados pela Vitrin (entre em contato com o suporte para incluir). Quando cadastrados, você associa cada um a um produto pelo painel ou via API, definindo se o split é por percentual (ex: 20% sobre cada venda) ou valor fixo (ex: R$ 5,00 por venda).
Coprodutor é fora do escopo de auto-serviço nessa primeira versão — abra um chamado para configurar.
7. Pedidos
Cada venda de produto gera um pedido com ciclo de vida:
Pendente → Pago → Entregue
- Pedidos são marcados como Pago automaticamente via webhook quando o pagamento é confirmado
- Use o botão Entregar para marcar como entregue
8. Clientes
Cadastro dos pagadores com:
Identidade
- Nome completo (obrigatório)
- CPF/CNPJ (obrigatório) — quando CNPJ, o campo "Razão social" aparece automaticamente no lugar de "Data de nascimento"
- Telefone
- Data de nascimento (PF) ou Razão social (PJ)
Endereço com auto-preenchimento por CEP
Ao digitar o CEP e sair do campo, a Vitrin consulta o ViaCEP e preenche automaticamente: endereço, bairro, cidade, UF (e complemento, quando o CEP retorna). Você ajusta número, complemento e qualquer detalhe que faltar.
Campos disponíveis: CEP, Endereço, Número, Complemento, Bairro, Cidade, UF.
Observações internas
Campo livre não exibido ao cliente — use para registrar histórico, preferências, etc.
Custom data
Quando você usa campos customizados no checkout público (seção 14), as respostas do cliente ficam guardadas em Customer.custom_data (JSON, acessível via API).
Sincronizado automaticamente com o processador de pagamentos.
Cartão salvo & One-click buy
Cada cliente pode ter um cartão preferido salvo no cofre PCI do processador para cobranças one-click (recompra, planos avulsos, upgrade de produto sem reabrir o checkout). Salvar um novo cartão substitui o anterior.
Quando ativar
- Recompra — produtos consumíveis, refis, planos de uso esporádico
- Recorrência fora de assinatura — você cobra valores diferentes a cada vez (consultoria, atendimento, mensalidade variável)
- Checkout 1-clique pelo seu próprio site — cliente logado clica "Comprar" e a cobrança sobe sem reabrir formulário de cartão
Para recorrência fixa (valor + cadência iguais todo mês), prefira Assinaturas (seção 4) — elas já cuidam do agendamento.
Como o cliente salva o cartão
No checkout hospedado, aparece automaticamente um checkbox "Salvar este cartão para próximas compras" abaixo do CVV. O cliente marca, paga, e o cartão fica guardado. Quando ele voltar (match por email + CPF), o checkout mostra "Pagar com Visa ••••1234 — 1 clique" no topo.
Você pode desativar o checkbox por org em Configurações → Checkout → Permitir salvar cartão.
Se o seu fluxo de checkout for próprio (não usa o hospedado), salve via API — veja docs/INTEGRACAO.md §3.7. O consent.accepted_at e consent.ip são obrigatórios.
Link de recompra one-click (cliente clica e paga)
Pra cobrar o cliente sem cobrar pela API, gere um link de recompra: em Clientes → [cliente] → Cartão salvo, clique em "Link de recompra 1-clique", escolha produto ou plano, valor opcional (deixa em branco pra usar o preço cadastrado) e número de parcelas.
A Vitrin emite uma URL assinada de 15 minutos, uso único:
https://vitrin.digital/c/loja/produto-x/oneclick?t=eyJhbGciOi...
Mande por email/WhatsApp. O cliente abre, vê o cartão salvo + valor, clica "Pagar — 1 clique" e a cobrança roda sozinha (cria pedido, calcula taxa, dispara webhook, redireciona pro URL de obrigado configurado no produto).
Diferenças pra outras formas de cobrar:
| Pra quê | TTL | Quem cobra | |
|---|---|---|---|
| Link de gestão (24h) | Cliente ver/remover o próprio cartão | 24h | — (visualização) |
| Link de recompra (15min) | Cliente clicar e pagar item específico | 15min, uso único | Cliente |
POST /charges/charge-saved/ | Você cobra pela API direto (sem interação) | — | Loja |
Quando usar cada um:
- Recompra agendada com confirmação (refil de assinatura, upgrade de plano) → link de recompra
- Cobrança totalmente automática sem clique do cliente (subscription renewal, upgrade pago invisível) →
charge-saved - Cliente perdido / precisa atualizar cartão → link de gestão
Gerar link de gestão para o cliente final
No painel, em Clientes → [cliente] → Cartão salvo, clique em "Link de gestão (24h)". A Vitrin emite uma URL com token assinado de 24h:
https://vitrin.digital/customer/cards/eyJhbGciOi...
Envie esse link por email (assinatura de plano, confirmação de compra) ou exiba na sua página de minha-conta. Nessa URL o cliente vê bandeira + últimos 4 e pode remover o próprio cartão sem precisar falar com o suporte.
Cobrança one-click pela API
POST /api/v1/charges/charge-saved/
{ "customer_id": "...", "amount": 99.90 }
Retorna uma Transaction como se você tivesse cobrado pelo /checkout/pay/. Sem digitar cartão, sem CVV, sem formulário.
CVV não é solicitado em cobrança com cartão salvo. Isso é parte do one-click. Para valores altos ou clientes sensíveis a fraude, prefira
/checkout/pay/com cartão fresco + 3DS.
Quando o cartão é removido
- Cliente final clica em "Remover" no link de gestão
- Você chama
DELETE /api/v1/customers/{id}/saved-card/
Cartão expirado não é removido automaticamente — você recebe 422 card_expired na próxima tentativa de cobrança e deve pedir ao cliente para registrar um novo.
Texto sugerido para sua política de privacidade
Cole o trecho abaixo na sua política (ajustando o nome da loja):
Cartões salvos. Quando você opta por salvar seu cartão para próximas compras, armazenamos junto ao nosso processador de pagamentos uma referência (token) ao seu cartão — nunca o número completo. Esse token é exclusivo da {NOME DA LOJA} e não pode ser usado por nenhuma outra empresa. Você pode revogar esse consentimento a qualquer momento removendo o cartão na sua página de cliente ou solicitando à {NOME DA LOJA}. Registramos a data, hora e endereço IP do seu aceite para fins de prestação de contas (Art. 8º, §1º LGPD).
9. Antecipação
Receba antes do prazo padrão (D+30 cartão → D+2 útil).
- Elegíveis — Transações recebidas que podem ser antecipadas
- Simular — Veja a taxa antes de solicitar
- Solicitar — Requer PIN de segurança
A antecipação pode ser desabilitada pelo administrador da plataforma.
10. Pix Automático
Cobre seus clientes de forma recorrente via Pix, sem precisar de cartão. O cliente autoriza uma única vez via QR Code no app bancário e a partir daí você gera as cobranças mensais (ou na frequência escolhida) sem nova interação dele.
Disponibilidade: o Pix Automático precisa estar habilitado pelo administrador da plataforma e ativado por você em Configurações → Métodos de pagamento. Sua conta de pagamentos também precisa estar com a aprovação geral concluída.
Como funciona
- Você cria uma autorização informando cliente, frequência (semanal, mensal, trimestral, semestral ou anual) e o valor da primeira cobrança.
- A Vitrin gera um QR Code de aceite que você compartilha com o cliente.
- O cliente escaneia no app bancário e autoriza a primeira cobrança + as recorrências.
- A autorização passa de Aguardando aceite para Ativa.
- Você gera cada cobrança recorrente em Nova cobrança dentro da autorização. Cada cobrança precisa respeitar o prazo do Banco Central: vencimento entre 2 e 10 dias úteis no futuro.
- O cliente é debitado automaticamente na data combinada — sem precisar abrir o app.
Criando uma autorização
Pix Automático → Nova autorização
| Campo | Obrigatório | Observação |
|---|---|---|
| Cliente | Sim | Cliente já cadastrado |
| Identificador externo | Sim | Seu código de contrato (até 35 caracteres) |
| Frequência | Sim | Semanal / Mensal / Trimestral / Semestral / Anual |
| Início | Sim | Quando começa a vigência |
| Término | Não | Vazio = prazo indeterminado |
| Valor fixo | Não | Trava o valor para todas as cobranças. Vazio = valor variável |
| Descrição | Não | Até 35 caracteres |
| Valor da primeira cobrança | Sim | Cobrança vinculada ao QR Code de aceite |
Após criar, a Vitrin mostra o QR Code e o copia-e-cola para você compartilhar com o cliente.
Status da autorização
| Status | Significado |
|---|---|
| 🟡 Aguardando aceite | Cliente ainda não escaneou o QR Code |
| 🟢 Ativa | Cliente aceitou — você pode gerar cobranças |
| ⚪ Cancelada | Cancelada por você ou pelo cliente |
| 🔴 Recusada | O banco do cliente recusou |
| ⚪ Expirada | Cliente não escaneou no prazo |
Gerando cobranças recorrentes
Para autorizações Ativas, clique no ícone + e informe:
- Valor (bloqueado se a autorização tem valor fixo)
- Vencimento — entre 2 e 10 dias úteis no futuro
- Descrição opcional
A cobrança aparece em Transações com tipo Pix Automático. Quando o débito é efetuado, o status muda para Recebido automaticamente via webhook.
Status da cobrança (instrução)
| Status | Significado |
|---|---|
| Aguardando | Criada na Vitrin, ainda não enviada ao SPI |
| Agendada | Agendada no SPI, aguardando data de débito |
| Concluída | Pagamento realizado |
| Cancelada | Cancelada antes do débito |
| Recusada | Saldo insuficiente, divergência ou outro motivo |
Cancelando uma autorização
Clique no ícone X ao lado da autorização. Requer PIN. Após cancelada, novas cobranças não podem ser geradas, mas as cobranças já agendadas seguem o ciclo normal.
Sincronizar com o processador
Se quiser forçar uma atualização do status (sem aguardar webhook), abra os detalhes da autorização e clique em Atualizar status.
11. Transferências
Transfira seu saldo disponível para contas externas.
Saldo
| Tipo | Significado |
|---|---|
| Disponível | Pronto para saque |
| A liberar | Aguardando compensação (D+1 Pix, D+2 Boleto, D+30 Crédito) |
| Total | Disponível + A liberar |
Formas de transferência
- Pix via chave — CPF, CNPJ, email, telefone ou chave aleatória
- Dados bancários — Banco, agência, conta (Pix ou TED automático)
Ambas requerem confirmação de dados + PIN de segurança.
Taxa de saque
Uma taxa fixa é cobrada por saque (Pix: R$ 3,49 / TED: R$ 9,49 — padrão). Verifique os valores atuais em Configurações.
Extrato
A aba Extrato mostra todas as movimentações financeiras com saldo corrente.
Calendário de saques
O painel Recebíveis mostra a projeção do que vai cair na sua conta nos próximos dias com base no método de pagamento (Pix D+1, Boleto D+2, Cartão D+30 por parcela). É uma estimativa.
Para o valor exato que vai aparecer no seu extrato bancário hoje (e nos próximos dias úteis), use o card Depositado no painel principal — esse é o número que vem direto do processador, já considerando cut-off horário, fins de semana, retenções e tentativas rejeitadas. Costuma divergir da projeção de Recebíveis em 5% ou mais.
Por que o nome no meu extrato bancário não é a Vitrin?
Quando você recebe o repasse na sua conta bancária, o descritor do Pix vai mostrar o nome da instituição de pagamento autorizada pelo Banco Central que executou a transferência — não o da Vitrin nem o da sua loja. Isso é exigência regulatória do SPI/BACEN (o ordenador da transferência precisa se identificar), aplicada a qualquer intermediador de pagamentos no Brasil, e não é configurável.
Tudo fora desse caso continua white-label: seu cliente final vê o nome da sua loja no checkout, no e-mail de confirmação, no webhook que o seu sistema recebe. O nome do processador só aparece no extrato bancário do repasse que cai pra você.
12. Simulador
Simule taxas, valor líquido e prazos antes de cobrar:
- Insira o valor da venda
- Escolha o método (Pix, Boleto, Cartão)
O simulador mostra em tempo real:
- Quanto você recebe líquido (valor da venda menos a taxa) e quando (D+1, D+2 ou D+30)
- Quanto você recebe com antecipação (D+2 útil), quando o admin liberar antecipação
- Detalhamento da taxa (percentual + fixa)
- Comparativo visual em barras
13. Configurações
Métodos de Pagamento
Ative ou desative Pix, Pix Automático, Cartão de Crédito e Boleto conforme sua necessidade. Os métodos disponíveis dependem do que o admin Vitrin liberou para a sua organização — métodos não liberados aparecem esmaecidos com a tag Não liberado. Para solicitar liberação, contate o suporte.
Sob cada toggle a Vitrin lista os campos que aquele método obriga no checkout (ex.: Boleto exige CEP, Endereço, Número, Cidade, UF). Você não precisa configurar isso à mão — esses campos aparecem automaticamente no checkout público quando o pagador escolhe o método. Veja a seção 14 → "Campos do checkout" para detalhes.
Parcelamento
- Máximo de parcelas — Limite até 21x (dentro do que o admin liberar)
- Parcela mínima — Valor mínimo de cada parcela
Webhook
Configure a URL onde sua aplicação recebe notificações de eventos (pagamento confirmado, reembolso, chargeback, etc.).
- URL — Endpoint HTTPS da sua aplicação
- Secret — Gerado automaticamente, usado para validar assinaturas HMAC-SHA256
Checkout
A configuração detalhada do Checkout público vive em uma página própria — Dashboard → Checkout público. Veja a seção 14 abaixo.
API Key
Regenere sua API key (a anterior é revogada). Requer PIN.
14. Checkout público
A Vitrin hospeda uma página de checkout pronta para cada produto e plano que você cria. Sem precisar codar nada, você compartilha um link e o cliente paga direto.
URL do checkout
Cada item gera uma URL no formato:
https://vitrin.digital/c/<sua-org>/<slug-do-item>
O atalho "Copiar link" existe nos cards de Produtos e Planos. Use esse link em bios de redes sociais, anúncios, emails de campanha, QR codes em ponto físico, etc.
O que o cliente vê
- Sua marca (logo + cores) no topo
- Nome, descrição, capa e vídeo do produto/plano
- Para planos: preço por ciclo, badge de trial gratuito, taxa de adesão (quando configurada)
- Para contribuição/valor aberto: campo destacado "Você define o valor" com piso/teto
- Order bumps ativos — checkbox com oferta complementar
- Campo de cupom com validação em tempo real
- Coleta de dados do pagador (nome, email, CPF, telefone)
- Escolha do método (Pix, Cartão, Boleto — só os ativos da sua org)
- Em cartão: parcelamento dentro do limite do produto
- Após o pagamento: redireciona para a
URL após pagamentoconfigurada no item (ou para o URL de obrigado padrão definido em Checkout público), ou exibe instruções (QR Pix / boleto)
Configuração — Dashboard → Checkout público
| Bloco | Campos |
|---|---|
| Identidade | URL do logo, cor primária, cor de destaque, exibir nome da organização (quando não há logo) |
| Suporte e termos | Email de suporte, WhatsApp de suporte, URL de obrigado padrão (fallback), texto de termos exibido abaixo do botão de pagar |
| Campos do checkout | Defina o que o pagador preenche antes de pagar |
A página exibe também o link base do seu checkout para fácil cópia.
Campos do checkout
Você decide o que exibir e o que é obrigatório no checkout público.
Sempre obrigatórios (sistema): Nome completo e CPF/CNPJ — não podem ser desativados.
Toggleáveis (você escolhe Exibir / Obrigatório):
- Telefone
- Data de nascimento
- CEP, Endereço, Número, Complemento, Cidade, UF
Reforço automático por método de pagamento. Cada método tem um conjunto mínimo de campos exigidos pelo provedor. A Vitrin força esses campos como obrigatórios automaticamente quando o pagador escolhe o método correspondente — não há como desativar:
| Método | Campos exigidos automaticamente |
|---|---|
| Pix / Pix Automático | |
| Cartão de crédito | Email, Telefone |
| Boleto | Email, CEP, Endereço, Número, Cidade, UF |
Exemplo: você desabilita o bloco de endereço no checkout, mas mantém Boleto entre os métodos. Quando o pagador clica em Boleto, os campos de endereço aparecem com asterisco automaticamente. Em Pix, somem.
Ao ativar CEP, o checkout faz auto-preenchimento via ViaCEP — o pagador digita 8 dígitos e endereço/cidade/UF chegam prontos. Recomendado para produtos físicos e para reforçar defesa de chargeback.
Campos customizados. Adicione qualquer pergunta extra:
- Chave (id) — identificador interno (ex.:
como_conheceu) - Pergunta exibida — o texto que o pagador vê
- Tipo — texto, texto longo, email, telefone, ou lista (select)
- Obrigatório — checkbox
- Opções — quando tipo é lista (uma por linha)
As respostas viram parte do Customer.custom_data e também do bloco order no webhook canônico (payment.order → customer_chosen_amount/coupon/...). Use para perguntar coisas como "Como nos conheceu?", "Tamanho da camiseta", "Restrição alimentar", etc.
White-label
A Vitrin não é mencionada nas páginas públicas — a marca exibida é a da sua organização. Cliente final percebe o pagamento como sendo direto com você.
Webhook após o pagamento
Quando o pagamento é confirmado, sua URL de webhook recebe o evento canônico de pagamento enriquecido com o bloco order contendo:
{
"event": "PAYMENT_RECEIVED",
"payment": {
"id": "...",
"status": "received",
"amount": 50.00,
"order": {
"id": "...",
"product": {
"id": "...",
"slug": "doacao-vitrin",
"name": "Apoie o canal",
"type": "contribution",
"thank_you_url": "https://..."
},
"coupon": { "code": "PROMO10", "discount_amount": 5.00 },
"bump": { "product_name": "Ebook bônus", "amount": 19.00 },
"customer_chosen_amount": 50.00
}
}
}
Use isso para liberar acesso à área de membros, enviar o produto digital, registrar a doação no seu CRM, etc., sem chamada GET extra.
Trial e dunning
- Trial gratuito: definido no plano (
Dias de teste = 7,Valor do trial = R$ 0). A primeira cobrança real só ocorre após o período. Cliente entra ativo imediatamente. - Inadimplência (dunning): assinaturas que ficam overdue por 7 dias disparam o webhook
subscription.dunning_warning. Após 30 dias, são automaticamente canceladas e disparamsubscription.canceled_for_dunning. Use esses eventos no seu fluxo de retenção.
15. Segurança
PIN de 6 dígitos
Operações sensíveis requerem PIN:
| Ação | Requer PIN |
|---|---|
| Reembolsar transação | Sim |
| Solicitar antecipação | Sim |
| Cancelar autorização Pix Automático | Sim |
| Transferir saldo | Sim |
| Alterar webhook | Sim |
| Regenerar API key | Sim |
| Alterar métodos de pagamento | Sim |
| Criar cobrança | Não |
| Criar autorização Pix Automático | Não |
| Gerar cobrança recorrente Pix Automático | Não |
| Visualizar relatórios | Não |
Bloqueio de PIN
Após 5 tentativas erradas, o PIN é bloqueado por 15 minutos.
Redefinir PIN
Acesse a tela de login → "Esqueci meu PIN" → Confirme com email e senha → Novo PIN via email.
16. Chargebacks
Disputa é manual: você sustenta a defesa diretamente com a operadora do cartão. A Vitrin é o organizador: aqui você guarda e baixa o material, e encaminha pra operadora pelo canal manual deles.
Acesse Chargebacks no menu pra ver as disputas em aberto.
Anexar evidências
Em cada disputa (botão "Defender"), abra o painel lateral e anexe arquivos por categoria:
- Comprovante de entrega/serviço — nota fiscal, rastreio, foto do entregue
- Comunicação com cliente — emails, prints de chat, SMS
- Contrato/termo aceito — termos de uso, contrato assinado
- Recibo / comprovante de uso — login logs, prova de uso do produto
- Tentativa de reembolso/contato — mostra que tentou resolver
- Logs de IP / sessão / dispositivo — comprova que foi o cliente quem comprou
- Outro
Arquivos PDF, imagens, etc — máx 25 MB por upload. Você pode coletar evidências preventivamente em transações que ainda não foram contestadas (ex: salvar comprovante de entrega assim que entregar) — isso facilita defesa rápida quando a disputa surge.
Dossiê de defesa pré-montado
A Vitrin gera automaticamente um relatório com tudo que ela tem da transação:
- Dados do pagador (CPF, email, telefone, IP, endereço)
- Detalhes da transação (valor, data, método)
- Comprovante de entrega (se o pedido foi marcado como entregue)
- Transações anteriores do mesmo cliente (não contestadas)
- Timeline de webhooks
- Registro de auditoria
Junto com suas evidências anexadas, você usa esse material pra montar a contestação no painel/canal da operadora do cartão.
Boas práticas pra reduzir chargebacks: cobre só após confirmar identidade, marque pedidos como
fulfilledassim que entregar, mantenha cadastro de cliente completo (endereço!), responda chargebacks rapidamente.
17. Recebíveis
Acesse Recebíveis no menu lateral pra ver o cronograma do dinheiro que vai cair na sua conta. Útil pra projetar fluxo de caixa.
A página mostra:
- A receber — total previsto no horizonte selecionado (7/30/90/365 dias)
- Próximos 7 dias — caixa de curto prazo
- Por mês — quanto cai em cada mês
- Detalhamento — cada repasse previsto, com método e parcela (ex:
2/3em cartão 3x)
Regras de release: PIX em D+1, Boleto em D+2, Cartão à vista em D+30, Cartão Nx uma parcela em D+30·n. Se você antecipou uma cobrança, ela aparece consolidada em D+1 com selo "Antecipado".
18. Exportar dados (LGPD)
Acesse Configurações → Exportar dados pra baixar um snapshot completo dos seus dados (clientes, transações, assinaturas, planos, produtos). Atende ao direito de portabilidade da LGPD.
- Formato JSON — arquivo único com tudo aninhado
- Formato CSV — zip com 5 tabelas separadas
Processamento leva alguns segundos. Quando pronto, você recebe email com link de download. O histórico fica disponível por 90 dias. Limite: 1 export rodando por vez (pra não sobrecarregar).
19. Indicadores no header (test/live + ambiente)
Dois badges pequenos no topo do dashboard:
- Test mode / Live mode — reflete o estado da sua org. Antes da aprovação, só
vd_test_*funciona; depois,vd_live_*também. - Local / Sandbox / Produção — indica em qual ambiente da Vitrin você está logado. Útil quando você tem várias instâncias.
Passe o mouse pra ver o tooltip explicativo de cada um.
20. Suporte
- Dashboard: https://vitrin.digital/dashboard
- Email: contato@vitrin.digital