> ## 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.

# v1.70.0 (24 de diciembre de 2025)

> Soporte para pago en línea, uso de métodos de pago existentes para pagos instantáneos, gestión de planes de suscripción desde el panel, generación de enlaces de pago cortos, omitir páginas de éxito con redirect_immediately, y habilitar suscripciones bajo demanda para todos los negocios

## Nuevas Funciones 🚀

1. **Pago en Línea - Experiencias de Pago Totalmente Integradas (BETA)**

   Integra el pago de Dodo Payments directamente en tu sitio web para una experiencia de pago fluida y de marca. A diferencia del pago en superposición que se abre como un modal, el pago en línea incrusta el formulario de pago directamente en el diseño de tu página.

   <Frame>
     <img src="https://mintcdn.com/dodopayments/HpxJAc8zNlxzewa_/images/inline-checkout/cover.png?fit=max&auto=format&n=HpxJAc8zNlxzewa_&q=85&s=99c1a92ef01680248a421d3f057b02cd" alt="Imagen de portada de pago inline" style={{ maxHeight: '500px', width: 'auto' }} width="839" height="565" data-path="images/inline-checkout/cover.png" />
   </Frame>

   ### Beneficios

   * **Totalmente integrado**: Crea experiencias de pago que se mezclan perfectamente con tu sitio web
   * **Resúmenes de pedidos personalizados**: Construye una interfaz de usuario personalizada que se sincroniza con el pago en tiempo real
   * **Máximo control**: Control total sobre el diseño y la disposición del pago
   * **Cumplimiento PCI**: Dodo Payments maneja de forma segura toda la información de pago sensible
   * **Sincronización en tiempo real**: Usa eventos de SDK para mantener tu interfaz de usuario sincronizada con el estado del pago

   ### Cómo Funciona

   Inicializa el SDK con `displayType: 'inline'` e inserta el checkout en un elemento contenedor:

   ```typescript theme={null}
   import { DodoPayments } from "dodopayments-checkout";

   // Initialize the SDK for inline mode
   DodoPayments.Initialize({
     mode: "test",
     displayType: "inline",
     onEvent: (event) => {
       if (event.event_type === "checkout.breakdown") {
         // Update your UI with real-time tax and total calculations
         const breakdown = event.data?.message;
       }
     },
   });

   // Open checkout in a specific container
   DodoPayments.Checkout.open({
     checkoutUrl: "https://test.checkout.dodopayments.com/session/cks_123",
     elementId: "dodo-inline-checkout" // ID of the container element
   });
   ```

   ### Características Clave

   * **Eventos de desglose en tiempo real**: Recibe `checkout.breakdown` eventos mientras los clientes ingresan sus datos
   * **Resúmenes de pedidos personalizados**: Construye tu propia visualización de precios que se actualiza en tiempo real
   * **Integración fluida**: El marco de checkout gestiona la recopilación de pagos mientras tú controlas el diseño
   * **Métodos del SDK**: Usa `open()`, `close()`, y `isOpen()` para controlar el checkout de forma programática

   <Check>
     Resultado: Experiencias de checkout completamente integradas que coinciden con tu marca y brindan el máximo control sobre el flujo de pago.
   </Check>

   <Tip>
     Usa el checkout inline cuando quieras máximo control sobre el diseño del checkout. Usa [overlay checkout](/developer-resources/overlay-checkout) para una integración más rápida con cambios mínimos en las páginas existentes.
   </Tip>

   Aprende más: [Guía de Pago en Línea](/developer-resources/inline-checkout)

2. **Crear pagos, suscripciones y checkouts usando métodos de pago existentes**\
   Optimiza los flujos de checkout utilizando métodos de pago guardados de clientes existentes. El nuevo parámetro `payment_method_id` te permite crear pagos, suscripciones o sesiones de checkout usando el método de pago previamente guardado de un cliente.

   ### Beneficios

   * **Pago más rápido**: Omite la recolección de métodos de pago para clientes recurrentes
   * **Compras con un clic**: Habilita compras instantáneas con métodos de pago guardados
   * **Gestión de suscripciones**: Crea fácilmente suscripciones utilizando métodos de pago existentes
   * **Mejora de la conversión**: Reduce la fricción en el pago para clientes recurrentes

   ### Cómo Funciona

   Usa `payment_method_id` al crear sesiones de checkout, pagos o suscripciones:

   <Tabs>
     <Tab title="Checkout Sessions">
       ```javascript theme={null}
       const session = await client.checkoutSessions.create({
         product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
         customer: {
           customer_id: 'cus_123'
         },
         payment_method_id: 'pm_abc123',
         confirm: true
       });
       ```
     </Tab>

     <Tab title="One-Time Payments">
       ```javascript theme={null}
       const payment = await client.payments.create({
         product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
         customer: { customer_id: 'cus_123' },
         billing: { country: 'US' },
         payment_method_id: 'pm_abc123'
       });
       ```
     </Tab>

     <Tab title="Subscriptions">
       ```javascript theme={null}
       const subscription = await client.subscriptions.create({
         customer: { customer_id: 'cus_123' },
         billing: { country: 'US' },
         product_id: 'pdt_subscription',
         quantity: 1,
         payment_method_id: 'pm_abc123'
       });
       ```
     </Tab>
   </Tabs>

   <Warning>
     Al usar `payment_method_id` en sesiones de checkout, `confirm` debe establecerse en `true`, y se debe proporcionar un `customer_id` existente. El método de pago se validará para determinar su elegibilidad con la moneda del pago.
   </Warning>

   <Info>
     El método de pago debe pertenecer al cliente y ser compatible con la moneda del pago. Si la validación falla, la solicitud devolverá un error.
   </Info>

