Escáner de compras: API pública y MCP
Sube, revisa, resuelve duplicados y convierte escaneos de compra desde la API pública y MCP. Trece operaciones cubren todo el flujo, el buzón del escáner y las categorías de gasto.
24 de septiembre de 2026 — el escáner de compras se suma a la API pública y al servidor MCP, junto a la app ya existente: sube facturas de proveedores y recibos, revisa los datos extraídos, resuelve duplicados y convierte un escaneo revisado en un borrador de compra. Consulta la guía del escáner.
Trece operaciones nuevas
| Endpoint | Descripción |
|---|---|
POST /v1/purchase_scans | Sube hasta 20 archivos en un único lote multipart |
GET /v1/purchase_scans | Lista escaneos, filtrable por document_kind, file_kind y supplier_link_state |
GET /v1/purchase_scans/stats | Contadores por estado, más facets desglosados de las mismas tres formas |
GET /v1/purchase_scans/{id} | Detalle completo del escaneo: extracción, líneas, incidencias, duplicado y auditoría |
GET /v1/purchase_scans/{id}/source | Descarga el original conservado, cifrado, como binario |
POST /v1/purchase_scans/{id}/retry | Inicia o repite el OCR de un escaneo recibido o fallido |
PUT /v1/purchase_scans/{id}/review | Parchea campos y líneas revisados, incluido catalog_selection |
POST /v1/purchase_scans/{id}/duplicate_resolution | Vincula a una compra existente o archiva como duplicado confirmado — irreversible |
POST /v1/purchase_scans/{id}/convert | Crea el borrador de compra vinculado — irreversible |
DELETE /v1/purchase_scans/{id} | Archiva un escaneo |
POST /v1/purchase_scans/{id}/restore | Restaura un escaneo archivado |
GET /v1/purchase_scan_emails | Lista los correos entrantes del buzón del escáner, incluidos los resultados pending, parked y failed, sender_authentication y reason |
GET /v1/purchase_invoices/expense_categories | Lista las categorías de gasto disponibles para una compra simplificada |
Qué añade cada operación
- Filtros nuevos del listado —
GET /v1/purchase_scansfiltra porsource,supplier_id,document_kind,file_kind,supplier_link_state,has_issuesysender;sourceysupplier_idadmiten una lista de valores separada por comas. Los elementos del listado incluyen esos mismos tres campos de clasificación másissue_count, el número de incidencias pendientes de revisar — no el recuento bruto de incidencias por campo.document_kindes uno deinvoice,simplified_qualified,ticket,delivery_note,otheroundetermined. - Campos de compra por línea y
catalog_selectionen la revisión — un parche de línea enPUT /v1/purchase_scans/{id}/reviewpuede fijar los cinco campos específicos de compra en cuanto estén disponibles en el escaneo (supplier_sku,unit_code,price_unit_code,package_quantity,measured_base_quantity) ycatalog_selection, que vincula una línea extraída a un producto, variante o presentación resuelto; omitirlo conserva la selección actual y un producto de otra empresa es422. scopey facets en las estadísticas —GET /v1/purchase_scans/statsadmitescope=inbox(por defecto) oscope=history, y añadefacets.by_document_kind,facets.by_file_kindyfacets.by_supplier_link_statejunto a sus contadores de estado ya existentes.- Varios resultados en el buzón —
GET /v1/purchase_scan_emailsfiltra por varios valores deresulta la vez y cada entrada publica tambiénsender_authenticationy, cuando aplica,reason. - 413 en el borde — un lote o archivo que supera los límites de subida
(20 archivos, 20 MiB por archivo, 100 MiB por lote) se rechaza antes de
llegar a la aplicación, con un cuerpo JSON
413 payload_too_large, no un error de aplicación.
Dos operaciones existentes también cambian
POST /v1/purchase_invoicesyPUT /v1/purchase_invoices/{id}ahora aceptan hasta 10.000 caracteres ennotes— antes 1.000 — igualando el límite que ya usa la revisión del escaneo.- Ambas también rechazan un
external_idque empiece por el prefijo reservadopurchase-scan:con422 parameter_invalid_value: ese prefijo está reservado a las facturas que el propio escáner crea al convertir.
Consulta los códigos de error de Purchase Scans
para los 23 códigos, y el
catálogo de tools MCP para las once tools
nuevas — diez del escáner más list_purchase_invoice_expense_categories.
Nuevos endpoints13
| Endpoint | Descripción |
|---|---|
GET/v1/purchase_invoices/expense_categories | Listar categorías de gastos |
GET/v1/purchase_scan_emails | Listar correos del escáner de compras |
DEL/v1/purchase_scans/{purchase_scan} | Archivar un escaneo de compra |
POST/v1/purchase_scans/{purchase_scan}/convert | Crear el gasto de un escaneo |
POST/v1/purchase_scans | Subir documentos al escáner de compras |
POST/v1/purchase_scans/{purchase_scan}/duplicate_resolution | Resolver un escaneo de compra duplicado |
GET/v1/purchase_scans | Listar escaneos de compras |
POST/v1/purchase_scans/{purchase_scan}/restore | Restaurar un escaneo de compra archivado |
POST/v1/purchase_scans/{purchase_scan}/retry | Reintentar un escaneo de compra fallido |
PUT/v1/purchase_scans/{purchase_scan}/review | Guardar la revisión de un escaneo de compra |
GET/v1/purchase_scans/{purchase_scan} | Consultar un escaneo de compra |
GET/v1/purchase_scans/{purchase_scan}/source | Descargar el documento original |
GET/v1/purchase_scans/stats | Consultar indicadores del escáner de compras |
Endpoints actualizados2
| Endpoint | Descripción |
|---|---|
POST/v1/purchase_invoices | Crea un gasto |
PUT/v1/purchase_invoices/{purchase_invoice} | Actualizar un gasto |