Antes de la entrega de su matriz de pruebas

📘

Este documento es completo por sí solo

Reúne todo lo que la certificación evalúa, de modo que no necesitará ningún otro material para prepararse. Si dispone de poco tiempo, el último apartado concentra lo que con mayor frecuencia obliga a repetir una prueba o a reabrir un punto, y le sugerimos leerlo antes de comenzar. Cuando NetPay le entregue su matriz de pruebas, todo esto le llegará ya filtrado para su integración, y a partir de ese momento el documento que le corresponderá es Siguientes pasos tras recibir su matriz de pruebas.

Forma parte de la Guía de Certificación de Integración NetPay.


1. El alcance se ajusta a su integración

No todos los comercios certifican lo mismo. El alcance se define con tres datos: cómo integró, qué APIs adicionales utiliza y con qué marca de terminal trabaja. A partir de ellos se determinan las preguntas que deberá responder y los escenarios que deberá ejecutar.

Identificación de su modalidad

NetPay identifica cada modalidad con un nombre técnico. A continuación se describen en lenguaje natural, para que pueda ubicar la que corresponde a su implementación:

Descripción de su implementaciónCómo se denomina
La terminal opera en red y su sistema le envía la venta por internet; la respuesta se recibe en su webhook.API
Equivalente a la anterior, con la diferencia de que el comercio registra sus propias URLs de OAuth.API-Oauth-1.0 o API-Oauth-2.0
Equivalente a API, con la particularidad de que una misma terminal opera con varios StoreId de un mismo grupo.API (con Smart Accounts)
La terminal se conecta por cable USB a un punto de venta Windows, a través de la DLL.COM
Equivalente a la anterior, e incluye además el retiro de efectivo durante la venta.COM (con cashback)
El comercio desarrolló su propia aplicación Android, que se ejecuta dentro de la terminal.SDK
Su aplicación se ejecuta en una terminal IM30, orientada a autoservicio y vending.SDK (con MDB IM30)
Realiza una preautorización (check-in) y posteriormente cierra el monto final (check-out). El cierre siempre se efectúa por API; la variante depende del canal por el que se realiza el check-in.checkinAPI-checkoutAPI, checkinSDK-checkoutAPI o checkinCOM-checkoutAPI

Las APIs adicionales

Puede utilizar más de una. Cada una añade escenarios concretos a su certificación:

API adicionalQué añade
NingunaSolo el flujo de venta.
Print-TicketLas consultas de Print-Ticket que acompañan a otros bloques de pruebas.
Devoluciones-PrintTicketEl bloque completo de devoluciones: devolución total, parcial, sus Print-Ticket y el escenario de error. Las devoluciones requieren Print-Ticket de forma obligatoria.
CheckoutSe conserva por compatibilidad. El cierre de check-out se determina por el tipo de integración, no por esta opción.

La marca de la terminal

Pax, Urovo o Kozen. Conviene conocer el alcance real de cada una:

  • Pax es la marca con mayor cobertura: prácticamente todos los escenarios existen para ella.
  • Urovo cubre un conjunto más acotado, centrado en venta, promociones, reimpresiones y reversos, e incorpora escenarios propios como la validación de reversos en CoreX.
  • Kozen es una integración reciente y todavía no tiene escenarios definidos. Si su terminal es de esta marca, le sugerimos acordar el alcance de las pruebas con el equipo de integraciones antes de la sesión.
⚠️

Esta guía describe el comportamiento de las terminales Pax

Tanto la documentación publicada como los escenarios de prueba se construyeron sobre terminales Pax, que es la marca con mayor cobertura y sobre la que se apoya la mayoría de las integraciones. En Urovo y en Kozen, algunos flujos —de forma señalada el de reversos— pueden comportarse de manera distinta: cambian los mensajes en pantalla, los tiempos o los valores devueltos. Si su terminal es de alguna de estas dos marcas, le sugerimos confirmar por correo con el equipo de integraciones las diferencias que apliquen a su modelo antes de ejecutar las pruebas.


2. Material que debe preparar

Le recomendamos reunir los siguientes elementos antes de comenzar. Su ausencia es la causa más frecuente de retraso en una certificación.

La terminal de pruebas

La solicita su asesor comercial o distribuidor de NetPay, no el equipo de integraciones, y debe entregarse en modo de pruebas.

La configuración exacta no es única: depende del modelo, de la marca, de la versión del procesador de pagos y del tipo de integración, y la combinación varía de un caso a otro. Por eso el equipo de integraciones indica en cada solicitud qué versiones corresponden. En términos generales, al recibir la terminal conviene tener identificado y confirmado lo siguiente:

  • El modelo y la marca del equipo.
  • La versión de Smart PinPad instalada.
  • La versión de la aplicación de soporte y del launcher.
  • Los servicios de Google instalados, cuando el tipo de integración lo requiera.
  • Si la terminal debe entregarse en modo debug, como ocurre en las integraciones por SDK.

La terminal no debe tener instalada la App de Pagos

Es el error de configuración que con más frecuencia impide iniciar una certificación. Si la terminal llega con la App de Pagos instalada, o con versiones distintas de las indicadas para su caso, le sugerimos reportarlo con su asesor comercial o distribuidor sobre el mismo ticket en el que se solicitó, para que el área de almacén de NetPay pueda revisarlo. Una vez recibida la terminal, es recomendable contactar al equipo de integraciones para verificar que la configuración sea la correcta antes de comenzar.

Credenciales de prueba

Las credenciales de acceso a la aplicación Smart PinPad Dev y las de generación del token no se publican en la documentación. Por política de seguridad, el equipo de integraciones las envía por correo únicamente a los prospectos que han seguido el proceso comercial correspondiente. Si aún no las ha recibido, puede solicitarlas por ese mismo medio.

Material complementario

ElementoDetalle
StoreId de pruebasEl o los StoreId asignados. Cada uno tiene un propósito: base, factura, fraude, CheckIO, Smart Accounts.
Tarjetas físicasDébito con NIP, crédito con NIP, una tarjeta sin NIP para firma autógrafa, contactless VISA y contactless MASTERCARD.
Tarjetas de cashbackÚnicamente si aplica, con alguno de los BINes autorizados.
Datos del proyectoLenguaje o framework de frontend y de backend, IDE, nombre y versión de su sistema, packageName, versión mínima y máxima de Android, o versión de .NET Framework y arquitectura de Windows. En integraciones por COM, la versión de .NET Framework debe ser 3.5 o superior.
Número de serie de la terminalSe encuentra en la parte inferior trasera del equipo. Es el dato que el equipo de integraciones solicita en primer lugar ante cualquier consulta de soporte.

Ambiente: las pruebas se ejecutan en el ambiente de PRUEBAS. Su sistema debe poder alternar entre los ambientes de pruebas y producción mediante configuración (URL base, path y body del token), sin necesidad de recompilar.

⚠️

Sobre el NIP durante las pruebas

Siguiendo la documentación, ningún cobro del ambiente de pruebas es real y no se genera cargo alguno a las tarjetas utilizadas. El NIP es la única excepción: se valida directamente con el banco emisor, por lo que debe ingresarse correctamente. Tres o más intentos incorrectos pueden ocasionar el bloqueo de la tarjeta.


3. La documentación de referencia, por canal

La mayor parte de lo que la certificación evalúa ya se encuentra documentada. Dado que la documentación está organizada por canal, esta guía mantiene la misma separación: le sugerimos consultar únicamente la pestaña correspondiente a su implementación. Una integración por SDK no configura una URL de regreso, y una integración por API no compila una aplicación para la terminal.

Si alguna de sus respuestas no coincide con lo indicado en la página correspondiente, es probable que ese punto se reabra durante la revisión.

Este es el orden de lectura que sigue el equipo de integraciones al entregar la documentación:

#TemaPágina
1Panorama de la integración por APIIntroducción
2Configurar la terminal y la URL de regresoConfiguración inicial de la terminal — incluye los certificados SSL: ISRG ROOT X1 no funciona en Android 7 o inferior
3Generar el token de accesoAutorización y generación de token
4Enviar una venta y sus camposVenta
5Cancelar una ventaCancelación — el límite es a las 20:00, hora de Ciudad de México, del mismo día
6Reimprimir por orderIdReimpresión por orderId
7Reimprimir por folioReimpresión por folio
8Recibir la respuesta en su webhookRecibiendo la respuesta — su webhook debe responder HTTP 200 con {"code":"00","message":"Recibido"}, o la terminal dejará de recibir transacciones
9Recuperar una venta que no llegó a su sistemaRecuperación de información no entregada
10ReversosManejo de reversos por integración API
11Check-in y check-out por API (si aplica)Integración Checkin API / Checkout API

Si su integración opera con varios StoreId de un mismo grupo, la referencia correspondiente es Smart Accounts.

Las páginas de check-in/check-out y de Smart Accounts no aparecen listadas en el índice público: se consultan por enlace directo.

📘

Temas cubiertos exclusivamente en esta guía

Algunos temas que la certificación evalúa aún no cuentan con una página propia: el cashback y sus condiciones mínimas, los tiempos de espera, el bloqueo de multi-instancias y el check-in por COM. En estos casos, la presente guía constituye la referencia aplicable, y cualquier detalle adicional puede solicitarse por correo al equipo de integraciones.


4. El ticket personalizado

Este apartado va al principio por una razón práctica: cuando el ticket personalizado aplica, se certifica antes que el resto de las pruebas. Si más adelante se modifica, las evidencias ya entregadas deben repetirse. Si mantiene el voucher oficial de NetPay, puede pasar directamente al apartado 5.

Casos en los que aplica

flowchart TD
    A{"¿Aplica el ticket<br/>personalizado?"}
    A -->|"mantiene el voucher<br/>oficial de NetPay"| Z["No se evalúa"]
    A -->|"lo desactiva, o la<br/>terminal no imprime"| B{"¿Cumple la<br/>versión mínima?"}
    B -->|"por debajo"| N["Ticket Personalizado<br/>No Certificado"]
    B -->|"SDK 1.1.9<br/>DLL 1.6.0"| C{"¿Smart PinPad<br/>2.0 o mayor?"}
    C -->|"no"| N
    C -->|"sí"| D{"¿Certificado antes<br/>y sin cambios?"}
    D -->|"sí"| E["Se puede omitir"]
    D -->|"no"| F["Debe certificar<br/>su ticket personalizado"]

