Skip to main content

Quick Start Guide

Get your first checkout session running in under 5 minutes

API Reference & Live Testing

Explore the full API documentation and interactively test Checkout Session requests and responses.

Preview Checkout

Calculate pricing, taxes, and totals before creating a session.
Session Validity: Checkout sessions are valid for 24 hours by default. If you pass confirm=true in your request, the session will only be valid for 15 minutes.
Single-Use Links: The checkout_url returned by the API is not reusable and expires within 24 hours (or 15 minutes when confirm=true). It is intended for a single customer to complete one payment. Generate a fresh checkout session for each customer and each payment attempt rather than sharing or reusing a link.

Prerequisites

1

Dodo Payments Account

You’ll need an active Dodo Payments merchant account with API access.
2

API Credentials

Generate your API credentials from the Dodo Payments dashboard:
3

Products Setup

Create your products in the Dodo Payments dashboard before implementing checkout sessions.

Creating Your First Checkout Session

API Response

All methods above return the same response structure:
Solo se garantiza que esté presente session_id. En dos casos se devuelven campos adicionales o menos campos:
  • Se proporcionó payment_method_id: el cargo se procesa de inmediato y checkout_url es null. Usa en su lugar el payment_id devuelto.
  • confirm: true creó el pago al crear la sesión: la respuesta también incluye payment_id, client_secret e publishable_key para usarlos con el SDK de checkout de Dodo Payments.
El checkout_url generado es de un solo uso y caduca en un plazo de 24 horas. No lo guardes en caché ni lo reutilices entre clientes o intentos de pago; crea una nueva sesión de checkout cada vez que necesites un enlace nuevo.
1

Get the checkout URL

Extrae checkout_url de la respuesta de la API.
2

Redirect your customer

Dirige al cliente a la URL de checkout para completar su compra.
Opciones de integración alternativas: En lugar de redirigir, puedes insertar el checkout directamente en tu página mediante Overlay Checkout (superposición modal) o Inline Checkout (completamente integrado). En una aplicación móvil nativa, proporciona la misma URL a los SDK de Mobile Checkout para Android, iOS, React Native o Flutter. Todos consumen la misma URL de sesión de checkout.
3

Handle the return

Después del pago, los clientes son redirigidos a tu return_url con parámetros de consulta que incluyen el ID del pago o la suscripción, el estado, el correo electrónico del cliente y cualquier clave de licencia. Consulta la documentación de parámetros de return_url para ver la lista completa.

Cuerpo de la solicitud

Required Fields

Campos esenciales necesarios para cada sesión de checkout

Optional Fields

Configuración adicional para personalizar tu experiencia de checkout

Campos obligatorios

array
requerido
Matriz de productos que se incluirán en la sesión de checkout. Cada producto debe tener un product_id válido de tu panel de Dodo Payments.
Checkout mixto: Puedes combinar productos de pago único y productos de suscripción en la misma sesión de checkout. Esto permite casos de uso como tarifas de configuración con suscripciones, paquetes de hardware con SaaS y mucho más.
Encuentra los ID de tus productos: Puedes encontrar los ID de producto en tu panel de Dodo Payments, en Products → View Details, o mediante la API List Products.

Campos opcionales

