Pular para o conteúdo principal
A Índia possui uma infraestrutura de pagamentos única dominada pelo UPI (mais de 60% das transações digitais) e pelos cartões Rupay. A Dodo Payments oferece suporte a ambos com total conformidade ao RBI para mandatos de assinatura.

Por que os métodos de pagamento da Índia importam

UPI Dominance

O UPI processa mais de 10 bilhões de transações por mês. Muitos clientes indianos não possuem cartões internacionais.

Low Transaction Costs

O UPI tem taxas de transação quase zero. Excelente para transações de alto volume e baixo valor.

Subscription Support

Ao contrário da maioria dos métodos de pagamento alternativos, UPI e Rupay suportam pagamentos recorrentes via mandatos do RBI.

Métodos suportados

MétodoTipoAssinaturasValor mínimo
UPI CollectQR code / VPASim*₹1
Rupay CreditCardSim*₹1
Rupay DebitCardSim*₹1
*Assinaturas exigem mandatos compatíveis com o RBI com regras especiais de processamento.

Configuração

Tipos de método de API

TipoDescrição
upi_collectUPI via QR code ou entrada de VPA
creditCartões de crédito incluindo Rupay
debitCartões de débito incluindo Rupay

Exemplo: Checkout focado na Índia

const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  allowed_payment_method_types: [
    'upi_collect',
    'credit',
    'debit'
  ],
  billing_currency: 'INR',
  customer: {
    email: 'customer@example.in',
    name: 'Priya Sharma',
    phone_number: '+919876543210'
  },
  billing_address: {
    country: 'IN',
    zipcode: '560001'
  },
  return_url: 'https://example.com/success'
});

Requisitos para UPI

Para que o UPI apareça no checkout:
  1. País de cobrança deve ser Índia (IN)
  2. Moeda deve ser INR
  3. Para comerciantes não indianos: Moeda Adaptativa deve estar habilitada
Se você for um comerciante não indiano e a Moeda Adaptativa não estiver habilitada, o UPI não ficará disponível para seus clientes.

Assinaturas com mandatos do RBI

As assinaturas com métodos de pagamento indianos operam sob as regulamentações do RBI (Reserve Bank of India) com requisitos exclusivos.

Como funcionam os mandatos do RBI

Tipos de mandato

Valor da assinaturaTipo de mandatoLimite
Abaixo de Rs 15.000Mandato sob demandaRs 15.000
Rs 15.000 ou maisMandato de valor fixoValor exato da assinatura
Importante para alterações de plano: se um upgrade resultar em uma cobrança que exceda o limite do mandato existente, a cobrança falhará e o cliente precisará reautorizar.

O atraso de processamento de 48 horas

Esta é a diferença mais importante em relação aos pagamentos com cartão internacional:
1

Charge Initiated (Day 0)

Na data de renovação programada, a Dodo inicia a cobrança com o banco.
2

Pre-Debit Notification

O cliente recebe notificação do banco sobre o débito iminente.
3

48-Hour Window

O cliente pode cancelar o mandato durante esse período pelo app bancário.
4

Debit Completed (~48-51 hours)

Após 48 horas (mais até 3 horas adicionais para processamento bancário), os fundos são debitados.
5

Webhook Sent

O webhook payment.succeeded é enviado após o débito real, não na iniciação.
Não conceda benefícios na iniciação da cobrança. Espere pelo webhook payment.succeeded, que chega ~48-51 horas após a data programada de cobrança.

Lidando com a janela de 48 horas

// DON'T do this:
async function handleSubscriptionRenewal(subscription) {
  // ❌ Bad: Granting access immediately when charge is initiated
  grantPremiumAccess(subscription.customer_id);
}

// DO this:
async function handlePaymentWebhook(event) {
  if (event.type === 'payment.succeeded') {
    // ✅ Good: Only grant access after payment is confirmed
    grantPremiumAccess(event.data.customer_id);
  }
  
  if (event.type === 'payment.failed') {
    // Handle failed payment (mandate cancelled, insufficient funds)
    revokePremiumAccess(event.data.customer_id);
  }
}

Eventos de webhook para assinaturas indianas

EventoQuandoAção
subscription.createdMandato autorizadoRegistre o início da assinatura
payment.succeeded~48h após a data de cobrançaConceda/continue o acesso
payment.failedDébito falhouNotifique o cliente, pause o acesso
subscription.on_holdPagamento falhouSolicite atualização do método de pagamento
subscription.activeReativado após pagamentoRestaure o acesso

Testes

IDs de teste UPI

StatusID UPI
Sucessosuccess@upi
Falhafailure@upi

Números de cartão de teste indianos

BandeiraCenárioNúmero do cartãoValidadeCVV
VisaSucesso457623891277145006/32123
VisaRecusado470613121121212306/32123
MastercardSucesso540916266938103406/32123
MastercardRecusado510510510510510006/32123

Melhores práticas

Construa seu aplicativo para lidar com a lacuna entre a iniciação da cobrança e o pagamento real. Considere:
  • Períodos de carência para acesso à assinatura
  • Comunicação clara aos clientes sobre o tempo de processamento
  • Atendimento acionado por webhook, não por data
Os clientes podem cancelar mandatos via apps bancários a qualquer momento. Monitore subscription.on_hold webhooks e incentive os clientes a se reinscreverem ou atualizarem seus métodos de pagamento.
Para preços variáveis (por exemplo, baseados em uso), considere se um mandato sob demanda de Rs 15.000 é suficiente. Se as cobranças puderem exceder isso, os clientes precisarão reautorizar.
Para clientes indianos, o UPI deve ser a opção de pagamento principal. Muitos usuários o preferem aos cartões devido à familiaridade e menor atrito.

Solução de problemas

Verifique:
  1. País de cobrança definido para IN?
  2. Moeda configurada para INR?
  3. Se for comerciante não indiano: Moeda Adaptativa habilitada?
  4. upi_collect incluído em allowed_payment_method_types?
Solução: Verifique se o endereço de cobrança tem country: "IN" e billing_currency: "INR".
Causa: Novo valor de cobrança excede o limite do mandato existente (limite de Rs 15.000).Solução: O cliente deve atualizar o método de pagamento para estabelecer um novo mandato com o limite correto.
Causa: O cliente pode ter cancelado o mandato durante a janela de 48 horas, ou o banco recusou o débito.Solução: O cliente precisa reautorizar o mandato ou atualizar o método de pagamento.
Causa: Atrasos na API do banco podem estender o processamento por mais 2-3 horas.Solução: Isso é esperado. Estruture seu sistema para lidar com atrasos variáveis de até ~51 horas no total.
Causa: Caso extremo nas regulamentações do RBI — o cancelamento do mandato durante a janela de processamento não cancela imediatamente a assinatura.Solução: A próxima cobrança falhará e a assinatura passará para on_hold. Monitore webhooks para payment.failed.

Páginas relacionadas