Verificacao de Identidade (Stripe)
O Levy Fleets se integra com o Stripe Identity para fornecer verificacao de identidade robusta para clientes. Isso ajuda a prevenir fraudes, cumprir regulamentacoes e garantir a seguranca dos usuarios. Este guia cobre modos de verificacao, gatilhos, o fluxo de verificacao e opcoes de gerenciamento.
Visao Geral
A verificacao de identidade confirma que um cliente e quem afirma ser, validando documentos de identificacao emitidos pelo governo. O sistema usa o Stripe Identity, que fornece:
- Escaneamento de documentos: Fotos de documentos de identidade (carteira de motorista, passaporte, RG)
- Correspondencia de selfie: Compara selfie com foto do documento
- Deteccao de vivacidade: Previne fraude com fotos
- Extracao de dados: Extrai nome verificado, data de nascimento, endereco do documento
- Pontuacao de risco: Integra-se com o Stripe Radar para deteccao de fraude
Modos de Verificacao
Cada subconta pode configurar um dos tres modos de verificacao:
Modo Desabilitado
identity_verification_mode: 'disabled'
- Nenhuma verificacao de identidade e necessaria
- Todos os clientes podem andar sem verificacao
- Util para ambientes de baixo risco ou lancamento inicial
- Sem custos de verificacao incorridos
Modo Todos os Usuarios
identity_verification_mode: 'all_users'
- Todo novo cliente deve verificar identidade antes da primeira viagem
- Verificacao solicitada durante o cadastro ou primeira tentativa de viagem
- Configuracao mais rigorosa para seguranca maxima
- Custos de verificacao mais altos, mas protecao maxima contra fraude
Modo Baseado em Risco
identity_verification_mode: 'risk_based'
- Verificacao necessaria apenas quando limite de risco e excedido
- Usa pontuacao de risco do Stripe Radar do primeiro pagamento
- Limite configuravel determina ponto de gatilho
- Equilibra seguranca com experiencia do cliente
Configuracao Recomendada
A verificacao baseada em risco e recomendada para a maioria das operacoes, pois equilibra seguranca com experiencia do cliente e eficiencia de custos.
Como Funciona a Verificacao Baseada em Risco
Calculo da Pontuacao de Risco
Quando um cliente faz seu primeiro pagamento, o Stripe Radar analisa:
- Caracteristicas do metodo de pagamento
- Endereco IP e localizacao
- Impressao digital do dispositivo
- Padroes historicos
- Pais emissor do cartao
O Stripe retorna um risk_level que o sistema converte em uma pontuacao:
| Nivel de Risco | Pontuacao Numerica | Descricao |
|---|---|---|
normal | 10 | Baixo risco, pagamento confiavel |
elevated | 50 | Alguns indicadores de risco presentes |
highest | 75 | Multiplos sinais de alto risco |
Configuracao do Limite de Risco
As subcontas configuram uma pontuacao limite (padrao: 50):
identity_verification_risk_threshold: 50
Verificacao e necessaria quando: pontuacao_risco_cliente >= limite
Cenarios de Exemplo:
| Pontuacao do Cliente | Limite | Verificacao Necessaria? |
|---|---|---|
| 10 (normal) | 50 | Nao |
| 50 (elevated) | 50 | Sim |
| 75 (highest) | 50 | Sim |
| 75 (highest) | 80 | Nao |
Quando a Pontuacao de Risco Ocorre
A pontuacao de risco e capturada durante a primeira cobranca bem-sucedida do cartao:
- Cliente adiciona metodo de pagamento
- Cliente inicia primeira viagem
- No final da viagem, o pagamento e processado
- Stripe Radar avalia a cobranca
- Pontuacao de risco e armazenada no registro do cliente
- Se o limite for excedido, a verificacao e sinalizada
Substituicao de Politica da Subconta
Algumas subcontas podem exigir verificacao para todos os usuarios independente do risco:
identity_verification_mode: 'all_users'
Quando isso e definido, a verificacao e necessaria antes da primeira viagem, ignorando a logica baseada em risco.
Fluxo de Verificacao
Experiencia do Cliente
- Gatilho: Cliente tenta acao que requer verificacao
- Notificacao: Notificacao push ou prompt no aplicativo aparece
- Iniciar Stripe Identity: UI nativa de verificacao abre
- Escaneamento de Documento: Cliente fotografa documento de identidade
- Selfie: Cliente tira selfie para comparacao
- Processamento: Stripe processa e verifica
- Resultado: Resultado imediato de aprovado/reprovado exibido
- Acesso a Viagem: Se aprovado, cliente pode prosseguir com viagens
Fluxo Tecnico
Acao do Cliente
|
Verificar identity_verification_required
|
Se necessario -> Chamada API para /api/customers/{id}/identity-session
|
Sessao do Stripe Identity criada
|
Client secret retornado para aplicativo movel
|
SDK do Stripe Identity iniciado
|
Verificacao concluida
|
Webhook recebido: identity.verification_session.verified
|
Registro do cliente atualizado com dados verificados
|
identity_verification_required = false
Status de Verificacao
O status de identidade do cliente e rastreado no campo identity_status:
| Status | Significado | Cliente Pode Andar? |
|---|---|---|
null | Nunca tentou verificacao | Depende da politica |
pending | Verificacao em andamento | Nao (se necessaria) |
verified | Verificado com sucesso | Sim |
requires_input | Precisa tentar novamente | Nao |
failed | Verificacao falhou | Nao |
canceled | Sessao foi cancelada | Nao |
Indicadores no Painel
Banner de Verificacao de Identidade
Quando um cliente requer verificacao, um banner amarelo aparece na pagina de detalhes:
Conteudo do Banner:
- Titulo "Verificacao de Identidade Necessaria"
- Motivo do requisito (politica da subconta ou limite de risco)
- Data em que a verificacao foi sinalizada
- Pontuacao e nivel de risco atuais
- Status atual da verificacao
- Botao Remover Requisito
Secao de Verificacao de Identidade
A pagina de detalhes do cliente inclui uma secao dedicada mostrando:
| Campo | Descricao |
|---|---|
| Status | Status atual da verificacao |
| Verificado Em | Data/hora da verificacao bem-sucedida |
| Pontuacao de Risco | Pontuacao de risco do Stripe Radar (0-100) |
| Nivel de Risco | normal, elevated, highest |
| Tipo de Documento | Carteira de motorista, passaporte, etc. |
| Nome Verificado | Nome extraido do documento |
| Data de Nascimento | Data de nascimento do documento |
| Endereco | Endereco do documento (se disponivel) |
Badges de Status
Os clientes podem exibir badges relacionados a verificacao:
| Badge | Cor | Significado |
|---|---|---|
| Verificacao Necessaria | Amarelo | Aguardando verificacao |
| Verificado | Verde | Verificado com sucesso |
| Verificacao Falhou | Vermelho | Tentativa de verificacao falhou |
Gerenciando Verificacao
Visualizando o Motivo do Requisito de Verificacao
Na pagina de detalhes do cliente, o banner de Verificacao de Identidade mostra por que a verificacao foi necessaria:
Politica da Subconta:
Motivo: Subconta requer verificacao para todos os usuarios
Limite de Risco Excedido:
Motivo: Pontuacao de risco 75 >= limite 50
Pontuacao de Risco: 75/100 (highest)
Removendo o Requisito de Verificacao
Para remover o requisito de verificacao sem que o cliente verifique:
- Navegue ate a pagina de detalhes do cliente
- Localize o banner amarelo de verificacao
- Clique em Remover Requisito
- Confirme a acao
- O cliente agora pode andar sem verificar
Quando Usar:
- Cliente conhecido e confiavel incorretamente sinalizado
- Cliente verificou identidade por outros meios
- Decisao comercial de dispensar o requisito
- Avaliacao de risco estava incorreta
Importante
Remover o requisito NAO marca o cliente como verificado - apenas remove o requisito atual. Gatilhos de risco futuros podem exigir verificacao novamente.
Verificacao Manual
Para marcar um cliente como verificado sem usar o Stripe Identity:
- Navegue ate a pagina de detalhes do cliente
- Na secao de Verificacao de Identidade, clique em Verificar Manualmente
- Adicione observacoes explicando como a identidade foi confirmada
- Confirme a acao
Quando Usar:
- Verificacao presencial em local fisico
- Cliente forneceu documentos de identidade por e-mail/suporte
- Migracao de cliente legado
- Verificacao via outro provedor de identidade
Campos de Banco de Dados de Verificacao Manual:
| Campo | Descricao |
|---|---|
identity_manual_verification | Flag booleana indicando verificacao manual |
identity_manual_verification_notes | Observacoes do operador explicando o metodo de verificacao |
identity_manual_verification_by | ID do usuario do operador que realizou a verificacao |
identity_manual_verification_at | Timestamp de quando a verificacao manual foi registrada |
A verificacao manual ignora completamente o Stripe Identity. O identity_status do cliente e definido como verified e identity_verification_required e removido.
Solicitando Nova Verificacao
Para exigir que um cliente verifique novamente:
- Navegue ate a pagina de detalhes do cliente
- Clique em Acoes > Exigir Verificacao
- Selecione um motivo
- Confirme a acao
O cliente sera bloqueado de viagens ate completar a verificacao.
Dados Verificados
Quando um cliente verifica com sucesso, o Stripe Identity extrai:
Sempre Capturado
| Campo | Coluna do Banco | Descricao |
|---|---|---|
| Primeiro Nome | identity_first_name | Primeiro nome do documento |
| Sobrenome | identity_last_name | Sobrenome do documento |
| Data de Nascimento | identity_dob | Data de nascimento do documento |
| Tipo de Documento | identity_id_type | Tipo de documento usado |
Quando Disponivel
| Campo | Coluna do Banco | Descricao |
|---|---|---|
| Endereco | identity_address | Endereco do documento |
| Numero do Documento | identity_id_number | Numero da carteira/passaporte |
| Pais Emissor | identity_issuing_country | Pais emissor do documento |
| Data de Validade | identity_expiration_date | Validade do documento |
Metadados de Verificacao
| Campo | Descricao |
|---|---|
identity_status | Status final da verificacao |
identity_verified_at | Timestamp da verificacao |
identity_session_id | Referencia da sessao Stripe |
identity_attempt_count | Numero de tentativas |
Notificacoes
O sistema envia notificacoes push para eventos relacionados a identidade:
Verificacao Necessaria
Quando a verificacao e sinalizada pela primeira vez:
- Titulo: "Verificacao de Identidade Necessaria"
- Corpo: "Por favor, verifique sua identidade para continuar usando o [Nome do App]"
- Tipo:
identity - Acao: Abre fluxo de verificacao no aplicativo
Verificacao Bem-sucedida
Apos verificacao bem-sucedida:
- Titulo: "Identidade Verificada"
- Corpo: "Sua identidade foi verificada. Voce esta pronto para andar!"
- Tipo:
identity
Requisito Removido
Quando um operador remove o requisito:
- Titulo: "Tudo Certo!"
- Corpo: "Sua conta foi verificada e voce agora pode andar."
- Tipo:
identity
Configuracao
Configuracoes da Subconta
Cada subconta configura as configuracoes de verificacao:
| Configuracao | Tipo | Descricao |
|---|---|---|
identity_verification_mode | enum | 'disabled', 'all_users', 'risk_based' |
identity_verification_risk_threshold | integer | Limite de pontuacao (0-100) |
Configuracoes Recomendadas
Mercados de Alta Seguranca (regulados, ativos de alto valor):
mode: 'all_users'
Operacoes Padrao (abordagem equilibrada):
mode: 'risk_based'
threshold: 50
Mercados de Baixo Risco (comunidades confiaveis, ativos de baixo valor):
mode: 'disabled'
ou
mode: 'risk_based'
threshold: 75 # Apenas sinalizar maior risco
Dados de Risco de Consulta de Telefone
Alem do Stripe Radar, o sistema pode capturar dados de risco baseados em telefone:
Campos de Consulta de Telefone
| Campo | Descricao |
|---|---|
phone_type | Movel, fixo, VOIP |
phone_carrier | Nome da operadora |
phone_is_prepaid | Status pre-pago |
phone_risk_score | Avaliacao de risco |
phone_country | Pais do numero de telefone |
Indicadores de Risco
Certas caracteristicas de telefone indicam risco maior:
- Numeros VOIP (Google Voice, etc.)
- Numeros portados recentemente
- Operadoras pre-pagas em certas regioes
- Incompatibilidade entre pais do telefone e local de cadastro
Rastreamento de Localizacao de Cadastro
O sistema rastreia onde os clientes se cadastraram para contexto adicional:
Localizacao Baseada em IP
| Campo | Descricao |
|---|---|
signup_ip | Endereco IP no cadastro |
signup_ip_city | Cidade da consulta de IP |
signup_ip_region | Estado/regiao do IP |
signup_ip_country | Pais do IP |
Localizacao GPS
| Campo | Descricao |
|---|---|
signup_latitude | Latitude GPS |
signup_longitude | Longitude GPS |
signup_location_accuracy | Precisao GPS em metros |
Indicadores de Risco de Localizacao
- Localizacao IP significativamente diferente do GPS
- Cadastro de VPN/proxy conhecido
- Localizacao longe de qualquer zona operacional
Referencia da API
Criar Sessao de Verificacao
Endpoint: POST /api/customers/{id}/identity-session
Resposta:
{
"client_secret": "vs_client_secret_xxx",
"session_id": "vs_xxx"
}
Obter Status de Identidade do Cliente
Endpoint: GET /api/customers/{id}
Retorna cliente com campos de identidade:
{
"id": "...",
"identity_verification_required": true,
"identity_verification_required_at": "2024-01-15T10:30:00Z",
"identity_verification_required_reason": "risk_threshold_exceeded:75>=50",
"identity_status": "pending",
"stripe_risk_score": 75,
"stripe_risk_level": "highest"
}
Verificacao Manual
Endpoint: POST /api/customers/{id}/identity-manual-verify
Requisicao:
{
"notes": "Verificado pessoalmente no local do centro"
}
Integracao com Sistema de Viagem
Verificacao de Verificacao no Inicio da Viagem
Quando um cliente tenta iniciar uma viagem (seja pelo aplicativo ou via painel "Iniciar Viagem"), o sistema verifica:
- Verificacao e necessaria? -> Verificar flag
identity_verification_required - Se necessaria, verificacao esta completa? -> Verificar
identity_status === 'verified' - Bloquear viagem se nao verificado -> Retornar erro solicitando verificacao
Comportamento do Painel: Ao iniciar uma viagem pelo painel para um cliente que requer verificacao, a operacao falhara com uma mensagem de erro indicando que a verificacao e necessaria.
Comportamento do Aplicativo Movel: O aplicativo solicita que o cliente complete a verificacao antes de permitir o escaneamento da viagem.
Gatilhos Automaticos de Requisito de Verificacao
A verificacao pode ser automaticamente exigida quando:
- Pontuacao de Risco do Primeiro Pagamento: Stripe Radar avalia a primeira cobranca
- Limite de Risco Excedido: Pontuacao >= limite configurado
- Politica da Subconta: Algumas subcontas exigem que todos os usuarios verifiquem
Impacto do Status de Verificacao nas Viagens
| Status | Pode Iniciar Viagem? |
|---|---|
null (nunca necessaria) | Sim |
verified | Sim |
pending | Nao (se identity_verification_required e true) |
requires_input | Nao |
failed | Nao |
canceled | Nao |
Melhores Praticas
Para Operadores
- Escolha o modo apropriado: Combine o nivel de verificacao com sua tolerancia ao risco
- Monitore clientes sinalizados: Nao deixe clientes presos no limbo de verificacao
- Treine a equipe de suporte: Garanta que a equipe saiba lidar com problemas de verificacao
- Documente verificacoes manuais: Sempre adicione observacoes ao ignorar o fluxo
- Revise limites: Ajuste com base nas taxas reais de fraude
Para Suporte ao Cliente
- Explique o requisito: Diga aos clientes por que a verificacao e necessaria
- Oriente atraves do processo: Ajude com selecao de documento e dicas de foto
- Escale apropriadamente: Verificar manualmente apenas quando justificado
- Verifique antes de remover: Verifique se a remocao e apropriada para o caso
Para Equipes Tecnicas
- Monitore entrega de webhook: Garanta que callbacks de verificacao estao sendo processados
- Trate casos extremos: Considere cenarios de timeout e retry
- Registre tentativas de verificacao: Mantenha trilha de auditoria
- Teste regularmente: Verifique se o fluxo funciona em todos os ambientes
Solucao de Problemas
Cliente nao consegue completar verificacao
- Verifique se o Stripe Identity esta habilitado para sua conta Stripe
- Verifique se o aplicativo movel tem permissoes de camera
- Tente tipo diferente de documento de identidade
- Garanta iluminacao adequada para fotos do documento
- Verifique erros da API do Stripe nos logs
Verificacao passou mas cliente ainda bloqueado
- Verifique se
identity_verification_requiredfoi removido - Verifique se o webhook foi processado corretamente
- Procure bloqueios adicionais (problema de pagamento, bloqueio manual)
- Verifique falhas de atualizacao do banco de dados
Pontuacao de risco parece incorreta
- Pontuacao de risco vem do Stripe Radar, nao controlada pelo Levy
- Revise a cobranca que acionou a pontuacao
- Verifique uso de VPN/proxy pelo cliente
- Considere ajuste de limite se consistentemente incorreto
Cliente verificou mas aparece como "pending"
- Verifique processamento de webhook para erros
- Atualize manualmente os dados do cliente do Stripe
- Verifique se o ID da sessao corresponde a verificacao atual
- Verifique sessoes sobrepostas multiplas