Configura estos campos para personalizar la experiencia de checkout y añadir lógica empresarial a tu flujo de pago.
object
Información del cliente. Puedes asociar un cliente existente mediante su ID o crear un nuevo registro durante el checkout.
Asocia un cliente existente a la sesión de checkout mediante su ID.
object
Información de la dirección de facturación para calcular correctamente los impuestos, prevenir el fraude y cumplir la normativa.
Cuando confirm se establece en true, todos los campos de la dirección de facturación son obligatorios para crear correctamente la sesión.
array
Controla qué métodos de pago están disponibles para los clientes durante el checkout. Esto ayuda a optimizarlo para mercados específicos o requisitos empresariales.Opciones comunes: credit, debit, upi_collect, apple_pay, google_pay, amazon_pay, klarna, affirm, afterpay_clearpay, cashapp, ach, multibanco, bancontact_card, eps, ideal, blik, paypal. Este no es el conjunto completo; consulta la referencia de la API Create Checkout Session para ver todos los valores aceptados.
Importante: Incluye siempre credit y debit como opciones de reserva para evitar errores de checkout cuando los métodos de pago preferidos no estén disponibles.
Ejemplo:
string
Anula la selección de moneda predeterminada con una moneda de facturación fija. Usa códigos de moneda ISO 4217.Monedas compatibles: USD, EUR, GBP, CAD, AUD, INR y otrasEjemplo: "USD" para dólares estadounidenses, "EUR" para euros
Este campo solo tiene efecto cuando los precios adaptativos están habilitados. Si están deshabilitados, se usará la moneda predeterminada del producto.
boolean
predeterminado:"false"
Muestra los métodos de pago guardados anteriormente a los clientes recurrentes para mejorar la velocidad y la experiencia del checkout.
string
URL a la que se redirigirá a los clientes después de completar el pago. Dodo Payments añade los siguientes parámetros de consulta a tu URL durante la redirección:URL de redirección de ejemplo:
Usa los parámetros de consulta license_key y email para mostrar las claves de licencia o enviar inmediatamente una confirmación en tu página de retorno, sin necesidad de realizar otra llamada a la API.
string
URL a la que se redirigirá a los clientes cuando hagan clic en el botón de volver o cancelen la sesión de checkout. Si no se proporciona, el botón de volver no se mostrará.
Establece un cancel_url para ofrecer a los clientes una forma clara de volver a tu sitio sin completar la compra. Esto mejora la experiencia de checkout y reduce la fricción.
boolean
predeterminado:"false"
Si es true, finaliza inmediatamente todos los detalles de la sesión. La API generará un error si faltan datos obligatorios.
array
Aplica uno o más códigos de descuento acumulables a la sesión de checkout. Los códigos se aplican en el orden de la matriz (el primero reduce el precio base, el segundo reduce el precio ya descontado, y así sucesivamente), hasta un máximo de 20 códigos por sesión.
El campo singular discount_code que aparece a continuación 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. Migra a discount_codes cuando te resulte conveniente para aprovechar la acumulación.
string
obsoleto
Obsoleto; usa discount_codes para las integraciones nuevas. Este campo sigue funcionando por compatibilidad con versiones anteriores, pero no se puede combinar con discount_codes en la misma solicitud.
object
Pares clave-valor personalizados para almacenar información adicional sobre la sesión.
boolean
Anula el comportamiento de 3DS predeterminado del merchant para esta sesión.
boolean
predeterminado:"false"
Habilita el modo de recopilación mínima de direcciones. Cuando está habilitado, el checkout solo recopila:
  • País: Siempre obligatorio para determinar los impuestos
  • Código ZIP o postal: Solo en regiones donde sea necesario para calcular el impuesto sobre las ventas, el IVA o el GST
Esto reduce considerablemente la fricción del checkout al eliminar campos de formulario innecesarios.
Habilita la dirección mínima para completar el checkout más rápido. La recopilación de la dirección completa sigue disponible para las empresas que necesitan todos los datos de facturación.
string
Método de pago guardado perteneciente al cliente asociado. Requiere confirm: true y un customer.customer_id existente. Cuando se establece, el cargo se procesa de inmediato y checkout_url se devuelve como null; usa en su lugar el payment_id devuelto.
Si es true, devuelve una URL de checkout abreviada en lugar de la URL de sesión completa.
string
ID de la colección de productos para el flujo de checkout basado en colecciones.
string
ID fiscal del cliente (por ejemplo, un número de IVA). Requiere billing_address con un country.
string
Nombre comercial o legal opcional asociado al ID fiscal. Cuando se proporciona junto con un tax_id válido, se muestra en la factura en lugar del nombre personal del cliente.
integer
Anula el límite mínimo del mandato a nivel de merchant (en paise de INR) para los mandatos electrónicos en INR de tarjetas indias.
object
Personaliza la apariencia y el comportamiento de la interfaz de checkout.
object
Configura funciones y comportamientos específicos para la sesión de checkout.
array
Recopila información adicional de los clientes durante el checkout mediante campos de formulario personalizados. Puedes definir hasta 5 campos personalizados por sesión de checkout. Las respuestas de los clientes se incluyen en las cargas útiles de los webhooks y están disponibles mediante la API.
Las respuestas de los clientes a los campos personalizados se incluyen en:
  • Webhooks: payment.succeeded, subscription.active y otras cargas útiles de eventos relevantes contienen la matriz custom_field_responses
  • Respuestas de la API: Los objetos de pago y suscripción incluyen custom_field_responses
object
Configuración adicional para sesiones de checkout que contienen productos de suscripción.

Ejemplos de uso

Estos son 10 ejemplos completos que muestran diferentes configuraciones de sesiones de checkout para varios escenarios empresariales:

1. Checkout sencillo de un solo producto

2. Carrito con varios productos

3. Suscripción con periodo de prueba

4. Checkout preconfirmado

Cuando confirm se establece en true, el cliente accederá directamente a la página de checkout, omitiendo los pasos de confirmación.

5. Checkout con anulación de moneda

La anulación de billing_currency solo tiene efecto cuando Adaptive Currency está habilitado en la configuración de tu cuenta. Si Adaptive Currency está deshabilitado, este parámetro no tendrá ningún efecto.

6. Métodos de pago guardados para clientes recurrentes

7. Checkout B2B con recopilación del ID fiscal

8. Checkout con tema oscuro y códigos de descuento acumulables

9. Métodos de pago regionales (UPI para India)

Para obtener información detallada sobre la configuración y las pruebas de UPI, consulta la página Métodos de pago de India.

10. Checkout BNPL (compra ahora y paga después)

Para obtener información detallada sobre la configuración y las pruebas de BNPL, consulta la página Buy Now Pay Later (BNPL).

11. Uso de métodos de pago existentes para checkout instantáneo

