Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

India tiene una infraestructura de pago única dominada por UPI (más del 60% de las transacciones digitales) y tarjetas emitidas en India (Visa, Mastercard, Rupay, etc.). Dodo Payments admite todos estos métodos con total cumplimiento del RBI para 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 todas las tarjetas emitidas en India (Visa, Mastercard, Rupay, etc.) admiten pagos recurrentes a través de 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 compatibles con el RBI con reglas de procesamiento especiales. El retraso de procesamiento de 48 horas se aplica a todas las tarjetas emitidas en India y UPI.

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
Por debajo del piso del mandatoMandato a demandaPiso del mandato (₹15,000 por defecto)
En o por encima del piso del mandatoMandato de monto fijoMonto exacto de suscripción
La cantidad registrada con el banco del cliente es max(mandate_floor, billing_amount). Así que el piso es efectivamente el techo de autorización para el cliente siempre que la facturación sea menor que el piso. 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 debe reautorizar.

Piso de Mandato Configurable

El piso de mandato para e-mandatos en INR es configurable a través del campo mandate_min_amount_inr_paise (en INR paise — 1 INR = 100 paise). Puedes sobreescribir el valor por defecto del sistema de ₹15,000 en tres niveles:
NivelDónde configurarAlcance
Por solicitudmandate_min_amount_inr_paise en una sesión de pago, pago o suscripciónUna transacción
ComercianteConfiguración de negocioTodas tus suscripciones en INR
Sistema₹15,000 por defecto
Prioridad de resolución: sobreescritura por solicitud → configuración del comerciante → valor por defecto del sistema.
// Per-checkout override
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_inr_monthly', quantity: 1 }],
  mandate_min_amount_inr_paise: 2_000_000, // ₹20,000 ceiling
  return_url: 'https://yoursite.com/return'
});

// Per-subscription override
const subscription = await client.subscriptions.create({
  product_id: 'prod_inr_monthly',
  customer: { email: 'customer@example.in' },
  billing: { country: 'IN', /* ... */ },
  mandate_min_amount_inr_paise: 2_000_000
});
CampoTipoValidaciónSe aplica a
mandate_min_amount_inr_paiseinteger (INR paise)>= 1Suscripciones de tarjetas indias en INR en conectores no-Airwallex
Establecer un piso más alto te permite admitir cargos únicos más grandes más adelante (por ejemplo, actualizaciones de plan o excesos basados en el uso) sin obligar a los clientes a reautorizar. Establecer un piso más bajo acerca la autorización del cliente al monto real de facturación, pero limita el margen para futuros cargos variables.
Esta configuración solo afecta a los e-mandatos registrados para tarjetas emitidas en India (Visa, Mastercard, RuPay) en suscripciones en INR. Las suscripciones UPI siguen su propio flujo AutoPay y no se ven afectadas.

El Retardo de Procesamiento de 48 Horas

Esta es la diferencia más importante 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 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 vía su aplicación bancaria.
4

Debit Completed (~48-51 hours)

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

Webhook Sent

payment.succeeded 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 payment.succeeded, que llega aproximadamente de 48 a 51 horas después de la fecha de cargo programada.

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 Webhook para Suscripciones en India

EventoCuándoAcción
subscription.activeMandato 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 fallidoSoliciar actualización del método de pago
subscription.activeReactivado después de pagoRestaurar acceso

Pruebas

IDs de Prueba de UPI

EstadoID de UPI
Éxitosuccess@upi
Fallofailure@upi

Números de Prueba de Tarjetas Indias

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 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 subscription.on_hold y pide a los clientes que se resuscriban o actualicen los métodos de pago.
Para tarifas variables (por ejemplo, basadas en uso), considera si un mandato a demanda de Rs 15,000 es suficiente. Si los cargos pueden exceder esto, los clientes necesitarán reautorizar.
Para clientes indios, UPI debería ser la opción de pago principal. Muchos usuarios lo prefieren sobre las tarjetas debido a su familiaridad y menor fricción.

Solución de Problemas

Verifica:
  1. ¿País de facturación configurado en IN?
  2. ¿Moneda configurada en INR?
  3. Si no es comerciante 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" e 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 pudo haber cancelado el mandato durante el período de 48 horas, o su banco rechazó el débito.Solución: El cliente necesita reautorizar el mandato o actualizar su método de pago.
Causa: Los retrasos en la API del banco pueden extender el procesamiento en 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 pasará a on_hold. Monitorea los webhooks para payment.failed.

Páginas Relacionadas

Payment Methods Overview

Ver todos los métodos de pago soportados.

Subscriptions

Documentación completa de suscripción incluyendo mandatos del RBI.

Webhooks

Manejo de webhooks para eventos de pago.

Testing Process

Todos los datos de prueba, incluyendo IDs de UPI y tarjetas indias.
Last modified on May 14, 2026