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.
Nuevas Funcionalidades
1. Códigos de Descuento Apilados
Las sesiones de checkout, pagos, suscripciones y cambios de plan ahora aceptan hasta 20 códigos de descuento en una sola solicitud a través del array discount_codes. Los códigos se aplican en el orden del array — el primer código elegible reduce el precio base, el segundo reduce el precio ya descontado, y así sucesivamente — por lo que puedes superponer campañas sin crear códigos combinados a medida.
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
discount_codes: ['WELCOME10', 'BLACKFRIDAY20'], // applied in this order
customer: { email: 'user@example.com' },
return_url: 'https://yoursite.com/return'
});
Dónde se aplica
| Superficie | Campo | Máximo de códigos |
|---|
| Sesiones de Checkout | discount_codes | 20 |
| Pagos | discount_codes | 20 |
| Suscripciones | discount_codes | 20 |
| Cambios de Plan | discount_codes | 20 |
Comportamiento de cambio de plan
Valor discount_codes | Efecto |
|---|
| No proporcionado | Los descuentos existentes con preserve_on_plan_change=true se mantienen si son aplicables al nuevo producto |
[] (array vacío) | Todos los descuentos existentes se eliminan de la suscripción |
['CODE_A', 'CODE_B', ...] | Reemplaza cualquier descuento existente con este conjunto apilado, aplicado en el orden del array |
Forma de la respuesta
El conjunto completo de descuentos aplicados se devuelve bajo el array discounts en pagos y suscripciones — cada entrada incluye discount_id, position, e cycles_remaining (para suscripciones). El campo singular legado discount_id está obsoleto pero sigue presente para compatibilidad con versiones anteriores.
El campo singular discount_code está obsoleto pero sigue siendo totalmente compatible — las integraciones existentes continúan funcionando sin cambios. No se puede combinar con discount_codes en la misma solicitud. Recomendamos migrar a discount_codes cuando sea conveniente, incluso para códigos únicos, para aprovechar la apilamiento y la forma de respuesta más rica.
Aprende más: Códigos de Descuento | Sesión de Checkout | Cambios de Plan
2. Siete Nuevos Correos Electrónicos de Notificación al Cliente
Siete nuevos correos electrónicos transaccionales ahora se envían automáticamente a tus clientes, cubriendo confirmaciones de reembolsos, hitos del ciclo de vida de suscripciones y fallos de pago. Cada correo electrónico se puede activar de forma independiente desde Configuración → Comunicación en la sección Correos Electrónicos al Cliente.
Opcional (habilitado por defecto)
| Correo Electrónico | Cuándo se envía |
|---|
| Reembolso Exitoso | Un reembolso se procesa con éxito y los fondos están de regreso para el cliente |
| Trial de Suscripción Finalizando | ~2 días antes de que expire un trial y ocurra el primer cargo de facturación |
| Suscripción Cancelada Inmediatamente | Una suscripción es cancelada con efecto inmediato |
| Suscripción Programada para Cancelar en la Próxima Fecha de Facturación | Una suscripción está programada para cancelarse al final del período de facturación actual |
Opcional hacia fuera (desactivado por defecto)
| Correo Electrónico | Cuándo se envía |
|---|
| Pago Fallido | Un intento de pago falla — habilita si quieres que Dodo Payments notifique al cliente directamente en lugar de hacerlo en tu propio sistema |
| Renovación de Suscripción Fallida | Un pago de renovación de suscripción falla específicamente; se envía en lugar de (no además de) el correo general de Pago Fallido para pagos de renovación |
| Recordatorio de Renovación Próxima | ~2 días antes de que una suscripción se renueve |
Si gestionas la comunicación con el cliente por ti mismo a través de webhooks, deja los correos electrónicos opcionales hacia fuera desactivados para evitar enviar notificaciones duplicadas al cliente para el mismo evento.
Los correos electrónicos al cliente son independientes de los correos de notificación enviados a tu equipo. Desactivar un correo electrónico al cliente no afecta las notificaciones de tu equipo para el mismo evento.
Aprende más: Preferencias de Comunicación
3. Sunbit — Financiamiento en Cuotas para Clientes de EE.UU.
Sunbit ahora está disponible como un método de pago Buy Now, Pay Later, permitiendo a los clientes de EE.UU. dividir las compras en cuotas mensuales manejables al momento del checkout.
| Característica | Detalles |
|---|
| Disponibilidad | Estados Unidos |
| Moneda | USD |
| Cantidad mínima | $60.00 |
| Cantidad máxima | $19,999.00 |
| Suscripciones | No soportado (solo pagos únicos) |
Pasa sunbit en allowed_payment_method_types para habilitarlo en una sesión de checkout:
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_123', quantity: 1 }],
allowed_payment_method_types: ['sunbit', 'credit', 'debit'],
return_url: 'https://example.com/success'
});
El cliente completa una aplicación de financiamiento corta en el modal de Sunbit al momento del checkout; una vez aprobado, el pago se confirma y tú recibes los fondos como normal.
Siempre incluye credit e debit como alternativas. No todos los clientes calificarán para el financiamiento de Sunbit, y las transacciones fuera del rango de 60.00–19,999.00 no mostrarán la opción.
Aprende más: Métodos de Pago BNPL
Mejoras
La página de pago en el checkout ha sido sustancialmente reestructurada de principio a fin — diseño más ajustado, carga percibida más rápida, estados de validación más claros, y UX de ingreso de tarjeta refinado. En conjunto, estos cambios aumentaron las tasas de éxito de checkout observadas en ~2-3% en todo el tráfico global.
Qué cambió:
- Interacciones en campos más fluidas — autofoco, orden de tabulación más inteligente, y navegación mejorada con el teclado en el formulario de tarjeta
- Estados de error y carga más limpios — la validación en línea muestra precisamente dónde el cliente necesita actuar, reemplazando el patrón anterior de banner de error de formulario completo
- Pintura más rápida — esqueletos e hidratación progresiva eliminan el parpadeo de estado en blanco brevemente en redes lentas
- Pulido móvil — objetivos de toque, comportamiento de desplazamiento, y manejo del teclado afinados específicamente para el checkout móvil, donde ahora se encuentra la mayoría del tráfico
No se requieren cambios de integración. Las sesiones de checkout existentes adoptan automáticamente la nueva página de pago.
Los flujos de crear, editar y duplicar producto han sido reconstruidos desde cero en torno a una experiencia de formulario única y coherente.
Destacados:
- Vista previa en vivo — ve cómo aparece tu producto en el checkout y portal del cliente mientras editas, junto al formulario
- Autoguardado — los borradores se guardan automáticamente, por lo que navegar fuera o perder tu pestaña ya no significa perder tu trabajo
- Editor Markdown — las descripciones de los productos ahora soportan un editor de markdown completo con renderizado en vivo, vista previa de enlaces y controles de formato en línea
- Paridad en el flujo de duplicación — duplicar un producto abre el mismo formulario unificado pre-rellenado, en lugar de un diálogo reducido, para que puedas ajustar cada campo antes de guardar la copia
Usa Duplicar para crear variantes regionales o de nivel de precios de un producto existente sin reingresar descripciones, metadatos o configuración de cumplimiento.
6. Rediseño de la Página de Configuración de Negocios
La página Configuración → Negocios ha sido rediseñada para facilitar la escaneabilidad de la configuración y acelerar las actualizaciones. Las configuraciones ahora están agrupadas en secciones más claras con texto explicativo que describe el impacto de cada conmutador antes de activarlo.
No hay cambios de comportamiento en las configuraciones existentes — solo el diseño, agrupamiento y las explicaciones circundantes han mejorado.
Mejoras
- El override
credits_amount ahora se propaga correctamente a las rutas de consulta en sesión de checkout y enlace de pago — cuando se creaba una sesión de checkout o enlace de pago con un override por-checkout credit_entitlements, al obtener esa sesión o enlace a través de GET se retornaba el credits_amount predeterminado a nivel de producto en lugar del valor sobrescrito. Esto ahora está corregido.
- Acción de reembolso deshabilitada para pagos totalmente reembolsados — el botón de Reembolso en un pago ahora se deshabilita una vez que un pago está totalmente reembolsado, con un mensaje de herramienta explicando por qué. Anteriormente el botón permanecía activo y retornaba un error solo después de la presentación.
- Correcciones de errores menores y mejoras de estabilidad en toda la plataforma.