SiPagoDocs
Docs para IA

Confirmación de pago

Una vez generado el QR y mostrado al pagador, hay dos formas de conocer el resultado:

  • Tiempo real (recomendada): suscripción SSE al tópico del QR.
  • Polling: consulta periódica del estado del intent.

Suscripción SSE (tiempo real)

GET https://api.prd.geopagos.io/sse/notifications?topic=urn%3A{TENANT_IDENTIFIER}%3Aintent_{QrHash}

Accept: text/event-stream

curl --location 'https://api.prd.geopagos.io/sse/notifications?topic=urn%3A{TENANT_IDENTIFIER}%3Aintent_{QrHash}' \
--header 'Authorization: Bearer {access_token}' \
--header 'Accept: text/event-stream'
ParámetroDescripción
TENANT_IDENTIFIERUUID del tenant, valor compartido por todos los clientes: 5662e892-59f2-4a54-aea8-cfbf77942843 (ver Credenciales)
QrHashid / hash del QR generado

El tópico tiene la forma urn:{TENANT_IDENTIFIER}:intent_{QrHash} (URL-encoded: urn%3A...%3Aintent_...).

Cuando el QR se paga, la notificación SSE incluye el reference_number de la autorización, que permite obtener el detalle completo de la venta.

Nota: Consideraciones de implementación

Mantené la conexión abierta mientras el QR esté vigente, implementá reconexión ante cortes y tené en cuenta la expiración del token (15 min) para streams de larga duración.

Consultar estado de un QR (solo QR dinámico)

GET https://api.prd.geopagos.io/api/v4/payments/intents/{qr_id}/sse

curl --location 'https://api.prd.geopagos.io/api/v4/payments/intents/{qr_id}/sse' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {access_token}'
CódigoSignificado
204 No ContentEl QR no fue pagado aún
200 OKEl QR fue pagado (se devuelve la autorización)

Response — 200 OK (pagado)

{
  "id": "3f59b249-59f3-42f7-aa12-42a99dadc92b",
  "type": "SALE",
  "status": "APPROVED",
  "refNumber": "09841023-b6da-4384-a4d4-a852dc4e923e",
  "entryMode": "QR",
  "totalAmount": 85.00
}

El campo refNumber es el reference_number de la autorización, necesario para obtener el detalle completo.

Obtener detalle del intent (solo QR dinámico)

Devuelve el estado y la composición del intent de pago (venta), aunque todavía no se haya pagado.

GET https://api.prd.geopagos.io/api/v4/payments/intents/{qr_id}

Response — 200 OK

{
  "uuid": "8cf1ce0f-8969-4029-b8ba-87406971d54d",
  "state": "PENDING",
  "amount": 111.0,
  "tip_amount": 0.0,
  "currency": "032",
  "origin": "mpos_app",
  "items": [
    { "amount": 111.0, "quantity": 1, "name": "Venta" }
  ],
  "taxes": [],
  "authorizations": [],
  "metadata": {
    "can_refund": false,
    "refund_without_card": false
  },
  "point_of_sale_id": "6fda9b64-d317-4723-9480-cda88579c987"
}

Estados observados del intent: PENDING (a la espera de pago) → SALE_CONFIRMED (venta confirmada). Cuando el intent se paga, el array authorizations[] contiene la autorización con su reference_number.

Siguiente paso: conciliación.