Saltar al contenido principal
Página de pago
La pasarela de pago de Dodo Payments está optimizada para la conversión y cumple con normativas globales, diseñada para productos digitales y empresas SaaS. Admite múltiples divisas, idiomas, impuestos, descuentos, complementos y flujos de cumplimiento orientados a negocios.

Checkout Sessions API

Crea sesiones de pago alojadas de forma programática.

Preview Checkout

Calcula precios e impuestos antes de crear una sesión.

Payment Methods

Métodos de pago admitidos y opciones de configuración.

Moneda Adaptativa

La Moneda Adaptativa permite a los clientes pagar en su moneda local preferida, mejorando la confianza y las tasas de conversión.

Cómo Funciona

  1. Habilitar: Activa la Moneda Adaptativa desde Configuración → Negocio
  2. Seleccionar: Los clientes pueden cambiar de moneda directamente en el pago
  3. Convertir: Los precios se convierten dinámicamente usando tasas de cambio en tiempo real
  4. Mostrar: La cantidad final a pagar se muestra de forma transparente antes del pago
Selector de moneda en el pago

Adaptive Currency

Obtén más información sobre las divisas compatibles, las tarifas de conversión y el manejo de reembolsos.

Pago en Múltiples Idiomas

Dodo Payments soporta múltiples idiomas en la página de pago, permitiendo a los clientes completar pagos en un idioma con el que se sientan cómodos.
Selector de idioma en el pago

Puntos Clave

  • Selector de idioma disponible directamente en el pago
  • Texto de la interfaz, etiquetas y mensajes del sistema están localizados
  • Mejora la accesibilidad y la conversión internacional

Idiomas Soportados

La página de pago admite 21 idiomas:
IdiomaCódigo
Árabear
Catalánca
Chinozh
Neerlandésnl
Inglésen
Francésfr
Alemánde
Hebreohe
Indonesioid
Italianoit
Japonésja
Coreanoko
Malayoms
Polacopl
Portuguéspt
Rumanoro
Rusoru
Españoles
Suecosv
Tailandésth
Turcotr
Puedes forzar un idioma específico en el checkout configurando el parámetro force_language al crear una sesión de checkout. Consulta la API de sesiones de checkout para más detalles.

Cálculo automático de impuestos

Los impuestos se calculan automáticamente en función de la ubicación de facturación del cliente, garantizando el cumplimiento de los requisitos de GST, IVA e impuestos sobre las ventas sin configuración manual.

Cómo funciona el cálculo de impuestos

1

Location Detection

Las reglas fiscales se aplican según el país del cliente (y la región cuando corresponde).
2

Dynamic Updates

El monto del impuesto se actualiza automáticamente cuando:
  • Cambia el país
  • Se actualiza la dirección
3

Transparent Display

El desglose final de impuestos se muestra claramente antes del pago.
El cálculo de impuestos está totalmente automatizado. No se requiere configuración manual para bienes digitales estándar y productos SaaS.

Soporte para identificaciones fiscales de empresas

Para empresas registradas, el checkout permite que los clientes ingresen su identificación fiscal empresarial (por ejemplo, número de IVA/GST).

Qué sucede cuando se ingresa una identificación fiscal

  • Se valida la elegibilidad fiscal en tiempo real
  • Se aplican exenciones de impuestos o reglas de inversión del sujeto pasivo según corresponda
  • El monto del impuesto se actualiza instantáneamente en el checkout
Entrada de ID de impuesto de negocio en el pago
Esto es especialmente útil para SaaS B2B y servicios digitales donde los clientes empresariales pueden ser elegibles para exenciones fiscales.

Códigos de descuento

Los clientes pueden aplicar códigos de descuento o promocionales que hayas creado en el panel directamente en la página de checkout.

Experiencia en el checkout

  1. El cliente introduce el código de descuento
  2. El descuento se valida al instante
  3. El precio actualizado y los ahorros se muestran claramente
Entrada de código de descuento en el pago

Integración con la API

Pre-aplica uno o más códigos de descuento apilados o habilita el campo de entrada de descuento:
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  discount_codes: ['WELCOME20'], // Pre-apply one or more codes (max 20, applied in order)
  feature_flags: {
    allow_discount_code: true // Show discount input field
  },
  return_url: 'https://yoursite.com/return'
});
discount_codes acepta un array de hasta 20 códigos que se apilan en orden. El campo singular discount_code está obsoleto pero aún funciona; las integraciones existentes no necesitan cambiar de inmediato. Migra a discount_codes cuando sea conveniente para usar apilamiento y la forma de respuesta más rica.

