Skip to main content

Un endpoint, múltiples métodos de pago

Todos los débitos automáticos se ejecutan con POST /charges. Lo que cambia es cómo capturas y autorizas el método de pago antes de cobrar.
Todos los métodos requieren authorization: true al momento de registrar el medio de pago. Sin esto, no podrás crear cargos.

Débito con tarjeta de crédito/débito

Hay dos formas de capturar los datos de la tarjeta:

Opción A: SDK Elements (recomendado)

El SDK Elements captura los datos sensibles en un iframe seguro y te devuelve un card_token. Tu servidor nunca toca los datos de la tarjeta, lo que simplifica el cumplimiento PCI DSS. Paso 1: Tokenizar en el frontend Integra el SDK Elements en tu página de captura. Consulta la guía de integración para el setup completo. Paso 2: Registrar la tarjeta tokenizada
Paso 3: Crear el cargo

Opción B: API directa (requiere PCI DSS)

Si tu empresa cumple con PCI DSS, puedes enviar los datos de tarjeta directamente a la API.
Este endpoint usa un dominio diferente: https://cards.onepay.la/v1/cards. Esto se implementa mediante un proxy para garantizar el cumplimiento PCI DSS.
Luego crea el cargo con POST /charges igual que en la Opción A.

Respuesta de la tarjeta

Si action.action no es "NULL", la tarjeta requiere autenticación 3D Secure. Redirige al cliente a la URL en action.next para completar la verificación.

Débito con cuenta bancaria (ACH)

Los débitos a cuentas bancarias se procesan mediante ACH (Cámara de Compensación Automatizada). El procesamiento no es inmediato: los fondos se acreditan el siguiente día hábil.

Tiempos de procesamiento

Los cargos ACH enviados después del horario de corte se procesan al segundo día hábil siguiente. Los fines de semana y festivos no cuentan como días hábiles.

Flujo completo

Paso 1: Consultar bancos disponibles
Paso 2: Registrar la cuenta bancaria
Tipos de cuenta (subtype): Paso 3: Crear el cargo
Paso 4: Esperar confirmación El cargo queda en estado pending hasta que ACH procese el débito. Recibirás un webhook con el resultado:

Débito con billeteras digitales (Nequi / Daviplata)

Las billeteras digitales requieren que el cliente autorice la vinculación desde su app bancaria antes de poder debitar. A diferencia de ACH, el procesamiento es inmediato.
El cliente debe tener la app de Nequi o Daviplata instalada y activa. Si no completa la autorización, la cuenta quedará en estado PENDING y no podrás crear cargos.

Nequi: Autorización en la app

El cliente debe aprobar la vinculación directamente en la app de Nequi. No se requiere OTP.
1

Crear la cuenta Nequi

El account_number es el número de celular registrado en Nequi (sin prefijo +57).
2

El cliente autoriza en Nequi

Muestra instrucciones al cliente:
  1. Abre la app de Nequi
  2. Busca la notificación de autorización de débito automático
  3. Aprueba la vinculación
El cliente recibirá una notificación push en la app de Nequi.
3

Validar la cuenta

Una vez que el cliente autoriza en Nequi, valida la cuenta. Para Nequi no se requiere OTP.
4

Crear el cargo

Con la cuenta en estado ACTIVE, puedes debitar:

Daviplata: Validación con OTP

Daviplata requiere que el cliente ingrese un código OTP recibido por SMS para completar la vinculación.
1

Crear la cuenta Daviplata

El account_number es el número de celular registrado en Daviplata (sin prefijo +57).
2

El cliente recibe el OTP

Daviplata envía un SMS con un código de 6 dígitos al número del cliente. Muestra un campo en tu interfaz para que el cliente ingrese el código.
3

Validar la cuenta con OTP

4

Crear el cargo

Con la cuenta validada, puedes debitar:

Estados de la cuenta

Después de crear una cuenta, pasa por estos estados antes de poder debitar:

Comparación rápida

Errores comunes

Webhooks relevantes