Documentación de Integración Polpoo
Esta web sustituye la documentación operativa anterior y consolida todos los bloques de integración: envíos, devoluciones, tracking y plantillas.
Esta web sustituye la documentación operativa anterior y consolida todos los bloques de integración: envíos, devoluciones, tracking y plantillas.
Registro incremental de campos y endpoints incorporados en la integración. Añadir una fila por cada cambio nuevo.
| Fecha | Tipo | Módulo | Cambio | Acción integrador |
|---|---|---|---|---|
| 2026-05-18 | Nuevos campos | API y SFTP · Envío de albaranes (línea de producto) | Nuevos campos deliveryNotes.products.residualWeight y deliveryNotes.products.residualImport (number). Residuo plástico: peso e importe por unidad. Cálculo: residualWeight × quantity × residualImport. Aparece/oculta según configuración de la empresa. |
Opcional. |
| 2026-05-15 | Nuevo campo | API y SFTP · Envío de rutas | Nuevo campo deliveryPoints.deliveryTypeService (string). Tipo de servicio: P Pedido, I Instalación, D Desinstalación, O Otros. |
Opcional. |
| 2026-05-15 | Nuevos campos + cambio validación | API y SFTP · Envío de albaranes (cabecera) | Nuevos campos deliveryNotes.isOrder y deliveryNotes.isDispatchNote (boolean). Mutuamente excluyentes con isBill. Si ninguno está a true, se trata como albarán. |
Opcional. No combinar varios tipos a la vez. |
| 2026-05-15 | Nuevo campo | API y SFTP · Envío de albaranes (cabecera) | Nuevo campo deliveryNotes.methodOfPayment (string). Forma de pago, solo informativo. |
Opcional. |
| 2026-05-15 | Nuevo campo | API y SFTP · Envío de albaranes (línea de producto) | Nuevo campo deliveryNotes.products.serviceType (string): E entrega, R recogida. |
Opcional. |
| 2026-05-15 | Nuevos valores | API y SFTP · Envío de albaranes (línea de producto) | Valores específicos para deliveryNotes.products.productType usado con envases: EE envase entrega, ER envase recogida. |
Opcional. |
UTF-8.URL, el Bearer Token y el JSON Body editable.| Estado | Significado exacto |
|---|---|
| Obligatorio | Siempre debe enviarse. |
| Recomendado | No bloquea la integración, pero mejora planificación, trazabilidad o UX. |
| Opcional | Se puede omitir sin impacto funcional crítico. |
| Obligatorio si aplica | Es obligatorio cuando se da la condición indicada en la descripción del campo. |
Sube un fichero .json y comprueba antes de enviarlo a Polpoo: codificación UTF-8, sintaxis, estructura, campos obligatorios, tipos y reglas (exclusividad isBill/isOrder/isDispatchNote, valores enumerados, etc.).
La validación se ejecuta localmente en tu navegador. El fichero no se sube a ningún servidor.
Token técnico para llamadas API.
En el API Tester, los campos marcados como Editable son de prueba y puedes sustituirlos por tus credenciales y valores reales antes de ejecutar.
{
"client_id": 1,
"client_secret": "...",
"username": "integration@company.com",
"password": "secret_password",
"grant_type": "password"
}
Usar cabecera Authorization: Bearer <token>.
Existen dos modos de envío con el mismo payload:
/api/integration_session/delivery_point — acumulativo: todos los envíos del mismo día se agrupan en la misma entrega planificada en Polpoo./api/integration — independiente: cada envío crea una entrega planificada nueva.Los campos del formulario inferior están preparados para editarse rápido en pruebas manuales. Cambia el token y el JSON antes de enviar a producción o sandbox.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| name | string | Obligatorio | Nombre de la importación. |
| description | string | Obligatorio | Descripción de la importación. |
| dateSession | datetime | Obligatorio | Fecha de generación / sesión. |
| asignationDate | datetime | Oblig. en automatización | Fecha de asignación automática. |
| deliveryPoints.id | string | Obligatorio | Identificador único del cliente. |
| deliveryPoints.name | string | Obligatorio | Nombre del cliente. |
| deliveryPoints.address | string | Obligatorio | Dirección de entrega. |
| deliveryPoints.deliveryZoneId | string | Obligatorio | Zona/ruta de reparto. |
| deliveryPoints.nif | string | Recomendado | NIF del cliente. |
| deliveryPoints.population | string | Recomendado | Población del cliente. |
| deliveryPoints.postalCode | string | Recomendado | Código postal del cliente. |
| deliveryPoints.coordinates.latitude | decimal | Recomendado | Latitud del punto. |
| deliveryPoints.coordinates.longitude | decimal | Recomendado | Longitud del punto. |
| deliveryPoints.phoneNumber | string | Recomendado | Teléfono de contacto. |
| deliveryPoints.email | string | Recomendado | Email de contacto. |
| deliveryPoints.deliveryWindow.start | integer | Recomendado | Inicio de la ventana horaria en segundos. |
| deliveryPoints.deliveryWindow.end | integer | Recomendado | Fin de la ventana horaria en segundos. |
| deliveryPoints.demand | integer | Recomendado | Carga prevista por peso (>=0). |
| deliveryPoints.volumetric | decimal | Recomendado | Volumen previsto en metros cúbicos. |
| deliveryPoints.deliveryType | string | Recomendado | shipment (entrega) o pickup (recogida). Por defecto shipment. |
| deliveryPoints.deliveryDescription | string | Recomendado | shipmentWithPay (entrega con cobro) o onlyPay (solo cobro). |
| deliveryPoints.deliveryTypeService | string | Opcional | Tipo de servicio (primera letra): P = Pedido, I = Instalación, D = Desinstalación, O = Otros. |
| deliveryPoints.orderNumber | string | Recomendado | Número de pedido. |
| deliveryPoints.deliveryNotes | string | Recomendado | Observaciones de entrega. |
| deliveryPoints.deliveryIdentifier | string | Recomendado | Identificador de entrega (vincula con albaranes). |
| deliveryPoints.phoneWhatsapp | string | Oblig. si módulo WhatsApp | Teléfono WhatsApp del cliente. |
| deliveryPoints.service.code | string | Oblig. si envías servicio | Código del servicio. |
| deliveryPoints.service.name | string | Oblig. si envías servicio | Nombre del servicio. |
| deliveryPoints.deliveryZoneSpecification.code | string | Oblig. si envías esp. ruta | Código de la especificación de ruta. |
| deliveryPoints.deliveryZoneSpecification.name | string | Oblig. si envías esp. ruta | Nombre de la especificación de ruta. |
| deliveryPoints.deliveryZoneName | string | Opcional | Nombre legible de la zona de entrega. |
| deliveryPoints.box | integer | Opcional | Número total de cajas. |
| deliveryPoints.boxes.name | string | Opcional | Tipo de caja. |
| deliveryPoints.boxes.count | integer | Opcional | Cantidad del tipo de caja. |
| deliveryPoints.demands.code | string | Opcional | Código del compartimento del vehículo. |
| deliveryPoints.demands.demand | integer | Opcional | Carga específica del compartimento (>=0). Distinto de demand (peso total). |
| deliveryPoints.companyCif | string | Oblig. si multiempresa | CIF de la empresa facturadora. |
| deliveryPoints.delegationCode | string | Oblig. si multiempresa | Código de delegación interna. |
| deliveryPoints.useHours | boolean | Opcional | Si true usa las horas del payload; si false usa la configuración de Polpoo. |
| deliveryPoints.leadTime | integer | Opcional | Tiempo de adelanto permitido antes de la apertura del cliente (segundos). |
| deliveryPoints.allowDelayTime | boolean | Opcional | Activa la lógica de retrasos para el cliente. |
| deliveryPoints.delayType | string | Opcional | Nombre del tipo de retraso configurado. |
| deliveryPoints.activateDeliverySchedule | boolean | Opcional | Activa las especificaciones por día/franja. |
| deliveryPoints.deliveryScheduleDay.isActive | boolean | Opcional | Día abierto/cerrado. |
| deliveryPoints.deliveryScheduleDay.intDay | integer | Opcional | Día de la semana (1=Lunes, 2=Martes…). |
| deliveryPoints.deliveryScheduleDay.fixedDelivery | boolean | Opcional | Día de reparto fijo. |
| deliveryPoints.deliveryScheduleDay.hours.timeStart | integer | Opcional | Inicio de la franja horaria del día. |
| deliveryPoints.deliveryScheduleDay.hours.timeEnd | integer | Opcional | Fin de la franja horaria del día. |
| deliveryPoints.warehouseCode | string | Oblig. si usas almacenes | Código del almacén de destino. |
| deliveryPoints.useAddress | boolean | Opcional | Si true usa la dirección del payload; si false usa la de Polpoo. |
| deliveryPoints.particular | integer | Opcional | 1 no guarda al cliente en BBDD; 0 cliente normal. |
| deliveryPoints.serviceTime | integer | Opcional | Tiempo estimado de descarga (segundos). |
| deliveryPoints.sendDeliveryNoteMail | boolean | Opcional | Envía albarán por email si true (requiere email informado). |
| deliveryPoints.travelId | integer | Oblig. si multi-viaje | Identificador del viaje en rutas multi-viaje. |
| deliveryPoints.idERP | string | Oblig. en automatización | ID ERP del vehículo (cuando se preasigna). |
| deliveryPoints.importExtra | integer | Opcional | Importe extra a cobrar/abonar al cliente. |
| deliveryPoints.commercialERP | string | Oblig. si módulo comunicación | Identificador del comercial. |
| vehicle.idERP | string | Oblig. en automatización | Identificador ERP del vehículo. |
| vehicle.userERP | string | Oblig. en automatización | Identificador ERP del chófer/usuario. |
| vehicle.address | string | Opcional | Dirección de salida del chófer (origen de la ruta). |
| vehicle.addressEnd | string | Opcional | Dirección de llegada del chófer (final de la ruta). |
{
"name": "Rutas 2026-04-07",
"description": "Carga diaria ERP",
"dateSession": "2026-04-07",
"deliveryPoints": [
{
"id": "CL-1001",
"name": "Cliente Demo",
"address": "Calle Mayor 1, Sevilla",
"deliveryZoneId": "SEV-01",
"orderNumber": "PED-260407-001",
"deliveryType": "shipment"
}
]
}
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| dateDeliveryStart | date | Obligatorio | Fecha de asignación de los albaranes. |
| deliveryPoints.id | string | Obligatorio | Identificador único del cliente. |
| deliveryPoints.companyCif | string | Oblig. si multiempresa | CIF de la empresa facturadora a nivel de punto de entrega. |
| deliveryPoints.delegationCode | string | Oblig. si multiempresa | Código de delegación interna a nivel de punto de entrega. |
| deliveryNotes.deliveryNoteCode | string | Obligatorio | Número o código del albarán. |
| deliveryNotes.kg | float | Recomendado | Carga en kilos. |
| deliveryNotes.volumen | float | Recomendado | Carga en metros cúbicos. |
| deliveryNotes.package | integer | Recomendado | Número de bultos. |
| deliveryNotes.deliveryNoteObservation | string | Recomendado | Observaciones del albarán. |
| deliveryNotes.deliveryNoteOrderCode | string | Recomendado | Número del pedido referente. |
| deliveryNotes.promptPayDiscountPercent | float | Recomendado | Descuento por pronto pago (% sobre el total). |
| deliveryNotes.isDevolution | boolean | Recomendado | true = recogida; false/omitido = entrega. |
| deliveryNotes.totalPrice | float | Recomendado | Precio total del albarán (suma de productos). |
| deliveryNotes.palets | integer | Opcional | Número de palets. |
| deliveryNotes.sendDeliveryNoteCompanyId | integer | Opcional | ID de la compañía destino (multialmacén). |
| deliveryNotes.showDeliveryNotePrice | boolean | Opcional | Mostrar precios en el albarán. |
| deliveryNotes.managementCost | float | Opcional | Coste de gestión asociado. |
| deliveryNotes.managementCostTaxPercent | float | Opcional | IVA aplicado al coste de gestión. |
| deliveryNotes.scannedCode | string | Oblig. si usas paquetería | Código de escaneo (módulo Paquetería). |
| deliveryNotes.isBill | boolean | Opcional | true = factura. Mutuamente excluyente con isOrder y isDispatchNote. |
| deliveryNotes.isOrder | boolean | Opcional | true = pedido. Mutuamente excluyente con isBill e isDispatchNote. |
| deliveryNotes.isDispatchNote | boolean | Opcional | true = nota de entrega. Mutuamente excluyente con isBill e isOrder. Si ninguno de los tres está a true, el registro se trata como albarán. |
| deliveryNotes.billType | integer | Opcional | Tipo de factura asociado. |
| deliveryNotes.date | date | Opcional | Fecha que aparecerá en el albarán. |
| deliveryNotes.barCode | string | Opcional | Imagen base64 del código de barras. |
| deliveryNotes.deliveryIdentifier | string | Opcional | Identificador de entrega (vincula con rutas). |
| deliveryNotes.documentStore | string | Opcional | Almacén del documento (informativo). |
| deliveryNotes.documentType | string | Opcional | Tipo de documento (informativo). |
| deliveryNotes.documentTypeInt | string | Opcional | Tipo de documento int (informativo). |
| deliveryNotes.documentSeries | string | Opcional | Serie del documento (informativo). |
| deliveryNotes.documentExercise | string | Opcional | Ejercicio del documento (informativo). |
| deliveryNotes.payType | string | Opcional | Código de periodicidad / forma de pago. |
| deliveryNotes.payByDefault | boolean | Opcional | true = marcado el cobro por defecto. |
| deliveryNotes.methodOfPayment | string | Opcional | Forma de pago (solo informativo). |
| deliveryNotes.companyAssociated.code | string | Oblig. si comp. asociada | Código de la compañía asociada. |
| deliveryNotes.companyAssociated.name | string | Oblig. si comp. asociada | Nombre de la compañía asociada. |
| deliveryNotes.companyAssociated.nif | string | Oblig. si comp. asociada | NIF de la compañía asociada. |
| deliveryNotes.companyAssociated.streetAddress | string | Oblig. si comp. asociada | Dirección de la compañía asociada. |
| deliveryNotes.companyAssociated.city | string | Oblig. si comp. asociada | Ciudad de la compañía asociada. |
| deliveryNotes.companyAssociated.province | string | Oblig. si comp. asociada | Provincia de la compañía asociada. |
| deliveryNotes.companyAssociated.zipCode | string | Oblig. si comp. asociada | Código postal de la compañía asociada. |
| deliveryNotes.companyAssociated.phone | string | Oblig. si comp. asociada | Teléfono de la compañía asociada. |
| deliveryNotes.companyAssociated.billingEmail | string | Oblig. si comp. asociada | Email de facturación de la compañía asociada. |
| deliveryNotes.products.code | string | Obligatorio | Identificador del producto. |
| deliveryNotes.products.name | string | Obligatorio | Nombre del producto. |
| deliveryNotes.products.quantity | float | Obligatorio | Cantidad del producto. |
| deliveryNotes.products.price | float | Obligatorio | Precio por medida. |
| deliveryNotes.products.taxPercent | integer | Obligatorio | IVA del producto (%). |
| deliveryNotes.products.measure | string | Obligatorio | Formato/unidad del producto. |
| deliveryNotes.products.lotCode | string | Recomendado | Identificador del lote. |
| deliveryNotes.products.discountPercent | float | Recomendado | Descuento aplicado en porcentaje. |
| deliveryNotes.products.measureQuantity | float | Recomendado | Cantidad referente a la medida. |
| deliveryNotes.products.equivalencePercent | float | Opcional | Recargo de equivalencia (%). |
| deliveryNotes.products.grossMass | float | Opcional | Peso bruto. |
| deliveryNotes.products.tare | float | Opcional | Tara. |
| deliveryNotes.products.netMass | float | Opcional | Peso neto. |
| deliveryNotes.products.greenPoint | float | Opcional | Importe de punto verde. |
| deliveryNotes.products.ibee | float | Opcional | Importe de bebidas azucaradas envasadas (IBEE). |
| deliveryNotes.products.ibeeTaxPercent | float | Opcional | IVA aplicado al IBEE. |
| deliveryNotes.products.observation | string | Opcional | Observaciones del producto. |
| deliveryNotes.products.supplierReference | string | Opcional | Referencia del proveedor. |
| deliveryNotes.products.expirationDate | date | Opcional | Fecha de caducidad. |
| deliveryNotes.products.scannedCode | string | Oblig. si usas paquetería | Código escaneado del producto. |
| deliveryNotes.products.scanCodeArrays | array | Oblig. si usas paquetería | Lista de códigos escaneados. |
| deliveryNotes.products.serviceType | string | Opcional | E = entrega; R = recogida. |
| deliveryNotes.products.productType | string | Opcional | Tipo de producto. Para envases: EE = envase entrega; ER = envase recogida. |
| deliveryNotes.products.compensationNumber | string | Opcional | Número de compensación. |
| deliveryNotes.products.residualWeight | number | Opcional | Peso del residuo plástico por unidad. Se muestra/oculta en el documento según configuración de la empresa. |
| deliveryNotes.products.residualImport | number | Opcional | Importe del residuo plástico por unidad. Cálculo: residualWeight × quantity × residualImport. |
{
"dateDeliveryStart": "2026-04-07",
"deliveryPoints": [
{
"id": "CL-1001",
"deliveryNotes": [
{
"deliveryNoteCode": "ALB-260407-001",
"deliveryNoteOrderCode": "PED-260407-001",
"products": [
{
"code": "PRD-001",
"name": "Producto 1",
"quantity": 2,
"price": 4.5,
"taxPercent": 21,
"measure": "UNITS"
}
]
}
]
}
]
}
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| bills.deliveryPointId | string | Obligatorio | Id cliente. |
| bills.code | string | Obligatorio | Código factura. |
| bills.total | float | Obligatorio | Importe total. |
| bills.archiveUrl | string | Obligatorio | URL externa del PDF. |
| bills.status | integer | Obligatorio | 1 por cobrar, 2 cobrada. |
| bills.companyCif | string | Oblig. si multiempresa | CIF de la empresa facturadora. Solo en cuentas multiempresa. |
| bills.delegationCode | string | Oblig. si multiempresa | Código de delegación interna. Solo en cuentas multiempresa. |
{
"bills": [
{
"deliveryPointId": "CL-1001",
"code": "FAC-260407-001",
"total": 145.25,
"archiveUrl": "https://erp.midominio.com/facturas/FAC-260407-001.pdf",
"status": 1
}
]
}
Sincroniza el catálogo de motivos de incidencia (causas predefinidas que el chófer puede seleccionar en la app al registrar una incidencia o modificación).
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| data[].code | string | Obligatorio | Identificador único del motivo en tu ERP. |
| data[].name | string | Obligatorio | Nombre/descripción del motivo que verá el chófer en la app. |
| data[].isActive | boolean | Obligatorio | true si el motivo está disponible para selección; false para desactivarlo sin borrarlo. |
No usar comillas dobles dentro del valor de name (rompen el JSON). El resto de caracteres especiales son válidos.
{
"data": [
{
"code": "1",
"name": "Roto",
"isActive": false
},
{
"code": "2",
"name": "Mal estado",
"isActive": true
}
]
}
Debe enviarse al menos uno de los dos filtros: deliveryPointId o code.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| deliveryPointId | string | Opcional | Código cliente. |
| code | string | Opcional | Código factura. |
| Campo | Tipo | Descripción |
|---|---|---|
| name | string | Nombre del cliente. |
| code | string | Código de la factura. |
| paymentDate | datetime | Fecha de cobro. |
| paymentType | string | Tipo o canal de cobro. |
| userChargedBy | string | Usuario que registró el cobro. |
| total | float | Total cobrado. |
| billPaymentStatusName | string | Nombre del estado de pago. |
| billPaymentStatusId | integer | Identificador del estado de pago. |
| vehicle | string | Matrícula del vehículo cobrador. |
| documentStore | string | Almacén o ubicación documental. |
| documentType | string | Tipo de documento. |
| documentSeries | string | Serie documental. |
| documentExercise | string | Ejercicio documental. |
| dniDeliveryNote | string | DNI de la persona que cobra o firma. |
| nameDeliveryNote | string | Nombre de la persona que cobra o firma. |
{
"deliveryPointId": "CL-1001",
"code": "FAC-260407-001"
}
[
{
"name": "Cliente Demo",
"code": "FAC-260407-001",
"paymentDate": "2026-04-07 10:15:00",
"paymentType": "Tarjeta de crédito o débito",
"userChargedBy": "Chofer 01",
"total": 145.25,
"billPaymentStatusName": "Cobrado",
"billPaymentStatusId": 2,
"vehicle": "1234ABC"
}
]
| Campo de respuesta | Tipo | Descripción |
|---|---|---|
| ruta | string | Nombre de la ruta. |
| deliveryZoneId | string | Identificador de la zona o ruta. |
| totalKg | number | Peso total de la carga. |
| totalVolumen | number | Volumen total de la carga. |
| departureDayTime | integer | Hora de salida planificada. |
| vehicle.id | integer | Identificador interno del vehículo. |
| vehicle.registration | string | Matrícula del vehículo. |
| vehicle.idERP | string | Identificador ERP del vehículo. |
| vehicle.user.id | integer | Identificador interno del chófer. |
| vehicle.user.name | string | Nombre del chófer. |
| vehicle.user.surname | string | Apellidos del chófer. |
| vehicle.user.idERP | string | Identificador ERP del chófer. |
| deliveryPoints.id | string | Identificador del punto. |
| deliveryPoints.name | string | Nombre del punto o cliente. |
| deliveryPoints.order | integer | Orden de entrega. |
| deliveryPoints.estimatedArrivalTime | integer | ETA por parada. |
| deliveryPoints.orderNumber | string | Pedido asociado. |
| deliveryPoints.coordinates.latitude | decimal | Latitud del punto. |
| deliveryPoints.coordinates.longitude | decimal | Longitud del punto. |
| deliveryPoints.address | string | Dirección del punto. |
| deliveryPoints.deliveryType | string | Tipo de servicio. |
| deliveryPoints.travelId | integer | Identificador de viaje. |
| deliveryPoints.companyCif | string | CIF de la compañía. |
| deliveryPoints.delegationCode | string | Código de delegación. |
{
"date": "2026-04-07"
}
{
"data": [
{
"ruta": "RUTA-1",
"vehicle": {
"id": 100,
"registration": "1234ABC"
},
"deliveryPoints": [
{
"id": "CL-1001",
"order": 1,
"estimatedArrivalTime": 32400,
"orderNumber": "PED-260407-001"
}
]
}
]
}
La respuesta es extensa. Campos más usados en integración ERP:
| Campo | Tipo | Descripción |
|---|---|---|
| totalPendingDeliveryPoints | integer | Total de puntos pendientes. |
| totalDelayedPoints | integer | Total de puntos con retraso. |
| totalDevolution | integer | Total de devoluciones. |
| totalBoxes | integer | Total de cajas. |
| totalRetornableBox | integer | Total de cajas retornables. |
| dateDeliveryStart | date | Fecha de la ruta. |
| driverStartTime | datetime | Hora de inicio del chófer. |
| statusRoute.id | integer | Identificador del estado de ruta. |
| statusRoute.name | string | Nombre del estado de ruta. |
| data._id | string | Identificador interno del registro. |
| data.deliveryPointId | string | Identificador del cliente o punto. |
| data.identifier | string | Identificador externo de entrega. |
| data.order | integer | Orden de visita. |
| data.orderNumber | string | Número de pedido. |
| data.deliveryType | string | Tipo de servicio. |
| data.signature | string | Firma en base64. |
| data.signaturaTime | datetime | Fecha y hora de firma. |
| data.incident.observation | string | Observación de la incidencia. |
| data.deliveryNotes | string | Observaciones de entrega. |
| data.coordinates.latitude | decimal | Latitud del punto. |
| data.coordinates.longitude | decimal | Longitud del punto. |
| data.deliveryWindow.start | integer | Inicio de la ventana horaria del cliente. |
| data.deliveryWindow.end | integer | Fin de la ventana horaria del cliente. |
| data.arrivalTime | integer | ETA prevista. |
| data.arrivalDayTimeWithDelay | integer | ETA prevista con retraso. |
| data.delayTime | integer | Retraso estimado. |
| data.delayTimeOnDelivery | integer | Retraso en la entrega. |
| data.delayAccumulated | integer | Retraso acumulado. |
| data.statusDeliveryPoints.* | object | Histórico de estados por cliente. |
| data.listDevolution | array | Listado de devoluciones. |
| data.albarans | array | Listado de albaranes asociados. |
| driver.* | object | Datos del chófer. |
| vehicle.* | object | Datos del vehículo. |
Consulta el maestro de clientes de Polpoo. Sin parámetros devuelve la base completa; con id o name filtra el resultado.
| Parámetro | Tipo | Estado | Descripción |
|---|---|---|---|
| id | string | Opcional | Identificador único del cliente. Ej.: ?id=1054. |
| name | string | Opcional | Nombre o fragmento de nombre del cliente. Ej.: ?name=carniceria. |
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| data.id | string | Obligatorio | Identificador único del cliente. |
| data.companyId | integer | Obligatorio | Identificador único de la empresa a la que pertenece el cliente. |
| data.name | string | Obligatorio | Nombre del cliente. |
| data.nif | string | Opcional | NIF/CIF del cliente. |
| data.address | string | Opcional | Dirección principal del cliente. |
| data.serviceTime | integer | Opcional | Tiempo medio de servicio en segundos. |
| data.deliveryZoneId | string | Opcional | Ruta de reparto predefinida del cliente. |
| data.coordinatesLatitude | string | Opcional | Latitud de la dirección de entrega. |
| data.coordinatesLongitude | string | Opcional | Longitud de la dirección de entrega. |
| data.deliveryWindowStart | integer | Opcional | Hora de apertura del cliente en segundos. |
| data.deliveryWindowEnd | integer | Opcional | Hora de cierre del cliente en segundos. |
| data.postalCode | string | Opcional | Código postal del cliente. |
| data.phoneNumber | string | Opcional | Teléfono de contacto. |
| data.email | string | Opcional | Email de contacto. |
| data.sendDeliveryNoteMail | boolean | Opcional | Si true, el albarán firmado se envía por email al cliente. |
| data.companyAssociatedId | string | Opcional | Identificador de la empresa asociada. |
| data.isActive | boolean | Opcional | Estado activo del cliente. |
| data.population | string | Opcional | Municipio/población del cliente. |
| data.showDeliveryNotePrice | boolean | Opcional | Si true, los albaranes del cliente muestran precio. |
GET https://v2.restapi.polpoo.com/api/delivery_point_datatables?id=1054
| Evento | Campos requeridos | Ejemplo |
|---|---|---|
Inicio de ruta (event=10) | event, routeId | { "event": 10, "routeId": 1 } |
Fin de ruta (event=11) | event, routeId | { "event": 11, "routeId": 1 } |
Entrega (event=1) | event, routeId, clientId, comment, signatureTime, driverArrivalTime | { "event": 1, "routeId": "...", "clientId": "...", ... } |
Anulación (event=2) | event, routeId, clientId, comments, detail | { "event": 2, "routeId": "...", "clientId": "...", ... } |
No todos los campos se envían en todos los eventos. La obligatoriedad depende del event.
Devuelve la última posición GPS registrada del chófer durante el reparto, filtrada por número de pedido, nombre o usuario del chófer. Está pensada para consulta puntual del estado, no para tracking continuo.
El endpoint exacto no se publica en la documentación pública — solicítalo a un técnico de Polpoo. Requiere un usuario con rol técnico para generar el token.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| orderNumber | string | Opcional | Número de pedido asociado a la entrega. |
| name | string | Opcional | Nombre del chófer. |
| userName | string | Opcional | Usuario del chófer en Polpoo. |
{
"orderNumber": "12345678",
"name": "Vic",
"userName": "vicenc.sierra@polpoo.com"
}
| Campo | Tipo | Descripción |
|---|---|---|
| name | string | Nombre del chófer. |
| surname | string | Apellidos del chófer. |
| userName | string | Usuario del chófer en Polpoo. |
| localizationLastUpdate | datetime | Fecha y hora de la última posición registrada. |
| latitude | decimal | Latitud GPS. |
| longitude | decimal | Longitud GPS. |
El chófer debe estar activo y en reparto para que exista posición. Si no, la respuesta vendrá vacía.
Fichero: delivery_points.json en la raíz del SFTP de la compañía (./company_X/).
Para verificar la carga: Planificador → + Rutas → Entregas planificadas.
Codificación UTF-8. Si subes un fichero con el mismo nombre, se sobrescribe. Los valores de los campos no pueden contener comillas dobles. Los campos opcionales sin valor deben omitirse (no enviar la clave en el JSON).
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| name | string | Obligatorio | Nombre de la importación. |
| description | string | Obligatorio | Descripción de la importación. |
| dateSession | datetime | Obligatorio | Fecha de generación / sesión. |
| asignationDate | datetime | Oblig. en automatización | Fecha de asignación automática. |
| deliveryPoints.id | string | Obligatorio | Identificador único del cliente. |
| deliveryPoints.name | string | Obligatorio | Nombre del cliente. |
| deliveryPoints.address | string | Obligatorio | Dirección de entrega. |
| deliveryPoints.deliveryZoneId | string | Obligatorio | Zona/ruta de reparto. |
| deliveryPoints.nif | string | Recomendado | NIF del cliente. |
| deliveryPoints.population | string | Recomendado | Población del cliente. |
| deliveryPoints.postalCode | string | Recomendado | Código postal del cliente. |
| deliveryPoints.coordinates.latitude | decimal | Recomendado | Latitud del punto. |
| deliveryPoints.coordinates.longitude | decimal | Recomendado | Longitud del punto. |
| deliveryPoints.phoneNumber | string | Recomendado | Teléfono de contacto. |
| deliveryPoints.email | string | Recomendado | Email de contacto. |
| deliveryPoints.deliveryWindow.start | integer | Recomendado | Inicio de la ventana horaria en segundos. |
| deliveryPoints.deliveryWindow.end | integer | Recomendado | Fin de la ventana horaria en segundos. |
| deliveryPoints.demand | integer | Recomendado | Carga prevista por peso (>=0). |
| deliveryPoints.volumetric | decimal | Recomendado | Volumen previsto en metros cúbicos. |
| deliveryPoints.deliveryType | string | Recomendado | shipment (entrega) o pickup (recogida). Por defecto shipment. |
| deliveryPoints.deliveryDescription | string | Recomendado | shipmentWithPay (entrega con cobro) o onlyPay (solo cobro). |
| deliveryPoints.deliveryTypeService | string | Opcional | Tipo de servicio (primera letra): P = Pedido, I = Instalación, D = Desinstalación, O = Otros. |
| deliveryPoints.orderNumber | string | Recomendado | Número de pedido. |
| deliveryPoints.deliveryNotes | string | Recomendado | Observaciones de entrega. |
| deliveryPoints.deliveryIdentifier | string | Recomendado | Identificador de entrega (vincula con albaranes). |
| deliveryPoints.phoneWhatsapp | string | Oblig. si módulo WhatsApp | Teléfono WhatsApp del cliente. |
| deliveryPoints.service.code | string | Oblig. si envías servicio | Código del servicio. |
| deliveryPoints.service.name | string | Oblig. si envías servicio | Nombre del servicio. |
| deliveryPoints.deliveryZoneSpecification.code | string | Oblig. si envías esp. ruta | Código de la especificación de ruta. |
| deliveryPoints.deliveryZoneSpecification.name | string | Oblig. si envías esp. ruta | Nombre de la especificación de ruta. |
| deliveryPoints.deliveryZoneName | string | Opcional | Nombre legible de la zona de entrega. |
| deliveryPoints.box | integer | Opcional | Número total de cajas. |
| deliveryPoints.boxes.name | string | Opcional | Tipo de caja. |
| deliveryPoints.boxes.count | integer | Opcional | Cantidad del tipo de caja. |
| deliveryPoints.demands.code | string | Opcional | Código del compartimento del vehículo. |
| deliveryPoints.demands.demand | integer | Opcional | Carga específica del compartimento (>=0). Distinto de demand (peso total). |
| deliveryPoints.companyCif | string | Oblig. si multiempresa | CIF de la empresa facturadora. |
| deliveryPoints.delegationCode | string | Oblig. si multiempresa | Código de delegación interna. |
| deliveryPoints.useHours | boolean | Opcional | Si true usa las horas del fichero; si false usa la configuración de Polpoo. |
| deliveryPoints.leadTime | integer | Opcional | Tiempo de adelanto permitido antes de la apertura del cliente (segundos). |
| deliveryPoints.allowDelayTime | boolean | Opcional | Activa la lógica de retrasos para el cliente. |
| deliveryPoints.delayType | string | Opcional | Nombre del tipo de retraso configurado. |
| deliveryPoints.activateDeliverySchedule | boolean | Opcional | Activa las especificaciones por día/franja. |
| deliveryPoints.deliveryScheduleDay.isActive | boolean | Opcional | Día abierto/cerrado. |
| deliveryPoints.deliveryScheduleDay.intDay | integer | Opcional | Día de la semana (1=Lunes, 2=Martes…). |
| deliveryPoints.deliveryScheduleDay.fixedDelivery | boolean | Opcional | Día de reparto fijo. |
| deliveryPoints.deliveryScheduleDay.hours.timeStart | integer | Opcional | Inicio de la franja horaria del día. |
| deliveryPoints.deliveryScheduleDay.hours.timeEnd | integer | Opcional | Fin de la franja horaria del día. |
| deliveryPoints.warehouseCode | string | Oblig. si usas almacenes | Código del almacén de destino. |
| deliveryPoints.useAddress | boolean | Opcional | Si true usa la dirección del fichero; si false usa la de Polpoo. |
| deliveryPoints.particular | integer | Opcional | 1 no guarda al cliente en BBDD; 0 cliente normal. |
| deliveryPoints.serviceTime | integer | Opcional | Tiempo estimado de descarga (segundos). |
| deliveryPoints.sendDeliveryNoteMail | boolean | Opcional | Envía albarán por email si true (requiere email informado). |
| deliveryPoints.travelId | integer | Oblig. si multi-viaje | Identificador del viaje en rutas multi-viaje. |
| deliveryPoints.idERP | string | Oblig. en automatización | ID ERP del vehículo (cuando se preasigna). |
| deliveryPoints.importExtra | integer | Opcional | Importe extra a cobrar/abonar al cliente. |
| deliveryPoints.commercialERP | string | Oblig. si módulo comunicación | Identificador del comercial. |
| vehicle.idERP | string | Oblig. en automatización | Identificador ERP del vehículo. |
| vehicle.userERP | string | Oblig. en automatización | Identificador ERP del chófer/usuario. |
| vehicle.address | string | Opcional | Dirección de salida del chófer (origen de la ruta). |
| vehicle.addressEnd | string | Opcional | Dirección de llegada del chófer (final de la ruta). |
{
"name": "Lunes",
"description": "Rutas del lunes",
"dateSession": "2020-11-9",
"deliveryPoints": [
{
"id": "119029",
"name": "Empresa SL",
"address": "Pg. Sant Joan 6, 08009, Barcelona",
"deliveryZoneId": "BCN-02",
"deliveryWindow": { "start": 17700, "end": 28000 },
"population": "Barcelona",
"demand": 12,
"volumetric": 0.89,
"postalCode": "08009",
"nif": "F62789012",
"phoneNumber": "34666555666",
"email": "prueba@empr.com",
"deliveryType": "shipment",
"orderNumber": "P-4234",
"coordinates": { "latitude": 41.3250913, "longitude": 2.0148042 },
"deliveryNotes": "Pedir llaves"
}
]
}
Conexión SFTP (usuario, contraseña, servidor, puerto): solicítala al equipo técnico de Polpoo. La empresa debe configurar un email de soporte en Configuración > Integraciones.
Fichero: albarans.json en la raíz del SFTP de la compañía (./company_X/).
En un mismo fichero deben venir todos los albaranes del día; si un cliente tiene más de un albarán, se añade como nuevo registro en el array deliveryNotes. Las rutas de los clientes deben estar previamente asignadas en Polpoo antes de cargar el fichero.
Codificación UTF-8. Si subes un fichero con el mismo nombre, se sobrescribe. Los valores de los campos no pueden contener comillas dobles. Los campos opcionales sin valor deben omitirse.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| deliveryPoints.id | string | Obligatorio | Identificador único del cliente. |
| deliveryPoints.companyCif | string | Oblig. si multiempresa | CIF de la empresa facturadora a nivel de punto de entrega. |
| deliveryPoints.delegationCode | string | Oblig. si multiempresa | Código de delegación interna a nivel de punto de entrega. |
| deliveryNotes.deliveryNoteCode | string | Obligatorio | Número o código del albarán. |
| deliveryNotes.kg | float | Recomendado | Carga en kilos. |
| deliveryNotes.volumen | float | Recomendado | Carga en metros cúbicos. |
| deliveryNotes.package | integer | Recomendado | Número de bultos. |
| deliveryNotes.deliveryNoteObservation | string | Recomendado | Observaciones del albarán. |
| deliveryNotes.deliveryNoteOrderCode | string | Recomendado | Número del pedido referente. |
| deliveryNotes.promptPayDiscountPercent | float | Recomendado | Descuento por pronto pago (% sobre el total). |
| deliveryNotes.isDevolution | boolean | Recomendado | true = recogida; false/omitido = entrega. |
| deliveryNotes.totalPrice | float | Recomendado | Precio total del albarán (suma de productos). |
| deliveryNotes.palets | integer | Opcional | Número de palets. |
| deliveryNotes.sendDeliveryNoteCompanyId | integer | Opcional | ID de la compañía destino (multialmacén). |
| deliveryNotes.showDeliveryNotePrice | boolean | Opcional | Mostrar precios en el albarán. |
| deliveryNotes.managementCost | float | Opcional | Coste de gestión asociado. |
| deliveryNotes.managementCostTaxPercent | float | Opcional | IVA aplicado al coste de gestión. |
| deliveryNotes.scannedCode | string | Oblig. si usas paquetería | Código de escaneo (módulo Paquetería). |
| deliveryNotes.isBill | boolean | Opcional | true = factura. Mutuamente excluyente con isOrder y isDispatchNote. |
| deliveryNotes.isOrder | boolean | Opcional | true = pedido. Mutuamente excluyente con isBill e isDispatchNote. |
| deliveryNotes.isDispatchNote | boolean | Opcional | true = nota de entrega. Mutuamente excluyente con isBill e isOrder. Si ninguno de los tres está a true, el registro se trata como albarán. |
| deliveryNotes.billType | integer | Opcional | Tipo de factura asociado. |
| deliveryNotes.date | date | Opcional | Fecha que aparecerá en el albarán. |
| deliveryNotes.barCode | string | Opcional | Imagen base64 del código de barras. |
| deliveryNotes.deliveryIdentifier | string | Opcional | Identificador de entrega (vincula con rutas). |
| deliveryNotes.documentStore | string | Opcional | Almacén del documento (informativo). |
| deliveryNotes.documentType | string | Opcional | Tipo de documento (informativo). |
| deliveryNotes.documentTypeInt | string | Opcional | Tipo de documento int (informativo). |
| deliveryNotes.documentSeries | string | Opcional | Serie del documento (informativo). |
| deliveryNotes.documentExercise | string | Opcional | Ejercicio del documento (informativo). |
| deliveryNotes.payType | string | Opcional | Código de periodicidad / forma de pago. |
| deliveryNotes.payByDefault | boolean | Opcional | true = marcado el cobro por defecto. |
| deliveryNotes.methodOfPayment | string | Opcional | Forma de pago (solo informativo). |
| deliveryNotes.companyAssociated.code | string | Oblig. si comp. asociada | Código de la compañía asociada. |
| deliveryNotes.companyAssociated.name | string | Oblig. si comp. asociada | Nombre de la compañía asociada. |
| deliveryNotes.companyAssociated.nif | string | Oblig. si comp. asociada | NIF de la compañía asociada. |
| deliveryNotes.companyAssociated.streetAddress | string | Oblig. si comp. asociada | Dirección de la compañía asociada. |
| deliveryNotes.companyAssociated.city | string | Oblig. si comp. asociada | Ciudad de la compañía asociada. |
| deliveryNotes.companyAssociated.province | string | Oblig. si comp. asociada | Provincia de la compañía asociada. |
| deliveryNotes.companyAssociated.zipCode | string | Oblig. si comp. asociada | Código postal de la compañía asociada. |
| deliveryNotes.companyAssociated.phone | string | Oblig. si comp. asociada | Teléfono de la compañía asociada. |
| deliveryNotes.companyAssociated.billingEmail | string | Oblig. si comp. asociada | Email de facturación de la compañía asociada. |
| deliveryNotes.products.code | string | Obligatorio | Identificador del producto. |
| deliveryNotes.products.name | string | Obligatorio | Nombre del producto. |
| deliveryNotes.products.quantity | float | Obligatorio | Cantidad del producto. |
| deliveryNotes.products.price | float | Obligatorio | Precio por medida. |
| deliveryNotes.products.taxPercent | integer | Obligatorio | IVA del producto (%). |
| deliveryNotes.products.measure | string | Obligatorio | Formato/unidad del producto. |
| deliveryNotes.products.lotCode | string | Recomendado | Identificador del lote. |
| deliveryNotes.products.discountPercent | float | Recomendado | Descuento aplicado en porcentaje. |
| deliveryNotes.products.measureQuantity | float | Recomendado | Cantidad referente a la medida. |
| deliveryNotes.products.equivalencePercent | float | Opcional | Recargo de equivalencia (%). |
| deliveryNotes.products.grossMass | float | Opcional | Peso bruto. |
| deliveryNotes.products.tare | float | Opcional | Tara. |
| deliveryNotes.products.netMass | float | Opcional | Peso neto. |
| deliveryNotes.products.greenPoint | float | Opcional | Importe de punto verde. |
| deliveryNotes.products.ibee | float | Opcional | Importe de bebidas azucaradas envasadas (IBEE). |
| deliveryNotes.products.ibeeTaxPercent | float | Opcional | IVA aplicado al IBEE. |
| deliveryNotes.products.observation | string | Opcional | Observaciones del producto. |
| deliveryNotes.products.supplierReference | string | Opcional | Referencia del proveedor. |
| deliveryNotes.products.expirationDate | date | Opcional | Fecha de caducidad. |
| deliveryNotes.products.scannedCode | string | Oblig. si usas paquetería | Código escaneado del producto. |
| deliveryNotes.products.scanCodeArrays | array | Oblig. si usas paquetería | Lista de códigos escaneados. |
| deliveryNotes.products.serviceType | string | Opcional | E = entrega; R = recogida. |
| deliveryNotes.products.productType | string | Opcional | Tipo de producto. Para envases: EE = envase entrega; ER = envase recogida. |
| deliveryNotes.products.compensationNumber | string | Opcional | Número de compensación. |
| deliveryNotes.products.residualWeight | number | Opcional | Peso del residuo plástico por unidad. Se muestra/oculta en el documento según configuración de la empresa. |
| deliveryNotes.products.residualImport | number | Opcional | Importe del residuo plástico por unidad. Cálculo: residualWeight × quantity × residualImport. |
{
"deliveryPoints": [
{
"id": "119029",
"deliveryNotes": [
{
"deliveryNoteCode": "45466770",
"kg": 1450.5,
"volumen": 300.6,
"package": 2,
"deliveryNoteObservation": "Observaciones",
"deliveryNoteOrderCode": "2013",
"promptPayDiscountPercent": 33,
"isDevolution": false,
"products": [
{
"code": "PX-34",
"name": "Manzana Pink Pearl",
"quantity": 23,
"price": 0.67,
"taxPercent": 21,
"measure": "KGS",
"lotCode": "11297090",
"discountPercent": 20
}
]
}
]
}
]
}
Conexión SFTP (usuario, contraseña, servidor, puerto): solicítala al equipo técnico de Polpoo. La empresa debe configurar un email de soporte en Configuración > Integraciones.
Fichero: bills.json en la raíz del SFTP de la compañía (./).
Polpoo no almacena el PDF de la factura — únicamente el enlace (archiveUrl) al documento que debe vivir en un servidor accesible del integrador.
Si subes un fichero con el mismo nombre, se sobrescribe. Codificación UTF-8. No incluir comillas dobles ni caracteres especiales dentro del valor de los campos.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| bills.deliveryPointId | string | Obligatorio | Identificador único del cliente. |
| bills.code | string | Obligatorio | Código o número de factura. |
| bills.total | float | Obligatorio | Importe total de la factura. |
| bills.archiveUrl | string | Obligatorio | URL externa del PDF de la factura. |
| bills.status | integer | Obligatorio | 1 por cobrar, 2 cobrada. |
{
"bills": [
{
"deliveryPointId": "1054",
"code": "119029",
"total": 221.30,
"archiveUrl": "https://via.placeholder.com/119029.pdf",
"status": 1
}
]
}
Conexión SFTP (usuario, contraseña, servidor, puerto): solicítala al equipo técnico de Polpoo. Cada empresa tiene un directorio propio.
Fichero: envases.json en la raíz del SFTP.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| id | string | Obligatorio | Cliente. |
| products.code | string | Obligatorio | Código envase. |
| products.name | string | Obligatorio | Nombre envase. |
| products.quantity | integer | Obligatorio | Cantidad. |
| products.import | float | Obligatorio | Importe por unidad. |
[
{
"id": "CL-1001",
"products": [
{
"code": "ENV-001",
"name": "Caja retornable",
"quantity": 10,
"import": 0
}
]
}
]
Fichero: clients.json.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| id | string | Obligatorio | Id cliente. |
| name | string | Obligatorio | Nombre. |
| address | string | Obligatorio | Dirección principal. |
| serviceTime | integer | Obligatorio | Tiempo de servicio o descarga. |
| demand | integer | Obligatorio | Capacidad o demanda del punto. |
| nif | string | Opcional | NIF del cliente. |
| string | Opcional | Email del cliente. | |
| population | string | Opcional | Población del cliente. |
| deliveryWindow.start | integer | Opcional | Inicio de la ventana horaria. |
| deliveryWindow.end | integer | Opcional | Fin de la ventana horaria. |
| addresses[].* | object | Opcional | Direcciones secundarias con coordenadas. |
| phones[].* | object | Opcional | Teléfonos secundarios. |
| service.code | string | Oblig. si envías servicio | Código del servicio. |
| service.name | string | Oblig. si envías servicio | Nombre del servicio. |
| showDeliveryNotePrice | boolean | Opcional | Albaranes con/sin precio. |
{
"deliveryPoints": [
{
"id": "CL-1001",
"name": "Cliente Demo",
"address": "Calle Mayor 1, Sevilla",
"serviceTime": 600,
"demand": 0
}
]
}
Polpoo devuelve planificación y optimización en ficheros:
evaluation_YYYYMMDD.jsonoptimization_YYYYMMDD.json| Campo | Tipo | Descripción |
|---|---|---|
| vehicleId | integer | Identificador del vehículo asignado. |
| vehicles[].registration | string | Matrícula del vehículo asignado. |
| vehicles[].idERP | string | Identificador ERP del vehículo asignado. |
| vehicles[].user.id | integer | Identificador del chófer. |
| vehicles[].user.name | string | Nombre del chófer. |
| vehicles[].user.surname | string | Apellidos del chófer. |
| vehicles[].user.idERP | string | Identificador ERP del chófer. |
| deliveryZoneId | string | Ruta principal. |
| associatedRoute | string | Ruta asociada. |
| deliveryPoints.id | string | Cliente. |
| deliveryPoints.order | integer | Orden de visita. |
| deliveryPoints.estimatedArrivalTime | integer | ETA por punto. |
| deliveryPoints.orderNumber | string | Pedido. |
| deliveryPoints.coordinates.longitude | decimal | Longitud del punto. |
| deliveryPoints.coordinates.latitude | decimal | Latitud del punto. |
| deliveryPoints.travelId | integer | Viaje en rutas multiviaje. |
{
"routes": [
{
"deliveryZoneId": "RUTA-1",
"deliveryPoints": [
{
"id": "CL-1001",
"order": 1,
"estimatedArrivalTime": 32400
}
]
}
]
}
Fichero: route_NombreDeLaRuta_YYYYMMDD.json en las carpetas de retorno del SFTP.
Polpoo genera el fichero al cerrar la ruta, con la firma, las cajas entregadas/devueltas, las modificaciones de líneas y las incidencias.
| Campo | Tipo | Descripción |
|---|---|---|
| id | string | Cliente. |
| signature | string | Firma base64 (caso albarán único). |
| deliveredBoxes | integer | Cajas entregadas. |
| devolutionBoxes | integer | Cajas recogidas o devueltas. |
| devolutionDeliveryNote | string | Motivo de devolución. |
| observation | string | Observación general. |
| deliveryNoteObservation | string | Observación del albarán. |
| dniDeliveryNote | string | DNI del firmante. |
| nameDeliveryNote | string | Nombre del firmante. |
| deliveryNoteStatus | integer | Estado albarán (según configuración Polpoo). |
| deliveryNotes[].deliveryNoteCode | string | Detalle por albarán cuando hay varios. |
| deliveryNotes[].signature | string | Firma por albarán. |
| deliveryNotes[].products[].quantity_new | integer | Cantidad final tras modificación. |
| deliveryNotes[].products[].modify | boolean | Marca que hubo modificación. |
| deliveryNotes[].products[].import_new | float | Importe recalculado tras modificación. |
| deliveryNotes[].products[].predefine.* | object | Motivo predefinido de incidencia/modificación. |
[
{
"id": "CL-1001",
"deliveredBoxes": 3,
"devolutionBoxes": 1,
"deliveryNotes": [
{
"deliveryNoteCode": "ALB-260407-001",
"deliveryNoteStatus": 3,
"signature": "data:image/jpeg;base64,..."
}
]
}
]
Fichero: bill_XXXX.json (donde XXXX = código de factura) en la carpeta ./bills/ del SFTP.
Polpoo genera el fichero automáticamente cada vez que cambia el estado de cobro de una factura.
Si la factura se devuelve sin cobrar, todos los campos vienen a null excepto code.
| Campo | Tipo | Descripción |
|---|---|---|
| code | string | Código o número de factura. |
| paymentDate | datetime | Fecha y hora del cobro. |
| paymentType | string | Método de cobro (Efectivo, Tarjeta de crédito o débito…). |
| chargeType | string | Canal del cobro (App, Comercial). |
| userChargedBy | string | Usuario que registró el cobro. |
| total | float | Importe cobrado. |
| billPaymentStatusName | string | Nombre del estado de cobro. |
| billPaymentStatusId | integer | Identificador del estado de cobro. |
| vehicle.id | integer | Identificador interno del vehículo. |
| vehicle.name | string | Nombre del vehículo. |
| vehicle.registration | string | Matrícula del vehículo. |
| vehicle.idERP | array | Identificador(es) ERP del vehículo. |
| deliveryNotes.documentStore | string | Almacén o ubicación documental. |
| deliveryNotes.documentType | string | Tipo de documento. |
| deliveryNotes.documentSeries | string | Serie documental. |
| deliveryNotes.documentExercise | string | Ejercicio documental. |
| userERP | array | Identificador(es) ERP del chófer/operador que cobró. |
{
"code": "2261212-122024",
"paymentDate": "2025-01-10 09:12:55",
"paymentType": "Efectivo",
"chargeType": "Comercial",
"userChargedBy": "Joel Digon Martinez",
"total": 55.9,
"billPaymentStatusName": "Cobrado",
"billPaymentStatusId": 2,
"vehicle": {
"id": 1613,
"name": "iveco daily 2",
"registration": "1056GKD",
"idERP": ["2"]
},
"deliveryNotes": {
"documentStore": "2",
"documentType": "1",
"documentSeries": "201",
"documentExercise": "2023"
},
"userERP": ["5"]
}
Fichero: _YYYY_MM_DD_XXXX.json en la carpeta de retorno del SFTP. Polpoo lo genera al cerrar la ruta con el detalle de envases entregados/recogidos.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| id | string | Obligatorio | Cliente. |
| products.code | string | Obligatorio | Código envase. |
| products.name | string | Obligatorio | Nombre envase. |
| products.quantity | integer | Obligatorio | Cantidad final entregada o recogida. |
| products.type | string | Obligatorio | delivery (entregado) o pickup (recogido del cliente). |
Plantilla para alta/actualización del maestro de clientes en Polpoo.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| id | string | Obligatorio | Identificador del cliente. |
| name | string | Obligatorio | Nombre del cliente. |
| nif | string | Obligatorio | NIF del cliente. |
| address | string | Obligatorio | Dirección del cliente. |
| deliveryZoneId | string | Obligatorio | Zona de reparto. |
| coordinatesLatitude | number | Opcional | Latitud del cliente. |
| coordinatesLongitude | number | Opcional | Longitud del cliente. |
| postalCode | string | Opcional | Código postal. |
| province | string | Opcional | Provincia. |
| string | Opcional | Email de contacto. | |
| phoneNumber | string | Opcional | Teléfono de contacto. |
| deliveryWindowStart | integer | Opcional | Inicio del horario de entrega en segundos. |
| deliveryWindowEnd | integer | Opcional | Fin del horario de entrega en segundos. |
| serviceTime | integer | Opcional | Tiempo de descarga. |
| demand | number | Opcional | Demanda o capacidad. |
| requiredSignature | boolean | Opcional | Firma obligatoria en app. |
| leadTime | string | Opcional | Margen de adelanto permitido. |
| delayTime | string | Opcional | Margen de retraso permitido. |
| sendDeliveryNoteMail | boolean | Opcional | Envío de albarán por correo. |
Plantilla para envío puntual de rutas sin pasar por el ERP.
Si usas CSV debe ir separado por ; y codificado en UTF-8.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| id | string | Obligatorio | Identificador único del cliente. |
| address | string | Obligatorio | Dirección de envío. |
| name | string | Obligatorio | Nombre del cliente. |
| deliveryZoneId | string | Obligatorio | Zona/ruta de reparto. |
| population | string | Oblig. si concatenas dirección | Población del cliente. |
| postalCode | integer | Oblig. si concatenas dirección | Código postal del cliente. |
| start | integer | Recomendado | Inicio de la ventana horaria en segundos. |
| end | integer | Recomendado | Fin de la ventana horaria en segundos. |
| phoneNumber | string | Recomendado | Teléfono de contacto. |
| string | Recomendado | Email de contacto. | |
| demand | integer/float | Recomendado | Carga por peso. |
| volumetric | integer/float | Recomendado | Carga por volumen. |
| deliveryNotes | string | Recomendado | Observaciones de entrega. |
| orderNumber | string | Recomendado | Número de pedido. |
| particular | integer | Opcional | 1 no se guarda en BBDD / 0 cliente normal. |
| deliveryIdentifier | string | Opcional | Vinculación con albaranes. |
| roadType | string | Opcional | Tipo de vía. |
Plantilla para envío puntual de albaranes con sus líneas de producto.
Si usas CSV debe ir separado por ; y codificado en UTF-8.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| id | string | Obligatorio | Identificador del cliente. |
| deliveryNoteCode | string | Obligatorio | Número/código de albarán. |
| code | string | Obligatorio | Identificador de producto. |
| name | string | Obligatorio | Nombre de producto. |
| quantity | float | Obligatorio | Cantidad del producto. |
| price | float | Obligatorio | Precio por medida. |
| taxPercent | integer | Obligatorio | IVA del producto. |
| measure | string | Obligatorio | Formato/medida del producto. |
| deliveryNotesObservation | string | Opcional | Observaciones del producto. |
| promptPayDiscountPercent | float | Opcional | Descuento por pronto pago. |
| discountPercent | float | Opcional | Descuento en porcentaje. |
| grossMass | float | Opcional | Peso bruto. |
| netMass | float | Opcional | Peso neto. |
| Observation | string | Opcional | Observaciones del albarán. |
| lotCode | string | Opcional | Lote del producto. |
| equivalencePercent | float | Opcional | Recargo de equivalencia. |
| deliveryIdentifier | string | Opcional | Vinculación con rutas. |
Plantilla para alta/actualización del catálogo de productos en Polpoo. Las columnas se importan tal cual están escritas en la cabecera.
| Campo | Tipo | Estado | Descripción |
|---|---|---|---|
| code | string | Obligatorio | Código del producto. Polpoo admite espacios al inicio/final (ej. "27102011 "); se almacena tal cual viene en el Excel. |
| name | string | Obligatorio | Nombre del producto. |
| measure | string | Obligatorio | Unidad de medida (Litros, Kg, UNITS, etc.). |
| price | number | Obligatorio | Precio unitario por measure. 0 si el producto no tiene precio fijo. |
| tax | number | Obligatorio | IVA aplicado en porcentaje (ej. 21). |
| weigth | number | Recomendado | Peso unitario por measure. ⚠️ Cabecera con typo intencional (weigth en lugar de weight) — debe escribirse exactamente así. |
event 10, 11, 1, 2).