Saltar al contenido principal

Portal de Proveedores — Liquidaciones

Estos endpoints permiten a un proveedor (prestador) gestionar sus propias liquidaciones: listarlas, abrir una para ver el detalle, armar un borrador a partir de facturas aprobadas y enviarlo para su pago. Una liquidación agrupa varias facturas en un único lote de pago. Cada endpoint está acotado al proveedor detrás del token — solo ves y operás sobre tus propias liquidaciones.

Cuenta de proveedor requerida

El usuario autenticado debe estar vinculado a un proveedor (prestador). Las solicitudes desde una cuenta que no sea de proveedor se rechazan con 403 FORBIDDEN. Todos los endpoints requieren un token JWT válido, una clave de API y el encabezado tenant. Ver Autenticación.


Listar liquidaciones​

Obtiene una lista paginada de las liquidaciones del proveedor, con filtros opcionales de rango de fechas y estado.

GET/apidev/v1/supplier-portal/settlements
PermisoAPICLI_PORTALPROVEEDOR_READ
Límite de solicitudes30 req/min (ventana deslizante)

Encabezados de la solicitud​

Every request to a protected endpoint requires these headers:

HeaderRequiredDescription
AuthorizationYesBearer token obtained from the Login endpoint. Format: Bearer <token>
X-API-KeyYesCompany integration key provided during onboarding. Format: gtk_xxx...
tenantYesYour assigned tenant domain (default: geotareas.com) — always send your assigned tenant
Content-TypeConditionalapplication/json — required for POST and PUT requests

Parámetros de consulta​

ParámetroTipoRequeridoDescripción
startdatestring (ISO 8601)NoInicio del rango de fechas
enddatestring (ISO 8601)NoFin del rango de fechas
statusstringNoFiltrar por código de estado de liquidación: BOR, LENV, LAPR, LREC, CER
limitintegerNoRegistros por página. Mín.: 1, Máx.: 100, Predeterminado: 25
offsetintegerNoRegistros a omitir. Predeterminado: 0

Campos de la respuesta — data.rows[]​

CampoTipoDescripción
settlement_idstringIdentificador único de la liquidación
datestringFecha de creación de la liquidación
close_datestring | nullCuándo se cerró la liquidación
state_idnumberID del estado de la liquidación
state_codestringCódigo de estado de la liquidación (BOR, LENV, …)
state_namestringNombre del estado de la liquidación
totalnumberMonto total de la liquidación
invoice_countnumberNúmero de facturas incluidas
receipts_totalnumberTotal de los recibos adjuntos
adjustments_totalnumberTotal de los ajustes
differencenumberDiferencia entre el total y los recibos
notesstring | nullNotas de texto libre
payment_datestring | nullFecha de pago
payment_referencestring | nullReferencia de pago

Ejemplo de código​

curl -s "https://$TENANT/apidev/v1/supplier-portal/settlements?startdate=2026-05-01&enddate=2026-05-31&status=BOR" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Ejemplo de respuesta​

{
"success": true,
"data": {
"rows": [
{
"settlement_id": "9100000000001",
"date": "2026-05-31T10:00:00",
"close_date": null,
"state_id": 1,
"state_code": "BOR",
"state_name": "Borrador",
"total": 3294.00,
"invoice_count": 3,
"receipts_total": 0.00,
"adjustments_total": 0.00,
"difference": 3294.00,
"notes": "Liquidación mayo.",
"payment_date": null,
"payment_reference": null
}
]
},
"meta": {
"total": 1,
"limit": 25,
"offset": 0
}
}

Detalle de liquidación​

Obtiene una liquidación individual con su desglose completo: los mismos campos de fila que el listado, más las facturas que agrupa y los recibos adjuntos a ella. Devuelve 404 si la liquidación no pertenece al proveedor.

GET/apidev/v1/supplier-portal/settlements/{id}
PermisoAPICLI_PORTALPROVEEDOR_READ
Límite de solicitudes30 req/min (ventana deslizante)

Parámetros de ruta​

ParámetroTipoRequeridoDescripción
idstringSíIdentificador único de la liquidación

Campos de la respuesta — data.invoices[]​

CampoTipoDescripción
invoice_idstringIdentificador único de la factura
service_numberstring | nullNúmero visible del servicio
account_namestring | nullCuenta a la que pertenece el servicio
system_amountnumberMonto calculado por el sistema
declared_amountnumber | nullMonto declarado por el proveedor
provider_invoice_numberstring | nullNúmero de factura propio del proveedor
state_codestringCódigo de estado de la factura
state_namestringNombre del estado de la factura
is_manualbooleanSi la línea se agregó manualmente
descriptionstring | nullDescripción de la línea

Campos de la respuesta — data.receipts[]​

CampoTipoDescripción
receipt_idstringIdentificador único del recibo
numberstring | nullNúmero del recibo
datestring | nullFecha del recibo
typestringTipo de recibo
amountnumberMonto del recibo
notesstring | nullNotas de texto libre
attachment_urlstring | nullURL al archivo del recibo adjunto

El objeto data también incluye todos los campos listados para una fila del listado.

Ejemplo de código​

curl -s "https://$TENANT/apidev/v1/supplier-portal/settlements/9100000000001" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Ejemplo de respuesta​

