Nomenclatura de campos
ZonaPagos usa húngaro ligero — los nombres de campos incluyen un prefijo que indica su tipo:| Prefijo | Tipo | Ejemplo |
|---|---|---|
int_ | Entero | int_id_comercio, int_estado_pago |
str_ | Cadena | str_id_pago, str_descripcion |
flt_ | Decimal | flt_total_con_iva, flt_valor_iva |
dbl_ | Decimal (en responses) | dbl_valor_pagado, dbl_total_pago |
dat_ | Fecha/hora | dat_fecha |
Aunque
flt y dbl son ambos decimales, históricamente flt_ aparece en requests y dbl_ aparece en responses. Ambos aceptan los mismos valores.Formato de valores numéricos
| Tipo | Formato | Ejemplo |
|---|---|---|
| Enteros | Sin separadores, sin decimales. | 50000 |
| Decimales | Punto como separador decimal, máximo 2 decimales. | 83000.50, 7983.00 |
| Moneda | En pesos colombianos por defecto (COP). | 50000 = $50.000 COP |
Porcentajes en AdicionalesConfiguracion | Formato propietario de 4 dígitos. Los 2 últimos son decimales. Ver abajo. | 0195 = 1.95% |
El formato de porcentaje
Algunos parámetros de cobro por transacción (50002, 50102) esperan un porcentaje en un formato no estándar:
Formato de fechas
Las fechas enVerificacionPago (campo dat_fecha dentro de str_res_pago) vienen como:
21/04/2026 14:32:10 (hora Colombia, UTC-5).
Formato de str_res_pago
El campo str_res_pago del response de VerificacionPago no es JSON — es texto plano con separadores:
- Pipe simple
|separa campos dentro de un pago. - Pipe-punto-y-coma-pipe
|;|separa pagos distintos cuando hay varios intentos. - El orden de los campos es fijo y depende del medio de pago.
Campos opcionales
Cuando un campo es opcional, puedes:- Omitirlo del JSON (recomendado).
- Enviar
null. - Enviar un string vacío
""(para campos de tipo string).
Límites de tamaño
Máximo 30 caracteres. No puede tener ceros a la izquierda (serían eliminados).
Máximo 70 caracteres.
Máximo 70 caracteres.
Máximo 30 caracteres.
Máximo 50 caracteres cada uno.
Máximo 70 caracteres cada uno.
Máximo 40 caracteres.
Máximo 50 caracteres.
Máximo 126 caracteres.
Reglas de negocio
str_id_pago único por transacción
Cada intento de pago debe usar un str_id_pago único dentro de tu comercio. Si reintenta un pago rechazado, usa un nuevo str_id_pago (puedes agregarle un sufijo: ORDEN-001-R1, ORDEN-001-R2).
int_modalidad — conocido problema de documentación
Callback del comercio
La URL de retorno se configura una sola vez al activar el comercio, o se envía dinámicamente en cada pago con el código104 de AdicionalesConfiguracion. Si envías 104, ese valor prevalece.
Próximo paso
Endpoint /InicioPago →
La referencia del primer endpoint que llamarás.