Skip to main content
Manual Retry tenta novamente um pagamento de renovação de assinatura que falhou quando você solicita, na página de detalhes do pagamento ou por meio da API. Ele cobra o método de pagamento salvo na assinatura e é executado independentemente da programação automática de Payment Retries.

O que é o retry manual?

Quando um pagamento de renovação falha, a assinatura passa para on_hold. Se você ativou Payment Retries, o sistema tenta cobrar novamente conforme uma programação de back-off. Às vezes, você sabe que o pagamento será aprovado agora: o cliente confirmou que adicionou fundos à conta ou sua equipe de suporte está em uma chamada com ele. Manual Retry envia uma tentativa imediatamente, em vez de esperar horas ou dias pela próxima tentativa programada.
  • Somente pagamentos de renovação: Manual Retry se aplica a faturas de renovação de assinaturas enquanto a assinatura está em on_hold. Primeiros pagamentos, pagamentos avulsos, cobranças por alteração de plano e cobranças sob demanda não são elegíveis.
  • Nenhuma ação do cliente: a cobrança é enviada ao método de pagamento já salvo na assinatura.
  • Independente das tentativas automáticas: uma tentativa manual não consome uma tentativa da programação automática, não altera a próxima tentativa programada e funciona mesmo quando Payment Retries está desativado.
  • Tenta novamente a fatura, não o pagamento: o pagamento com falha é apenas o ponto de entrada. Dodo Payments encontra a fatura de renovação em aberto associada a ele e cobra essa dívida; portanto, não importa a partir de qual pagamento com falha da fatura você inicia a nova tentativa.

Repetir pelo dashboard

Somente usuários com a função Owner ou Editor podem enviar uma tentativa manual.
1

Open the failed payment

Acesse Transactions → Payments e clique no pagamento de renovação com falha para abrir a página Transaction details.
2

Click Retry Payment Manually

Clique em Retry Payment Manually no canto superior direito. O botão fica disponível somente enquanto o pagamento está elegível.
3

Check the result

Dodo Payments cria um novo pagamento para a tentativa, que aparece no Activity Log. Se a cobrança for bem-sucedida, a assinatura retorna para active, e a próxima data de cobrança passa para um período de cobrança após a tentativa bem-sucedida. Se o processador de pagamentos ainda não tiver liquidado a cobrança, o pagamento aparecerá como em andamento até que o webhook payment.succeeded ou payment.failed informe o resultado.
Página de detalhes da transação de um pagamento com falha mostrando o código e a mensagem de erro, um Activity Log e um botão Retry Payment Manually

Retry Payment Manually on the transaction details page of a failed renewal

Elegibilidade

Dodo Payments envia uma tentativa manual somente quando todas as verificações desta tabela são aprovadas. A coluna Reason code corresponde ao que a API retorna: em reason em GET /payments/{payment_id}/retry e como o erro code em POST /payments/{payment_id}/retry.
Manual Retry é mais restrito do que as tentativas automáticas em um aspecto: exige que a assinatura esteja em on_hold. Uma assinatura past_due em um período de carência não passa nessa verificação. As tentativas automáticas continuam sendo executadas para outros status não ativos. Consulte Subscription Status Transitions.
Tentar novamente uma recusa definitiva no mesmo cartão não pode funcionar e recusas repetidas prejudicam sua taxa de autorização. Quando o motivo for MANUAL_RETRY_HARD_DECLINE, peça ao cliente que atualize o método de pagamento. Subscription Dunning faz isso automaticamente.

Limites de tentativas

Cada fatura de renovação permite 3 tentativas manuais, com um período de espera entre elas: Os limites se aplicam tanto ao modo de teste quanto ao modo live. Quando o limite recusa uma tentativa, a API retorna MANUAL_RETRY_LIMIT_REACHED (HTTP 429), e o corpo do erro contém somente code e message. Para saber quando a próxima tentativa será liberada, consulte o estado da tentativa e leia retry_available_at. Ele é null quando as três tentativas já tiverem sido usadas. As tentativas automáticas não contam para esse limite, e as tentativas manuais não contam para as 8 tentativas da programação automática.

Tentativas manuais e automáticas

Os dois caminhos de tentativa diferem das seguintes formas:

Tentativa novamente por meio da API

Verifique a elegibilidade primeiro e depois envie a tentativa. Ambos os endpoints recebem o ID de um pagamento com falha.

Verificar se um pagamento pode ser tentado novamente

GET /payments/{payment_id}/retry não retorna um erro para um pagamento inelegível. Em vez disso, retorna can_retry: false com o código reason, para que seu próprio dashboard ou ferramenta de suporte possa mostrar o mesmo estado do dashboard da Dodo Payments. Essa operação exige a função Viewer.
Response

Enviar uma tentativa manual

POST /payments/{payment_id}/retry cria um novo pagamento e cobra o método de pagamento salvo. Essa operação exige a função Editor. Os exemplos do SDK reutilizam client do exemplo anterior.
Response

Respostas de erro

Quando uma tentativa não é permitida, POST retorna um dos seguintes status HTTP: A referência de Error Codes descreve todos os códigos.

Webhooks

Uma tentativa manual cria um pagamento comum, portanto os mesmos webhooks são disparados como em qualquer tentativa de renovação: No objeto de pagamento desses eventos, retry_attempt é 1 ou superior e subscription_id está definido, da mesma forma que em uma tentativa automática. O objeto de pagamento não tem um campo que identifique uma tentativa manual; portanto, mantenha payment_id da resposta da tentativa se precisar distinguir uma tentativa manual de uma programada.

Payment Webhook Payloads

Esquemas completos de payload para eventos de pagamento.

Relacionados

Subscription Payment Retries

A programação automática de back-off que é executada junto com as tentativas manuais.

Subscription Dunning

Envie um e-mail ao cliente para atualizar o método de pagamento após uma recusa definitiva.

Handle Payment Failures

Leia os códigos de recusa e decida quando vale a pena tentar novamente.

Error Codes

Cada código MANUAL_RETRY_*, seu gatilho e sua mensagem.
Última modificação em 26 de setembro de 2026