Discount Codes

Aprende cómo crear y gestionar códigos de descuento.

Validate Discount by Code

Busca y valida descuentos usando nombres de código.

Recolección de Direcciones Inteligente

El proceso de pago soporta la entrada flexible de direcciones para una finalización más rápida.

Opciones Disponibles

OpciónDescripción
Autocompletar Dirección de GoogleSelección rápida con autocompletar
Entrada ManualControl total para direcciones completas
Selección de PaísImpulsa la lógica de impuestos y cumplimiento
La recolección de direcciones equilibra velocidad, precisión y cobertura global para maximizar la conversión mientras asegura el cumplimiento.

Recolección de Números de Teléfono

Controla si aparece el campo de número de teléfono en el proceso de pago — y si es obligatorio — usando las banderas de características de la sesión de pago.
FlagPredeterminadoComportamiento
allow_phone_number_collectiontrueMuestra el campo de número de teléfono en el formulario de pago
require_phone_numberfalseHace que el campo de número de teléfono sea obligatorio (la validación del formulario exige un valor no vacío)
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  feature_flags: {
    allow_phone_number_collection: true,
    require_phone_number: true
  },
  return_url: 'https://yoursite.com/return'
});
require_phone_number: true requiere allow_phone_number_collection: true. La API rechaza sesiones donde la recolección de teléfono está deshabilitada mientras que el número de teléfono es obligatorio.
Usa require_phone_number para SaaS B2B, industrias reguladas o cualquier flujo donde necesites un canal de contacto verificado para soporte, revisión de fraudes o cumplimiento.

Campos Personalizados

Recoge información adicional de los clientes durante el pago definiendo campos personalizados de formulario. Esto es útil para recopilar datos como nombre de la empresa, tamaño del equipo, fuente de referencia o cualquier otra información específica del negocio.

Tipos de Campo Disponibles

TipoDescripción
textEntrada de texto de una línea
numberEntrada numérica
emailDirección de correo electrónico con validación
urlURL con validación
dateSelector de fecha
dropdownSelección de opciones predefinidas
booleanAlternar Sí/No

Ejemplo

const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  custom_fields: [
    {
      key: 'company_name',
      label: 'Company Name',
      field_type: 'text',
      required: true
    },
    {
      key: 'team_size',
      label: 'Team Size',
      field_type: 'dropdown',
      required: true,
      options: ['1-10', '11-50', '51-200', '200+']
    }
  ],
  return_url: 'https://yoursite.com/return'
});
Las respuestas de los clientes se incluyen automáticamente en las cargas útiles de webhook (payment.succeeded, subscription.active) y en las respuestas de la API a través del array custom_field_responses. Puedes definir hasta 5 campos personalizados por sesión de pago.

Custom Fields Guide

Aprende más sobre la configuración de campos personalizados y el acceso a las respuestas.

Política de Privacidad y Aceptación de Términos

Para asegurar la transparencia legal y de cumplimiento:
Esto ayuda a cumplir con los requisitos mundiales de protección al consumidor y privacidad de datos, incluida la conformidad con el GDPR.

Proceso de Pago de Colección

Las colecciones de productos permiten una experiencia de pago unificada donde los clientes pueden ver y seleccionar entre múltiples productos relacionados (por ejemplo, planes Starter, Pro, Enterprise) en un solo pago.

Cómo Funciona

  1. Todos los productos mostrados: Los clientes ven cada producto activo en la colección
  2. Primer producto preseleccionado: El primer producto en la colección se selecciona automáticamente
  3. Comparar opciones: Los clientes pueden comparar precios y características antes de elegir
  4. Selección única: Después de seleccionar un producto, el proceso de pago continúa con el flujo de pago estándar

Creando un Proceso de Pago de Colección

const session = await client.checkoutSessions.create({
  product_collection_id: 'pdc_abc123',
  product_cart: [], // Required: pass an empty array for collection checkout
  return_url: 'https://yoursite.com/return'
});
Cuando uses product_collection_id, proporciona un array product_cart vacío. Los códigos de descuento no pueden ser pre-aplicados en la creación de la sesión.

Product Collections

Aprende cómo crear y gestionar colecciones de productos para experiencias de pago unificadas.

Configuración de la Sesión de Pago

