<!-- Source: https://docs.infraio.xyz/es/payment-links/overview -->
<!-- Last updated: 2026-10-04 -->

# Enlaces de pago — Resumen

Un **Enlace de pago** es una URL compartible que deja al comprador
en un checkout alojado que ya has configurado. Sin SDK, sin
integración de servidor: emítelo en el dashboard, compártelo, y el
mismo webhook `payment.settled` se dispara cuando los fondos se
confirman on-chain.

Bajo el capó, un Enlace de pago **es** una
[CheckoutSession](https://docs.infraio.xyz/es/concepts/sessions): "Enlace de pago" es solo el
nombre del lado dashboard para una sesión que no fue creada por un
flujo de SDK iniciado por el comprador. Mismo contrato de webhook,
misma liquidación on-chain, mismas tarifas.

Usos comunes:

- Facturar a un cliente puntual sin escribir código
- Páginas de venta donde no tienes un carrito personalizado
- Seguimientos B2B: pega el enlace en un email
- Páginas de propina de importe fijo estilo "Cómprame un café"

## Crea uno

Crea enlaces de pago en el dashboard:

1. Inicia sesión en el [dashboard del comerciante](https://app.infraio.xyz)
2. **Pagos → Enlaces de pago → + Nuevo enlace**
3. Elige una de dos rutas:
   - **Nueva orden**: introduce line items, moneda, información del
     cliente y metadatos opcionales. El dashboard crea la Order y
     el Enlace de pago en una sola llamada.
   - **Orden existente**: elige una orden `PENDING` (p. ej.
     el comprador abandonó el enlace anterior). Reemite un enlace
     fresco respaldado por la misma orden, así que el historial de
     orden permanece intacto.
   - En **New order** puedes cambiar a **Solo importe** para cobrar un importe fijo sin listar productos.
4. Guarda → el dashboard muestra la URL
   `https://checkout.infraio.xyz/cst_…` con un botón de copiar y
   descarga de código QR. Los enlaces de modo de prueba usan
   `checkout-dev.infraio.xyz` así que el entorno está codificado en
   el hostname.

> **Note:**
>
> Cada Enlace de pago es de un solo uso hoy: una vez que un comprador
> paga, la sesión es `COMPLETED`. Si una sesión expira antes del
> pago (TTL por defecto 30 minutos), abre la página de detalle de
> la orden y haz clic en **Re-crear enlace** para emitir uno fresco
> contra la misma orden.

## Lo que ve el comprador

1. Aterrizan en `checkout.infraio.xyz/<session_key>`: la misma UI de
   checkout alojado que obtendrías de una sesión emitida por SDK.
2. Pasan por el flujo estándar de elegir-activo → enviar-fondos →
   esperar-confirmación descrito en
   [Checkout — Resumen](https://docs.infraio.xyz/es/checkout/overview).
3. `payment.settled` se dispara en tu webhook con la orden, intent,
   recibo, tx hash on-chain y conteo de confirmaciones: el mismo
   payload que cualquier otro pago liquidado. Consulta
   [Webhooks](https://docs.infraio.xyz/es/webhooks/overview) para el esquema.

## Lo que te da el dashboard

La superficie de Enlaces de pago hoy se envía con:

- **Vista de lista**: cada enlace que has emitido, paginado por
  cursor, con estado, importe, número de orden padre, cliente,
  expiración y apertura de un clic a la URL del comprador.
- **Filtros**: estado (`ACTIVE` / `COMPLETED` / `EXPIRED` /
  `CANCELED`), rango de fechas y búsqueda de texto completo a
  través del número de orden, nombre del cliente, email o ref
  externa.
- **Exportación CSV**: un clic, respeta los filtros actuales.
- **Tira KPI**: conteos por estado para el entorno actual
  (`live` o `test`), que coinciden con lo que muestra la tabla.
- **Página de detalle**: resumen de orden, historial de sesiones
  (cada intento para esta orden), historial on-chain con enlaces a
  block explorer y una acción **Re-crear enlace** para sesiones
  que expiraron antes del pago.

## Limitaciones hoy

- **Sin API programática**: los enlaces deben crearse en el
  dashboard. Puedes crear sesiones equivalentes de un solo
  uso vía `POST /b2b/v1/checkout-sessions/quick` (consulta
  [Referencia de la API](https://docs.infraio.xyz/es/api-reference)), pero los enlaces
  compartibles se crean solo en el dashboard.
- **Sin autenticación por comprador**: cualquiera con la URL puede
  pagar. Cada enlace es de un solo uso, lo que limita este riesgo.
- **El branding es global**: el enlace usa tu logo a nivel
  comerciante, color de marca y radio de borde de **Settings →
  Branding**. Los overrides de branding por enlace no están
  disponibles.

## Ver también

- [Conceptos → Sesiones](https://docs.infraio.xyz/es/concepts/sessions): qué está pasando
  en la capa de sesión e intent mientras un comprador está pagando.
- [Checkout → Resumen](https://docs.infraio.xyz/es/checkout/overview): qué ve el comprador
  efectivamente.
- [Webhooks → Resumen](https://docs.infraio.xyz/es/webhooks/overview): el evento
  `payment.settled` al que reacciona tu servidor.