3. **Cambios en el Plan de Suscripción en el Panel con Actualizaciones de la Próxima Fecha de Facturación**

   Gestiona los planes de suscripción directamente desde el panel con un control mejorado. Ahora puedes cambiar los planes de suscripción y actualizar la próxima fecha de facturación en una sola acción, dándote completa flexibilidad sobre la gestión de suscripciones.

   <Frame>
     <img src="https://mintcdn.com/dodopayments/vqwKWj9TjLp0w5lS/images/changelog/subscription-plan-changes.png?fit=max&auto=format&n=vqwKWj9TjLp0w5lS&q=85&s=23d2cf888e9d70316e3a110c10bb77c6" alt="Cambios en el plan de suscripción en el panel de control" style={{ maxHeight: '500px', width: 'auto' }} width="1909" height="962" data-path="images/changelog/subscription-plan-changes.png" />
   </Frame>

   ### Características del Panel

   * **Cambios de plan**: Mejora o disminuye las suscripciones con un solo clic
   * **Control de fecha de facturación**: Actualiza la próxima fecha de facturación al cambiar de plan
   * **Opciones de prorrateo**: Elige cómo manejar el prorrateo al cambiar de plan
   * **Vista previa visual**: Ve exactamente cómo los cambios de plan afectan la facturación antes de confirmar

   ### Casos de Uso

   * **Soporte al cliente**: Ajusta rápidamente los planes de suscripción para solicitudes de clientes
   * **Mejoras promocionales**: Mejora temporalmente a los clientes con fechas de facturación específicas
   * **Migraciones de plan**: Transición suave de los clientes entre niveles de suscripción
   * **Alineación de facturación**: Alinea las fechas de facturación en múltiples suscripciones

   <Check>
     Resultado: Control completo de la gestión de suscripciones desde el panel, reduciendo la necesidad de llamadas a la API para ajustes comunes de suscripción.
   </Check>

   <Tip>
     Usa el panel para cambios rápidos de planes de suscripción, y la API para la gestión programática de suscripciones en tu aplicación.
   </Tip>

4. **Enlaces Cortos para URLs de Pago**\
   Genera enlaces de pago más limpios y compartibles con nuestra nueva función de enlace corto. Los enlaces cortos proporcionan URLs de pago acortadas con slugs personalizados, lo que facilita compartirlos con clientes o incrustarlos en tu sitio web.

   <Frame>
     <img src="https://mintcdn.com/dodopayments/vqwKWj9TjLp0w5lS/images/changelog/short-links.png?fit=max&auto=format&n=vqwKWj9TjLp0w5lS&q=85&s=c5361cb37520128513ed5e3b1111fbb1" alt="Característica de enlaces cortos para URLs de pago" style={{ maxHeight: '500px', width: 'auto' }} width="1915" height="962" data-path="images/changelog/short-links.png" />
   </Frame>

   ### Beneficios

   * **URLs más limpias**: Reemplaza largas URLs de pago con enlaces cortos y de marca
   * **Mejor confianza**: Enlaces de aspecto profesional que generan confianza en los clientes
   * **Compartición más fácil**: URLs simplificadas perfectas para SMS, correo electrónico o redes sociales
   * **Slugs personalizados**: Crea enlaces cortos memorables y de marca para tus productos

   ### Cómo Funciona

   Habilita enlaces cortos al crear sesiones de pago o enlaces de pago:

   <Tabs>
     <Tab title="Checkout Sessions">
       ```javascript theme={null}
       const session = await client.checkoutSessions.create({
         product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
         short_link: true,
         return_url: 'https://yourapp.com/success'
       });
       ```
     </Tab>

     <Tab title="Payment Links">
       ```javascript theme={null}
       const payment = await client.payments.create({
         product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
         short_link: true,
         return_url: 'https://yourapp.com/success'
       });
       ```
     </Tab>
   </Tabs>

   <Check>
     Resultado: Un enlace de pago acortado que es más fácil de compartir y tiene una apariencia más profesional, mejorando las tasas de conversión y la confianza del cliente.
   </Check>

   <Info>
     Los enlaces cortos se gestionan en tu panel y se pueden ver mediante la [List Short Links API](/api-reference/products/get-products-short-links).
   </Info>

