Getnet DocsGetnet Docs

Crear pagos con código QR Tarjeta Presente (Cuenta-a-Cuenta)

Esta guía le orientará en el procesamiento de un pago con código QR cuenta-a-cuenta en un entorno Tarjeta Presente utilizando la Getnet Regional API. En este flujo, el terminal físico del comercio solicita un código QR EMV dinámico a la pasarela (gateway), lo muestra al cliente, y el cliente lo escanea con su aplicación bancaria para autorizar el pago directamente desde su cuenta bancaria.

Esto no es Pix. El flujo de código QR descrito aquí es un método de pago cuenta-a-cuenta procesado a través de las redes Visa/Mastercard. Actualmente está disponible solo para Chile. La compatibilidad con otros países (Argentina a través de Transferencia 3.1, Brasil a través de Pix) se añadirá en futuras versiones.

Requisitos

Antes de iniciar una solicitud de código QR, asegúrese de lo siguiente:

  • Credenciales de la API: Obtenga su client_id y client_secret a través del equipo de Soporte a la Integración.
  • Autenticación: Genere un token Bearer a través del punto de enlace de Autenticación.
  • Hardware del terminal: Un dispositivo físico (POS/TEF) capaz de mostrar imágenes o texto de alta resolución para la representación del código QR.
  • Número de serie: El serial_number físico del dispositivo debe proporcionarse en cada solicitud.
  • Compatibilidad de marcas: Actualmente disponible exclusivamente para Visa y Mastercard.

Cómo funciona

El flujo de código QR de Tarjeta Presente tiene tres etapas:

EtapaActorAcción
1. GenerarTerminal → APIEl terminal envía una solicitud POST al punto de enlace de código QR y recibe una carga de datos QR EMV (HTTP 201).
2. MostrarTerminal → ClienteEl terminal representa la cadena QR como una imagen escaneable en su pantalla. El cliente la escanea con su aplicación bancaria.
3. ConfirmarAPI → TerminalEl pago se autoriza de forma asíncrona. El terminal confirma el estado final a través de webhooks o del punto de enlace Get Transaction.

Caducidad: Los códigos QR generados a través de este punto de enlace caducan a los 1 minuto y 50 segundos. Si el cliente no escanea y autoriza dentro de este plazo, descarte el código y genere uno nuevo.

Proceso de pago con código QR

Paso 1: Crear la solicitud de código QR

Envíe una solicitud POST al punto de enlace de código QR para generar la carga de datos del QR EMV.

Campos de la solicitud

CampoTipoRestriccionesDescripciónObligatorio
idempotency_keyString1–64 caracteres, alfanumérico + .-_Clave única para evitar solicitudes duplicadas.Sí
request_idString (UUID)36 caracteresIdentificador único para esta solicitud.Sí
order_idString1–36 caracteresSu referencia interna del pedido.Sí
amountEnteroEn céntimosImporte de la transacción (p. ej., 10000 = 100,00).Sí
currencyStringISO 4217Código de moneda (p. ej., CLP).Sí
payment_methodEnumPURCHASE, INVOICE, COLLECTIONEl tipo de operación de pago.Sí
transaction_typeEnumNO_INTEREST, WITH_INTERESTSi se aplican intereses por cuotas.Sí
serial_numberString—Número de serie único del terminal físico.Sí
payment_idString (UUID)36 caracteresIdentificador de pago opcional si se ha asignado previamente.No
additional_data.fee.range_acquirerString—Código del rango de tasa del adquirente.No
additional_data.fee.range_issuerString—Código del rango de tasa del emisor.No

Ejemplo de solicitud

curl --location --request POST 'https://api.pre.globalgetnet.com/dpm/payments-gwproxy/v2/payments/qrcode' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'x-transaction-channel-entry: XX' \
--data-raw '{
  "idempotency_key": "cp-qr-visa-001",
  "request_id": "daac03dc-73db-453f-9bea-b1391669d5d3",
  "order_id": "ORDER-101",
  "amount": 10000,
  "currency": "CLP",
  "payment_method": "PURCHASE",
  "transaction_type": "NO_INTEREST",
  "serial_number": "CL00027L"
}'

Paso 2: Mostrar el código QR

Si la solicitud tiene éxito, se devuelve HTTP 201 con un cuerpo JSON que contiene la cadena EMV qr_code dentro de additional_data. Represente esta cadena como una imagen escaneable en la pantalla del terminal.

Campos de la respuesta

