Documentação QR Vale
Bem-vindo à documentação oficial do QR Vale - o sistema completo para gestão de vales-presente digitais via QR Code.
O Que é o QR Vale?
O QR Vale é uma plataforma SaaS (Software as a Service) que permite a empresas de qualquer porte emitir, gerenciar e validar vales-presente digitais de forma segura, escalável e profissional.
Principais Funcionalidades
- Geração de QR Codes únicos com valores e validades configuráveis
- Validação via scanner mobile (compra e uso)
- Studio de Design visual para criar templates personalizados
- Dashboard analytics com estatísticas em tempo real
- Blockchain Proof para autenticidade imutável
- Multi-tenant com isolamento total de dados
- API RESTful e SDK TypeScript para integrações
Criando sua Conta
Passo a Passo
- Acesse app.qr-vale.com
- Clique em "Criar Conta"
- Preencha:
- Nome completo
- Email (será usado para login)
- Senha (mínimo 8 caracteres)
- Confirme seu email (verifique caixa de spam)
- Pronto! Você já pode usar o plano Free
Gerando seu Primeiro Vale
Via Interface Web
1. No painel, clique no botão "+" (canto inferior direito)
2. Preencha:
- Valor em centavos (ex: 5000 = R$ 50,00)
- Validade em dias (padrão: 180)
- Template (opcional)
3. Clique em "Gerar"
4. QR code é criado instantaneamente
5. Baixe, compartilhe ou imprima
Campos Explicados
| Campo | Descrição | Exemplo |
|---|---|---|
valueCents |
Valor do vale em centavos | 5000 (R$ 50,00) |
validDays |
Validade em dias a partir da geração | 180 (6 meses) |
templateId |
ID do template (opcional) | 1, 2, 3... |
Dashboard Analytics
Visão Geral
O dashboard oferece estatísticas completas sobre sua operação:
Cards Principais
- Total Gerado: Quantidade de vales criados
- Total Usado: Vales já resgatados
- Valor Total: Soma em reais de todos os vales
- Taxa de Conversão: % de vales usados vs gerados
Filtros Disponíveis
- Período: 7d, 30d, 90d, all (todos)
- Por Vendedora: Filtrar vales de usuário específico
- Por Template: Análise por tipo de vale
Gráficos
- Timeline (30 dias): Gerados vs Usados por dia
- Top Vendedoras: Ranking de performance
- Distribuição por Valor: Quais valores são mais emitidos
Geração de Vales
Geração Individual
Para gerar um vale por vez, use o botão "+" conforme descrito em "Primeiro Vale".
Geração em Lote
Disponível nos planos Professional e Enterprise
1. No painel, acesse "Gerar em Lote"
2. Defina:
- Quantidade (máx: 100 por lote)
- Valor (mesmo para todos)
- Validade (mesma para todos)
3. Clique em "Gerar"
4. Aguarde processamento (pode levar alguns segundos)
5. Download automático de arquivo ZIP com todos os QRs
Validades Customizadas
Você pode configurar validades de 1 a 3650 dias (10 anos):
- 7 dias: Promoções relâmpago
- 30 dias: Vales mensais
- 180 dias: Padrão (6 meses)
- 365 dias: Vales anuais
- Custom: Qualquer valor entre 1-3650
Validação de Vales
Fluxo de Validação
Existem dois tipos de validação:
1. Purchase (Compra)
- Cliente adquire o vale (troca por dinheiro)
- Vale continua válido e pode ser usado posteriormente
- Registra quem vendeu e quando
2. Use (Uso)
- Cliente resgata o benefício
- Vale é invalidado permanentemente
- Não pode ser reutilizado
Como Validar
Via Scanner Mobile
1. Abra o app QR Vale no celular
2. Toque no ícone de scanner (câmera)
3. Aponte para o QR code do vale
4. Escolha: "Comprar" ou "Usar"
5. Confirme a ação
6. Pronto! Vale validado
Via Entrada Manual
1. No app, toque em "Validar Manualmente"
2. Digite o código do vale (ex: ABC123XYZ)
3. Escolha: "Comprar" ou "Usar"
4. Confirme
5. Validação concluída
Studio de Design
Disponível nos planos Professional e Enterprise
O Que é o Studio?
Editor visual baseado em Fabric.js que permite criar templates personalizados para seus vales sem necessidade de código.
Formatos Pré-Configurados
- Instagram Post: 1080x1080px (quadrado)
- Instagram Stories: 1080x1920px (9:16)
- A4: 2480x3508px (impressão)
- Banner Wide: 1200x600px
- Business Card: 1050x600px
- Square: 800x800px
- Custom: 100px a 3000px (personalizado)
Objetos Disponíveis
| Objeto | Descrição | Propriedades |
|---|---|---|
| QR Code | Código QR do vale | Posição, tamanho |
| Texto | Texto editável | Fonte, tamanho, cor, alinhamento |
| Imagem | Upload de logo/foto | Posição, escala, opacidade |
| Retângulo | Forma geométrica | Cor, borda, opacidade |
| Círculo | Forma circular | Cor, raio, borda |
Criando um Template
1. No painel, acesse "Studio"
2. Escolha um formato ou crie customizado
3. Adicione objetos:
- Arraste QR Code para o canvas
- Adicione logo da empresa
- Insira texto (valor, validade, instruções)
4. Customize posições e cores
5. Salve o template com nome único
6. Use ao gerar novos vales
Gestão de Equipe
Perfis de Usuário
| Perfil | Permissões | Uso Recomendado |
|---|---|---|
| SUPER_ADMIN | Acesso total à plataforma (gestão de orgs) | Uso interno (Ciatto) |
| ADMIN | Gestão completa da organização | Gerente, Proprietário |
| CLERK | Apenas gerar e validar vales | Vendedores, Caixa, Porteiros |
Criando Usuários
1. Acesse "Equipe" no painel (somente ADMIN)
2. Clique em "Adicionar Usuário"
3. Preencha:
- Nome completo
- Email
- Perfil (ADMIN ou CLERK)
4. Senha é gerada automaticamente
5. Usuário recebe email com credenciais
6. Pode redefinir senha no primeiro login
API RESTful
Base URL
https://app.qr-vale.com/api
Autenticação
Todas as requisições requerem token JWT no header:
Authorization: Bearer YOUR_JWT_TOKEN
Obtendo Token
POST /api/auth/login
Content-Type: application/json
{
"email": "[email protected]",
"password": "sua_senha"
}
// Resposta
{
"ok": true,
"data": {
"user": { ... },
"token": "eyJhbGciOiJIUzI1NiIs..."
}
}
Endpoints Principais
Gerar QR Code
POST /api/qr/generate
Authorization: Bearer TOKEN
Content-Type: application/json
{
"valueCents": 5000,
"validDays": 180,
"templateId": 1 // opcional
}
// Resposta
{
"ok": true,
"data": {
"id": 123,
"code": "ABC123XYZ",
"valueCents": 5000,
"validUntil": "2026-05-10T00:00:00Z",
"qrCodeUrl": "https://..."
}
}
Validar Vale (Use)
POST /api/qr/use/:code
Authorization: Bearer TOKEN
// Resposta
{
"ok": true,
"message": "Vale usado com sucesso",
"data": {
"code": "ABC123XYZ",
"valueCents": 5000,
"usedAt": "2025-11-05T14:30:00Z",
"usedBy": "João Silva"
}
}
Listar Vales
GET /api/qr/list?page=1&limit=50&status=all
Authorization: Bearer TOKEN
// Parâmetros query:
// - page: número da página (padrão: 1)
// - limit: itens por página (max: 100)
// - status: 'all' | 'pending' | 'purchased' | 'used' | 'expired'
// Resposta
{
"ok": true,
"data": {
"qrCodes": [ ... ],
"total": 250,
"page": 1,
"totalPages": 5
}
}
Rate Limiting
- Free/Starter: 10 req/min
- Professional: 100 req/min
- Enterprise: 1000 req/min
SDK TypeScript
Instalação
npm install @qr-vale/sdk
# ou
yarn add @qr-vale/sdk
# ou
bun add @qr-vale/sdk
Uso Básico
import { QRValeClient } from '@qr-vale/sdk';
const client = new QRValeClient({
apiUrl: 'https://app.qr-vale.com/api',
token: 'SEU_TOKEN_JWT'
});
// Gerar vale
const qr = await client.qr.generate({
valueCents: 5000,
validDays: 180
});
console.log('Código gerado:', qr.code);
// Validar vale
await client.qr.use('ABC123XYZ');
// Listar vales
const list = await client.qr.list({ page: 1, limit: 50 });
console.log('Total:', list.total);
Recursos do SDK
- TypeScript: Tipagem completa
- Idempotência: Retry automático em erros de rede
- Validação: Schemas Zod integrados
- Suporte: Node.js, Bun, Deno, Browser
Documentação Completa
Visite github.com/qr-vale/sdk para exemplos avançados e referência completa da API.
Webhooks
✅ Disponível agora!
Configure endpoints para receber notificações em tempo real sobre eventos do sistema.
Configurar Webhook
POST /api/webhooks
Authorization: Bearer TOKEN
Content-Type: application/json
{
"url": "https://qr-vale.com/webhooks/qr-vale",
"events": [
"qr.generated",
"qr.purchased",
"qr.used"
]
}
// Resposta
{
"ok": true,
"data": {
"id": "webhook_abc123",
"url": "https://qr-vale.com/webhooks/qr-vale",
"events": ["qr.generated", "qr.purchased", "qr.used"],
"secret": "abc123...def456" // ⚠️ Copie agora! Não será mostrado novamente
}
}
Eventos Disponíveis
qr.generated- Novo vale criadoqr.purchased- Vale compradoqr.used- Vale usado/validadoqr.expired- Vale expirado (Previsto Q1 2026)billing.subscription_updated- Plano alteradotemplate.created- Template criadotemplate.updated- Template atualizadotemplate.deleted- Template deletado
Formato do Payload
{
"id": "evt_550e8400-e29b-41d4-a716-446655440000",
"type": "qr.generated",
"timestamp": "2025-11-05T14:30:00.000Z",
"organization_id": "org_123abc",
"data": {
"code": "QR-ABC-XYZ-123",
"amount": 50.00,
"amount_cents": 5000,
"template_id": "template_natal",
"valid_days": 365
}
}
Validar Assinatura (HMAC-SHA256)
Todos os webhooks incluem header X-QRVale-Signature para validação:
// Node.js
const crypto = require('crypto');
const signature = req.headers['x-qrvale-signature'];
const payload = JSON.stringify(req.body);
const secret = process.env.QRVALE_WEBHOOK_SECRET;
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
if (signature !== expected) {
return res.status(401).send('Invalid signature');
}
// Processar evento
const event = req.body;
console.log(`Evento: ${event.type}`, event.data);
res.status(200).send('OK');
Gerenciar Webhooks
// Listar webhooks
GET /api/webhooks
// Atualizar webhook
PATCH /api/webhooks/:id
{
"is_active": false,
"events": ["qr.used"]
}
// Deletar webhook
DELETE /api/webhooks/:id
// Testar webhook
POST /api/webhooks/:id/test
// Ver histórico de entregas
GET /api/webhooks/:id/deliveries?limit=50&offset=0
Retry Automático
Webhooks falhados são automaticamente reprocessados com exponential backoff:
- Tentativa 1: Imediatamente
- Tentativa 2: 5 minutos depois
- Tentativa 3: 30 minutos depois
Timeout: 10 segundos por tentativa
Blockchain Proof
O Que é Blockchain Proof?
Registro imutável de provas de integridade em blockchain, garantindo que vales não possam ser alterados retroativamente.
Tipos de Proof
OpenTimestamps (Gratuito)
- Registro na blockchain do Bitcoin
- Disponível em todos os planos
- Arquivo .ots para verificação independente
- Sem custos adicionais (gas fees)
Polygon (Opcional - Planos Pagos)
- Registro adicional na blockchain Polygon
- Menor custo de gas que Ethereum
- Verificação via Polygonscan
- Cobrança por transação (centavos)
Como Usar
1. Ao gerar um vale, marque "Registrar em Blockchain"
2. Aguarde confirmação (pode levar alguns minutos)
3. Baixe o certificado .ots (OpenTimestamps)
4. Ou visualize no explorer (Polygon)
5. Compartilhe com cliente para verificação independente
Verificação
Qualquer pessoa pode verificar a autenticidade:
- OpenTimestamps: Usar ferramenta oficial em opentimestamps.org
- Polygon: Consultar hash no Polygonscan
Export/Import de Dados
Exportar Dados
1. Acesse "Configurações" > "Exportar Dados"
2. Escolha o que exportar:
- Usuários
- QR Codes
- Templates
- Organização
- Tudo
3. Clique em "Exportar"
4. Download de arquivo JSON estruturado
Formato do Export
{
"version": "1.0",
"exportedAt": "2025-11-05T12:00:00Z",
"organization": { ... },
"users": [ ... ],
"qrCodes": [ ... ],
"templates": [ ... ]
}
Importar Dados
1. "Configurações" > "Importar Dados"
2. Faça upload do JSON exportado
3. Escolha opções:
- Substituir dados existentes (sobrescrever)
- Adicionar apenas novos (upsert)
4. Clique em "Importar"
5. Aguarde processamento
Segurança e Boas Práticas
Senhas Fortes
- Mínimo 8 caracteres
- Combine letras maiúsculas, minúsculas e números
- Evite senhas óbvias (123456, senha123)
- Use gerenciador de senhas (1Password, Bitwarden)
Proteção de Token JWT
- Nunca exponha token em código frontend público
- Armazene em variável de ambiente (
process.env.JWT_TOKEN) - Tokens expiram em 7 dias - renove periodicamente
- Se comprometido, mude a senha imediatamente
Rate Limiting
- Respeite limites do seu plano
- Implemente cache local para reduzir requisições
- Use batch operations quando possível
LGPD e Privacidade
- Leia nossa Política de Privacidade
- Dados de clientes são isolados por organização (multi-tenant)
- Solicite exclusão de dados via [email protected]
- Backups criptografados com retenção de 30 dias
Suporte
Para dúvidas técnicas ou reportar vulnerabilidades:
- Email: [email protected]
- Security: [email protected]
- WhatsApp: +55 (84) 98863-0273
Precisa de mais ajuda?
Visite nosso FAQ ou entre em
contato com o suporte.
© 2025 Ciatto Software LTDA - Todos os direitos reservados