Vai al contenuto principale
L’India dispone di un’infrastruttura di pagamento unica dominata da UPI (oltre il 60% delle transazioni digitali) e dalle carte Rupay. Dodo Payments supporta entrambi con piena conformità RBI per i mandati di sottoscrizione.

Perché i metodi di pagamento indiani sono importanti

UPI Dominance

UPI elabora oltre 10 miliardi di transazioni al mese. Molti clienti indiani non dispongono di carte internazionali.

Low Transaction Costs

UPI ha commissioni di transazione quasi nulle. Ottimo per transazioni ad alto volume e valore inferiore.

Subscription Support

A differenza della maggior parte dei metodi di pagamento alternativi, UPI e Rupay supportano i pagamenti ricorrenti tramite mandati RBI.

Metodi supportati

MetodoTipoAbbonamentiImporto minimo
UPI CollectQR code / VPASì*₹1
Rupay CreditCartaSì*₹1
Rupay DebitCartaSì*₹1
*Gli abbonamenti richiedono mandati conformi alla RBI con regole speciali di elaborazione.

Configurazione

Tipi di metodo API

TipoDescrizione
upi_collectUPI tramite QR code o inserimento VPA
creditCarte di credito incluse Rupay
debitCarte di debito incluse Rupay

Esempio: checkout focalizzato sull’India

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'
});

Requisiti per UPI

Perché UPI appaia al checkout:
  1. Paese di fatturazione deve essere l’India (IN)
  2. Valuta deve essere INR
  3. Per i commercianti non indiani: Adaptive Currency deve essere abilitata
Se sei un commerciante non indiano e Adaptive Currency non è abilitata, UPI non sarà disponibile per i tuoi clienti.

Abbonamenti con mandati RBI

Gli abbonamenti con metodi di pagamento indiani operano sotto le normative RBI (Reserve Bank of India) con requisiti unici.

Come funzionano i mandati RBI

Tipi di mandati

Importo dell’abbonamentoTipo di mandatoLimite
Inferiore a Rs 15.000Mandato on-demandRs 15.000
Rs 15.000 o superioreMandato ad importo fissoImporto esatto dell’abbonamento
Importante per modifiche ai piani: se un upgrade comporta una quota superiore al limite del mandato esistente, l’addebito verrà annullato e il cliente dovrà ri-autorizzare.

Il ritardo di elaborazione di 48 ore

Questa è la differenza più importante rispetto ai pagamenti con carta internazionali:
1

Charge Initiated (Day 0)

Alla data di rinnovo programmata, Dodo avvia l’addebito con la banca.
2

Pre-Debit Notification

Il cliente riceve una notifica dalla propria banca circa il prossimo addebito.
3

48-Hour Window

Il cliente può annullare il mandato durante questo periodo tramite la propria app bancaria.
4

Debit Completed (~48-51 hours)

Dopo 48 ore (più fino a 3 ore aggiuntive per l’elaborazione bancaria), i fondi vengono addebitati.
5

Webhook Sent

Il webhook payment.succeeded viene inviato dopo l’addebito effettivo, non all’avvio.
Non concedere benefici all’inizio dell’addebito. Attendi il webhook payment.succeeded, che arriva circa 48-51 ore dopo la data di addebito programmata.

Gestire la finestra di 48 ore

// 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);
  }
}

Eventi webhook per abbonamenti indiani

EventoQuandoAzione
subscription.createdMandato autorizzatoRegistra l’inizio dell’abbonamento
payment.succeeded~48h dopo la data di addebitoConcedi/continua l’accesso
payment.failedAddebito fallitoNotifica il cliente, sospendi l’accesso
subscription.on_holdPagamento fallitoInvita ad aggiornare il metodo di pagamento
subscription.activeRiattivato dopo il pagamentoRipristina l’accesso

Test

ID di test UPI

StatoUPI ID
Successosuccess@upi
Fallimentofailure@upi

Numeri di test delle carte indiane

MarcaScenarioNumero cartaScadenzaCVV
VisaSuccesso457623891277145006/32123
VisaRifiutata470613121121212306/32123
MastercardSuccesso540916266938103406/32123
MastercardRifiutata510510510510510006/32123

Migliori pratiche

Progetta la tua applicazione per gestire il divario tra l’inizio dell’addebito e il pagamento effettivo. Considera:
  • Periodi di tolleranza per l’accesso all’abbonamento
  • Comunicazione chiara ai clienti sui tempi di elaborazione
  • Esecuzione basata sui webhook, non sulla data
I clienti possono cancellare i mandati tramite le loro app bancarie in qualsiasi momento. Monitora i webhook subscription.on_hold e invita i clienti a ri-sottoscrivere o aggiornare i metodi di pagamento.
Per prezzi variabili (es. basati sull’utilizzo), considera se un mandato on-demand da Rs 15.000 sia sufficiente. Se gli addebiti potrebbero superare questa soglia, i clienti dovranno ri-autorizzare.
Per i clienti indiani, UPI dovrebbe essere l’opzione di pagamento principale. Molti utenti lo preferiscono alle carte per familiarità e minore attrito.

Risoluzione dei problemi

Controlla:
  1. Paese di fatturazione impostato su IN?
  2. Valuta impostata su INR?
  3. Se commerciante non indiano: Adaptive Currency abilitata?
  4. upi_collect incluso in allowed_payment_method_types?
Soluzione: Verifica che l’indirizzo di fatturazione abbia country: "IN" e billing_currency: "INR".
Causa: Il nuovo importo supera il limite del mandato esistente (soglia Rs 15.000).Soluzione: Il cliente deve aggiornare il metodo di pagamento per stabilire un nuovo mandato con il limite corretto.
Causa: Il cliente potrebbe aver annullato il mandato durante la finestra di 48 ore o la banca ha rifiutato l’addebito.Soluzione: Il cliente deve ri-autorizzare il mandato o aggiornare il metodo di pagamento.
Causa: I ritardi delle API bancarie possono estendere l’elaborazione di 2-3 ore aggiuntive.Soluzione: Questo è previsto. Progetta il sistema per gestire ritardi variabili fino a circa 51 ore in totale.
Causa: Caso limite nelle normative RBI — la cancellazione del mandato durante la finestra di elaborazione non annulla immediatamente l’abbonamento.Soluzione: Il prossimo addebito fallirà e l’abbonamento passerà a on_hold. Monitora i webhook per payment.failed.

Pagine correlate