CampoTipoDescripción
payment_idString (UUID)Identificador único de este pago. Utilícelo para consultar el estado final.
seller_idString (UUID)Identificador de la cuenta del vendedor.
request_idString (UUID)Repite el request_id enviado en la solicitud.
idempotency_keyStringRepite la idempotency_key enviada en la solicitud.
order_idStringRepite el order_id enviado en la solicitud.
amountEnteroImporte de la transacción en céntimos.
currencyStringCódigo de moneda ISO 4217.
statusEnumResultado de la generación del código QR: APPROVED, DENIED, ERROR o ACCEPTED.
reason_codeString (2 caracteres)Código de retorno de la pasarela o del adquirente.
reason_messageStringMensaje de retorno de la pasarela en lenguaje natural.
additional_data.transaction_idStringIdentificador de la transacción generado por la pasarela.
additional_data.creation_date_qrcodeString (ISO 8601)Marca de tiempo de creación del código QR.
additional_data.expiration_date_qrcodeString (ISO 8601)Marca de tiempo en la que caduca el código QR (110 segundos tras su creación).
additional_data.qr_codeStringLa cadena del código QR EMV para representar como imagen escaneable.
additional_data.qr_code_emv_typeEnumTipo de código QR: static o dynamic.
additional_data.third_party_qr_code_idStringIdentificador del código QR generado por el proveedor externo.
additional_data.third_party_order_idStringIdentificador del pedido generado por el proveedor externo.

Ejemplo de respuesta (HTTP 201)

{
  "payment_id": "03ec0ede-3bc9-42dd-a71b-1c3a670b2b89",
  "seller_id": "e0ed6f00-fdc5-46d6-9557-6a2cac641b09",
  "request_id": "daac03dc-73db-453f-9bea-b1391669d5d3",
  "idempotency_key": "cp-qr-visa-001",
  "order_id": "ORDER-101",
  "amount": 10000,
  "currency": "CLP",
  "status": "APPROVED",
  "reason_code": "00",
  "reason_message": "TRANSACTION EXECUTED SUCCESSFULLY",
  "additional_data": {
    "transaction_id": "890005df15a2-0b1e-4c6e-8ece",
    "qr_code": "00020101021241260009cl.getnet98097605970315204...",
    "qr_code_emv_type": "dynamic",
    "creation_date_qrcode": "2026-02-19T14:48:00.000Z",
    "expiration_date_qrcode": "2026-02-19T14:49:50.000Z",
    "third_party_qr_code_id": "61260970G",
    "third_party_order_id": "61260970G"
  }
}

status: "APPROVED" significa que el código QR se ha generado correctamente, pero no indica que el cliente haya pagado. Debe verificar el estado real de la transferencia de fondos por separado utilizando el payment_id.

Para procesar la respuesta:

  1. Extraiga additional_data.qr_code y represéntelo como una imagen QR escaneable en la pantalla del TPV (POS).
  2. Inicie un temporizador de cuenta atrás utilizando expiration_date_qrcode para descartar automáticamente los códigos caducados.
  3. Guarde el payment_id para consultar el estado de la autorización final en el Paso 3.

Paso 3: Verificar el estado de la transacción

Una vez que el cliente haya escaneado el código QR, verifique que el pago se haya completado utilizando uno de estos métodos:

  • Webhooks: Configure su integración para recibir notificaciones asíncronas del estado del pago.
  • Consulta (Polling): Llame al punto de enlace Get Transaction con el payment_id devuelto en el Paso 2.

Respuestas de error

Código HTTPDescripción
400 Bad RequestSolicitud mal formada o falta de campos obligatorios.
401 UnauthorizedToken Bearer no válido o caducado.
404 Not FoundRecurso referenciado no encontrado.
422 Unprocessable EntitySolicitud bien formada pero falló la validación de la lógica de negocio.
429 Too Many RequestsLímite de frecuencia excedido.
500 Internal ErrorError inesperado en el servidor.
503 Service UnavailableServicio temporalmente no disponible.
504 Gateway TimeoutLa pasarela no recibió una respuesta a tiempo.

Pasos siguientes

Ahora que conoce los pagos con código QR, explore estas funciones relacionadas de Tarjeta Presente:

  • Pagos de un solo paso: Procese ventas estándar de lectura de chip y banda magnética.
  • Pagos preautorizados: Gestione flujos en dos pasos para reservas y capturas diferidas.
  • Cancelar un pago: Revierta una transacción capturada previamente.
  • Requisitos del terminal: Verifique que su dispositivo admita la visualización de códigos QR.
  • Flujo de Tarjeta Presente: Revise los diagramas de secuencia de bajo nivel de todos los flujos.