PagosPagos en línea

Ligas de pago

Ligas de pago alojadas para cobros puntuales — créalas con tu llave de API, compártelas por correo, SMS o QR, y conoce el resultado por webhook.

Las ligas de pago te permiten generar una página de pago alojada y compartible para un solo cobro: el pagador no necesita cuenta ni inicio de sesión. Creas la liga desde tu servidor, compartes la url que te devolvemos y dejas que el pagador la abra y pague.

La creación requiere tu llave de API. La consulta pública de una liga (lo que usa la página alojada) no requiere autenticación. Los montos van siempre en unidades mínimas (centavos); la moneda por defecto es MXN.

El flujo

Crea una liga

POST /checkout/v1/links con un monto, un concepto y una reference. La respuesta incluye la url alojada.

Comparte la url

Envía la url al pagador por correo, SMS o código QR.

El pagador paga y tú lees el resultado

El pagador abre la url y paga en la página alojada. Conoce el resultado por el webhook payment_link.paid o consultando la liga.

1. Crear una liga

Crea una liga con tu llave de API. Envía el monto (amount_cents, en centavos, o amount en pesos), un concepto (la descripción legible del cobro) y una reference (tu propio identificador). Un objeto customer opcional precarga los datos del pagador.

curl -X POST https://api.vecnet.io/checkout/v1/links \
  -H "Authorization: Token vk_live_1a2b3c4d5e6f7a8b9c0d" \
  -H "Content-Type: application/json" \
  -d '{
    "amount_cents": 150000,
    "concepto": "Pago de tenencia vehicular 2026",
    "reference": "TEN-2026-00482",
    "customer": {
      "first_name": "Ana",
      "last_name": "López",
      "email": "ana.lopez@example.com"
    }
  }'

La respuesta trae la liga creada con la url alojada para compartir:

{
  "id": "pl_2m7qd4ba9k",
  "merchant_id": "mrc_3f9a2c1b",
  "amount_cents": 150000,
  "currency": "MXN",
  "concepto": "Pago de tenencia vehicular 2026",
  "reference": "TEN-2026-00482",
  "status": "active",
  "url": "https://pagos.vecnet.io/links/pl_2m7qd4ba9k",
  "created_at": "2026-06-22T16:04:11.482Z"
}

Envía la url como prefieras: correo, SMS o un código QR. La página es pública y muestra tu marca y el monto.

2. Consultar una liga

Carga una liga por su id pl_… para revisar su estado. Con tu llave de API usa GET /checkout/v1/links/:id; la página alojada usa la versión pública, sin autenticación:

curl https://api.vecnet.io/api/public/links/pl_2m7qd4ba9k
{
  "id": "pl_2m7qd4ba9k",
  "amount_cents": 150000,
  "currency": "MXN",
  "concepto": "Pago de tenencia vehicular 2026",
  "reference": "TEN-2026-00482",
  "status": "active",
  "created_at": "2026-06-22T16:04:11.482Z"
}

El status de una liga es uno de active, paid, expired o cancelled. Una liga pagada trae además transaction_id y paid_at.

3. Conocer el resultado

El pagador completa el pago en la página alojada; tu integración nunca maneja datos de tarjeta. Obtén el resultado de una de dos formas:

  • Webhooks (recomendado): suscríbete a payment_link.paid y payment.approved. Consulta Webhooks.
  • Consulta (polling): carga la liga (paso 2) y lee su status. Una liga pagada apunta a una fila de transactions con el estado autoritativo del pago.

Los datos de tarjeta nunca se reciben por la API y los números de tarjeta nunca se registran: solo se conservan la marca y los últimos cuatro dígitos. El endpoint antiguo /api/public/links/:id/pay está retirado (410 Gone).

Dependencias de gobierno

Para el flujo de recaudación de gobiernos estatales, cada dependencia (tenant) publica su identidad visual con un slug. La página alojada la consulta sin autenticación para mostrar el nombre, la moneda y la marca correctos:

curl https://api.vecnet.io/api/public/states/estado-demo
{
  "slug": "estado-demo",
  "name": "Gobierno de Ejemplo",
  "currency": "MXN",
  "defaultConcepto": "Pago de derechos",
  "branding": { "primaryColor": "#121722" }
}
¿Te fue útil esta página?

En esta página