Dos condiciones encadenadas: primero la versión correspondiente a su canal y después la de la terminal. El incumplimiento de cualquiera de ellas no deja el punto pendiente, sino que lo registra como «No Certificado».

Los cuatro requisitos aplicables

#Condición
1Integración SDK → versión 1.1.9 en adelante.
2Integración COM → versión 1.6.0 en adelante.
3Terminal IM30 o Aries8 → certificar ticket personalizado es obligatorio.
4Todas las integraciones con ticket personalizado → Smart PinPad 2.0 en adelante.
⚠️

Consecuencia de no cumplir los requisitos

Cuando el ticket personalizado no puede certificarse, NetPay lo registra explícitamente como «Ticket Personalizado 'No Certificado'». Deshabilitar el voucher oficial sin haber certificado el propio implica asumir los riesgos operativos correspondientes, así como las implicaciones frente a la normativa bancaria vigente.

Detalle para quienes deben certificarlo

Si tras el diagrama anterior confirmó que debe certificar su ticket, despliegue lo que sigue. Si mantiene el voucher oficial de NetPay, puede omitirlo por completo.

Campos que se revisan en el ticket

Se valida que su ticket impreso contenga la misma información que el voucher oficial. Cada campo se marca como OK cuando el ticket lo cumple, y se adjunta la captura del ticket junto con el JSON de respuesta correspondiente.

Qué se imprimeCampo de la respuestaReglaRestricción
LogotipoEl del comercio.Opcional
AFILIACIÓN: <valor>affiliationObligatorio
TIPO DE TRANSACCIÓN: <valor>transTypeSe traduce el valor: AVENTA, VCANCELACIÓN, PRECHECK IN, POACHECK OUT. PRE y POA solo se devuelven en la operativa de check-in y check-out.Obligatorio
Dirección del comerciostreetNameSolo el valor, sin etiqueta.Obligatorio
NÚMERO DE COMERCIO: <valor>storeIdObligatorio
Población del comerciocityNameSolo el valor, sin etiqueta.Obligatorio
NÚMERO DE CUENTA: ************<valor>cardNumber · spanRoutePrioridad a cardNumber; si no trae valor, se usa spanRoute. 12 asteriscos para VISA y MasterCard, 11 para AMEX; se distingue con cardTypeName cuando devuelve AMEX o AmericanExpress.Obligatorio
<valor> / <valor> / <valor>cardTypeName · bankName · cardTypeLos tres, separados por diagonal y en ese orden. cardType se traduce: CCRÉDITO, DDÉBITO, VVALERA. Si alguno llega vacío, nulo o con valor U, no se imprime.Obligatorio
RETIRO DE EFECTIVO: $<valor>cashbackAmountObligatorio si aplica
COMISIÓN POR RETIRO: $<valor>cashbackFeeObligatorio si aplica
SUBTOTAL: $<valor>calculadoCon cashback: amountcashbackAmountcashbackFee. Con propina: se usa tipLessAmount.Obligatorio si aplica
PROPINA: $<valor>tipAmountObligatorio si aplica
<valor> MESES SIN INTERESESpromotionEl número de meses es dinámico.Obligatorio si aplica
TOTAL: M.N. $<valor>amountEn negritas, con el símbolo de moneda (M.N. para moneda nacional) y de uno a dos puntos más de tamaño de letra.Obligatorio
FOLIO: <valor>folioNumberObligatorio
LOT NUM: <valor>moduleLoteObligatorio
CARGO: <valor>moduleChargeObligatorio
TERMINAL: <valor>terminalIdObligatorio
RRN: <valor>rrnNumberObligatorio
ORDERID: <valor>orderIdObligatorio
APROBACIÓN: <valor>authCodeObligatorio
FECHA Y HORA: <valor>transDate · ticketDatePrioridad a transDate; si no trae valor, se usa ticketDate.Obligatorio
ARQC: ************<valor>arqcSe ocultan todos los dígitos salvo los cuatro últimos. Si llega vacío o nulo, no se imprime.Obligatorio
TC: ************<valor>transactionCertificateSe ocultan todos los dígitos salvo los cuatro últimos.Obligatorio
AID: <valor>aidObligatorio
APP LABEL: <valor>applicationLabelSi llega vacío o nulo, no se imprime.Obligatorio
Leyenda de verificación del tarjetahabientehasPin · hexSignSolo el valor, sin etiqueta. La regla completa está en el diagrama de abajo.Obligatorio
Nombre del tarjetahabientecustomerNameSolo el valor, sin etiqueta. Si llega vacío o nulo, no se imprime.Obligatorio
COPIA CLIENTELeyenda de la primera impresión del ticket.Obligatorio
COPIA NEGOCIOLeyenda de la segunda impresión del ticket.Opcional
Leyenda de NetPay«RECUERDA QUE EN TU ESTADO DE CUENTA EL CARGO APARECERÁ A NOMBRE DE NETPAY».Obligatorio
Versión de la aplicaciónrePrintDateSolo el valor, sin etiqueta.Obligatorio
Ticket Personalizado de <nombreComercio>Con el nombre del comercio que se certifica.Obligatorio

Leyenda de verificación del tarjetahabiente: los tres casos posibles

flowchart TD
    A["Respuesta de la venta"] --> B{"¿hasPin<br/>es true?"}
    B -->|"sí"| C["FIRMADO<br/>ELECTRÓNICAMENTE"]
    B -->|"no"| D{"¿hexSign trae<br/>algún valor?"}
    D -->|"sí"| E["FIRMA<br/>DIGITALIZADA"]
    D -->|"no"| F["AUTORIZADO<br/>SIN FIRMA"]

La leyenda no se elige: se determina a partir de esos dos campos, evaluados en este orden.

📘

El tercer caso se presenta porque, en operaciones contactless por debajo de ciertos montos que varían según la marca, no se solicita NIP ni firma.

Tickets que se certifican

Se revisan cuatro tickets, y el de venta se valida en ocho variantes. Cada una requiere su captura y su JSON.

TicketVariantes que se revisan
VentaCon NIP débito · Sin NIP, con firma digital · Contactless MasterCard mayor a $1,501 · Contactless MasterCard menor a $10 · A meses sin intereses · Con propina · Con cashback · Check-in
ReimpresiónReimpresión, por folio o por orderId, de una venta exitosa.
CancelaciónCancelación de una venta.
DeclinaciónDeclinación de una transacción, por cualquier motivo.

Lo que cambia en cada uno respecto del ticket de venta

TicketDiferencia
ReimpresiónAñade la leyenda -----DUPLICADO-----, con cinco guiones antes y cinco después, a partir del campo isRePrint cuando devuelve true. Es obligatoria en el escenario de reimpresión de una declinación.
CancelaciónEl total se imprime en negativo: TOTAL: M.N. -$<valor>.
DeclinaciónEs el ticket más corto de los cuatro: 22 campos frente a los 33 de la venta. Añade tres elementos —la leyenda -----DUPLICADO----- a partir de isRePrint, el responseCode y el message, estos dos impresos solo con su valor y sin etiqueta— y omite los que no existen en una transacción rechazada: retiro de efectivo, comisión por retiro, subtotal, propina, RRN, ORDERID, APROBACIÓN, ARQC, TC, AID, APP LABEL, la leyenda de verificación del tarjetahabiente, el nombre del tarjetahabiente y la leyenda de NetPay.

5. La información que se registra de su proyecto

Antes de evaluar nada técnico, NetPay levanta el expediente de su proyecto: contactos, datos de la integración y datos de la terminal. No son pruebas, pero es la información que el equipo de integraciones consulta al atender un caso posterior.

Detalle del expediente

Se le solicitará la siguiente información, agrupada en cuatro bloques:

BloqueQué se registra
Información de contactosNombre, giro y razón social del comercio; correos de contacto; estado y ciudad de operación; empresa desarrolladora y sus contactos de soporte; asesor comercial o distribuidor NetPay.
Información de la integraciónTipo de integración, APIs adicionales, versión de librería (SDK/COM), tipo de sistema, StoreId de pruebas, stack de frontend y backend, IDE, nombre y versión del sistema, tipo y número de certificación, certificaciones previas con NetPay.
Información de la terminal certificadaSerie, marca, modelo, firmware, Smart PinPad/CoreX, versión de Android, servicios de Google y aplicaciones adicionales de NetPay.
CierreNotas finales de NetPay y bitácora de sesiones.

Declaración de veracidad

Se le pedirá declarar que la información entregada es veraz y conforme a las normas de NetPay. Sus respuestas quedan registradas y se utilizan como referencia en la atención de casos productivos.


6. Puntos que se validan de su sistema

Antes de iniciar las pruebas con la terminal, NetPay le pedirá por escrito cómo resolvió una serie de puntos. No son preguntas de opinión: cada una tiene un resultado esperado con el que se contrasta su respuesta. El listado completo, ya filtrado para su integración, está en el apartado 9.

Dos precisiones aplican a los tres canales por igual y conviene leerlas antes de contestar.

📘

Alcance de los registros solicitados

No se solicitan los registros que la terminal envía a soporte ante una falla. La certificación revisa los registros de su punto de venta, y estos deben acreditar que su sistema recibe la respuesta completa y sin alteraciones: sin filtrar campos, sin descartar aquellos que actualmente no utiliza y sin truncarla al almacenarla. Según su canal, la respuesta se recibe por el webhook (API), por la librería .aar (SDK) o por la .dll (COM); en los tres casos debe registrarse íntegra antes de que su sistema realice cualquier procesamiento sobre ella.

El motivo es operativo: ante un caso de soporte productivo, la primera comparación que se realiza es entre lo que NetPay envió y lo que su sistema registró. Si el registro se encuentra truncado, esa comparación no es posible.

Las páginas que documentan cada uno de estos puntos son las mismas que se listan en el apartado 3, ordenadas por canal. Si al responder alguna de las preguntas necesita revisar la referencia, ese es el índice a consultar.


7. Reglas transversales que su sistema debe cumplir

Estas reglas se repiten a lo largo del cuestionario y de varios escenarios. Conviene resolverlas desde el principio, ya que cada una de ellas afecta a un bloque completo de la certificación.

Tiempos de espera

