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

UPI Dominance

UPI procesa 10B+ transacciones/mes. Muchos clientes indios no tienen tarjetas internacionales.

Low Transaction Costs

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

Subscription Support

A diferencia de la mayoría de los métodos de pago alternativos, UPI y Rupay admiten pagos recurrentes mediante mandatos del 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 mediante código QR o entrada de VPA
creditTarjetas de crédito, incluidas Rupay
debitTarjetas de débito, incluidas 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 checkout:
  1. El país de facturación debe ser India (IN)
  2. La moneda debe ser INR
  3. Para comerciantes no indios: Adaptive Currency debe estar habilitado
Si eres un comerciante no indio y Adaptive Currency 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

Charge Initiated (Day 0)

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

Pre-Debit Notification

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

48-Hour Window

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

Debit Completed (~48-51 hours)

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

Webhook Sent

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

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.activeMandato autorizadoRegistrar inicio de suscripción
payment.succeeded~48 h después de la fecha de cargoConceder/continuar acceso
payment.failedDébito fallidoNotificar al cliente, pausar acceso
subscription.on_holdPago fallidoSolicitar actualización del método de pago
subscription.activeReactivada después del pagoRestaurar acceso

Pruebas

ID de Prueba de UPI

EstadoUPI ID
Éxitosuccess@upi
Fallofailure@upi

Números de Prueba de Tarjeta India

MarcaEscenarioNúmero de tarjetaExpiraciónCVV
VisaÉxito457623891277145006/32123
VisaRechazada470613121121212306/32123
MastercardÉxito540916266938103406/32123
MastercardRechazada510510510510510006/32123

Mejores Prácticas

Construye tu aplicación para manejar la brecha entre la iniciación del cobro y el pago real. Considera:
  • Períodos de gracia para el acceso a la suscripción
  • Comunicación clara a los clientes sobre el tiempo de procesamiento
  • Cumplimiento impulsado por webhooks, no por fechas
Los clientes pueden cancelar los mandatos a través de sus aplicaciones bancarias en cualquier momento. Supervisa los webhooks subscription.on_hold y solicita a los clientes que vuelvan a suscribirse 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 podrían superar ese monto, los clientes tendrán que volver a autorizarlo.
Para clientes indios, UPI debe ser la opción de pago principal. Muchos usuarios lo prefieren a las tarjetas debido a la familiaridad y la menor fricción.

Solución de Problemas

Verifica:
  1. ¿El país de facturación está establecido en IN?
  2. ¿La moneda está configurada en INR?
  3. Si eres un comerciante no indio: ¿Adaptive Currency está habilitada?
  4. ¿upi_collect está 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 cobro supera 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 pudo haber cancelado el mandato durante la ventana de 48 horas, o su banco rechazó el débito.Solución: El cliente necesita volver a autorizar el mandato o actualizar su método de pago.
Causa: Las demoras en la API del banco pueden extender el procesamiento de 2 a 3 horas adicionales.Solución: Esto es esperado. Diseña tu sistema para manejar demoras 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 siguiente cobro fallará y la suscripción pasará a on_hold. Supervisa los webhooks payment.failed.

Páginas Relacionadas