vexorpayDocs
vexorpayDocs
APIDocumentación de vexorpayPrimeros pasosVenta de producto digitalCómo funcionan los cobros

Core API

Referencia de APICrear link de pago únicoCrear link de pago recurrenteListar y obtener linksSuscripcionesCheckout por compraEntregablesClaves de licenciaVentasClientesDisputasSaldoRetirosEventos de reconciliaciónCuentas conectadas (marketplace)Webhooks salientesAutenticación

Recursos

vexorpay MCPEspecificación OpenAPIMigrar desde el SDK `vexor`PostmanComunidadModo sandbox

Entregables

Contenido privado que ve sólo quien compró un link (una nota o un link), y la redirección después del pago.

Un deliverable es contenido que le das a quien te compra: instrucciones, un código de acceso, el link a tu curso o a tu agenda. Se adjunta a uno o varios links de pago con deliverable_ids y lo ve sólo el comprador: en la confirmación del pago y en su portal de compras (/billing, donde entra con su email y un código). El mail del recibo le lleva a ese portal.

  • Pago único: el comprador lo ve para siempre, salvo que le reembolses todo el pago o pierdas una disputa. Un reembolso parcial no lo quita.
  • Suscripción: lo ve mientras la suscripción siga vigente (también en cada renovación); cuando termina, deja de verlo.
  • Si editas un entregable o agregas uno a un link, lo ven también quienes ya compraron. Si lo eliminas, deja de verse en todas las compras.

Cada venta trae en access si el comprador tiene acceso y qué entregables ve (Ventas).

El objeto Deliverable

{
  "id": "6a1f0c2e9b1d4e0012ab34cd",
  "type": "note",
  "name": "Cómo acceder al curso",
  "note": "Entrá a cursos.ejemplo.com con tu email y el código CURSO-2026.",
  "url": null,
  "sandbox": false,
  "createdAt": "2026-11-05T12:00:00.000Z",
  "updatedAt": "2026-11-05T12:00:00.000Z"
}
CampoDescripción
typenote (texto privado, hasta 5000 caracteres), url (un link https) o license_key (una clave única por compra; ver Claves de licencia).
nameEl título que ve el comprador (hasta 100 caracteres).
noteEl texto, si es note.
urlEl link, si es url. El comprador lo podría compartir: para algo sensible, usa una nota con instrucciones de acceso.

Crear un entregable

POST /api/v1/deliverables (idempotente con Idempotency-Key)

curl https://api.vexorpay.com/api/v1/deliverables \
  -X POST \
  -H "Authorization: Bearer vxp_live_tu_clave" \
  -H "Content-Type: application/json" \
  -d '{ "type": "note", "name": "Cómo acceder al curso", "note": "Entrá a cursos.ejemplo.com con el código CURSO-2026." }'

Responde 201 con el entregable.

Adjuntarlo a un link y redirigir después del pago

Al crear o editar un link (POST /api/v1/payment-links o PATCH /api/v1/payment-links/{id}):

CampoDescripción
deliverable_idsIds de tus entregables (hasta 10). En el PATCH reemplaza la lista; null o [] los quita.
success_urlURL https a la que va el comprador después de pagar. Admite {ORDER_ID} (id de la venta) y {REFERENCE}. null la quita.
curl https://api.vexorpay.com/api/v1/payment-links/LINK_ID \
  -X PATCH \
  -H "Authorization: Bearer vxp_live_tu_clave" \
  -H "Content-Type: application/json" \
  -d '{ "deliverable_ids": ["6a1f0c2e9b1d4e0012ab34cd"], "success_url": "https://tu-sitio.com/gracias?orden={ORDER_ID}" }'

vexorpay confirma el pago antes de redirigir: si el link tiene entregables, el comprador los ve primero y sigue con un botón; si no, lo llevamos a tu URL en unos segundos. No des por pagada una compra porque alguien llegó a tu success_url (cualquiera puede escribir esa URL): confírmala con el webhook payment.completed o con GET /api/v1/orders/{ORDER_ID}.

Listar, ver, editar y eliminar

EndpointQué hace
GET /api/v1/deliverablesTus entregables (hasta 200, los más nuevos primero).
GET /api/v1/deliverables/{id}Un entregable.
PATCH /api/v1/deliverables/{id}Cambia name, note o url (el type no cambia).
DELETE /api/v1/deliverables/{id}Lo quita de tus links y de todas las compras. Responde { "id": "…", "deleted": true }.

Quitar o devolver el acceso

POST /api/v1/orders/{id}/access con { "status": "revoked" } le quita al comprador el acceso a los entregables de esa compra (y revoca sus claves de licencia); con "granted" se lo devuelve, salvo que haya otro motivo para no tenerlo (reembolso total, disputa perdida, suscripción terminada). Responde la venta con access.

Webhooks

access.granted y access.revoked avisan cada cambio del acceso de una compra, con el objeto Access en data.object (id, orderId, subscriptionId, paymentLinkId, customerEmail, status, revokedReason, deliverableIds, licenseKeyIds). Ver Webhooks.

Llevar al cliente a su portal

POST /api/v1/customer-portal-links con { "customer_email": "ana@ejemplo.com" } devuelve un link de 1 hora a su portal de compras, limitado a lo que te compró a vos (su contenido, sus claves y sus suscripciones). Sirve para un botón «Mis compras» en tu web. Si ese email no te compró nada responde 404 customer_not_found.

Errores

CódigoHTTPCuándo
validation_error400Falta type o name, la nota o la URL no son válidas, o deliverable_ids trae un id que no es tuyo.
not_found404No existe ese entregable (o ya lo eliminaste).
access_not_found404POST /orders/{id}/access sobre una venta que no dio acceso (no se cobró o no es de un link).
idempotency_conflict409La Idempotency-Key ya se usó con un body distinto.

Checkout por compra

Genera una sesión de checkout por cada pedido sobre un link existente.

Claves de licencia

Una clave única por compra para tu software, con límite de dispositivos y validación desde tu app sin API key.

On this page

El objeto DeliverableCrear un entregableAdjuntarlo a un link y redirigir después del pagoListar, ver, editar y eliminarQuitar o devolver el accesoWebhooksLlevar al cliente a su portalErrores