DóndeLo que se espera de su sistema
BackendUn webhook, o hilos que permanezcan a la espera de la respuesta. Si en su lugar utiliza un temporizador, debe ser de 3 minutos para venta normal y 5 minutos para venta con cashback, con un intervalo que consulte de forma continua si la respuesta ya llegó.
FrontendUn indicador de carga que permanezca en espera. Si utiliza un temporizador, los mismos 3 y 5 minutos, o bien espera sin límite de tiempo. Si el usuario completa la transacción antes, su sistema debe recibir la respuesta antes de que expire esa espera.
SDKLos métodos nativos onActivityResult o registerForActivityResult(). Si en su lugar utiliza un temporizador, aplican los mismos tiempos.
COMEl intervalo con el que consulta getResponse debe estar entre 500 ms y 2 000 ms, y el tiempo total de espera recomendado es de 3 minutos como mínimo.

Bloqueo de multi-instancias

Su sistema no debe permitir enviar dos ventas al mismo tiempo: tras el primer envío, el control debe quedar bloqueado hasta recibir la respuesta, y la operación no debe generar ventas duplicadas. La misma regla aplica a la cancelación: pulsar el botón varias veces seguidas no debe producir intentos duplicados.

El campo con el que se valida el resultado

responseCode con valor 00 indica transacción aprobada; cualquier otro valor representa un error o una declinación. En SDK también es válido el campo success. El texto impreso en el ticket no es una fuente válida para determinar el resultado.

Cancelación

Debe realizarse el mismo día de la venta y, como referencia, antes de las 20:00 hora de Ciudad de México.

Restricciones de red en sus sucursales

📘

El firewall de sus sucursales puede bloquear las transacciones

Es una causa frecuente de fallas que aparecen solo en algunas sucursales y no en el ambiente de desarrollo. Si su red aplica controles de acceso o filtrado de tráfico, deben habilitarse las URLs, los puertos y las direcciones IP que utiliza la comunicación con NetPay, tanto en pruebas como en producción.

Por tratarse de información sensible, el listado vigente se mantiene en un documento de acceso restringido: matriz de URLs y puertos. Al abrirlo se le pedirá solicitar acceso; la autorización la otorga el equipo de integraciones. Conviene aplicar la configuración antes de la sesión de certificación, ya que una restricción de red no detectada a tiempo detiene la ejecución de los escenarios.

Autenticación · solo en integraciones por API

El token de acceso debe regenerarse de forma periódica —por ejemplo, cada 6 u 11 horas—. El refresh token no está disponible actualmente, por lo que no debe utilizarse ni implementarse.

Desconexión del cable · solo en integraciones por COM

El método depende de la versión de la DLL: con la 1.5.5.2 el puerto COM asignado se valida con findPortByDescription(); a partir de la 1.7.0 se dispone de testConnection(). Es lo que se comprueba en el escenario de desconexión de cable, por lo que le sugerimos confirmar por correo con el equipo de integraciones qué versión corresponde a su proyecto.

Recuperación de una venta por orderId

Cuando recupere mediante la reimpresión por orderId una venta que no llegó a su sistema, ese valor debe tomarse del ticket físico impreso, nunca de otra fuente.


8. Escenarios que deberá ejecutar

Cada escenario se ejecuta en la terminal y se respalda con la captura del ticket y el JSON de respuesta de esa misma transacción.

Criterio de evaluación de cada escenario

flowchart TD
    A["Consulta el escenario<br/>que le corresponde"] --> B["Ejecuta la prueba<br/>en la terminal"]
    B --> C["Resguarda el ticket<br/>y el JSON"]
    C --> D["Los entrega<br/>como evidencia"]
    D --> E{"NetPay contrasta<br/>con lo esperado"}
    E -->|"cumple"| F["Realizado"]
    E -->|"parcial"| G["A<br/>Mejorar"]
    E -->|"no<br/>existe"| H["No<br/>Implementado"]
    E -->|"faltó<br/>material"| I["No<br/>realizado"]

Los cuatro estatus posibles no representan grados de una misma condición: dos se refieren al alcance de su sistema y dos a la ejecución de la prueba. De ahí la importancia de contar con todo el material antes de iniciar.

Niveles de obligatoriedad

NivelQué significa
Obligatoria · Condición obligatoria.Se ejecuta o se responde en todos los casos. Es indispensable para concluir la certificación.
Obligatoria solo si aplicaAplica únicamente si su sistema ofrece esa funcionalidad (MSI, propina, cancelación, NFC…). Si no la ofrece, se registra como No Implementado, y eso no impide cerrar la certificación.
Recomendada · Recomendada.No condiciona la certificación, aunque NetPay sugiere su ejecución.
Opcional.Su ejecución queda a criterio del comercio.

Evidencia que debe entregar

Para cada escenario que así lo requiere, se adjunta:

  1. La captura del ticket impreso por la terminal.
  2. El JSON de respuesta recibido por su sistema.

Ambos elementos deben corresponder a la misma transacción. La discrepancia entre ellos —el ticket de una prueba acompañado del JSON de otra— es la observación más frecuente de todo el proceso.


Reversos, de implementación obligatoria

Un reverso se produce cuando la comunicación se interrumpe a mitad de una transacción. Aplica a los tres canales y su manejo mediante la reimpresión por folio es de implementación obligatoria. Es un flujo poco frecuente, pero conviene dejarlo resuelto durante la certificación: cuando está bien implementado, el propio sistema del comercio resuelve el caso sin necesidad de consultarlo con NetPay. Existen dos tipos, con comportamientos distintos: el automático, que la terminal resuelve por sí sola, y el manual, que necesita una transacción posterior para completarse.

⚠️

Los pasos y los mensajes descritos en este bloque corresponden a terminales Pax. En Urovo y en Kozen el flujo de reversos puede diferir; le sugerimos confirmarlo con el equipo de integraciones si su terminal es de alguna de esas marcas.

flowchart TD
    S["Venta en curso<br/>tarjeta y NIP"]
    S --> P["Procesando<br/>Autorización"]
    P -->|"se<br/>completa"| A["APROBADA"]
    P -->|"se retira<br/>la tarjeta"| DEC["DECLINADA<br/>código 05"]
    P -->|"se apaga<br/>la terminal"| SIN["SIN<br/>RESPUESTA"]
    A --> AC["Reimpresión:<br/>Aprobada · C"]
    DEC --> RC["Reimpresión:<br/>Reversada · RV"]
    RC --> FIN1["Reverso automático<br/>concluido"]
    SIN --> PC["Reimpresión:<br/>Pendiente · PRV"]
    PC --> V2["Venta normal<br/>el mismo día"]
    V2 --> RC2["Reimpresión:<br/>PRV pasa a RV"]
    RC2 --> FIN2["Reverso manual<br/>concluido"]
    classDef ok fill:#e8f5e9,stroke:#43a047,color:#1b5e20
    classDef ko fill:#fff3e0,stroke:#fb8c00,color:#e65100
    classDef nd fill:#ffebee,stroke:#e53935,color:#b71c1c
    class A,AC,FIN1,FIN2,RC,RC2 ok
    class DEC,PC ko
    class SIN nd

Los tres desenlaces de una venta y el valor que devuelve la reimpresión por folio en cada uno. La rama central corresponde al reverso automático y la rama derecha al reverso manual: en esta última, la transacción permanece en «Pendiente por Reversar» hasta que una venta posterior del mismo día detona el reverso. Los pasos exactos para provocar cada rama se detallan a continuación.

Cómo reproducir cada escenario

Los pasos exactos están abajo. Despliéguelos cuando vaya a ejecutar las pruebas.

Pasos para reproducir el reverso automático
  1. Lance una venta por cualquier monto.
  2. Inserte la tarjeta para iniciar el flujo de autorización.
  3. Ingrese el NIP cuando la terminal lo solicite, pero no presione «Enviar».
  4. Presione el botón verde para continuar con la autorización, cuente dos segundos y retire la tarjeta de inmediato.
  5. Obtendrá una declinación por «Error de lectura» o «Error de conexión», acompañada de responseCode con valor 05.
  6. Su sistema debe poder reimprimir declinaciones, al menos para este tipo de casos.
  7. Reimprima el voucher de esa transacción: debe obtener el mensaje «Transacción Reversada».
Pasos para reproducir el reverso manual
  1. Lance una venta por cualquier monto.
  2. Inserte la tarjeta e ingrese el NIP, presionando el botón verde para continuar.
  3. Cuando la terminal solicite retirar la tarjeta, no la retire.
  4. Apague la terminal por completo. Puede hacerlo desde el botón de apagado o retirando la fuente de alimentación; lo importante es que el equipo quede sin energía en ese momento. Su punto de venta no recibirá respuesta alguna, y por eso debe estar preparado para reimprimir en estos escenarios.
  5. Con la terminal apagada, retire la tarjeta y vuelva a encenderla.
  6. Realice una reimpresión: obtendrá «Transacción Pendiente por Reversar», lo que indica que la venta aún no se ha reversado.
  7. Para forzar el reverso, lance una venta normal por cualquier monto y complete la autorización hasta obtener el voucher de venta. Esa transacción detona el reverso pendiente.
  8. Reimprima desde su punto de venta la transacción que quedó pendiente: ahora obtendrá «Transacción Reversada».

El voucher personalizado en los escenarios de reverso: son dos impresiones

Si su integración emite su propio voucher, cada uno de estos escenarios produce dos tickets distintos, y ambos se entregan como evidencia.

1 · El de la venta declinada. Es la variante de declinación de su voucher, e incluye el responseCode original —05 o el que entregue la terminal para ese error— y el mensaje original del error en una línea.

2 · El de la reimpresión por folio. Es un ticket aparte, con la leyenda -----DUPLICADO----- cuando isRePrint devuelve true, y con el mensaje que entrega la reimpresión: «Transacción Reversada» o «Transacción Pendiente por Reversar».

Sus campos son los de la tabla Revisión de ticket de Declinación de la hoja TICKET-PERSONALIZADO, que es una de las cuatro que se certifican.

Los escenarios que se ejecutan y se evalúan

EscenarioCriterio de aprobación
Reverso automáticoLa declinación llega con responseCode 05 y el reverso se realiza de forma automática.
Reimpresión por folio del reverso automáticoMensaje «Transacción Reversada» y reprintModule con valor RV.
Reverso manualLa transacción queda en «Pendiente por reversar».
Reimpresión por folio del reverso manualMensaje «Transacción Pendiente por Reversar» y reprintModule con valor PRV.
Venta posterior al reverso manualLa nueva venta se aprueba y detona el reverso de la anterior.
Reimpresión por folio después del reversoLa transacción que estaba pendiente ya aparece como reversada: el mensaje cambia a «Transacción Reversada» y reprintModule pasa de PRV a RV.
Reimpresión por folio del reverso en Urovo CoreX · solo SDK en terminal UrovoAdemás de RV, devuelve responseCode con valor R.
Voucher personalizado de la declinaciónSolo si genera su propio voucher: se entregan los dos tickets descritos arriba, el de la venta declinada y el de la reimpresión.