Usa el método de pago guardado de un cliente para crear una sesión de checkout que se procese de inmediato, omitiendo la recopilación del método de pago:
Al usar payment_method_id, confirm debe establecerse en true y debe proporcionarse un customer_id existente. El método de pago se validará para comprobar su elegibilidad con la moneda del pago. Como el cargo se procesa de inmediato, checkout_url se devuelve como null; usa en su lugar el payment_id devuelto.
El método de pago debe pertenecer al cliente y ser compatible con la moneda del pago. Esto permite realizar compras con un solo clic para los clientes recurrentes.

12. Enlaces cortos para URL de pago más limpias

Genera enlaces de pago abreviados y fáciles de compartir con slugs personalizados:
Los enlaces cortos son ideales para compartir por SMS, correo electrónico o redes sociales. Son más fáciles de recordar y generan más confianza en los clientes que las URL largas.

13. Omitir la página de éxito del pago con redirección inmediata

Redirige inmediatamente a los clientes una vez completado el pago, omitiendo la página de éxito predeterminada:
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. Esto resulta especialmente útil para aplicaciones móviles y flujos de checkout integrados.
Cuando redirect_immediately está habilitado, los clientes son redirigidos a tu return_url inmediatamente después de completar el pago, omitiendo por completo la página de éxito predeterminada.

14. Forzar un idioma

Obliga al checkout a mostrarse en un idioma específico, anulando la detección del idioma del navegador del cliente:
Usa force_language cuando conozcas el idioma preferido de tu cliente (por ejemplo, a partir de la configuración de su cuenta) o cuando te dirijas a mercados regionales específicos.
Idiomas compatibles: árabe (ar), catalán (ca), chino (zh), neerlandés (nl), inglés (en), francés (fr), alemán (de), hebreo (he), indonesio (id), italiano (it), japonés (ja), coreano (ko), malayo (ms), polaco (pl), portugués (pt), rumano (ro), ruso (ru), español (es), sueco (sv), tailandés (th), turco (tr)

15. Recopilar campos personalizados

Recopila información adicional de los clientes durante el checkout mediante campos personalizados:
Las respuestas de los campos personalizados se incluyen automáticamente en las cargas útiles de los webhooks (payment.succeeded, subscription.active, etc.) y se pueden recuperar mediante la API. Úsalas para enriquecer tu CRM, activar flujos de incorporación o personalizar la experiencia del cliente.
Tipos de campo disponibles: text, number, email, url, date, dropdown, boolean

Previsualizar sesiones de checkout

Antes de crear una sesión de checkout, puedes previsualizar el desglose de precios, incluidos impuestos, descuentos y totales. Esto resulta útil para mostrar precios precisos a los clientes antes de que procedan al checkout.
Cuando el carrito contiene un producto de suscripción, la respuesta de previsualización también devuelve un next_billing_date, una previsualización de la próxima fecha de facturación, para que puedas mostrarla antes de crear la suscripción. Se calcula con respecto al momento actual: now + trial period cuando se aplica una prueba; de lo contrario, now + one payment frequency. El campo se omite en carritos exclusivamente de pago único. Es una estimación basada en el momento de la previsualización; el next_billing_date autorizado se establece cuando se activa la suscripción.
La previsualización también devuelve trial_period_days (la duración efectiva de la prueba, gratuita o de pago) e trial_amount (el cargo de prueba por unidad después de los descuentos, en las unidades menores de la moneda del precio). trial_amount solo está presente en una prueba de pago y es null en una prueba gratuita o cuando no hay prueba. Usa current_breakup para consultar el total gravado que se debe pagar hoy.

Preview API Reference

Consulta la documentación completa del endpoint de previsualización.

Diferencias clave

Anteriormente, al crear un enlace de pago con Dynamic Links, era obligatorio proporcionar la dirección de facturación completa del cliente. Con Checkout Sessions, esto ya no es necesario. Puedes transmitir simplemente la información que tengas y nosotros nos encargaremos del resto. Por ejemplo:
  • Si solo conoces el país de facturación del cliente, proporciona únicamente ese dato.
  • El flujo de checkout recopilará automáticamente los datos que falten antes de dirigir al cliente a la página de pago.
  • Por otro lado, si ya tienes toda la información necesaria y quieres ir directamente a la página de pago, puedes proporcionar el conjunto de datos completo e incluir confirm=true en el cuerpo de la solicitud.

Proceso de migración

Migrar de Dynamic Links a Checkout Sessions es sencillo:
1

Update your integration

Actualiza tu integración para usar el nuevo método de API o SDK.
2

Adjust request payload

Ajusta la carga útil de la solicitud según el formato de Checkout Sessions.
3

That's it!

Sí. No necesitas realizar ningún tratamiento adicional ni pasos especiales de migración.

Referencia de API relacionada

Create Checkout Session

Referencia completa de la API para crear sesiones de checkout con todos los parámetros y opciones disponibles

Preview Checkout Session

Referencia de la API para previsualizar precios, impuestos y totales antes de crear una sesión
Última modificación el 17 de agosto de 2026