{
"success": true,
"data": {
"settlement_id": "9100000000001",
"date": "2026-05-31T10:00:00",
"close_date": null,
"state_id": 1,
"state_code": "BOR",
"state_name": "Borrador",
"total": 3294.00,
"invoice_count": 3,
"receipts_total": 3300.00,
"adjustments_total": 0.00,
"difference": 6.00,
"notes": "Liquidación mayo.",
"payment_date": null,
"payment_reference": null,
"invoices": [
{
"invoice_id": "7234567890123456789",
"service_number": "SRV-2026-0042",
"account_name": "Supermercado Centro",
"system_amount": 1098.00,
"declared_amount": 1100.00,
"provider_invoice_number": "A-0001-0000123",
"state_code": "APR",
"state_name": "Aprobada",
"is_manual": false,
"description": null
}
],
"receipts": [
{
"receipt_id": "9200000000010",
"number": "REC-0001",
"date": "2026-05-31",
"type": "TRANSFER",
"amount": 3300.00,
"notes": "Transferencia bancaria.",
"attachment_url": "https://files.example.com/rec/10.pdf"
}
]
},
"meta": {}
}

Crear liquidación​

Crea una liquidación en borrador a partir de las facturas aprobadas del proveedor. Cada factura se valida: debe pertenecer al proveedor, estar en estado APR (aprobada) y no formar parte ya de una liquidación activa. Devuelve 201 con el detalle de la nueva liquidación.

POST/apidev/v1/supplier-portal/settlements
PermisoAPICLI_PORTALPROVEEDOR_WRITE
Límite de solicitudes10 req/min (ventana deslizante)

Cuerpo de la solicitud​

CampoTipoRequeridoDescripción
invoice_idsarraySíFacturas a agrupar (cadenas numéricas, 1–500 ítems)
notestringNoNota de texto libre para la liquidación

Ejemplo de código​

curl -s -X POST "https://$TENANT/apidev/v1/supplier-portal/settlements" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
-H "Content-Type: application/json" \
-d '{
"invoice_ids": ["7234567890123456789", "7234567890123456790"],
"note": "Liquidación mayo."
}'

Ejemplo de respuesta — 201 Created​

{
"success": true,
"data": {
"settlement_id": "9100000000001",
"date": "2026-05-31T10:00:00",
"close_date": null,
"state_id": 1,
"state_code": "BOR",
"state_name": "Borrador",
"total": 1640.00,
"invoice_count": 2,
"receipts_total": 0.00,
"adjustments_total": 0.00,
"difference": 1640.00,
"notes": "Liquidación mayo.",
"payment_date": null,
"payment_reference": null,
"invoices": [
{
"invoice_id": "7234567890123456789",
"service_number": "SRV-2026-0042",
"account_name": "Supermercado Centro",
"system_amount": 1100.00,
"declared_amount": 1100.00,
"provider_invoice_number": "A-0001-0000123",
"state_code": "APR",
"state_name": "Aprobada",
"is_manual": false,
"description": null
}
],
"receipts": []
},
"meta": {}
}

Enviar liquidación​

Envía una liquidación en borrador para su pago. Mueve la liquidación de BOR (borrador) a LENV (enviada) y requiere que al menos un recibo esté adjunto. Devuelve la fila de liquidación actualizada, o 404 si la liquidación no pertenece al proveedor.

PUT/apidev/v1/supplier-portal/settlements/{id}/submit
PermisoAPICLI_PORTALPROVEEDOR_WRITE
Límite de solicitudes10 req/min (ventana deslizante)

Parámetros de ruta​

ParámetroTipoRequeridoDescripción
idstringSíIdentificador único de la liquidación

Ejemplo de código​

curl -s -X PUT "https://$TENANT/apidev/v1/supplier-portal/settlements/9100000000001/submit" \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT"

Ejemplo de respuesta​

{
"success": true,
"data": {
"settlement_id": "9100000000001",
"date": "2026-05-31T10:00:00",
"close_date": null,
"state_id": 2,
"state_code": "LENV",
"state_name": "Enviada",
"total": 3294.00,
"invoice_count": 3,
"receipts_total": 3300.00,
"adjustments_total": 0.00,
"difference": 6.00,
"notes": "Liquidación mayo.",
"payment_date": null,
"payment_reference": null
},
"meta": {}
}

Errores​

CódigoHTTPAplica aDescripción
VALIDATION_ERROR400Listado, Crear, EnviarParámetros o cuerpo inválidos (por ejemplo, invoice_ids vacío, más de 500 ítems, una factura que no está aprobada, o enviar sin un recibo)
UNAUTHORIZED401TodosToken JWT / clave de API faltante o inválido
TOKEN_EXPIRED401TodosEl JWT era válido pero ha expirado (vigencia de 1 hora)
FORBIDDEN403TodosLa cuenta no es de proveedor — "This endpoint requires a supplier account." — o carece del permiso requerido
NOT_FOUND404Detalle, EnviarLa liquidación (o una factura referenciada) no existe o no pertenece a tu cuenta de proveedor
RATE_LIMITED429TodosSe excedió el límite de solicitudes del endpoint