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.

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"
  }'
CampoTipoObligatorioDescripción
titlestringSí1–200 caracteres.
amountstringSíPrecio en USD, con como máximo dos decimales, mínimo "1.00".
accepted_pairsarraySí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.
descriptionstring o nullNoHasta 2000 caracteres.
merchantstringNoReference de la cuenta MERCHANT que vende. Si se omite, tu cuenta platform. No se puede cambiar después.
fee_payerstring o nullNoCUSTOMER o MERCHANT. null u omitido: el valor por defecto de la organización (CUSTOMER) al momento de cada checkout.
markup_percentnumber o nullNo0–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_typestringNoNONE (por defecto), SECRET_TEXT, REDIRECT, FILE_DOWNLOAD o WEBHOOK_ONLY. Ver Entrega.
fulfillment_payloadstring o nullPara SECRET_TEXT, REDIRECT, FILE_DOWNLOADHasta 4000 caracteres. Para REDIRECT y FILE_DOWNLOAD, una URL http o https; cualquier otra cosa es un 422 en este campo.
redirect_urlstring o nullNoSe copia a cada factura que crea el link.
activebooleanNoPor 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_typeEl comprobante muestra
NONENada.
SECRET_TEXTfulfillment_payload como texto, con un botón para copiarlo: una clave de licencia, un código de invitación, instrucciones.
REDIRECTUn botón que abre fulfillment_payload, la URL de una página de acceso.
FILE_DOWNLOADUn botón que abre fulfillment_payload, una URL de descarga. Aliquot no aloja el archivo.
WEBHOOK_ONLYNada. Entregás vos desde tu handler de invoice.paid.
  • Nunca antes del pago. En cualquier otro estado, el fulfillment de la vista pública es null; 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.

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

EndpointPermisoDescripción
GET /api/v1/crypto/payment-links?mode=testcrypto-links:readTodos 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:readUn link.
PATCH /api/v1/crypto/payment-links/{id}crypto-links:updateCambia 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, la description, el amount, el merchant y la redirect_url del link;
  • el fee_payer y el markup_percent del link, o los valores por defecto de la organización cuando son null;
  • sin splits, sin merchant_order_id, sin buyer_email y sin metadata;
  • payment_link_id con el id del 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:

EndpointDescripció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}/checkoutCrea 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.