Hoppa till huvudinnehåll
Indien har en unik betalningsinfrastruktur dominerad av UPI (60%+ av digitala transaktioner) och Rupay-kort. Dodo Payments stöder båda med fullständig RBI-överensstämmelse för prenumerationsmandat.

Varför indiska betalningsmetoder är viktiga

UPI-dominans

UPI hanterar 10B+ transaktioner/månad. Många indiska kunder har inte internationella kort.

Låga transaktionskostnader

UPI har nästan noll transaktionsavgifter. Utmärkt för högvolym, lågvärdetransaktioner.

Stöd för prenumerationer

Till skillnad från de flesta alternativa betalningsmetoder stödjer UPI och Rupay återkommande betalningar via RBI-mandat.

Stödda metoder

MetodTypPrenumerationerMinimibelopp
UPI CollectQR-kod / VPAJa*₹1
Rupay CreditKortJa*₹1
Rupay DebitKortJa*₹1
*Prenumerationer kräver RBI-kompatibla mandat med speciella behandlingsregler.

Konfiguration

API Metodtyper

TypBeskrivning
upi_collectUPI via QR-kod eller VPA-inmatning
creditKreditkort inklusive Rupay
debitBetalkort inklusive Rupay

Exempel: Indien-fokuserad kassa

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

Krav för UPI

För att UPI ska visas i kassan:
  1. Faktureringsland måste vara Indien (IN)
  2. Valuta måste vara INR
  3. För icke-indiska säljare: Adaptiv valuta måste vara aktiverad
Om du är en icke-indisk säljare och Adaptiv valuta inte är aktiverad, kommer UPI inte att vara tillgängligt för dina kunder.

Prenumerationer med RBI-mandat

Indiska betalningsmetodsprenumerationer fungerar under RBI (Reserve Bank of India) föreskrifter med unika krav.

Hur RBI-mandat fungerar

Mandattyper

PrenumerationsbeloppMandattypGräns
Under Rs 15,000BehovsmandatRs 15,000
Rs 15,000 eller merFast belopp mandatExakt prenumerationsbelopp
Viktigt för planändringar: Om en uppgradering resulterar i en avgift som överskrider den befintliga mandatgränsen, kommer avgiften att misslyckas och kunden måste ge nytt tillstånd.

Den 48-timmars behandlingsfördröjningen

Detta är den mest betydande skillnaden från internationella kortbetalningar:
1

Avgift initierad (Dag 0)

På det schemalagda förnyelsedatumet initierar Dodo avgiften med banken.
2

Fördebiteringsmeddelande

Kunden får ett meddelande från sin bank om kommande debitering.
3

48-timmarsfönster

Kunden kan avbryta mandatet under denna period via sin bankapp.
4

Debitering slutförd (ca 48-51 timmar)

Efter 48 timmar (plus upp till 3 ytterligare timmar för bankbehandling) debiteras medlen.
5

Webhook skickad

payment.succeeded webhook skickas efter faktisk debitering, inte vid initiering.
Ge inte fördelar vid avgiftsinitiering. Vänta på payment.succeeded webhook, som ankommer ~48-51 timmar efter det schemalagda avgiftsdatumet.

Hantering av 48-timmarsfönstret

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

Webhook-händelser för indiska prenumerationer

HändelseNärÅtgärd
subscription.createdMandat auktoriseratRegistrera prenumerationsstart
payment.succeeded~48h efter avgiftsdatumGe/fortsätt åtkomst
payment.failedDebitering misslyckadesInformera kunden, pausa access
subscription.on_holdBetalning misslyckadesUppmana till betalningsmetoduppdatering
subscription.activeÅteraktiverad efter betalningÅterställ åtkomst

Testning

UPI test-ID:n

StatusUPI ID
Framgångsuccess@upi
Misslyckandefailure@upi

Indiska kort testnummer

MärkeScenarioKortnummerUtgångCVV
VisaFramgång457623891277145006/32123
VisaNektad470613121121212306/32123
MastercardFramgång540916266938103406/32123
MastercardNektad510510510510510006/32123

Bästa praxis

Bygg din applikation för att hantera klyftan mellan avgiftsinitiering och faktisk betalning. Överväg:
  • Nådperioder för åtkomst till prenumerationer
  • Tydlig kommunikation till kunderna om behandlingstid
  • Webhook-drivna uppfyllelser, inte datum-drivna
Kunder kan avboka mandat när som helst via sina bankappar. Övervaka subscription.on_hold webhooks och uppmana kunder att åter-prenumerera eller uppdatera betalningsmetoder.
För variabel prissättning (t.ex. användningsbaserad), överväg om ett Rs 15,000 behovsmandat är tillräckligt. Om avgifter kan överskrida detta, kommer kunder att behöva ge nytt tillstånd.
För indiska kunder bör UPI vara det primära betalningsalternativet. Många användare föredrar det framför kort på grund av familjaritet och lägre friktion.

Felsökning

Kontrollera:
  1. Faktureringsland inställt på IN?
  2. Valuta inställd på INR?
  3. Om icke-indisk säljare: Är adaptiv valuta aktiverad?
  4. upi_collect inkluderad i allowed_payment_method_types?
Lösning: Verifiera att faktureringsadressen har country: "IN" och billing_currency: "INR".
Orsak: Ny avgift överskrider befintlig mandatgräns (Rs 15,000 tröskel).Lösning: Kunden måste uppdatera betalningsmetoden för att etablera ett nytt mandat med rätt gräns.
Orsak: Kunden kan ha avbokat mandatet under 48-timmarsfönstret, eller så har deras bank nekat debiteringen.Lösning: Kunden behöver ge nytt tillstånd för mandatet eller uppdatera sin betalningsmetod.
Orsak: Bankens API-förseningar kan förlänga behandlingen med 2-3 ytterligare timmar.Lösning: Detta är förväntat. Bygg ditt system för att hantera variabla förseningar upp till ~51 timmar totalt.
Orsak: Randfall i RBI-förordningar — mandatavbokning under behandlingsfönstret avbryter inte omedelbart prenumerationen.Lösning: Den nästa avgiften kommer att misslyckas och prenumerationen kommer att flyttas till on_hold. Övervaka webhooks för payment.failed.

Relaterade sidor