Los valores que devuelve la reimpresión por folio

Si almacena estos escenarios en su base de datos, los estatus de esas ventas deben actualizarse. El campo que debe consultar es reprintModule dentro del objeto JSON de respuesta, no responseCode:

ValorSignifica
CTransacción aprobada
VTransacción cancelada
DTransacción declinada
RVTransacción reversada
PRVPendiente por reversar: se requiere una transacción más en el mismo día

En terminales Urovo con CoreX, la reimpresión posterior al reverso devuelve además responseCode con valor R. En el escenario de reverso automático sobre CoreX en integraciones SDK, la respuesta llega con message «Transacción Reversada», reprintModule con valor RV y responseCode con valor R40.

La terminal es la fuente de verdad

Ante cualquier discrepancia de estatus entre NetPay Manager y la terminal, debe prevalecer el resultado de la reimpresión por folio en la terminal. Ninguna otra consulta es una fuente válida para determinar el estatus de un reverso.


Check-in y check-out, si su integración lo incluye

Aplica únicamente a las modalidades checkinAPI-checkoutAPI, checkinSDK-checkoutAPI y checkinCOM-checkoutAPI. Si la suya no es una de ellas, puede omitir este apartado.

Cómo funcionan el check-in y el check-out

El check-in se envía desde su propio canal —API, SDK o COM— con la misma petición de venta de siempre, activando la bandera checkIn en true. Lo procesa la terminal como cualquier venta, así que imprime el ticket oficial de NetPay, y la respuesta llega por su vía habitual: el webhook en API, el onActivityResult en SDK. En esa respuesta, transType devuelve PRE y preAuth devuelve 1.

El check-out es distinto: se consume en una API independiente de la terminal. El equipo no interviene, no imprime nada, y por eso el comprobante del cierre se obtiene con la reimpresión por folio.

flowchart TD
    A["Check-in desde su canal<br/>checkIn: true"] --> B["La terminal procesa<br/>la preautorización"]
    B --> C["Imprime el ticket oficial<br/>de NetPay"]
    C --> D["Respuesta con transType PRE<br/>y transactionId"]
    D --> E["Check-out por la API CheckIO<br/>con storeId, transactionId<br/>y totalAmount"]
    E --> F["La API confirma el cierre<br/>sin imprimir ticket"]
    F --> G["Reimpresión por folio<br/>para obtener el comprobante"]
    classDef term fill:#e8f0fe,stroke:#4a6fa5,color:#12233d
    classDef api fill:#fff4e5,stroke:#c98a2e,color:#4a3208
    class A,B,C,D,G term
    class E,F api

En azul, lo que pasa por la terminal; en ámbar, lo que ocurre fuera de ella. El check-out siempre es por API, sea cual sea el canal del check-in, y es el único paso que no deja ticket impreso.

El campo que enlaza las dos operaciones es transactionId

No es el folio ni el orderId. El transactionId viene en la respuesta del check-in y es el valor con el que después se cierra el check-out, así que su sistema debe guardarlo. El cuerpo del check-out lleva únicamente storeId, transactionId y totalAmount.

Lo que responde la API de check-out

El servicio se autentica con una api-key que se envía en el encabezado Authorization. Es única por COMPANY y solo sirve para los STORE que pertenecen a esa COMPANY; NetPay entrega la URL y la clave por correo, distintas en pruebas y en producción.

RespuestaQué significa
202 · code 00Cierre aprobado. Devuelve el transactionId de la nueva transacción.
202 · code 05Ese check-in ya tenía un check-out: no se puede volver a cerrar.
409 · code 04No se encontró el check-in con ese transactionId.
409 · code 06El StoreId no tiene habilitada la operativa de check-in y check-out.
409 · code 08Error de NetPay: debe reportarse al equipo de soporte.
409 · code 09El monto excede lo permitido para cerrar.
401 · sin codeLa api-key no tiene permisos sobre ese StoreId.

Un 200 OK sin contenido no es un cierre exitoso

Cuando la petición viene mal formada, el servicio responde 200 pero con el cuerpo vacío, y su sistema no debe interpretarlo como una transacción aprobada. Conviene validar que el JSON sea sintácticamente correcto, que storeId, transactionId y totalAmount estén presentes, y que el tipo de dato de cada uno sea el esperado.

⚠️

Un check-out con monto $0 actúa como una cancelación

No es un error del servicio: se acepta, y en NetPay Manager la operación queda registrada como un check-out con monto $0. Le sugerimos que su sistema impida enviarlo de forma accidental —por un campo vacío o un total sin calcular—, ya que el efecto es cerrar la preautorización sin cobro.

⚠️

Sobre el monto del check-out

El límite depende del giro del comercio. En giros gasolineros no se permite cerrar por encima del 100 % del monto preautorizado. Para el resto de los giros, la operativa admite hasta el monto original más un 20 %, y un intento superior se rechaza con el código 09.

A efectos de la certificación, conviene tener presente que el ambiente de pruebas hoy solo permite validar hasta el 100 %. Si su caso requiere cerrar por encima de ese porcentaje, le sugerimos confirmarlo por correo con el equipo de integraciones antes de la sesión.

La validación no debe quedar únicamente del lado de NetPay: el sistema del comercio también debe impedir el envío de un monto superior al permitido.

📘

Las referencias publicadas

Integración Checkin API / Checkout API para el check-in por API, e Integración de Check-in SDK para el check-in por SDK. El check-in por COM existe como funcionalidad, pero todavía no cuenta con una página propia: si su proyecto lo requiere, puede solicitarlo por correo al equipo de integraciones.


9. Su alcance según su integración

Los apartados anteriores explican qué se valida y por qué. Este le dice cuánto le corresponde a usted. Es el mismo contenido que recibirá dentro de su matriz de pruebas, aquí sin filtrar.

Cada pestaña muestra el alcance de una integración estándar en ese canal. Si además utiliza OAuth, Smart Accounts, cashback, MDB IM30 o check-in y check-out, la variante correspondiente detalla únicamente lo que cambia respecto de esa base.

Una integración API estándar comprende 41 preguntas y 43 escenarios, de los cuales 22 son obligatorios. Si su integración incluye alguna de las variantes que aparecen abajo, despliéguela para ver qué cambia.

Preguntas que se responden siempre

Son 32 preguntas y todas son de respuesta obligatoria.

Autenticación y ambientes

Se le preguntaLo que NetPay espera leer
¿Cómo es el proceso de login del sistema del comercio?El login no debe depender de la generación del token de NetPay, ni estar vinculado a un solo storeId de la terminal.
¿Su sistema permite cambiar entre diversos números de series de terminales y storeIds a enviar?En producción, cada terminal tendrá un storeId único, por lo que el sistema debe poder cambiar estos valores dinámicamente.
¿Cómo manejarán el cambio de ambiente entre pruebas y producción?El sistema debe poder cambiar entre ambiente de pruebas y producción (por ejemplo, mediante variables de entorno para la URL base, el path y el body del request del token).
Proceso de generación del token de NetPayEl token debe regenerarse periódicamente (por ejemplo, cada 6 u 11 horas). El refresh token no está disponible actualmente, por lo que no debe utilizarse ni implementarse.

Webhook, red y códigos HTTP

Se le preguntaLo que NetPay espera leer
¿Su URL de regreso / API / Webhook / Servicio Web donde reciben la respuesta de la transacción se encuentra sobre un servidor local?Actualmente no está permitido usar http por seguridad y restricciones de Android: debe usarse https de forma obligatoria. Además, el webhook debe contar con SSL conforme a los certificados de confianza de la versión de Android de la terminal.
¿Su sistema utiliza un webhook o API pública para recibir respuestas de la terminal y transferir esa información a un servidor local?Describir cómo manejan errores de comunicación entre el webhook/API y el servidor local. Ejemplo: si el webhook no logra conectar con el servidor local, debe notificarlo a la terminal en el response body.
¿El backend cuenta con un timer para recibir la respuesta?1) Puede usarse un webhook o threads que permanezcan en espera de la respuesta. 2) Si se usa un timer, debe ser de 3 minutos para venta normal y 5 minutos para venta con cashback, con un intervalo que consulte constantemente si la respuesta ya llegó.
¿En qué dispositivos se utilizará el sistema o aplicación?Especificar si el sistema operará en computadoras con Windows, dispositivos Android, terminales NetPay, etc.
¿Utilizarán VPN o alguna otra aplicación adicional en la terminal?Indicar si se utilizará una VPN u otra aplicación adicional en la terminal.
¿En sus sucursales utilizarán controles de acceso y filtrado de tráfico, como un firewall?Se debe especificar cualquier restricción que impida que NetPay se comunique al 100% con su sistema. El listado vigente de URLs, puertos y direcciones IP se solicita al equipo de integraciones.
¿Manejan correctamente los códigos HTTP en su webhook/API?1) Códigos 2xx: éxito (recibido, entendido y aceptado). 2) Códigos 3xx: redirección (se requiere una acción adicional). 3) Códigos 4xx: error del cliente (petición incorrecta o no encontrada). 4) Códigos 5xx: error del servidor.

Tiempos de espera

Se le preguntaLo que NetPay espera leer
¿El frontend maneja un timer al recibir la respuesta?1) Debe usarse un loading que permanezca en espera de la respuesta. 2) Si se usa un timer en la interfaz, debe ser de 3 minutos para venta normal y 5 minutos para venta con cashback, o permanecer en espera sin límite de tiempo. 3) Si el usuario completa la transacción en menos tiempo, el sistema debe recibir la respuesta antes de que termine la espera.

Folio, trazabilidad y registros