Controla el comportamiento del pago usando la API de Sesiones de Pago:
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  customer: {
    email: 'customer@example.com',
    name: 'Jane Doe'
  },
  billing_currency: 'EUR', // Set specific currency
  discount_codes: ['PROMO10'],
  feature_flags: {
    allow_discount_code: true
  },
  return_url: 'https://yoursite.com/return',
  cancel_url: 'https://yoursite.com/pricing', // Optional: where to redirect on cancel
  metadata: {
    order_ref: 'ORD-12345'
  }
});
Después del pago, los clientes son redirigidos a tu return_url con parámetros de consulta añadidos automáticamente, incluyendo payment_id o subscription_id, status, email, y license_key (si corresponde). Consulta la guía de Sesiones de Pago para la lista completa.

Checkout Sessions API

Referencia completa de la API para sesiones de pago.

Checkout Integration Guide

Guía paso a paso para integrar el pago.

Personalización del Tema del Pago

Personaliza la apariencia de la página de pago para que coincida con tu marca usando el parámetro customization.theme_config al crear una sesión de pago a través de la API. Configura colores, fuentes, radio de bordes y texto del botón para modos claro y oscuro.
Página de pago con tema personalizado

Design & Theme Customization

Configura temas visualmente desde el panel con temas preconstruidos, tipografía, colores y vista previa en vivo.
Esta sección cubre la configuración de temas del API del lado del servidor usando customization.theme_config. Si estás usando el Checkout SDK (pago en overlay o inline), consulta las secciones de personalización de temas en Overlay Checkout o Inline Checkout que utilizan propiedades en camelCase (por ejemplo, bgPrimary en lugar de bg_primary).

Opciones de Configuración de Tema

PropiedadDescripción
lightConfiguración de color para modo claro
darkConfiguración de color para modo oscuro
font_primary_urlURL para la fuente primaria
font_secondary_urlURL para la fuente secundaria
font_sizeTamaño de fuente: xs, sm, md, lg, xl, 2xl
font_weightPeso de fuente: normal, medium, bold, extraBold
radiusRadio de borde para elementos UI (por ejemplo, 4px, 0.5rem, 8px)
pay_button_textTexto personalizado para el botón de pago (por ejemplo, “Completar Compra”, “Suscribirse Ahora”)

Configuración de Colores (Modo Claro/Oscuro)

Cada modo (light e dark) soporta las siguientes propiedades de color:
PropiedadDescripción
bg_primaryColor de fondo primario
bg_secondaryColor de fondo secundario
text_primaryColor de texto primario
text_secondaryColor de texto secundario
text_placeholderColor de texto de marcador de posición
text_errorColor de texto de error
text_successColor de texto de éxito
border_primaryColor de borde primario
border_secondaryColor de borde secundario
button_primaryColor de fondo del botón primario
button_primary_hoverColor de hover del botón primario
button_secondaryColor de fondo del botón secundario
button_secondary_hoverColor de hover del botón secundario
button_text_primaryColor de texto del botón primario
button_text_secondaryColor de texto del botón secundario
input_focus_borderColor del borde del enfoque de entrada
Todos los campos de color aceptan formatos de color CSS estándar:
  • Hex: #fff, #ffffff, #ffffffff
  • RGB/RGBA: rgb(255, 255, 255), rgba(255, 255, 255, 0.5)
  • HSL/HSLA: hsl(120, 100%, 50%), hsla(120, 100%, 50%, 0.5)
  • Colores nombrados: red, blue, transparent

Ejemplo

const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  customization: {
    theme_config: {
      // Custom fonts
      font_primary_url: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap',
      font_size: 'md',
      font_weight: 'medium',
      radius: '8px',
      pay_button_text: 'Complete Purchase',
      
      // Light mode colors
      light: {
        bg_primary: '#ffffff',
        bg_secondary: '#f5f5f5',
        text_primary: '#1a1a1a',
        text_secondary: '#666666',
        button_primary: '#0066ff',
        button_primary_hover: '#0052cc',
        button_text_primary: '#ffffff',
        border_primary: '#e0e0e0'
      },
      
      // Dark mode colors
      dark: {
        bg_primary: '#1a1a1a',
        bg_secondary: '#2d2d2d',
        text_primary: '#ffffff',
        text_secondary: '#a0a0a0',
        button_primary: '#3385ff',
        button_primary_hover: '#4d99ff',
        button_text_primary: '#ffffff',
        border_primary: '#404040'
      }
    }
  },
  return_url: 'https://yoursite.com/return'
});
No necesitas especificar todas las propiedades de color. Cualquier propiedad no especificada usará los valores predeterminados del tema.
Last modified on May 22, 2026