VexorpayDocs
VexorpayDocs
APIDocumentación de VexorpayPrimeros pasosVenta de producto digital

Core API

Referencia de APICrear link de pago únicoCrear link de pago recurrenteListar y obtener linksSuscripcionesCheckout por compraCobrosSaldoRetirosAcreditacionesEventos de reconciliaciónWebhooks salientesAutenticación

Recursos

PostmanComunidadModo sandbox

Eventos de reconciliación

Consulta el histórico de eventos para reconciliar tus webhooks con la API.

GET /api/v1/events — histórico de eventos de negocio, estilo Stripe, para reconciliar lo que recibiste por webhook con la API.

Cómo funciona

Cada evento tiene un id determinístico (evt_...) que es exactamente el mismo que se envía firmado en los webhooks salientes (header Vexorpay-Event-Id). Por eso podés:

  1. Recibir un webhook payment.completed con evt_abc.
  2. Si tenés dudas o se perdió el POST, consultar GET /api/v1/events y encontrar el mismo evt_abc.
  3. Deduplicar: procesar cada evt_ una sola vez.

Los eventos de cobros (payment.completed, payment.failed, payment.refunded, payment.disputed) y de retiros (payout.paid) se pueden reconstruir desde la API en orden cronológico descendente.

Los eventos de suscripciones (subscription.*) y dispute.resolved existen como webhook pero no se materializan en este endpoint (solo se derivan de las colecciones de cobros y retiros). Aceptar esos type es válido, pero la respuesta viene vacía: para esos casos basate en el webhook.

Request

GET /api/v1/events

Parámetros

ParámetroDescripción
typeFiltro: cualquiera de los 11 tipos de evento (ver Webhooks). En la práctica solo devuelve datos para payment.completed, payment.failed, payment.refunded, payment.disputed o payout.paid.
created[gte] / created[lte]Rango de fecha del evento (ISO 8601).
sandboxtrue (solo eventos de prueba) o false (solo producción). Sin el parámetro el default es solo el entorno de producción.
limit / starting_after / ending_beforePaginación por cursor por id de evento (default 10, máximo 100).

Ejemplo

curl "https://api.vexorpay.com/api/v1/events?type=payment.completed&limit=5" \
  -H "Authorization: Bearer vxp_u_tu_clave"

Respuesta exitosa

200 OK

{
  "data": [
    {
      "id": "evt_6c2314a4fb4a408c07c2",
      "type": "payment.completed",
      "created": "2026-01-02T12:05:00.000Z",
      "sandbox": false,
      "data": {
        "object": {
          "charge": {
            "id": "67f1c1e2c8a4b0d1f2e3a4b5",
            "reference": "ORD-1001",
            "amountCents": 1900,
            "currency": "usd",
            "status": "paid",
            "sandbox": false,
            "paidAt": "2026-01-02T12:05:00.000Z"
          },
          "payment_link": {
            "id": "66f1c1e2c8a4b0d1f2e3a4b5",
            "slug": "a1b2c3d4e5",
            "title": "Ebook UX en 30 días",
            "reference": "CATALOGO-UX"
          }
        }
      }
    }
  ],
  "has_more": false,
  "total_count": 1,
  "url": "/v1/events?limit=5"
}

El objeto dentro de data.object tiene la misma forma que el payload del webhook (charge + payment_link, o payout), más el campo sandbox —presente tanto en el evento raíz como dentro de charge—. En eventos payment.refunded se agregan refundedCents y recoveredCents, y en payment.disputed el objeto dispute (status, outcome, amountCents).

Errores

ErrorHTTPCausa
validation_error400type no es uno de los tipos de evento válidos.

Acreditaciones

Consulta los cobros que se van acreditando en tu cuenta Stripe Express.

Webhooks salientes

Recibí notificaciones firmadas cuando ocurren eventos de negocio en tu cuenta.

On this page

Cómo funcionaRequestParámetrosEjemploRespuesta exitosaErrores