Se le preguntaLo que NetPay espera leer
¿Crean un PRE-REGISTRO ante una falta de respuesta de la terminal?Describir si generan un pre-registro en su sistema cuando no reciben respuesta de la terminal. Usar un folio único permite recuperar transacciones pendientes o perdidas mediante la reimpresión por folio.
¿Su folio se envía en el campo folioNumber al momento de enviar la venta, o se genera después de procesada la venta?Es obligatorio enviar en el campo folioNumber un identificador único generado por su sistema antes de enviar la venta. Se admite que su folio definitivo se genere después —por ejemplo, al facturar—, pero en ese caso debe enviar de todas formas un identificador propio previo que permita vincularla después con la transacción de NetPay. Sin ese identificador previo no es posible consultar la transacción por folio ni conciliarla.
¿Cuál es la estructura de su folio? ¿Cuentan con un prefijo/sufijo?Debe indicarse la estructura del folio; se recomienda incluir un prefijo o sufijo. No se recomienda usar solo números consecutivos.
¿Su folio es único por sucursal?Debe ser completamente único: no debe repetirse por sucursal ni por ninguna otra condición.
¿Su folio se duplica en declinados?Es obligatorio que el folio permanezca único también en las declinaciones. Si se duplica, la reimpresión por folio deja de ser una vía fiable para consultar o recuperar el estatus, que es justamente el mecanismo con el que se resuelven los reversos.
Ante una transacción perdida, ¿usan la reimpresión por folio u orderId solo como consulta, o la automatizan para recuperar y guardar la venta si no existe en su sistema?Debe responderse indicando si se usa folio u orderId. Esta operativa ayuda a recuperar transacciones perdidas por causas externas, como desconexión de cable, caídas del sistema o intermitencias.
¿Ejecutan AUTOMÁTICAMENTE en la terminal la REIMPRESIÓN por FOLIO al recibir una DECLINACIÓN?Especificar si utilizan la reimpresión por folio como una doble validación de estatus; esta práctica beneficia principalmente en los reversos.
¿Se controlan los estatus finales de los REVERSOS por medio de la REIMPRESIÓN por FOLIO?Los reversos se generan por cortes de comunicación, lo que puede provocar incongruencias en el estatus de las transacciones entre Manager y la terminal. Por ello, debe darse total prioridad a lo que indique la terminal y consultarse el estatus final mediante la reimpresión por folio.
¿Qué campos almacenan en su base de datos para una transacción de NetPay con estatus RECHAZADA / DECLINADA?Especificar qué campo almacenan de NetPay y cómo lo almacenan; por ejemplo: referencia (comercio) → folioNumber (NetPay).
¿Qué campos almacenan en su base de datos para una transacción de NetPay con estatus APROBADO?Especificar qué campo almacenan de NetPay y cómo lo almacenan; por ejemplo: referencia (comercio) → folioNumber (NetPay).
¿Qué campos almacenan en su base de datos para una transacción de NetPay con estatus REVERSADA o PENDIENTE POR REVERSAR?Especificar qué campo almacenan de NetPay y cómo lo almacenan; por ejemplo: referencia (comercio) → folioNumber (NetPay).
¿Qué campos almacenan en su base de datos para una REIMPRESIÓN de NetPay?Especificar qué campo almacenan de NetPay y cómo lo almacenan; por ejemplo: referencia (comercio) → folioNumber (NetPay).
¿Qué campos almacenan en su base de datos para una CANCELACIÓN DE VENTA de NetPay?Especificar qué campo almacenan de NetPay y cómo lo almacenan; por ejemplo: referencia (comercio) → folioNumber (NetPay).

Resultado de la transacción y base de datos

Se le preguntaLo que NetPay espera leer
¿Qué campo utilizan para validar una transacción exitosa?Deben utilizar el campo responseCode, donde el valor 00 indica una transacción aprobada y cualquier valor diferente representa un error o declinación. En SDK también es válido usar el campo success.
¿Almacenan declinaciones en su base de datos?Es obligatorio almacenar las declinaciones y rechazos en su base de datos. Permite a los usuarios finales identificar el estatus de inmediato, sin levantar un caso de soporte, y es el registro con el que se contrasta un reverso posterior.
¿Confirman que almacenan correctamente en su sistema los valores recibidos por parte de NetPay?Es responsabilidad del usuario validar que los valores coincidan y se almacenen correctamente en su sistema. NetPay no se hará responsable por incidentes derivados de esta situación; esta respuesta quedará registrada como referencia para futuros casos de soporte productivo.

Recuperación, reversos y multi-instancias

Se le preguntaLo que NetPay espera leer
¿Su sistema evita multi-instancias al presionar los botones de venta, reimpresión y cancelación?Debe bloquearse el botón para evitar enviar múltiples procesos al mismo tiempo. Adjuntar un fragmento de código que muestre el bloqueo del botón, el bloqueo de la interfaz, un diálogo, o cualquier otro mecanismo que evite la multi-instancia.

Voucher y ticket personalizado

Se le preguntaLo que NetPay espera leer
¿Mantienen activo el voucher oficial de NetPay?Esta pregunta se refiere al uso de DisablePrintAnimation. Si se deshabilita (valor true), primero debe certificarse el ticket personalizado propio; el formato aparece al seleccionar 'No' en esta pregunta. Condiciones para certificar ticket personalizado: 1) Integración SDK: versión 1.1.9 o superior. 2) Integración COM: versión 1.6.0 o superior. 3) Terminal IM30: es obligatorio certificar ticket personalizado. 4) Toda integración con ticket personalizado debe ser Smart PinPad 2.0 o superior.
¿Imprimen algún ticket adicional y en impresora propia?Indicar si el ticket adicional se imprime en una impresora externa propia del comercio.

Otros

Se le preguntaLo que NetPay espera leer
¿Implementaron alguna API o funcionalidad nueva y que esté relacionada con NetPay?Describir si se les proporcionó alguna API o funcionalidad nueva de NetPay de la que el equipo de integraciones no tenga contexto.

Preguntas condicionadas

Estas solo aplican en los casos que se indican; puede desplegar únicamente las que le correspondan.

Print-Ticket y devoluciones · 6 preguntas, solo si declaró esas APIs adicionales

La referencia de la API de Devoluciones es 11. API Devoluciones; no aparece en el índice público y se consulta por enlace directo. La consulta de Print-Ticket se emplea únicamente para obtener el orderId largo que esa API requiere: no es una fuente válida para verificar el estatus de un reverso.

Se le preguntaLo que NetPay espera leer
¿Cuál es el proceso de uso de la API Print-Ticket?Debe usarse únicamente de forma informativa, para consultar el transactionId o el orderId del adquirente. No se recomienda utilizarla para conocer el estatus de reversos.
¿Se realizó el proceso de certificación de ticket personalizado?Es importante validar la opción correcta: 1) Si es la primera vez, es obligatorio certificar primero el ticket personalizado. 2) Si ya se realizó previamente con NetPay, puede omitirse el proceso. 3) Si es necesario, o hay ajustes importantes, debe repetirse el proceso.
¿Cómo realizan el proceso de devolución?Indicar si lo realizan desde su sistema y si es posterior al mismo día de la venta. Recordatorio: 1) La cancelación se realiza desde la terminal el mismo día, antes de las 8pm hora CDMX. 2) La devolución aplica cuando el límite de la cancelación ya venció.
¿Utilizas la API Print-Ticket para una devolución?La API Print-Ticket es indispensable para utilizar la API de devoluciones. No debe usarse para consultar el estatus de transacciones, ya que puede traer información distinta en reversos (transacciones con cortes de comunicación).
¿Toman en cuenta la diferencia entre el campo orderId de la API Print-Ticket y el campo orderId devuelto en la respuesta de la venta de la terminal?La terminal devuelve, en la venta, un orderId más corto. La API Print-Ticket devuelve un orderId más largo, el cual es obligatorio utilizar para la API de devoluciones.
¿Cuál es el campo y valor que evalúan para considerar una devolución exitosa?Para una devolución completa o parcial, debe ser el campo code con valor 02.
Ticket propio y kioscos · 1 pregunta, solo si aplica a su caso
Se le preguntaLo que NetPay espera leer
¿Su sistema se instalará en algún kiosco autoatendido?Si es autoatendido, se recomienda una de las siguientes opciones: 1) Esperar la nueva versión de Smart PinPad (versión pendiente). 2) Utilizar la terminal IM30, enfocada en integraciones de autoservicio y kioscos; si se usa esta terminal, debe certificarse la generación de su propio ticket personalizado. 3) Deshabilitar la impresión del ticket predeterminado (disablePrintAnimation), lo cual implica certificar y generar su propio ticket personalizado.
Preguntas recomendadas y opcionales · 2 preguntas
Se le preguntaLo que NetPay espera leer
¿Se implementó el campo trazabilidad (traceability)?Es un objeto que puede contener otros objetos anidados; funciona únicamente como medio de comunicación y sus valores no se almacenan en NetPay.
¿Tienen implementados logs en su punto de venta?Especificar si manejan logs internos, locales o en servidor, y si registran excepciones, errores y/o peticiones.

Escenarios obligatorios

Estos 22 escenarios se ejecutan siempre, sin importar qué funcionalidades tenga implementadas.

Venta en mostrador

EscenarioTarjetaResultado esperadoNivel
Venta normal con NIP (tarjeta de débito)Tarjeta Débito - NIPLa transacción de venta se debe realizar correctamente.Obligatoria
Venta normal con NIP (tarjeta de crédito) con multi-instanciasTarjeta Crédito-NIPEl sistema no debe permitir enviar dos ventas al mismo tiempo: debe bloquear el botón después de la primera. La transacción debe completarse exitosamente y sin generar ventas duplicadas.Obligatoria
Venta normal con firma autógrafa (tarjeta sin NIP)1.- Tarjeta con CHIP sin NIP 2.- Cualquier tarjeta sin NIP 3.- Tarjeta CONTACTLESS MASTERCARD (monto mayor a $1,000)Al insertar la tarjeta, la terminal debe pedir firma autógrafa (firma en pantalla) y la venta debe completarse correctamente. Si no se cuenta con tarjeta sin NIP, puede usarse en su lugar una tarjeta CONTACTLESS MASTERCARD con monto mayor a $1,000.Obligatoria
Venta normal por CONTACTLESS MASTERCARD (Monto Mayor +$10,001)Tarjeta Contactless MASTERCARDLa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX, y puede terminar APROBADA o DECLINADA — ambos resultados son válidos. Si se declina (por ejemplo, por restricción del banco emisor), la terminal debe mostrar: con MASTERCARD, "ERROR AL LEER TARJETA"; con VISA, "TARJETA NO SOPORTADA".Obligatoria
Venta normal por CONTACTLESS MASTERCARD (Monto Menor entre $1 y $999)Tarjeta Contactless MASTERCARDLa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX. Hoy en día debe quedar APROBADA, aunque la decisión final siempre depende del banco emisor.Obligatoria
Venta normal por CONTACTLESS VISA (Monto Mayor +$1,200)Tarjeta Contactless VISALa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX, y puede terminar APROBADA o DECLINADA — ambos resultados son válidos. Si se declina, la terminal debe mostrar “INTENTE OTRA INTERFAZ”.Obligatoria
Venta normal por CONTACTLESS VISA (Monto Menor entre $1 y $999)Tarjeta Contactless VISALa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX. Hoy en día debe quedar APROBADA, aunque la decisión final siempre depende del banco emisor.Obligatoria
Cancelado por el usuarioCualquier TarjetaEnviar una venta sin insertar la tarjeta y cancelar/omitir la operación desde la terminal. El sistema debe devolver el mensaje "Cancelado por el usuario".Obligatoria
Regla de fraudeCualquier TarjetaEn ambiente de PRUEBAS: enviar una venta con monto MAYOR a $12,000 para simular una declinación. Nota: en PRODUCCIÓN la regla real se activa así — mismo monto y misma tarjeta el mismo día (declina en la segunda transacción), o diferente monto y misma tarjeta el mismo día (declina en la tercera transacción).Obligatoria

