Payment links
Una página de pago reutilizable y de precio fijo en aliquot.cc. Cada pago que se inicia desde ella crea una factura nueva.
Última actualización 27 oct 2026
Un payment link es una página pública con un título, un precio en USD y los pares de red y token que aceptás. Compartí su URL donde quieras. Cada vez que un comprador inicia un pago, Aliquot crea una factura nueva en AWAITING_SELECTION y manda al comprador al hosted checkout de esa factura, donde elige uno de los pares aceptados.
Usá un payment link cuando el precio es fijo y no necesitás crear una factura por pedido desde tu servidor. Usá facturas cuando necesitás splits, tu propio ID de pedido o un monto por comprador.
Crear un link
POST /api/v1/crypto/payment-links — permiso crypto-links:create. Sin Idempotency-Key.
curl -X POST https://api.aliquot.cc/api/v1/crypto/payment-links \
-H "Authorization: Bearer $ALIQUOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Halden Grotesk — Desktop license",
"description": "Five desktop seats, OTF and TTF.",
"amount": "49.00",
"accepted_pairs": [
{ "network": "POLYGON_AMOY", "token": "USDC" },
{ "network": "BASE_SEPOLIA", "token": "USDC" }
],
"merchant": "halden_type",
"redirect_url": "https://shop.example.com/thanks"
}'| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
title | string | Sí | 1–200 caracteres. |
amount | string | Sí | Precio en USD, con como máximo dos decimales, mínimo "1.00". |
accepted_pairs | array | Sí | 1–8 pares { "network", "token" }, sin duplicados, todos de redes de Sandbox (mode: "test" en la API) o todos de redes de Live. Esto define el entorno del link, que después no se puede cambiar. |
description | string o null | No | Hasta 2000 caracteres. |
merchant | string | No | Reference de la cuenta MERCHANT que vende. Si se omite, tu cuenta platform. No se puede cambiar después. |
fee_payer | string o null | No | CUSTOMER o MERCHANT. null u omitido: el valor por defecto de la organización (CUSTOMER) al momento de cada checkout. |
markup_percent | number o null | No | 0–20, con como máximo dos decimales. null u omitido: el valor por defecto de la organización (0) al momento de cada checkout. |
fulfillment_type | string | No | NONE (por defecto), SECRET_TEXT, REDIRECT, FILE_DOWNLOAD o WEBHOOK_ONLY. Ver Entrega. |
fulfillment_payload | string o null | Para SECRET_TEXT, REDIRECT, FILE_DOWNLOAD | Hasta 4000 caracteres. Para REDIRECT y FILE_DOWNLOAD, una URL http o https; cualquier otra cosa es un 422 en este campo. |
redirect_url | string o null | No | Se copia a cada factura que crea el link. |
active | boolean | No | Por defecto true. |
Un link de Sandbox usa las redes de prueba; un link cuyos pares son todos de redes Live recibe pagos reales.
Entrega
La entrega (fulfilment) es lo que el comprador recibe en el comprobante del checkout cuando la factura está PAID u OVERPAID:
fulfillment_type | El comprobante muestra |
|---|---|
NONE | Nada. |
SECRET_TEXT | fulfillment_payload como texto, con un botón para copiarlo: una clave de licencia, un código de invitación, instrucciones. |
REDIRECT | Un botón que abre fulfillment_payload, la URL de una página de acceso. |
FILE_DOWNLOAD | Un botón que abre fulfillment_payload, una URL de descarga. Aliquot no aloja el archivo. |
WEBHOOK_ONLY | Nada. Entregás vos desde tu handler de invoice.paid. |
- Nunca antes del pago. En cualquier otro estado, el
fulfillmentde la vista pública esnull; el payload no llega al navegador. - Fija por factura. La entrega se copia a la factura cuando el comprador inicia el checkout. Editar el link cambia lo que entregan los checkouts siguientes, nunca el comprobante de una factura que ya existe.
- Comprobante público. Cualquiera que tenga el ID de la factura puede abrir el comprobante, igual que el resto del checkout. Para algo que tiene que quedar atado a un solo comprador, usá una URL firmada que venza o entregá desde tu webhook.
- Sin vuelta automática. Un comprobante con entrega no hace la cuenta regresiva a
redirect_url; el comprador tiene un botón para volver.
La vista pública (GET /api/v1/public/pay/{id} y su stream) la trae así:
"fulfillment": { "type": "FILE_DOWNLOAD", "payload": "https://files.example.com/halden-grotesk.zip" }Todos los webhooks invoice.* traen payment_link_id, así que tu handler de invoice.paid sabe de qué link vino el pago sin hacer otro request.
El objeto link
201 Created devuelve:
{
"id": "plink_01JB7RZ4C2W8M6Q1N3H5T7V9XA",
"slug": "k7m2q9x4hd",
"url": "https://aliquot.cc/l/k7m2q9x4hd",
"livemode": false,
"title": "Halden Grotesk — Desktop license",
"description": "Five desktop seats, OTF and TTF.",
"amount": "49.00",
"currency": "USD",
"merchant": { "reference": "halden_type", "name": "Halden Type" },
"accepted_pairs": [
{ "network": "POLYGON_AMOY", "token": "USDC" },
{ "network": "BASE_SEPOLIA", "token": "USDC" }
],
"fee_payer": null,
"markup_percent": null,
"fulfillment_type": "NONE",
"fulfillment_payload": null,
"redirect_url": "https://shop.example.com/thanks",
"active": true,
"sales_count": 0,
"created_at": "2026-10-27T14:00:00.000Z",
"updated_at": "2026-10-27T14:00:00.000Z"
}Aliquot genera el slug; compartí url. sales_count cuenta las facturas de este link que llegaron a PAID u OVERPAID.
Listar, consultar y actualizar
| Endpoint | Permiso | Descripción |
|---|---|---|
GET /api/v1/crypto/payment-links?mode=test | crypto-links:read | Todos los links de un entorno, { "items": [...] }. mode vale por defecto el entorno de tu key (live con una key legacy). |
GET /api/v1/crypto/payment-links/{id} | crypto-links:read | Un link. |
PATCH /api/v1/crypto/payment-links/{id} | crypto-links:update | Cambia cualquiera de title, description, amount, accepted_pairs, fee_payer, markup_percent, fulfillment_type, fulfillment_payload, redirect_url, active. Los campos que aceptan null se borran con null. Los nuevos accepted_pairs tienen que quedarse en el entorno del link. |
No hay borrado. Para dar de baja un link, poné "active": false: su página responde 404 y no crea facturas nuevas. Las facturas que ya creó no se ven afectadas. Los cambios aplican a los checkouts que se inicien después.
Qué crea un checkout
Cuando un comprador inicia un pago en https://aliquot.cc/l/{slug}, la factura nueva recibe:
- el
title, ladescription, elamount, elmerchanty laredirect_urldel link; - el
fee_payery elmarkup_percentdel link, o los valores por defecto de la organización cuando sonnull; - sin
splits, sinmerchant_order_id, sinbuyer_emaily sinmetadata; payment_link_idcon eliddel link, y una copia de la entrega del link;- el entorno del link, y la ventana de pago por defecto de la organización (30 minutos), que vuelve a arrancar completa cuando el comprador elige un par.
Estas facturas se comportan como cualquier otra: aparecen en GET /api/v1/crypto/invoices y mandan los mismos webhooks.
Endpoints públicos
La página del link usa dos endpoints sin autenticación, que podés llamar para poner un botón de pago en tu propia página:
| Endpoint | Descripción |
|---|---|
GET /api/v1/public/links/{slug} | { "slug", "livemode", "title", "description", "amount", "currency", "merchant_name", "platform_name", "allowed_pairs" }. 404 si el link no existe o está inactivo. |
POST /api/v1/public/links/{slug}/checkout | Crea la factura y responde 201 con { "invoice_id", "pay_url" }. Mandá al comprador a pay_url. |
allowed_pairs lista los pares aceptados que en este momento pueden recibir pagos.