5. **`redirect_immediately` Flag - Skip Payment Success Page**\
   Controla el flujo de checkout con la nueva bandera `redirect_immediately`. Cuando está activada, los clientes son redirigidos inmediatamente después de completar el pago, omitiendo la página de éxito predeterminada para una experiencia más rápida y fluida.

   ### Casos de Uso

   * **Flujo de pago más rápido**: Reduce la fricción al omitir páginas intermedias
   * **Páginas de éxito personalizadas**: Redirige directamente a tu página de éxito de marca
   * **Optimización móvil**: Mejora la experiencia de pago móvil con redirecciones inmediatas
   * **Pagos incrustados**: Integra sin problemas con flujos de pago en superposición o incrustados

   ### Cómo Funciona

   Habilita redirecciones inmediatas en sesiones de pago, pagos o suscripciones:

<Tabs>
  <Tab title="Checkout Sessions">
    ```javascript theme={null}
    const session = await client.checkoutSessions.create({
      product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
      feature_flags: {
        redirect_immediately: true
      },
      return_url: 'https://yourapp.com/success'
    });
    ```
  </Tab>

  <Tab title="One-Time Payments">
    ```javascript theme={null}
    const payment = await client.payments.create({
      product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
      redirect_immediately: true,
      return_url: 'https://yourapp.com/success'
    });
    ```
  </Tab>

  <Tab title="Subscriptions">
    ```javascript theme={null}
    const subscription = await client.subscriptions.create({
      customer: { customer_id: 'cus_123' },
      billing: { country: 'US' },
      product_id: 'pdt_subscription',
      quantity: 1,
      redirect_immediately: true,
      return_url: 'https://yourapp.com/success'
    });
    ```
  </Tab>
</Tabs>

<Tip>
  Usa `redirect_immediately: true` cuando tengas una página de éxito personalizada que ofrezca una mejor experiencia de usuario que la página de éxito predeterminada del pago.
</Tip>

<Note>
  Cuando `redirect_immediately` está activada, los clientes son redirigidos a tu `return_url` inmediatamente después de completar el pago, omitiendo por completo la página de éxito predeterminada.
</Note>

6. **Suscripciones Bajo Demanda - Disponibles para Todos los Negocios**\
   Las suscripciones bajo demanda ahora están habilitadas para todos los negocios, dándote control de facturación flexible para servicios basados en uso y medidos.

   ### Lo que Esto Habilita

   * **Facturación basada en uso**: Crea suscripciones y cobra a los clientes según el uso real
   * **Ciclos de facturación flexibles**: Cobra a los clientes bajo demanda en lugar de en intervalos fijos
   * **Servicios medidos**: Perfecto para uso de API, almacenamiento, tiempo de cómputo y otros recursos medidos
   * **Control manual de cargos**: Crea cargos manualmente cuando sea necesario, dándote control total sobre el momento de la facturación

   ### Cómo Funciona

   Crea una suscripción bajo demanda y cobra a los clientes según sea necesario:

   ```javascript theme={null}
   // Create an on-demand subscription
   const subscription = await client.subscriptions.create({
     customer: { customer_id: 'cus_123' },
     billing: { country: 'US' },
     product_id: 'pdt_api_access',
     quantity: 1,
     on_demand: { mandate_only: true }
   });

   // Charge the customer when usage occurs
   await client.subscriptions.charge(subscription.subscription_id, {
     product_price: 4900,
     product_currency: 'USD',
     product_description: 'API usage for September: 1,000 requests'
   });
   ```

   <Check>
     Resultado: Control total sobre cuándo y cuánto cobrar a los clientes, perfecto para modelos de negocio basados en el uso.
   </Check>

   Aprende más: [Suscripciones Bajo Demanda](/developer-resources/ondemand-subscriptions)

7. **Correcciones de Errores Generales y Mejoras**\
   Esta versión incluye mejoras de rendimiento, pulido de la interfaz de usuario y resuelve errores menores para una experiencia más confiable y fluida.
