Skip to main content
O motor de recorrência da Malga permite configurar políticas de retentativa personalizadas para cada cliente, oferecendo maior flexibilidade no controle de cobranças recorrentes.

Visão Geral

As políticas de retentativa personalizadas permitem que você defina exatamente quando e quantas vezes o sistema deve tentar cobrar uma cobrança que falhou, substituindo as regras padrão baseadas no intervalo da assinatura.

Benefícios

  • Controle total: Defina exatamente quando tentar novamente
  • Flexibilidade: Até 6 retentativas em até 30 dias
  • Estratégias personalizadas: Adapte às necessidades do seu negócio
  • Fallback automático: Mantém comportamento padrão se não configurado ou removido

Como Funciona

Estratégias Padrão vs Personalizadas

Estratégias Padrão (quando não há política personalizada):
  • Semanais: D+0, D+1, D+3, D+5
  • Mensais/Trimestrais/Anuais: D+0, D+1, D+4, D+9, D+16
Políticas Personalizadas:
  • Até 6 retentativas configuráveis
  • Janela máxima de 30 dias
  • Aplicadas a todas as assinaturas do cliente

Exemplos de Configurações

{
  "retryRules": [
    { "daysAfterLastAttempt": 1 },
    { "daysAfterLastAttempt": 3 },
    { "daysAfterLastAttempt": 5 }
  ]
}

Configurando Políticas de Retentativa

Obter Configurações Atuais

curl --location 'https://api.malga.io/v1/subscriptions/settings' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY'

Atualizar Configurações

curl --location --request PATCH 'https://api.malga.io/v1/subscriptions/settings' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
  "retryRules": [
    { "daysAfterLastAttempt": 1 },
    { "daysAfterLastAttempt": 3 },
    { "daysAfterLastAttempt": 5 },
    { "daysAfterLastAttempt": 7 },
    { "daysAfterLastAttempt": 14 }
  ]
}'

Regras de Validação

Limitações Técnicas

  • Quantidade: Entre 1 e 6 regras de retentativa
  • Valores: Cada valor deve ser ≥ 1 dia
  • Janela total: Soma de todos os dias deve ser ≤ 30
  • Duplicatas: Não são permitidas regras duplicadas
  • Ordenação: Regras são automaticamente ordenadas em ordem crescente

Exemplos de Validação

{
  "retryRules": [
    { "daysAfterLastAttempt": 1 },
    { "daysAfterLastAttempt": 3 },
    { "daysAfterLastAttempt": 5 }
  ]
}

Comportamento em Tempo Real

Cálculo de Próxima Tentativa

O sistema calcula a próxima tentativa baseado em:
  1. Data da última tentativa
  2. Número da tentativa atual (1ª falha = 1ª regra, 2ª falha = 2ª regra, etc.)
  3. Política configurada do cliente

Interrupção por Nova Fatura

Quando uma nova fatura é gerada:
  • Todas as faturas anteriores em estado retrying são marcadas como failed
  • Webhook cycle_failed é enviado para cada fatura interrompida

Troca de Política

  • Faturas em andamento: Mantêm o NextAttemptAt já calculado
  • Novas falhas: Usam a política vigente no momento da falha
  • Sem recálculo retroativo: Políticas antigas não afetam faturas já agendadas

Removendo Políticas

Para voltar ao comportamento padrão, envie um array vazio:
curl --location --request PATCH 'https://api.malga.io/v1/subscriptions/settings' \
--header 'X-Client-Id: YOUR_CLIENT_ID' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
  "retryRules": []
}'

Próximos Passos