Skip to main content
POST

Headers

string
required
Token único para garantizar la idempotencia de la petición

Body

string
required
Descripción del cargo en el estado de cuenta del banco
string
required
ID del cliente que asumirá el cargo. Crear cliente.
number
required
Monto del cargo en unidades mayores de la moneda, no en centavos. Enviar 100000 con currency: "COP" cobra $100.000 COP.
Versiones anteriores de esta página decían “centavos”. Era un error de la documentación: el comportamiento del endpoint no ha cambiado. Si tu integración multiplicaba por 100 para compensar, estabas cobrando 100 veces el monto previsto.
La unidad es la misma para toda moneda y país. No la confundas con POST /customer-session/charges, que sí recibe centavos.
string
ID de la cuenta bancaria registrada. Ver creación de cuentas. Requerido si card_id está vacío.
string
ID de la tarjeta tokenizada. Conoce cómo registrar tarjetas. Requerido si account_id está vacío.
integer
Número de cuotas para el cargo. Opcional (útil para flujos VIP). Valores permitidos: 1 a 36. Valor por defecto: 1.
string
Moneda del cargo
string
URL de redirección
string
ID único de tu sistema para correlacionar el cargo con tus registros internos. Este campo te permite rastrear el cargo cuando lleguen los eventos de webhook.
  • Longitud: 1 a 100 caracteres
  • Opcional: Si no se proporciona, el campo será null
  • Aparece en: el response de creación, los webhooks charge.* bajo charge.external_id, y los webhooks wallet.transaction.created de los movimientos que genere el cobro
Este campo es útil para asociar el cargo con tu ID de factura, orden, o cualquier otro identificador de tu sistema.
array
Los pagos divididos permiten distribuir automáticamente un único pago entre múltiples destinatarios según reglas preestablecidas, optimizando la gestión de fondos sin necesidad de cálculos manuales o costos adicionales.
string
Escenario de prueba para el cargo [Opcional]. Ver escenarios de prueba
Métodos de pago permitidosEl método de pago disponible depende de la configuración de tu cuenta. Comunícate con el equipo de soporte para habilitar métodos adicionales.Solo uno de los dos (account_id o card_id) debe estar presente en la petición.

Response

La respuesta describe el cobro (payment), que es el recurso que agrupa los intentos de pago. Por eso status usa los estados de cobro (approved, pending, declined) y no los del intento (paid, failed).
string
ID del cobro. Es el que se usa en GET /charges/{id} y en DELETE /charges/{id}.
Aunque el endpoint se llame /charges, este id no es el que llega en los webhooks charge.*. Para casar la respuesta con el webhook usa charge_id.
string | null
ID del intento de pago. Es el mismo charge.id que viaja en los webhooks charge.*, así que te permite correlacionar esta respuesta con el webhook posterior sin depender del external_id.Es null mientras no exista un intento asociado.
string
ID del cliente al que se atribuye el cobro.
En modo prueba este campo devuelve el cliente de pruebas de OnePay (9940779b-533c-4406-b1f6-e0c92e8ab087, “Joe Cruz Mesa”), no el customer_id que enviaste, y el objeto customer de esta misma respuesta también es el de pruebas. Es intencional y solo ocurre en sandbox: en producción se conserva el cliente real.Para saber a qué cliente se atribuye el cobro en pruebas, usa el objeto customer del webhook charge.paid, que sí trae siempre el que enviaste.
string
El identificador de tu sistema, tal como lo enviaste.
El webhook puede llegar antes que esta respuesta. El cobro se procesa de forma síncrona, así que el webhook charge.paid suele emitirse unos segundos antes de que se cierre la petición HTTP. No construyas tu flujo asumiendo que la respuesta llega primero: trata el webhook como la fuente de verdad y usa external_id o charge_id para casarlos.