Informe técnico unificado — Pagos QR

Diagnóstico de performance, estados transaccionales y caso testigo POS 135 / sucursal 807

Fecha: 25/07/2026Audiencia: Tecnología, Desarrollo, Operaciones y SoporteClasificación: Uso interno

1. Conclusión ejecutiva

Dictamen técnico: no se encontró evidencia de una falla específica del software del POS 135 que provoque los pagos no aprobados. Cuando el pago existe, el POS 135 completa la operación con tiempos normales. En los casos analizados, el POS envió la solicitud, el Gateway la recibió y Mercado Pago aceptó la publicación de la orden QR; El Gateway continuó consultando a Mercado Pago durante casi tres minutos por cada intento y, aun así, nunca apareció un payment asociado.

La interpretación compatible con la evidencia es que el cliente no completó el pago, o que el ecosistema Mercado Pago/billetera no creó, vinculó o informó ese pago al autorizador. Desde los logs disponibles ambas situaciones producen el mismo resultado: payments=[], sin paymentid, pagador ni billetera de origen. Por eso no es posible distinguirlas de manera concluyente con la información actual.

Alcance de la trazabilidad disponible: el Gateway dejó evidencia suficiente de que consultó reiteradamente la merchant order durante aproximadamente tres minutos y que, dentro de esa ventana, no existía un pago asociado. Los logs analizados no permiten asegurar qué ocurrió después de cerrar esa ventana: un eventual pago tardío requeriría una conciliación posterior.
Aclaración importante: tampoco corresponde afirmar que Mercado Pago “rechazó” esos pagos. No hay un pago con rechazo financiero: hay una orden QR creada sin pago asociado. El estado local REFUND_DENEGADO / CANCELADO_NOEXISTE_EN_MP describe ese no-pago, aunque su nombre pueda inducir a error.

Sí existen aspectos de software para mejorar —principalmente la desalineación de timeouts, las consultas repetitivas y la forma de contabilizar los reintentos—, pero esos aspectos amplifican la demora y pueden distorsionar las métricas por intento; no explican ni demuestran la ausencia inicial del payment. Que cada nuevo intento tenga un idTrx diferente es correcto.

Tasa global julio97,61%107.310 pagos existentes / 109.938 cierres
Sucursal 807 julio95,50%Última de 28 sucursales
POS 135 julio94,72%718 aprobados / 40 no-pagos
Caso 24/07 POS13585,11%40 OK / 47 contextos MDEP
Fundamento estadístico: POS135 es el peor POS mensual entre los de volumen significativo, pero su diferencia contra POS133/134 no es estadísticamente concluyente (p=0,194). La anomalía más sólida es de sucursal807 completa frente al resto (p=0,00000030). Esto favorece investigar primero factores compartidos de sucursal, operatoria, clientela, conectividad o flujo de billeteras, no atribuir el problema al binario del POS135.

PROBADO

  • El Gateway recibe los POST.
  • Mercado Pago crea las órdenes QR: HTTP 204.
  • Los casos fallidos terminan con payments=[].
  • La búsqueda final devuelve results=[].

PROBABLE

  • Efecto compartido de sucursal.
  • Abandono o falla previa a crear el payment.
  • Timeouts y reintentos amplifican los registros.
  • Problemas de operatoria o conectividad del cliente.

NO DEMOSTRADO

  • Rechazo financiero de Mercado Pago.
  • Falla exclusiva del software POS135.
  • Incompatibilidad de una billetera específica.
  • Fraude intencional.

2. Flujo técnico observado

POSObtiene idTrx y envía pago
GatewayGuarda PAGO_ENVIADO
Mercado PagoPUT orden QR
HTTP 204
Merchant orderopened / payment_required
payments=[]
GatewayConsulta hasta 180 s
CancelaciónBusca external_reference
results=[]
Estado localREFUND_DENEGADO
Desajuste temporal: el Gateway mantiene postPayment() activo aproximadamente 180 segundos; el POS abandona la espera cerca de los 90 segundos y comienza consultas GET. Esto no crea el problema de pago inexistente, pero aumenta espera, consultas y reintentos.
ComponenteComportamientoImpacto
GatewayLoop de espera hasta 180.000 msPOST largo y ocupación de thread HTTP
POSTimeout aproximado de 90 sPasa a consultas de estado mientras el POST sigue activo
POS modificadoReconoce REFUND_DENEGADO como terminalEvita seguir consultando luego del no-pago
ReintentoCada intento sucesivo utiliza correctamente un nuevo idTrx dentro del mismo contexto MDEPNo es una falla; exige separar métricas por intento técnico y por contexto comercial

3. Reconstrucción del caso testigo — $2.029