Reimpresión y recuperación

EscenarioTarjetaResultado esperadoNivel
Venta esperando 3min en segundo voucher oficial de venta NetPayCualquier TarjetaPasos: 1) Iniciar un temporizador de 3 minutos. 2) Enviar una venta e insertar la tarjeta. 3) La transacción debe aprobarse e imprimir el primer voucher oficial de NetPay. 4) El segundo voucher oficial debe quedar en espera. 5) Antes de que termine el temporizador, finalizar la venta — debe recibirse la respuesta exitosamente. Nota: si el voucher oficial de NetPay está desactivado, el tiempo de espera puede ser bastante menor a 3 minutos.Obligatoria
Venta esperando más del tiempo límite del sistema durante el segundo voucher oficial de NetPay (+4min)Cualquier TarjetaPasos: 1) Iniciar un temporizador de 4 minutos. 2) Enviar una venta e insertar la tarjeta. 3) La transacción debe aprobarse e imprimir el primer voucher oficial de NetPay. 4) El segundo ticket debe quedar en espera. 5) Antes de que termine el temporizador, finalizar la venta y observar qué hace el sistema; si no llega respuesta, el comercio debe tener definido cómo manejarlo. Nota: si el voucher oficial está desactivado, esta prueba no aplica.Obligatoria

Reversos

EscenarioTarjetaResultado esperadoNivel
*Reverso automático (Reversada): venta retirando la tarjeta antes de aprobarseTarjeta con NIPPasos: 1) Enviar una venta e ingresar la tarjeta y el NIP. 2) Avanzar hasta que aparezca la pantalla "Procesando Autorización". 3) Después de 1-2 segundos, retirar la tarjeta antes de que se apruebe la venta. Resultado esperado: El reverso se realiza automáticamente. El estatus final (Reversada o RV) solo puede consultarse mediante reimpresión por folio o en NetPay Manager.Obligatoria
Reimpresión por folio del reverso automáticoDebe regresar el mensaje "Transacción Reversada" y el campo reprintModule con valor RV.Obligatoria
*Reverso manual (Pendiente por reversar): venta apagando la terminal o retirando la bateríaCualquier TarjetaPasos: 1) Enviar la venta e ingresar la tarjeta y el NIP. 2) Esperar a que aparezca el mensaje "Retire la tarjeta" en pantalla. 3) Apagar la terminal (por botón o retirando la batería) justo en ese momento. Resultado esperado: La terminal se apaga a mitad de la transacción y no llega respuesta; en NetPay Manager la transacción queda con estatus APROBADO. Importante: si la terminal nunca confirmó que la venta se aprobó, no debe darse por aprobada — se reversará automáticamente el mismo día en la siguiente transacción. Lo que indique la terminal tiene siempre prioridad sobre cualquier otro medio de consulta.Obligatoria
Reimpresión por folio del reverso manual (prueba anterior)Cualquier TarjetaDebe regresar el mensaje "Transacción Pendiente Por Reversar" y el campo reprintModule con valor PRV, indicando que se necesita una siguiente transacción el mismo día para que se reverse.Obligatoria
Venta posterior al reverso manualCualquier TarjetaEsta venta debe aprobarse correctamente y, al hacerlo, provocar internamente que la transacción anterior se reverse. La respuesta de esa venta anterior ya reversada (RV) solo puede consultarse por reimpresión por folio o en NetPay Manager, y únicamente después de esta nueva transacción.Obligatoria
Reimpresión por folio del reverso manualDebe regresar el mensaje "Transacción Reversada" y el campo reprintModule con valor RV.Obligatoria

Cancelación y devolución

EscenarioTarjetaResultado esperadoNivel
Devolución completa de ventaDebe ejecutarse desde la API de devoluciones y recibir el código 02, indicando que el proceso fue exitoso.Obligatoria
Respuesta del Print-Ticket de la devolución completaDebe registrarse la respuesta obtenida de la API Print-Ticket.Obligatoria
Devolución parcial de ventaDebe ejecutarse desde la API de devoluciones con un monto menor al de la venta original, y recibir el código 02, indicando que el proceso fue exitoso.Obligatoria
Respuesta del Print-Ticket de la devolución parcialDebe registrarse la respuesta obtenida de la API Print-Ticket.Obligatoria
Error de devoluciónPuede simularse con cualquiera de los siguientes casos: 1) orderId incorrecto durante la devolución. 2) Monto mayor al de la venta original. 3) Doble devolución consecutiva. 4) Request incompleto en la devolución.Obligatoria

Funcionalidades opcionales

Los 21 escenarios restantes solo aplican si su sistema ofrece esa funcionalidad; puede desplegar únicamente los que le correspondan.

Venta en mostrador · 2 escenarios, solo si lo tiene implementado
EscenarioTarjetaResultado esperadoNivel
Venta parcial con varias formas de pago (Parte 1)Tarjeta de CréditoEnviar 1 venta pagada con 2 tarjetas distintas (pago dividido). Ejemplo: de una venta de $500, la primera tarjeta paga $200 (el resto se cobra en la siguiente prueba). Debe completarse exitosamente y sin folios duplicados.Si aplica
Venta parcial con varias formas de pago (Parte 2)Tarjeta de DébitoContinuación del ejemplo anterior: cobrar el monto restante ($300) de la venta de $500. Debe completarse exitosamente y sin folios duplicados.Si aplica
Meses sin intereses y propina · 9 escenarios, solo si lo tiene implementado
EscenarioTarjetaResultado esperadoNivel
Venta a 3 Meses Sin InteresesTarjeta de CréditoLa venta debe completarse correctamente y el ticket/respuesta debe mostrar los Meses Sin Intereses (MSI) aplicados.Si aplica
Venta 6 Meses Sin InteresesTarjeta de CréditoLa venta debe completarse correctamente y el ticket/respuesta debe mostrar los Meses Sin Intereses (MSI) aplicados.Si aplica
Venta 9 Meses Sin InteresesTarjeta de CréditoLa venta debe completarse correctamente y el ticket/respuesta debe mostrar los Meses Sin Intereses (MSI) aplicados.Si aplica
Venta 12 Meses Sin InteresesTarjeta de CréditoLa venta debe completarse correctamente y el ticket/respuesta debe mostrar los Meses Sin Intereses (MSI) aplicados.Si aplica
Venta 18 Meses Sin Intereses (No aplica Amex)Tarjeta de CréditoLa venta debe completarse correctamente y el ticket/respuesta debe mostrar los Meses Sin Intereses (MSI) aplicados.Si aplica
Venta a Meses Sin Intereses con tarjeta de débitoTarjeta DébitoCon tarjeta de débito, la promoción a meses sin intereses no aplica: la prueba debe mostrar el mensaje “PROMOCIÓN NO VÁLIDA PARA EL TIPO DE TARJETA”.Si aplica
Venta con propina (pre-propina DESACTIVADA en menú oculto)Cualquier TarjetaLa venta debe completarse correctamente. Con la pre-propina desactivada, el monto y la propina se muestran juntos (sin separar) en el voucher oficial de NetPay. La propina por defecto no debe superar el 25% del monto de venta.Si aplica
Venta con propina (pre-propina ACTIVADA en menú oculto)Cualquier TarjetaLa venta debe completarse correctamente. Con la pre-propina activada, el monto y la propina se muestran por separado en el voucher oficial de NetPay. La propina por defecto no debe superar el 25% del monto de venta.Si aplica
Venta con Pantalla PropinaCualquier TarjetaEn la terminal debe aparecer una pantalla para elegir el porcentaje de propina. La venta debe completarse exitosamente y la propina por defecto no debe superar el 25% del monto de venta.Si aplica
Reimpresión y recuperación · 5 escenarios, solo si lo tiene implementado
EscenarioTarjetaResultado esperadoNivel
Reimpresión de una venta aprobada (orderId) con multi-instanciasAl guardar una transacción, el sistema debe poder reimprimirla usando el ORDERID de una venta existente, directo desde la terminal. Si se presiona el botón varias veces seguidas, debe bloquearse para impedir reimpresiones duplicadas.Recomendada
Reimpresión de una venta aprobada o declinada (folioId) con multi-instanciasAl guardar una transacción, el sistema debe poder reimprimirla usando el FOLIO de una venta existente, directo desde la terminal. Si se presiona el botón varias veces seguidas, debe bloquearse para impedir reimpresiones duplicadas.Recomendada
Recuperación manual de una transacción aprobada con reimpresión por orderIdEste escenario simula que una venta APROBADA no llegó al sistema del comercio. Si el comercio tiene una forma de capturar el orderId manualmente, debe usarlo para recuperar la información (vía reimpresión por ORDERID) y guardarla automáticamente. Importante: el orderId debe tomarse solo del ticket físico impreso, nunca de otra fuente.Recomendada
Recuperación manual de una transacción aprobada con reimpresión por folioEste escenario simula que una venta APROBADA no llegó al sistema del comercio. Debe recuperarse la información vía reimpresión por FOLIO y guardarse automáticamente. También es válido tener un PRE-REGISTRO que recupere esta información por el mismo medio.Recomendada
Reimpresión de una venta canceladaLa operación debe reimprimir exitosamente y debe indicar que es el duplicado de una cancelación.Si aplica
Reversos · 3 escenarios, solo si lo tiene implementado
EscenarioTarjetaResultado esperadoNivel
Print-Ticket del reverso automáticoNo se recomienda usar esta consulta para verificar el estatus de reversos.Recomendada
Print-Ticket del reverso manual (antes de la siguiente transacción)No se recomienda usar esta consulta para verificar el estatus PRV (Pendiente Por Reversar).Recomendada
Print-Ticket del reverso manual (después de la siguiente transacción)No se recomienda usar esta consulta para verificar el estatus de reversos.Recomendada
Cancelación y devolución · 2 escenarios, solo si lo tiene implementado
EscenarioTarjetaResultado esperadoNivel
Cancelación de una venta con multi-instanciasLa cancelación debe hacerse el mismo día de la venta, antes de las 8pm hora CDMX (como referencia). Presionar el botón varias veces seguidas para comprobar que el sistema bloquea intentos duplicados.Si aplica
Evitar la cancelación de una venta cancelada desde el POSEl sistema del comercio debe rechazar esta operación (no permitir cancelar una venta ya cancelada desde el POS) y debe adjuntarse una captura de pantalla que lo demuestre.Si aplica

