Skip to main content

Payment Links API

API publica para crear, editar y consultar links de pago.

Autenticacion

No todos los endpoints de esta seccion usan el mismo mecanismo de acceso.

Endpoints autenticados (API Key + Client ID)

Aplica a:

  • POST /api/payment-links
  • PUT /api/payment-links/{id}

Headers requeridos:

HeaderValorDescripcion
AuthorizationBearer {API_KEY}API Key privada
x-client-id{CLIENT_ID}Identificador de cliente
Content-Typeapplication/jsonTipo de contenido

Endpoints con proof (sin API Key)

Aplica a:

  • GET /api/payment-links/{id}?proof={token}
  • POST /api/payment-links/{id}/sandbox-action

Estos endpoints validan el acceso mediante el token proof del payment link.


Endpoint

POST /api/payment-links

Body Parameters

ParametroTipoRequeridoDescripcion
itemsArraySiLista de conceptos a cobrar
items[].titleStringSiNombre del producto o servicio
items[].quantityNumberSiCantidad (mayor a 0)
items[].unitPriceNumberSiPrecio unitario (mayor o igual a 0)
items[].currencyIdStringSiMoneda (ejemplo: ARS)
items[].imageUrlStringNoURL de imagen del item
referenceIdStringSiID de referencia en tu sistema
backUrlObjectNoURLs de redireccion
backUrl.successStringNoURL para pago exitoso
backUrl.failureStringNoURL para pago fallido
notificationUrlStringNoURL webhook para este link (prioridad sobre la del cliente)
sandboxBoolNoSi es true, crea link de prueba

Request de ejemplo

{
"items": [
{
"title": "Testing",
"quantity": 1,
"unitPrice": 100,
"currencyId": "ARS"
}
],
"referenceId": "orden-456",
"notificationUrl": "https://tusitio.com/webhooks/pagos",
"sandbox": true,
"backUrl": {
"success": "https://tusitio.com/pago-exitoso",
"failure": "https://tusitio.com/pago-fallido"
}
}

Respuesta exitosa (201)

{
"url": "https://pay.galio.app/payment/64a1b2c3d4e5f6g7h8i9j0k1?proof=a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
"proofToken": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
"referenceId": "orden-456",
"sandbox": true
}

Errores frecuentes (400)

{
"error": "Items array is required"
}
{
"error": "Reference ID is required"
}
{
"error": "Minimum payment amount is $100"
}

cURL

curl -X POST https://pay.galio.app/api/payment-links \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TU_API_KEY" \
-H "x-client-id: TU_CLIENT_ID" \
-d '{
"items": [
{
"title": "Testing",
"quantity": 1,
"unitPrice": 100,
"currencyId": "ARS"
}
],
"referenceId": "orden-456"
}'

Endpoint

PUT /api/payment-links/{id}

Solo se actualizan los campos enviados.

URL Parameters

ParametroTipoRequeridoDescripcion
idStringSiID del payment link

Body Parameters

ParametroTipoDescripcion
referenceIdStringSin espacios; solo letras, numeros, _ y -
itemsArrayLista completa de items actualizada
backUrlObjectURLs de redireccion
notificationUrlStringURL para webhook del payment link

Si envías notificationUrl al crear o editar un payment link, los webhooks de ese link se enviarán a esa URL.

Prioridad de destino:

  1. paymentLink.notificationUrl (si está definido)
  2. client.notificationUrl (fallback)

Si no hay ninguna de las dos configuradas, no se envía webhook.

Respuesta exitosa (200)

{
"message": "Payment link updated successfully",
"paymentLink": {
"_id": "64a1b2c3d4e5f6g7h8i9j0k1",
"referenceId": "orden-456-updated"
}
}

Errores frecuentes

{
"error": "Cannot edit a payment link that has already been paid"
}
{
"error": "Items must be a non-empty array"
}

cURL

curl -X PUT "https://pay.galio.app/api/payment-links/64a1b2c3d4e5f6g7h8i9j0k1" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TU_API_KEY" \
-H "x-client-id: TU_CLIENT_ID" \
-d '{
"referenceId": "orden-456-updated",
"description": "Nueva descripcion"
}'

Endpoint

GET /api/payment-links/{id}?proof={token}

URL Parameters

ParametroTipoRequeridoDescripcion
idStringSiID del payment link

Query Parameters

ParametroTipoRequeridoDescripcion
proofStringSiToken de verificacion del link

Respuesta exitosa (200)

{
"id": "64a1b2c3d4e5f6g7h8i9j0k1",
"proofToken": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
"items": [
{
"title": "Testing",
"quantity": 1,
"unitPrice": 100,
"currencyId": "ARS"
}
],
"referenceId": "orden-456",
"backUrl": {
"success": "https://tusitio.com/pago-exitoso",
"failure": "https://tusitio.com/pago-fallido"
},
"status": "pending",
"sandbox": false,
"paymentId": null
}

cURL

curl -X GET "https://pay.galio.app/api/payment-links/64a1b2c3d4e5f6g7h8i9j0k1?proof=a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"

4) Accion Sandbox (aprobar)

Solo disponible para links creados con sandbox: true.

Endpoint

POST /api/payment-links/{id}/sandbox-action

Body Parameters

ParametroTipoRequeridoDescripcion
proofStringSiToken de verificacion del payment link
actionStringSiapprove

Request de ejemplo

{
"proof": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
"action": "approve"
}

Respuesta exitosa (200)

{
"success": true,
"message": "Sandbox payment approved",
"payment": {
"id": "67a8f1b2c3d4e5f6a7b8c9d0",
"status": "approved"
}
}

cURL

curl -X POST "https://pay.galio.app/api/payment-links/64a1b2c3d4e5f6g7h8i9j0k1/sandbox-action" \
-H "Content-Type: application/json" \
-d '{
"proof": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
"action": "approve"
}'