Skip to main content
Una liga de pago (PaymentLink) es una URL pública de pago que puedes compartir sin conocer al deudor de antemano. Cuando alguien paga, TapiPay genera internamente una deuda por ese pago. Cuándo usarla: cobros sin padrón de deudores (donaciones, ventas sueltas, links de checkout por WhatsApp o email), donde conoces al pagador en el momento del pago, no antes. Si ya conoces al deudor, una deuda suele ser mejor.

Dos modos de uso

Un solo uso

singleUse: true (default). Genera una deuda con el primer pago y se desactiva. Ideal para una factura o venta puntual.

Reutilizable

singleUse: false. Se crea sin deudor y acepta múltiples pagos mientras siga activa. Modo donaciones o pasarela de pagos.

Crear una liga

Lo mínimo es el monto y una descripción visible en la página de pago.

Campos principales

number
requerido
Monto en pesos, con hasta 2 decimales (mínimo 0.01).
string
requerido
Descripción visible en la página de pago.
Llave natural de la liga. Opcional, pero si la envías debe ser única por organización (un duplicado devuelve 409 RESOURCE_CONFLICT).
boolean
predeterminado:"true"
true se desactiva tras el primer pago; false acepta múltiples pagos.
string
Identificador propio para la URL (opcional). Se sanea a un formato seguro para URL (minúsculas, alfanuméricos y guiones, máximo 64 caracteres). Si tras sanear queda vacío, devuelve 400 INVALID_REQUEST.
string
requerido
Fecha y hora de expiración (ISO 8601). Debe ser futura. Es obligatoria.
string
URL de redirección al completar el pago. Si no la envías, se usa la página de Tapi.
También acepta currency, productName y metadata.

El identifierValue y la URL de pago

El paymentUrl siempre viene en la respuesta. Cómo se arma el identifierValue depende de si la liga tiene un deudor conocido:
Es el caso típico de una liga. El identifierValue se expone en la respuesta y es el segmento final de la paymentUrl, así que puedes correlacionarlo sin parsear la URL.
  • Si enviaste identifierValue, se usa tu valor saneado.
  • Si no, TapiPay genera uno sintético con el formato {3letras}-{aleatorio} (las 3 letras salen del nombre de tu organización; por ejemplo, “Acme Corp” produce acm-x3kM9pQr).

Ciclo de vida

Una liga reutilizable (singleUse: false) permanece ACTIVE y acumula pagos. Cada pago genera una deuda interna; los consultas con GET /payment-links/{id}/payments.

Actualizar sin invalidar la URL

PATCH /payment-links/{id} permite cambiar description, expiresAt y metadata sin cambiar el paymentUrl: la liga sigue accesible desde la misma URL. El amount, la currency y singleUse no son modificables (intentarlo devuelve 400 INVALID_REQUEST).

Endpoints

Pruébalo en el API Reference

Explora cada endpoint con su playground interactivo.