Variantes de este canal

Variante con OAuth 1.0

Su alcance total pasa a 45 preguntas y 43 escenarios, de los cuales 22 son obligatorios.

Se añaden 4 preguntas

Se le preguntaLo que NetPay espera leer
URL de regreso OAuth en Smart PinPad (PRUEBAS)Generado por NetPay con sus credenciales del comercio.
URL OAuth del comercio a dar de alta en NetPay (PRUEBAS)Generado por el comercio.
URL de regreso OAuth en Smart PinPad (PRODUCCIÓN)Generado por NetPay con sus credenciales del comercio.
URL OAuth del comercio a dar de alta en NetPay (PRODUCCIÓN)Generado por el comercio.
Variante con OAuth 2.0

Su alcance total pasa a 45 preguntas y 43 escenarios, de los cuales 22 son obligatorios.

Se añaden 4 preguntas

Se le preguntaLo que NetPay espera leer
URL de regreso OAuth en Smart PinPad (PRUEBAS)Generado por NetPay con sus credenciales del comercio.
URL OAuth del comercio a dar de alta en NetPay (PRUEBAS)Generado por el comercio.
URL de regreso OAuth en Smart PinPad (PRODUCCIÓN)Generado por NetPay con sus credenciales del comercio.
URL OAuth del comercio a dar de alta en NetPay (PRODUCCIÓN)Generado por el comercio.
Variante con Smart Accounts

Su alcance total pasa a 40 preguntas y 33 escenarios, de los cuales 27 son obligatorios.

Se añade 1 pregunta

Se le preguntaLo que NetPay espera leer
¿Envían siempre la bandera isSmartAccounts con valor true en la venta?Enviar isSmartAccounts con valor false, vacío, nulo, o no enviarlo, puede afectar la integración: siempre debe enviarse con valor true. Los storeIds deben pertenecer a un grupo Smart Accounts para funcionar, y solo pueden intercambiarse entre storeIds del mismo grupo sobre la misma terminal enlazada.

Se añaden 20 escenarios

EscenarioTarjetaResultado esperadoNivel
Realizar venta con SmartAccounts (StoreId 1)Tarjeta de Débito con NIPLa venta debe realizarse correctamente, con el ticket y la respuesta mostrando el storeId 1.Obligatoria
Realizar reimpresión por folio con SmartAccounts (StoreId 1)La reimpresión debe realizarse correctamente.Obligatoria
Realizar reimpresión por orderId con SmartAccounts (StoreId 1)La reimpresión debe realizarse correctamente.Obligatoria
Realizar cancelación con SmartAccounts (StoreId 1)La cancelación debe realizarse correctamente.Obligatoria
Realizar venta con SmartAccounts (StoreId 2)Tarjeta SIN NIPLa venta debe realizarse correctamente, con el ticket y la respuesta mostrando el storeId 2.Obligatoria
Realizar reimpresión por folio con SmartAccounts (StoreId 2)La reimpresión debe realizarse correctamente.Obligatoria
Realizar reimpresión por orderId con SmartAccounts (StoreId 2)La reimpresión debe realizarse correctamente.Obligatoria
Realizar cancelación con SmartAccounts (StoreId 2)La cancelación debe realizarse correctamente.Obligatoria
Venta a 3 Meses Sin Intereses (Smart Accounts StoreId 1)Tarjeta de CréditoLa venta debe completarse correctamente y el ticket/respuesta debe mostrar los Meses Sin Intereses (MSI) aplicados.Si aplica
Venta a 6 Meses Sin Intereses (Smart Accounts StoreId 2)Tarjeta de CréditoLa venta debe completarse correctamente y el ticket/respuesta debe mostrar los Meses Sin Intereses (MSI) aplicados.Si aplica
Venta a 9 Meses Sin Intereses (Smart Accounts StoreId 1)Tarjeta de CréditoLa venta debe completarse correctamente y el ticket/respuesta debe mostrar los Meses Sin Intereses (MSI) aplicados.Si aplica
Venta a 12 Meses Sin Intereses (Smart Accounts StoreId 2)Tarjeta de CréditoLa venta debe completarse correctamente y el ticket/respuesta debe mostrar los Meses Sin Intereses (MSI) aplicados.Si aplica
Venta a 18 Meses Sin Intereses (Smart Accounts StoreId 1)Tarjeta de CréditoLa venta debe completarse correctamente y el ticket/respuesta debe mostrar los Meses Sin Intereses (MSI) aplicados.Si aplica
Venta a Meses Sin Intereses con tarjeta de débito (Smart Accounts)Tarjeta DébitoCon tarjeta de débito, la promoción a meses sin intereses no aplica: la prueba debe mostrar el mensaje "PROMOCIÓN NO VÁLIDA PARA EL TIPO DE TARJETA".Si aplica
Venta Smart Accounts por CONTACTLESS MASTERCARD (Monto Mayor +$10,001)Tarjeta Contactless MASTERCARDLa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX, y puede terminar APROBADA o DECLINADA — ambos resultados son válidos. Si se declina (por ejemplo, por restricción del banco emisor), debe mostrarse: con MASTERCARD, "ERROR AL LEER TARJETA"; con VISA, "TARJETA NO SOPORTADA".Obligatoria
Venta Smart Accounts por CONTACTLESS MASTERCARD (Monto Menor entre $1 y $999)Tarjeta Contactless MASTERCARDLa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX. Hoy en día debe quedar APROBADA, aunque la decisión final siempre depende del banco emisor.Obligatoria
Venta Smart Accounts por CONTACTLESS VISA (Monto Mayor +$1,200)Tarjeta Contactless VISALa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX, y puede terminar APROBADA o DECLINADA — ambos resultados son válidos. Si se declina, la terminal debe mostrar "INTENTE OTRA INTERFAZ".Obligatoria
Venta Smart Accounts por CONTACTLESS VISA (Monto Menor entre $1 y $999)Tarjeta Contactless VISALa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX. Hoy en día debe quedar APROBADA, aunque la decisión final siempre depende del banco emisor.Obligatoria
Venta Smart Accounts esperando 3min en segundo voucher oficial de venta NetPayCualquier TarjetaPasos: 1) Iniciar un temporizador de 3 minutos. 2) Enviar una venta e insertar la tarjeta. 3) La transacción debe aprobarse e imprimir el primer voucher oficial de NetPay. 4) El segundo voucher oficial debe quedar en espera. 5) Antes de que termine el temporizador, finalizar la venta — debe recibirse la respuesta exitosamente. Nota: si el voucher oficial de NetPay está desactivado, el tiempo de espera puede ser bastante menor a 3 minutos.Obligatoria
Venta Smart Accounts esperando más del tiempo límite del sistema durante el segundo voucher oficial de NetPay (+4min)Cualquier TarjetaPasos: 1) Iniciar un temporizador de 4 minutos. 2) Enviar una venta e insertar la tarjeta. 3) La transacción debe aprobarse e imprimir el primer voucher oficial de NetPay. 4) El segundo ticket debe quedar en espera. 5) Antes de que termine el temporizador, finalizar la venta y observar qué hace el sistema; si no llega respuesta, el comercio debe tener definido cómo manejarlo. Nota: si el voucher oficial está desactivado, esta prueba no aplica.Obligatoria

Dejan de aplicar

Preguntas:

  • ¿En qué dispositivos se utilizará el sistema o aplicación?
  • ¿En sus sucursales utilizarán controles de acceso y filtrado de tráfico, como un firewall?

Escenarios:

  • Venta normal con NIP (tarjeta de débito)
  • Venta normal con NIP (tarjeta de crédito) con multi-instancias
  • Venta normal con firma autógrafa (tarjeta sin NIP)
  • Venta normal por CONTACTLESS MASTERCARD (Monto Mayor +$10,001)
  • Venta normal por CONTACTLESS MASTERCARD (Monto Menor entre $1 y $999)
  • Venta normal por CONTACTLESS VISA (Monto Mayor +$1,200)
  • Venta normal por CONTACTLESS VISA (Monto Menor entre $1 y $999)
  • Venta a 3 Meses Sin Intereses
  • Venta 6 Meses Sin Intereses
  • Venta 9 Meses Sin Intereses
  • Venta 12 Meses Sin Intereses
  • Venta 18 Meses Sin Intereses (No aplica Amex)
  • Venta a Meses Sin Intereses con tarjeta de débito
  • Venta con propina (pre-propina DESACTIVADA en menú oculto)
  • Venta con propina (pre-propina ACTIVADA en menú oculto)
  • Venta con Pantalla Propina
  • Venta parcial con varias formas de pago (Parte 1)
  • Venta parcial con varias formas de pago (Parte 2)
  • Reimpresión de una venta aprobada (orderId) con multi-instancias
  • Reimpresión de una venta aprobada o declinada (folioId) con multi-instancias
  • Recuperación manual de una transacción aprobada con reimpresión por orderId
  • Recuperación manual de una transacción aprobada con reimpresión por folio
  • Cancelación de una venta con multi-instancias
  • Evitar la cancelación de una venta cancelada desde el POS
  • Reimpresión de una venta cancelada
  • Venta esperando 3min en segundo voucher oficial de venta NetPay
  • Venta esperando más del tiempo límite del sistema durante el segundo voucher oficial de NetPay (+4min)
  • Print-Ticket del reverso automático
  • Print-Ticket del reverso manual (antes de la siguiente transacción)
  • Print-Ticket del reverso manual (después de la siguiente transacción)