POS135, sucursal807, un único contexto MDEP ADD:PAGO QR contuvo tres intentos técnicos sucesivos, cada uno identificado correctamente con un idTrx diferente. El reloj POS estaba aproximadamente 53–58 segundos desplazado respecto del Gateway; las correlaciones se realizaron por idTrx, no por igualdad exacta de hora.

idTrxPOST GatewayPUT QRIPN merchant orderConsultas internasCierre
202576320:24:22HTTP 20420:24:23; payments=[]3320:27:28 REFUND_DENEGADO
202580820:27:43HTTP 20420:28:46; payments=[]2620:30:52 REFUND_DENEGADO
202585120:31:17HTTP 20420:32:20; payments=[]2620:34:25 REFUND_DENEGADO
Orden publicada. Las tres llamadas QR_PAGO respondieron HTTP 204 en menos de un segundo.
IPN recibido. Informó merchant order válida, pero sin payments.
Espera. El Gateway consultó repetidamente la orden durante casi tres minutos por intento: 33 consultas entre 20:24:29 y 20:27:27; 26 entre 20:28:01 y 20:30:51; y 26 entre 20:31:35 y 20:34:24. Nunca apareció paymentid, payer ni originwalletid.
Timeout. Cada POST terminó HTTP 400 aproximadamente a los 182,5 segundos.
Verificación final. La búsqueda por external_reference devolvió results=[].
Clasificación. El scheduler grabó REFUND_DENEGADO / CANCELADO_NOEXISTE_EN_MP.
Conclusión del caso: durante la ventana observada no se recibió una aprobación. Tras casi tres minutos de consultas, Mercado Pago seguía sin informar un payment para ninguno de los tres external_reference. Los logs relevados no determinan si pudo aparecer un pago tardío después del cierre. El archivo GatewayMP.log.2026-07-24.9 rota antes del cierre del tercer intento; su REFUND_DENEGADO se encuentra en .10.

4. Comparación operativa del 24/07/2026

Ranking homogéneo por idTrx POST único. Se excluyen las consultas GET del denominador.

SucursalPOSPOST/idTrxOKNo-pagoAprobaciónGET excluidosMediana OK (s)P90 OK (s)
80713318180100.00%7923.0551.57
4014112111199.11%48720.1958.33
40177574198.67%33020.3447.85
4019113111298.23%48819.9158.80
40168885396.59%41419.9148.21
4015112108496.43%50419.7049.63
8071344442295.45%19419.7641.64
40185954591.53%43125.5773.80
40208981891.01%64025.3765.28
80713553401375.47%52720.2337.94
Sucursal4096,30%624/648; 3.294 GET excluidos
Sucursal807 bruto86,96%100/115; 800 GET excluidos
Sucursal807 por contexto91,74%100/109 contextos ajustados
POS135 por contexto85,11%40/47; siete contextos sin aprobación

5. Resumen transaccional de julio

Estados recibidos

EstadoAcción interpretadaCantidadUso en tasa
PAGO_APROBADOPago existente y aprobado107.295Numerador
REFUND_APROBADOPago existió y luego fue devuelto15Numerador
REFUND_DENEGADOCANCELADO_NOEXISTE_EN_MP2.628Denominador / no-pago
OBTENCIONIDTRXEstado no terminal45Excluido
PAGO_ENVIADOEstado no terminal6Excluido
Total terminal109.938Tasa global 97,61%

POS con menor aprobación — n ≥ 100

#SucursalPOSPagos existentesNo-pagosTotalAprobaciónIC 95%
18071357184075894,72%92,89%–96,10%
212147109611594,78%89,08%–97,59%
352256110611694,83%89,17%–97,61%
450724832350695,45%93,27%–96,95%
58071332531226595,47%92,25%–97,39%
680287107511295,54%89,97%–98,08%
731813991841795,68%93,28%–97,25%
8121483331534895,69%93,01%–97,37%
950734602048095,83%93,65%–97,29%
1048897833481795,84%94,24%–97,01%
11522512601127195,94%92,88%–97,72%
1240201.286541.34095,97%94,78%–96,90%
137794111742896,03%93,73%–97,51%
14142115832460796,05%94,18%–97,33%
158061844431746096,30%94,16%–97,68%
16221726782670496,31%94,64%–97,47%
17221743701438496,35%93,97%–97,82%
188071346412466596,39%94,69%–97,56%
195221107411196,40%91,10%–98,59%
2037984301644696,41%94,25%–97,78%

Sucursales con menor aprobación

#SucursalPOS relevadosPagos existentesNo-pagosTotalAprobación
180731.612761.68895,50%
22241.885661.95196,62%
34852.585872.67296,74%
480631.200401.24096,77%
55083.3761093.48596,87%
61252.322722.39496,99%
73793.195983.29397,02%
81341.467441.51197,09%
95563.8231133.93697,13%
1080241.111321.14397,20%
11743.059873.14697,23%
121431.883511.93497,36%

