Saltar al contenido principal

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.

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:
1

Get the checkout URL

Extract the checkout_url from the API response.
2

Redirect your customer

Direct your customer to the checkout URL to complete their purchase.
Alternative Integration Options: Instead of redirecting, you can embed the checkout directly in your page using Overlay Checkout (modal overlay) or Inline Checkout (fully embedded). Both options use the same checkout session URL.
3

Handle the return

After payment, customers are redirected to your return_url with query parameters including payment/subscription ID, status, customer email, and any license keys. See the return_url parameter docs for the full list.

Request Body

Required Fields

Essential fields needed for every checkout session

Optional Fields

Additional configuration to customize your checkout experience

Required Fields

product_cart
array
requerido
Array of products to include in the checkout session. Each product must have a valid product_id from your Dodo Payments dashboard.
Mixed Checkout: You can combine one-time payment products and subscription products in the same checkout session. This enables powerful use cases like setup fees with subscriptions, hardware bundles with SaaS, and more.
Find Your Product IDs: You can find product IDs in your Dodo Payments dashboard under Products → View Details, or by using the List Products API.

Optional Fields

Configure these fields to customize the checkout experience and add business logic to your payment flow.
customer
object
Customer information. You can either attach an existing customer using their ID or create a new customer record during checkout.
Attach an existing customer to the checkout session using their ID.
billing_address
object
Billing address information for accurate tax calculation, fraud prevention, and regulatory compliance.
When confirm is set to true, all billing address fields become required for successful session creation.
allowed_payment_method_types
array
Control which payment methods are available to customers during checkout. This helps optimize for specific markets or business requirements.Available Options: credit, debit, upi_collect, apple_pay, google_pay, amazon_pay, klarna, affirm, afterpay_clearpay, cashapp, multibanco, bancontact_card, eps, ideal, przelewy24, paypal, sunbit
Critical: Always include credit and debit as fallback options to prevent checkout failures when preferred payment methods are unavailable.
Example:
billing_currency
string
Override the default currency selection with a fixed billing currency. Uses ISO 4217 currency codes.Supported Currencies: USD, EUR, GBP, CAD, AUD, INR, and moreExample: "USD" for US Dollars, "EUR" for Euros
This field is only effective when adaptive pricing is enabled. If adaptive pricing is disabled, the product’s default currency will be used.
show_saved_payment_methods
boolean
predeterminado:"false"
Display previously saved payment methods for returning customers, improving checkout speed and user experience.
return_url
string
URL to redirect customers after payment completion. Dodo Payments appends the following query parameters to your URL on redirect:Example redirect URLs:
Use the license_key and email query parameters to display license keys or send a confirmation immediately on your return page, without needing an extra API call.
cancel_url
string
URL to redirect customers when they click the back button or cancel the checkout session. If not provided, the back button will not be displayed.
Set a cancel_url to give customers a clear way to return to your site without completing the purchase. This improves the checkout experience and reduces friction.
confirm
boolean
predeterminado:"false"
If true, finalizes all session details immediately. API will throw an error if required data is missing.
discount_codes
array
Apply one or more stacked discount codes to the checkout session. Codes are applied in array order (the first code reduces the base price, the second reduces the already-discounted price, and so on), up to a maximum of 20 codes per session.
The singular discount_code field below is deprecated but still fully supported — existing integrations continue to work without changes. It cannot be combined with discount_codes in the same request. Migrate to discount_codes when convenient to take advantage of stacking.
discount_code
string
obsoleto
Deprecated — prefer discount_codes for new integrations. This field still works for backward compatibility, but cannot be combined with discount_codes in the same request.
metadata
object
Custom key-value pairs to store additional information about the session.
force_3ds
boolean
Override merchant default 3DS behaviour for this session.
minimal_address
boolean
predeterminado:"false"
Enable minimal address collection mode. When enabled, the checkout only collects:
  • Country: Always required for tax determination
  • ZIP/Postal code: Only in regions where it’s necessary for sales tax, VAT, or GST calculation
This significantly reduces checkout friction by eliminating unnecessary form fields.
Enable minimal address for faster checkout completion. Full address collection remains available for businesses that require complete billing details.
customization
object
Customize the appearance and behavior of the checkout interface.
feature_flags
object
Configure specific features and behaviors for the checkout session.
custom_fields
array
Recoge información adicional de los clientes durante el proceso de pago con campos de formulario personalizados. Puedes definir hasta 5 campos personalizados por sesión de pago. Las respuestas de los clientes están incluidas en cargas útiles de webhook y disponibles a través de la API.
Las respuestas de los clientes a campos personalizados están incluidas en:
  • Webhooks: payment.succeeded, subscription.active y otras cargas útiles de eventos relevantes contienen el array custom_field_responses
  • Respuestas de API: Los objetos de pago y suscripción incluyen custom_field_responses