Variante con check-in y check-out

Su alcance total pasa a 41 preguntas y 72 escenarios, de los cuales 39 son obligatorios.

Se añaden 29 escenarios

EscenarioTarjetaResultado esperadoNivel
Venta check-in con NIP débitoTarjeta Débito - NIPLa venta debe completarse correctamente.Obligatoria
Reimpresión por folio del Check-inDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
API Checkout 100%Se realiza en una API independiente de la terminal y debe completarse correctamente.Obligatoria
API Print-TicketSe realiza en una API independiente de la terminal y debe completarse correctamente. No se recomienda usar esta consulta para verificar el estatus de reversos.Obligatoria
Reimpresión por folio después del CheckoutDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
Venta check-in con NIP crédito con multi-instanciasTarjeta Crédito-NIPLa venta debe completarse correctamente.Obligatoria
Reimpresión por folio del Check-inDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
API Checkout 110%No está permitido superar el 100%: el sistema del comercio también debe impedirlo.Obligatoria
API Print-TicketSe realiza en una API independiente de la terminal y debe completarse correctamente. No se recomienda usar esta consulta para verificar el estatus de reversos.Obligatoria
Reimpresión por folio después del CheckoutDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
Venta check-in sin NIP Débito/CréditoTarjeta CNI sin chip por banda sin NIPLa venta debe completarse correctamente.Obligatoria
Reimpresión por folio del Check-inDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
API Checkout 90%Se realiza en una API independiente de la terminal y debe completarse correctamente.Obligatoria
API Print-TicketSe realiza en una API independiente de la terminal y debe completarse correctamente. No se recomienda usar esta consulta para verificar el estatus de reversos.Obligatoria
Reimpresión por folio después del CheckoutDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
Venta check-in por CONTACTLESS VISA (Monto Mayor +$1,200)Tarjeta Contactless VISALa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX, y puede terminar APROBADA o DECLINADA — ambos resultados son válidos. Si se declina (por ejemplo, por restricción del banco emisor), debe mostrarse "INTENTE OTRA INTERFAZ".Obligatoria
Reimpresión por folio del Check-inDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
API Print-TicketSe realiza en una API independiente de la terminal y debe completarse correctamente. No se recomienda usar esta consulta para verificar el estatus de reversos.Obligatoria
Reimpresión por folio después del CheckoutDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
Venta check-in por CONTACTLESS MASTERCARD (Monto Menor entre $1 y $999)Tarjeta Contactless MASTERCARDLa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX. Puede APROBARSE o DECLINARSE; si se declina, puede deberse a una restricción del banco emisor.Obligatoria
Reimpresión por folio del Check-inDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
API Checkout 20%Se realiza en una API independiente de la terminal y debe completarse correctamente.Obligatoria
API Print-TicketSe realiza en una API independiente de la terminal y debe completarse correctamente. No se recomienda usar esta consulta para verificar el estatus de reversos.Obligatoria
Reimpresión por folio después del CheckoutDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
Venta check-in por CONTACTLESS MASTERCARD (Monto Mayor +$10,001)Tarjeta Contactless MASTERCARDLa transacción debe procesarse según las reglas de VISA, MASTERCARD y AMEX, y puede terminar APROBADA o DECLINADA — ambos resultados son válidos. Si se declina (por ejemplo, por restricción del banco emisor), debe mostrarse: con MASTERCARD, "ERROR AL LEER TARJETA"; con VISA, "TARJETA NO SOPORTADA".Obligatoria
Reimpresión por folio del Check-inDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica
API Checkout 0%Al enviarse con monto $0, actúa como una cancelación — en NetPay Manager se visualiza como un Checkout con monto $0. Debe tenerse precaución para evitar que los checkouts se realicen enviando monto $0 por error.Obligatoria
API Print-TicketSe realiza en una API independiente de la terminal y debe completarse correctamente. No se recomienda usar esta consulta para verificar el estatus de reversos.Obligatoria
Reimpresión por folio después del CheckoutDebe recibirse una respuesta exitosa y el sistema debe validar correctamente el estatus de la transacción.Si aplica

10. Interpretación de los estatus

Cada pregunta y cada escenario recibe un estatus durante la revisión. Esta tabla le será útil sobre todo cuando NetPay le devuelva sus resultados.

Significado de cada estatus
EstatusQuién lo poneQué significa
Pendiente / Pendiente ejecutarEstado inicialAún no se contesta o no se ejecuta.
Falta validar si lo implementó el comercioNetPayEs el estatus inicial de los escenarios opcionales. NetPay aún no sabe si esa funcionalidad existe en su sistema y espera su confirmación para incluirlos o descartarlos.
En revisiónNetPayRecibido y en evaluación.
Realizado ✔ / OKNetPayCumple el resultado esperado.
A MejorarNetPayOpera correctamente, aunque presenta áreas de oportunidad que deben atenderse.
No ImplementadoNetPayLa funcionalidad no existe en su sistema.
No AplicaNetPayNo corresponde a su tipo de integración.
No realizado debido a falta de insumosNetPayNo fue posible ejecutarlo por ausencia de tarjeta, StoreId, versión o terminal. Es el estatus que con mayor frecuencia se evita reuniendo el material descrito en el apartado 2.
Ticket Personalizado 'No Certificado'NetPayEl ticket propio no cumplió los requisitos del apartado 4.

11. Puntos importantes que pueden retrasar la certificación

Este apartado reúne lo que con más frecuencia obliga a repetir una prueba o a reabrir un punto durante la revisión. Le sugerimos leerlo antes de ejecutar los escenarios, no después.

Lo que con más frecuencia genera retrasos

  1. Definir tarde el alcance. Cambiar el tipo de integración con el trabajo ya avanzado modifica las preguntas y los escenarios que aplican, y obliga a revisar de nuevo lo ya respondido.
  2. Responder el cuestionario sin verificar. Cada respuesta se contrasta con el comportamiento observado durante las pruebas, y cualquier incongruencia reabre el punto.
  3. Tiempos de espera insuficientes. Un temporizador de 60 segundos en el frontend compromete buena parte del bloque de esperas.
  4. Folio no único. Si el folio se repite entre sucursales o en operaciones declinadas, la recuperación por reimpresión deja de ser posible y varios escenarios quedan sin resolver.
  5. Evaluar el resultado con un campo distinto al indicado. El campo aplicable es responseCode (00), o success en SDK; no el texto impreso en el ticket.
  6. Utilizar Print-Ticket para consultar el estatus de reversos. La documentación indica que no es fiable para ese fin; debe emplearse la reimpresión por folio.
  7. Enviar el orderId corto en devoluciones. La API de devoluciones requiere el orderId largo que devuelve Print-Ticket.
  8. Evidencias cruzadas. El ticket de una prueba acompañado del JSON de otra.
  9. Iniciar la sesión sin el material requerido. Sin tarjeta contactless, sin un BIN habilitado para cashback o sin la versión mínima de Smart PinPad, la prueba se registra como No realizado por falta de insumos.
  10. Desactivar el voucher oficial sin certificar el propio. Conduce directamente al estatus Ticket Personalizado 'No Certificado'.

Precisiones sobre funcionalidades concretas

Los dos primeros aplican a cualquier integración; los siguientes solo si su sistema ofrece esa funcionalidad, por lo que se presentan plegados.

Aplica a toda integración

El manejo de reversos es de implementación obligatoria

No es opcional ni depende de su tipo de integración: aplica a API, SDK y COM por igual, y se resuelve mediante la reimpresión por folio. Es un flujo poco frecuente y, precisamente por ello, suele quedar para el final y llegar sin implementar a la sesión de certificación. Los dos tipos de reverso, los pasos para provocar cada uno y los valores que devuelve la reimpresión están en el apartado 8.

Una venta de su sistema puede corresponder a varias transacciones en la terminal

Ocurre en las ventas parciales y en cualquier cobro que se liquide con más de una tarjeta o en más de un intento. Para su sistema es una sola venta, con un importe único y un solo registro en su base de datos; para la terminal son transacciones independientes, y cada una tiene su propia autorización y su propio resultado.

Por esa razón, cada transacción enviada a la terminal debe llevar un folio distinto. Si dos cobros comparten el mismo folio, la consulta por folio devolverá únicamente uno de ellos y el otro quedará sin trazabilidad. Ese es precisamente el punto que se valida.

Aplica solo si su integración lo incluye

Propina · valor por defecto

En todos los escenarios de propina, el valor propuesto por defecto debe ser inferior al 25 % del monto de la venta. Es el único requisito transversal del bloque: el resto de los escenarios de propina se listan, ya filtrados para su integración, en el apartado 9.

Devoluciones · si su integración las incluye

Una devolución, total o parcial, se considera exitosa cuando el campo code devuelve el valor 02. Cualquier otro valor debe tratarse como un error y así debe registrarlo su sistema.

Cashback · solo en integraciones por COM

El cashback está disponible únicamente en integraciones por COM, en la variante COM (con cashback). Si su integración es por API o por SDK, este apartado no le aplica.

Las cinco condiciones del cashback

Para que la terminal ofrezca cashback deben cumplirse las cinco de forma simultánea: monto mínimo de venta, monto mínimo de retiro, StoreId habilitado para la operativa, Smart PinPad 2.4 o superior, y un BIN de tarjeta incluido en la lista autorizada. Si alguna no se cumple, la venta continúa sin cashback, y precisamente ese comportamiento es el que se valida.

El flujo de cashback tiene dos respuestas

La primera confirma el cashback; la segunda cierra la venta. Su sistema debe estar preparado para ambas, y también para que el usuario demore entre una y otra: puede emplear un minuto en insertar la tarjeta, uno o dos en ingresar el NIP con algún reintento y minuto y medio en confirmar el retiro, y aun así su sistema debe recibir la respuesta.

Si el cashback no se confirma en el punto de venta

La terminal devuelve una respuesta de timeout a los 2 minutos. Es uno de los escenarios de la certificación, y su sistema debe procesar esa respuesta sin quedar bloqueado.