Detalle sucursal807

POSPagos existentesNo-pagosTotalAprobación
1357184075894,72%
1332531226595,47%
1346412466596,39%
Total1.612761.68895,50%
Límite del dataset mensual: no contiene idTrx, fecha/hora ni contexto MDEP. No permite deduplicar reintentos técnicos. La tasa mensual es por registros transaccionales, no por clientes, tickets o intentos humanos únicos.

6. Evaluación causal

HipótesisEvidencia a favorEvidencia en contra / límitePrioridad
Efecto sucursal / operatoria / clientelaSucursal807 completa es la peor; diferencia significativaFalta segmentar por cajero, hora y contextoALTA
Abandono o falla de billetera antes de crear paymentpayments=[], payer y originwallet nulosSin payment no puede identificarse la billeteraALTA
Timeout desalineado y métrica por intentoEl POS abandona el POST cerca de 90 s mientras el Gateway continúa hasta 180 s; un mismo contexto MDEP puede contener intentos sucesivos, cada uno con su idTrxUsar un idTrx distinto por intento es correcto; sólo puede aumentar la demora y distorsionar comparaciones si se mezclan intentos con contextosALTA
Falla exclusiva POS135Peor tasa bruta mensualNo difiere significativamente de sus pares 807MEDIA
Billeteras externas incompatiblesPosible falla previa al paymentPOS135 tiene aprobaciones interoperables; fallos sin wallet identificableMEDIA
Numeración CAEA repetidaDefecto real de trazabilidadGateway correlaciona por external_reference=idTrxDESCARTADA COMO CAUSA QR
Host HTTP o pérdida POS→GatewayHipótesis originalLos POST llegaron y los PUT QR respondieron 204DESCARTADA EN EL CASO
FraudePosible intento de mostrar comprobante falsoNo hay payer, identidad ni liberación de mercadería sin OKNO DEMOSTRADA
Interpretación recomendada: no reportar estos eventos como “Mercado Pago rechazó”. Clasificarlos como “orden QR creada sin payment asociado”.

7. Plan de acción para Tecnología y Desarrollo

Prioridad 1 — observabilidad y semántica

  1. Agregar un payment_context_id estable por MDEP/ticket y un attempt_number por idTrx.
  2. Diferenciar métricas: orden creada, payment creado, aprobado, no encontrado, cancelado y refund real.
  3. Exponer al POS un estado semántico PAGO_NO_ENCONTRADO; mantener REFUND_DENEGADO sólo por compatibilidad interna.
  4. Registrar sucursal, POS, cajero, versión POS, timestamps POS/Gateway, merchantorderid, paymentid y originwallet cuando exista.
  5. Agregar una conciliación diferida de merchant orders cerradas sin payment, por ejemplo a +5, +15 y +60 minutos, para detectar pagos tardíos y prevenir diferencias de caja.

Prioridad 2 — alinear timeouts

  1. Evitar que el endpoint POST permanezca bloqueado 180 s. Alternativa recomendada: devolver aceptación temprana y resolver por polling/callback.
  2. Si se conserva el modelo sincrónico, el timeout del POS debe ser mayor que el del Gateway y existir un único responsable del polling.
  3. Registrar si el siguiente intento fue iniciado por el cajero o automáticamente. Si actualmente es automático, solicitar confirmación antes de iniciar otro intento con un nuevo idTrx.

Prioridad 3 — prueba controlada

  1. Ejecutar pagos identificados en POS133, 134 y 135 usando Mercado Pago, MODO, Naranja X, Personal Pay y dos apps bancarias.
  2. Registrar escaneo, pantalla mostrada, confirmación, paymentid, IPN y resultado final.
  3. Repetir en distintas ubicaciones del local para separar conectividad celular de software.
  4. Comparar versiones POS sobre el mismo hardware y profile.

Prioridad 4 — control operativo y fraude

  1. Analizar tasa por cajero, franja horaria e importe.
  2. Auditar tickets o mercadería liberada sin PAGO_APROBADO.
  3. Consultar video solamente en operaciones con override o diferencia económica; no usar REFUND_DENEGADO como indicador automático de fraude.
Criterio de cierre: contar contextos únicos, identificar si el cliente llegó a crear payment y reducir la diferencia de sucursal807 frente al promedio sin aumentar cobros duplicados.

8. Fuentes y trazabilidad

Definición de tasa mensual: (PAGO_APROBADO + REFUND_APROBADO) / (PAGO_APROBADO + REFUND_APROBADO + REFUND_DENEGADO). Estados no terminales excluidos.