subscription_data
object
Configuración adicional para sesiones de pago que contienen productos de suscripción.

Ejemplos de Uso

Aquí tienes 10 ejemplos comprensivos que muestran diferentes configuraciones de sesiones de pago para varios escenarios de negocio:

1. Pago de Producto Único Simple

2. Carrito de Múltiples Productos

3. Suscripción con Periodo de Prueba

4. Pago Preconfirmado

Cuando confirm se establece en true, el cliente será llevado directamente a la página de pago, omitiendo cualquier paso de confirmación.

5. Pago con Anulación de Moneda

La anulación billing_currency solo tiene efecto cuando la moneda adaptable está habilitada en la configuración de tu cuenta. Si la moneda adaptable está deshabilitada, este parámetro no tendrá efecto.

6. Métodos de Pago Guardados para Clientes que Regresan

7. Pago B2B con Colección de ID Fiscal

8. Pago en Tema Oscuro con Códigos de Descuento Apilados

9. Métodos de Pago Regionales (UPI para India)

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

10. BNPL (Compra Ahora, Paga Después) Pago

Para información detallada sobre la configuración y pruebas de BNPL, consulta la página de Compra Ahora, Paga Después (BNPL).

11. Usando Métodos de Pago Existentes para Perfilado de Pago

Usa un método de pago guardado del cliente para crear una sesión de pago que procese inmediatamente, omitiendo la colección de método de pago:
Cuando uses payment_method_id, confirm debe establecerse en true y debe proporcionarse un customer_id existente. El método de pago será validado para su elegibilidad con la moneda del pago.
El método de pago debe pertenecer al cliente y ser compatible con la moneda del pago. Esto permite compras con un clic para clientes que regresan.

12. Enlaces Cortos para URLs de Pago Más Limpias

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

13. Omitir la Página de Éxito de Pago con Redirección Inmediata

Redirige a los clientes inmediatamente después de completar el pago, omitiendo la página de éxito predeterminada:
Utiliza redirect_immediately: true cuando tengas una página de éxito personalizada que proporcione una mejor experiencia de usuario que la página de éxito de pago predeterminada. Esto es especialmente útil para aplicaciones móviles y flujos de pago integrados.
Cuando redirect_immediately está habilitado, los clientes son redirigidos a tu return_url inmediatamente después de completar el pago, omitiendo completamente la página de éxito predeterminada.

14. Forzar un Idioma

Forza al pago a mostrarse en un idioma específico, sobrescribiendo la detección del idioma del navegador del cliente:
Utiliza force_language cuando sepas el idioma preferido de tu cliente (por ejemplo, desde la configuración de su cuenta) o al dirigirse a mercados regionales específicos.
Idiomas soportados: Árabe (ar), Catalán (ca), Chino (zh), Holandé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. Recolectando Campos Personalizados

Recoge información adicional de los clientes durante el proceso de pago usando campos personalizados:
Las respuestas a los campos personalizados se incluyen automáticamente en las cargas útiles de webhook (payment.succeeded, subscription.active, etc.) y se pueden recuperar a través de 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

Previsualización de Sesiones de Pago

Antes de crear una sesión de pago, puedes previsualizar el desglose de precios, incluidos impuestos, descuentos y totales. Esto es útil para mostrar precios precisos a los clientes antes de que procedan al pago.

Preview API Reference

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

Pasar de Enlaces Dinámicos a Sesiones de Pago

Principales Diferencias

Anteriormente, al crear un enlace de pago con Enlaces Dinámicos, se requería proporcionar la dirección de facturación completa del cliente. Con las Sesiones de Pago, esto ya no es necesario. Puedes simplemente pasar la información que tengas, y nosotros nos encargamos del resto. Por ejemplo:
  • Si solo conoces el país de facturación del cliente, simplemente proporciona eso.
  • El flujo de pago recopilará automáticamente los detalles faltantes antes de pasar al cliente a la página de pago.
  • Por otro lado, si ya tienes toda la información requerida y deseas pasar directamente a la página de pago, puedes pasar el conjunto de datos completo e incluir confirm=true en tu cuerpo de solicitud.

Proceso de Migración

La migración de Enlaces Dinámicos a Sesiones de Pago es sencilla:
1

Update your integration

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

Adjust request payload

Ajusta la carga útil de la solicitud según el formato de Sesiones de Pago.
3

That's it!

Sí. No se necesitan manejos adicionales o pasos especiales de migración de tu parte.

Referencia de API Relacionada

Create Checkout Session

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

Preview Checkout Session

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