Carteiras e Creditos de Bonus de Clientes
Cada cliente tem um unico saldo de carteira (wallet_balance) que financia as corridas. Este guia cobre como a carteira funciona, como os operadores podem ajusta-la, como a recarga automatica e configurada e como os reembolsos interagem com a carteira.
O Saldo da Carteira
Cada cliente tem exatamente um saldo efetivo: o saldo da carteira. Todos os ajustes manuais (creditos, bonus, taxas, debitos) e fluxos automatizados (cobrancas de corrida, reembolsos, recargas automaticas) aumentam ou reduzem esse unico saldo.
Voce tambem vera uma coluna Bonus na lista de clientes e na pagina de detalhes do cliente. Este e um campo de exibicao legado preenchido por importacoes de clientes — ele nao e consumido separadamente durante o pagamento da corrida e nao e modificado pela acao "Adicionar Bonus" do painel. Trate-o como contexto historico, nao como um saldo ativo.
Como os Pagamentos sao Aplicados a uma Corrida
Assinatura ou pacote ativo e aplicado
Se o cliente tem uma assinatura ativa ou pacote de corridas, a corrida e financiada pelo plano sem cobranca na carteira.
Carteira e debitada
Para clientes pay-per-ride, a carteira e debitada pelo total da corrida (incluindo imposto e eventuais taxas de fora da zona).
Cartao cobre qualquer diferenca
Se a carteira nao puder cobrir a corrida completa, o restante e cobrado no metodo de pagamento padrao do cliente. Uma recarga automatica tambem pode ser disparada aqui (veja abaixo).
Saldo Minimo para Iniciar uma Corrida
Clientes precisam ter pelo menos $0,50 na carteira para iniciar uma corrida, a menos que se qualifiquem para uma isencao.
Isencao da verificacao de saldo (iniciar corrida com $0 na carteira): o cliente deve ter ambos
- Uma assinatura ativa ou um pacote de corridas ativo com corridas/minutos restantes, e
- Um metodo de pagamento salvo.
Saldos Negativos
A carteira pode ficar negativa. Isso acontece quando:
- Uma Cobranca de Taxa (Charge Fee) e aplicada e excede o saldo atual.
- O custo da corrida excede o saldo da carteira e a cobranca do cartao falha.
- O operador usa Reduzir Saldo (Reduce Balance) por um valor maior que o saldo atual.
Quando uma Cobranca de Taxa faz o saldo passar de positivo para negativo, o cliente recebe automaticamente uma notificacao push informando sobre o saldo negativo.
Acessando Informacoes da Carteira
Lista de Clientes
A lista mostra o saldo da carteira de cada cliente e o valor legado de bonus (se houver) em colunas separadas.
Pagina de Detalhes do Cliente
Navegue ate Dashboard > Clientes > [Cliente] para ver:
- Saldo atual da carteira e valor de bonus
- Um menu suspenso Carteira na barra de acoes com: Adicionar Bonus, Cobrar Taxa, Reduzir Saldo
- Um link Ver Atividade da Carteira para o historico completo de transacoes
Pagina de Atividade da Carteira
A pagina de atividade lista cada linha de wallet_transactions do cliente, incluindo:
- Data e descricao
- Tipo de referencia (ride, topup, manual_bonus, manual_charge, manual_reduce_balance, stripe_charge, etc.)
- Valor (creditos em verde, debitos em vermelho)
balance_aftercorrente
Adicionando Creditos a Carteira
O painel expoe tres acoes no menu suspenso Carteira do cliente. Todas as tres gravam no unico wallet_balance e registram uma linha em wallet_transactions.
Adicionar Bonus
Credito promocional ou de cortesia. Aumenta o saldo da carteira.
- Transacao:
type: 'credit',reference_type: 'manual_bonus' - Notificacao: nenhuma
- API:
POST /api/customers/bonus
{
"customer_uuid": "customer-uuid",
"amount_usd": 5.00
}
Campos de identificacao aceitos (forneca pelo menos um): customer_uuid, customer_number, auth_uid, email ou customer_identifier.
Motivos Comuns para Adicionar Creditos
| Motivo | Valor Tipico |
|---|---|
| Compensacao por problema de servico | $5–$20 |
| Reembolso por problema tecnico | Variavel — prefira um reembolso de corrida (veja abaixo) |
| Cortesia / retencao | $5–$10 |
| Campanha promocional | Variavel |
Cobrando Taxas e Reduzindo Saldo
Cobrar Taxa (Charge Fee)
Para danos, equipamento perdido, violacoes de estacionamento e penalidades similares.
- Transacao:
type: 'debit',reference_type: 'manual_charge' - Pode ficar negativo: sim
- Notificacao: notificacao push enviada quando o saldo passa de positivo para negativo
- Permissao: requer
customer:charge— analistas e tecnicos de servico sao bloqueados - API:
POST /api/customers/charge
{
"customer_uuid": "customer-uuid",
"amount_usd": 25.00
}
Reduzir Saldo (Reduce Balance)
Para correcoes silenciosas e ajustes que nao devem notificar o cliente.
- Transacao:
type: 'debit',reference_type: 'manual_reduce_balance' - Pode ficar negativo: sim (mesmo comportamento que Charge Fee)
- Notificacao: nunca
- Permissao: requer
customer:charge - API:
POST /api/customers/reduce-balance
{
"customer_uuid": "customer-uuid",
"amount_usd": 10.00
}
Charge Fee vs. Reduce Balance
| Caracteristica | Charge Fee | Reduce Balance |
|---|---|---|
| Pode ficar negativo | Sim | Sim |
| Envia notificacao | Quando passa de positivo para negativo | Nunca |
| Uso tipico | Penalidades, danos | Correcoes, ajustes |
| Transaction reference_type | manual_charge | manual_reduce_balance |
Reembolsos: Sempre Contra a Corrida
Nunca credite a carteira diretamente por um problema de corrida
Um reembolso e sempre registrado contra o registro da corrida. O credito na carteira e uma consequencia do ajuste da corrida — nunca o ponto de partida. Creditar a carteira diretamente corrompe net_deposited, os repasses aos parceiros e o recolhimento de impostos.
Use um destes dois endpoints dependendo da situacao:
Ajuste de tarifa — quando a corrida foi cobrada em excesso (por exemplo, cobraram o cliente por tempo que ele nao usou):
POST /api/rides/[id]/adjust-fare
{
"newTotalCost": 8.50,
"reason": "Ajustado para refletir a duracao real da corrida"
}
Isto recalcula o imposto, ajusta a corrida, credita a carteira se o cliente pagou a mais e atualiza net_deposited.
Reembolso — quando a tarifa esta correta mas o cliente merece o dinheiro de volta (ma experiencia, compensacao, etc.):
POST /api/rides/[id]/refunds
{
"destination": "wallet",
"mode": "full",
"reason": "Compensacao ao passageiro"
}
destination pode ser wallet ou card. mode pode ser full ou partial (com um amount). A API reembolsa contra o que foi efetivamente pago (cartao ou carteira), registra em ride_refunds e atualiza net_deposited.
Para creditos de cortesia nao vinculados a uma corrida especifica, use Adicionar Bonus na pagina de detalhes do cliente.
Processamento em Massa de Carteiras
A acao Bulk Wallet Processing na lista de clientes nao e uma ferramenta de upload de creditos. E uma ferramenta de cobranca que debita os metodos de pagamento salvos de clientes com saldo de carteira negativo.
- Selecione clientes manualmente, ou use Selecionar Todos para atingir todos que correspondem aos filtros atuais com saldo negativo e cliente Stripe cadastrado.
- Clique em Process — o sistema tenta cobrar o metodo de pagamento salvo de cada cliente pelo valor necessario para zerar a carteira.
- Os resultados mostram cada cliente como
scheduled,skipped,already_existsouerror.
Nao ha hoje um fluxo de upload via CSV para adicionar creditos em massa — adicione-os um cliente por vez pelo painel ou use o endpoint /api/customers/bonus via script.
Transacoes da Carteira
Cada mudanca em wallet_balance grava uma linha em wallet_transactions. Transacoes tem um type (credit ou debit) e um reference_type que categoriza a origem.
Valores comuns de reference_type
| reference_type | Direcao | Origem |
|---|---|---|
manual_bonus | credit | Painel "Adicionar Bonus" |
manual_charge | debit | Painel "Cobrar Taxa" |
manual_reduce_balance | debit | Painel "Reduzir Saldo" |
topup | credit | Recarga pelo cliente ou recarga automatica |
stripe_charge | credit (exibido) | Cobranca no cartao por excesso de corrida |
ride | debit | Parcela da carteira no pagamento de uma corrida |
ride_refund | credit | Reembolso de corrida para a carteira |
A UI de atividade da carteira agrupa e rotula esses itens para os operadores — os valores brutos acima sao o que voce vera no banco de dados e nas respostas da API.
Recarga Automatica (Auto Top-up)
A recarga automatica reabastece a carteira do cliente automaticamente quando o saldo cai abaixo de um limite, cobrando seu metodo de pagamento padrao.
Como Funciona
- O saldo da carteira do cliente cai abaixo do limite (tipicamente durante uma verificacao no inicio ou pagamento da corrida).
- O sistema cobra o metodo de pagamento padrao pelo valor de recarga configurado.
- A carteira e creditada.
- O cliente recebe uma notificacao push confirmando a recarga.
Configuracao (ambos devem ser verdadeiros)
- Configuracao do cliente:
auto_topup_enabledno registro do cliente — os clientes optam durante o cadastro (apresentamos a recarga automatica como forma de evitar que o veiculo seja desabilitado no meio da corrida; quase todos os clientes ativam). - Configuracao da subconta:
auto_topup_enabledna subconta, comauto_topup_amount_centseauto_topup_threshold_cents.
Valores Padrao
| Configuracao | Padrao |
|---|---|
| Valor da recarga | $15,00 (1500 centavos) |
| Limite | $5,00 (500 centavos) |
Exemplo: quando o saldo do cliente cai abaixo de $5,00, o sistema cobra $15,00 e credita a carteira.
Seguranca
- Locks no banco de dados evitam que tentativas simultaneas de recarga automatica cobrem duas vezes.
- Chaves de idempotencia do Stripe evitam cobrancas duplicadas em retries de rede.
- O limite e re-verificado apos adquirir o lock.
- Contas
@levyelectric.comusam o modo de teste do Stripe.
Solucao de Problemas da Recarga Automatica
- Verifique que o cliente tem
auto_topup_enabled. - Verifique que a subconta tem
auto_topup_enablede valores coerentes de amount/threshold. - Confirme que o cliente tem um metodo de pagamento padrao valido.
- Verifique recusas no Stripe.
- Procure em
wallet_transactionspor entradas recentes detopup.
Relatorios
Metricas de Resumo
O cabecalho da lista de clientes mostra o valor total em carteiras e o valor total de bonus na visao filtrada.
Auditoria de Mudancas na Carteira
- Abra a pagina de Atividade da Carteira do cliente para ver todas as transacoes com timestamps e
balance_after. - Compare debitos de
ridecom o registro da corrida — onet_depositedda corrida deve conciliar com debito da carteira + cobranca no cartao menos quaisquer reembolsos. - Para ajustes manuais, o
user.iddo operador e registrado comoreference_idnas transacoesmanual_bonus/manual_charge; o painel resolve isso para o nome do funcionario.
Boas Praticas
Para Operadores
- Documente cada ajuste manual — a identidade do operador e armazenada, mas um motivo na descricao ajuda em auditorias futuras.
- Use o fluxo de reembolso de corrida para problemas de corrida — nunca compense problemas de corrida com um credito direto na carteira, ou os repasses aos parceiros e a contabilidade de impostos ficarao errados.
- Reserve Adicionar Bonus para promocoes e cortesia nao vinculadas a uma corrida especifica.
- Restrinja permissoes — apenas roles de admin e acima devem ter
customer:charge.
Para o Atendimento ao Cliente
- Verifique o saldo atual e a atividade recente da carteira antes de adicionar ou remover credito.
- Ao ajustar por um problema de corrida, abra a corrida e use Ajustar Tarifa ou Reembolso em vez do menu suspenso Carteira.
- Alinhe expectativas com o cliente: creditos sao aplicados automaticamente na proxima corrida.
Solucao de Problemas
Credito nao aparece no app do cliente
- Confirme que a transacao esta na atividade da carteira do cliente.
- Peca ao cliente para fechar e reabrir o app.
- Verifique que voce ajustou o cliente correto (verifique customer_number / email).
Saldo da carteira parece errado
- Revise transacoes recentes por debitos inesperados ou creditos duplicados.
- Verifique o historico de corridas por deducoes automaticas (
reference_type: 'ride'). - Se o saldo nao bater com a soma das transacoes, a coluna
customers.wallet_balancepode estar fora de sincronia comwallet_transactions— escale.
Cliente diz que seu reembolso de corrida nao foi aplicado
- Abra a pagina de detalhes da corrida e verifique a secao Reembolsos.
- Confirme que o reembolso foi processado via
/api/rides/[id]/refundsou/api/rides/[id]/adjust-fare(nao um credito direto na carteira). - Compare a atividade da carteira do cliente com uma entrada
ride_refundcorrespondente.
Precisa de Ajuda?
Para duvidas sobre gestao de carteira, contate support@levyelectric.com.