Saltar al contenido principal
India tiene una infraestructura de pago única dominada por UPI (más del 60% de las transacciones digitales) y tarjetas Rupay. Dodo Payments soporta ambos con plena conformidad con RBI para los mandatos de suscripción.

Por qué importan los métodos de pago en India

Dominio de UPI

UPI procesa más de 10B transacciones al mes. Muchos clientes indios no tienen tarjetas internacionales.

Bajos Costos de Transacción

UPI tiene tarifas de transacción casi nulas. Excelente para transacciones de bajo valor y alto volumen.

Soporte para Suscripciones

A diferencia de la mayoría de los métodos de pago alternativos, UPI y Rupay soportan pagos recurrentes a través de mandatos de RBI.

Métodos Soportados

MétodoTipoSuscripcionesMonto Mínimo
UPI CollectCódigo QR / VPASí*₹1
Rupay CreditTarjetaSí*₹1
Rupay DebitTarjetaSí*₹1
*Las suscripciones requieren mandatos cumplidos con RBI con reglas de procesamiento especiales.

Configuración

Tipos de Métodos API

TipoDescripción
upi_collectUPI vía código QR o entrada de VPA
creditTarjetas de crédito incluyendo Rupay
debitTarjetas de débito incluyendo Rupay

Ejemplo: Pago Enfocado en 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'
});

Requisitos para UPI

Para que UPI aparezca en el pago:
  1. El país de facturación debe ser India (IN)
  2. La moneda debe ser INR
  3. Para comerciantes no indios: La moneda adaptativa debe estar habilitada
Si eres un comerciante no indio y la moneda adaptativa no está habilitada, UPI no estará disponible para tus clientes.

Suscripciones con Mandatos de RBI

Las suscripciones de métodos de pago indios operan bajo las regulaciones del RBI (Banco de Reserva de India) con requisitos únicos.

Cómo Funcionan los Mandatos de RBI

Tipos de Mandatos

Monto de SuscripciónTipo de MandatoLímite
Menos de Rs 15,000Mandato bajo demandaRs 15,000
Rs 15,000 o másMandato de monto fijoMonto exacto de suscripción
Importante para cambios de plan: Si una actualización resulta en un cargo que excede el límite del mandato existente, el cargo fallará y el cliente deberá re-autorización.

El Retraso de Procesamiento de 48 Horas

Esta es la diferencia más importante con respecto a los pagos con tarjetas internacionales:
1

Cargo Iniciado (Día 0)

En la fecha programada de renovación, Dodo inicia el cargo con el banco.
2

Notificación Pre-Débito

El cliente recibe notificación de su banco sobre el próximo débito.
3

Ventana de 48 Horas

El cliente puede cancelar el mandato durante este período a través de su aplicación bancaria.
4

Débito Completo (~48-51 horas)

Después de 48 horas (más hasta 3 horas adicionales para el procesamiento bancario), se debitan los fondos.
5

Webhook Enviado

payment.succeeded el webhook se envía después del débito real, no en la iniciación.
No otorgues beneficios en la iniciación del cargo. Espera al webhook de payment.succeeded, que llega aproximadamente 48-51 horas después de la fecha programada del cargo.

Manejo de la Ventana 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 Suscripciones en India

EventoCuándoAcción
subscription.createdMandato autorizadoRegistrar inicio de suscripción
payment.succeeded~48h después de la fecha de cargoOtorgar/continuar acceso
payment.failedDébito fallidoNotificar al cliente, pausar acceso
subscription.on_holdPago fallidoSolicitar actualización del método de pago
subscription.activeReactivado después del pagoRestaurar acceso

Pruebas

ID de Prueba de UPI

EstadoID de UPI
Éxitosuccess@upi
Fallofailure@upi

Números de Prueba de Tarjeta India

MarcaEscenarioNúmero de TarjetaExpiraciónCVV
VisaÉxito457623891277145006/32123
VisaRechazado470613121121212306/32123
MastercardÉxito540916266938103406/32123
MastercardRechazado510510510510510006/32123

Mejores Prácticas

Construye tu aplicación para manejar la brecha entre la iniciación del cargo y el pago real. Considera:
  • Períodos de gracia para el acceso a suscripciones
  • Comunicación clara a los clientes sobre el tiempo de procesamiento
  • Cumplimiento basado en webhooks, no en fechas
Los clientes pueden cancelar mandatos a través de sus aplicaciones bancarias en cualquier momento. Monitorea los webhooks de subscription.on_hold y solicita a los clientes que se re-suscriban o actualicen sus métodos de pago.
Para precios variables (por ejemplo, basados en el uso), considera si un mandato bajo demanda de Rs 15,000 es suficiente. Si los cargos pueden exceder esto, los clientes necesitarán re-autorización.
Para los clientes indios, UPI debe ser la opción de pago principal. Muchos usuarios lo prefieren sobre las tarjetas debido a la familiaridad y menor fricción.

Solución de Problemas

Verifica:
  1. ¿El país de facturación está establecido en IN?
  2. ¿La moneda está establecida en INR?
  3. Si es un comerciante no indio: ¿¿moneda adaptativa habilitada??
  4. ¿upi_collect incluido en allowed_payment_method_types?
Solución: Verifica que la dirección de facturación tenga country: "IN" y billing_currency: "INR".
Causa: El nuevo monto del cargo excede el límite del mandato existente (umbral de Rs 15,000).Solución: El cliente debe actualizar el método de pago para establecer un nuevo mandato con el límite correcto.
Causa: El cliente puede haber cancelado el mandato durante la ventana de 48 horas, o su banco rechazó el débito.Solución: El cliente necesita re-autorizar el mandato o actualizar su método de pago.
Causa: Los retrasos en la API del banco pueden extender el procesamiento por 2-3 horas adicionales.Solución: Esto es esperado. Construye tu sistema para manejar retrasos variables de hasta ~51 horas en total.
Causa: Caso límite en las regulaciones del RBI: la cancelación del mandato durante la ventana de procesamiento no cancela inmediatamente la suscripción.Solución: El próximo cargo fallará y la suscripción se moverá a on_hold. Monitorea los webhooks para payment.failed.

Páginas Relacionadas