Qué hacen y cómo
Baker Tilly, firma de consultoría y auditoría que vende e implanta Sage Intacct, montó una prueba de concepto en torno a una pregunta de cierre: ¿qué hay en la cuenta de mercancía recibida pendiente de factura (GRNI, goods received not invoiced) que no debería estar, y a qué cuenta de gasto y dimensiones hay que reclasificar cada saldo? Claude, conectado al servidor MCP de Sage Intacct, consultó los datos de compras, localizó los albaranes de recepción (receivers), los enlazó con sus facturas de proveedor y comparó importes, separando la GRNI abierta legítima (mercancía recibida y factura aún por llegar) de los saldos residuales que dejan las diferencias entre albarán y factura. La firma convirtió el análisis en un panel de GRNI resumido por proveedor, obra y artículo, con enlaces a las transacciones de Sage Intacct. Como la conexión MCP es de solo lectura, Claude no puede contabilizar: preparó los asientos de reclasificación en el formato real de importación de asientos de la organización, y una persona los revisa y los sube.
Resultado declarado
Baker Tilly no da horas ahorradas, saldos depurados ni tasas de error; resume el cambio como pasar «de horas de conciliación manual a tenerlo listo para reclasificar en minutos», que es un titular, no una medición. No nombra al cliente ni dice si la prueba de concepto pasó a producción; su propia guía advierte que una prueba de concepto así «no es una automatización terminada ni un despliegue en producción». Baker Tilly vende Sage Intacct y un servicio de pago, Sage AI Accelerator, basado en esta conexión, así que el relato es experiencia y también marketing.
Ojo con la evidencia. Alguien cuenta cómo lo hace o lo ha hecho, sin cifras contrastables. Es práctica documentada, no una prueba de que funcione en tu caso.
Qué se ha probado de verdad
El 25 de octubre de 2026 leímos el artículo de Baker Tilly sobre la prueba de concepto, su guía para responsables financieros y la página de su webinar, la ayuda de Sage Intacct sobre flujos de compras e importación de asientos, el resumen del servidor MCP en el portal de desarrolladores de Sage (el portal bloqueó nuestro servidor, así que nos basamos en su texto indexado y en las notas de configuración de theFinanceStack) y la documentación de autenticación de conectores de Claude. Comprobamos que https://mcp.intacct.com/mcp responde 401 y publica metadatos OAuth. No tenemos una empresa de Sage Intacct, así que no conectamos Claude. El script de «Cópialo y adáptalo» se ejecutó con los datos inventados que se muestran; todos los archivos de esa sección son plantillas de Agents Finance basadas en las fuentes, no material de Baker Tilly, que no lo ha publicado.
Cómo replicarlo
Necesitas Sage Intacct con el AI Gateway disponible en tu región, un flujo de compras en el que los albaranes de recepción contabilicen contra una cuenta de GRNI y Claude en un plan que permita conectores personalizados. Pide a un administrador un rol de solo lectura limitado a Compras, Proveedores y Libro mayor para las sociedades del alcance, registra un cliente OAuth y añade https://mcp.intacct.com/mcp como conector personalizado. Pruébalo antes en un entorno de pruebas (sandbox). Haz una sola pregunta (albaranes abiertos por antigüedad y albaranes cuyas facturas no cuadran), exporta la respuesta, ejecuta el script de cruce y reclasificación, y que la persona responsable de la GRNI revise cada línea propuesta antes de subir el CSV con la importación de Sage Intacct. Sage Intacct apenas se usa en España; si llevas otro ERP, el patrón (lectura, script determinista y asiento en borrador para importar) sirve igual.
En dos frases
Baker Tilly montó una prueba de concepto en la que Claude lee albaranes de recepción y facturas de proveedor de Sage Intacct por el servidor MCP de solo lectura de Sage, decide qué saldos de mercancía recibida pendiente de factura (GRNI) son legítimos y cuáles son restos, y prepara los asientos de reclasificación en el formato de importación de la propia empresa para que una persona los compruebe y los suba. No hay cifras y la firma vende el servicio, pero el diseño es un patrón útil para cualquier controller: que la IA lea y prepare, y que contabilizar siga en manos de una persona.
Quién lo hace y por qué importa
Baker Tilly es una firma estadounidense de consultoría, fiscalidad y auditoría y distribuidor de valor añadido de Sage Intacct; su web habla de más de 2.000 implantaciones. En septiembre de 2026 dos de sus profesionales publicaron dos artículos sobre el servidor MCP de Sage Intacct, el conector que Sage lanzó dentro de su AI Gateway para que aplicaciones de IA externas, como Claude o ChatGPT, consulten los datos de Intacct. Joel Headdings firmó la guía para responsables financieros el 1 de septiembre; Baran Sönmez describió la prueba de concepto el 2 de septiembre, y John Campbell presentó el 9 de octubre un webinar sobre cómo se conecta Claude a Intacct, el uso de un entorno de pruebas y el servicio de pago de la firma, «Sage AI Accelerator».
El caso importa por tres razones. La GRNI es un quebradero de cabeza real en el cierre de cualquier empresa que recibe la mercancía antes que la factura: la cuenta de balance se llena de pequeños restos que no son de nadie. Sage Intacct es un ERP de empresa mediana y aún no habíamos tratado un uso práctico de su conector MCP. Y el diseño demuestra que hay mucho valor entre «enséñame los datos» y «deja que la IA contabilice en mi libro mayor», como dice Baker Tilly. Ten presente el ángulo comercial: la firma vende Intacct y el servicio de consultoría construido sobre este conector, y no nombra al cliente.
Qué es la GRNI en Sage Intacct y por qué se atasca
En un flujo de compras de Sage Intacct en el que la factura llega después que la mercancía, la propia ayuda de Sage describe la contabilidad: al contabilizar el albarán de recepción se carga inventario (o el gasto) y se abona la cuenta de GRNI; al convertir el albarán en factura de proveedor se carga GRNI y se abona proveedores. Si los dos importes coinciden, la GRNI de esa recepción vuelve a cero. Si el proveedor factura otro precio, un porte de más o una cantidad parcial, queda un resto. En los artículos de inventario, Sage recomienda un ajuste de inventario solo de valor enlazado al albarán para corregir el coste. En compras sin existencias y en servicios, el resto suele necesitar un asiento a la cuenta de gasto correcta, con las mismas dimensiones de la línea original.
Si a eso se suman albaranes que nunca se facturaron (a veces porque la mercancía se devolvió, a veces porque el pedido se cerró fuera del flujo), la GRNI se convierte en una cuenta que cada mes cuesta horas de exportaciones y búsquedas. Esa es la pregunta que Baker Tilly le hizo a Claude.
Cómo funciona la prueba de concepto
Según Baker Tilly, Claude consultó los datos de compras directamente en Sage Intacct a través del servidor MCP, identificó los albaranes de recepción, enlazó cada uno con sus facturas de proveedor y comparó los importes. Esa comparación separó la GRNI en dos grupos: saldos abiertos legítimos, en los que la mercancía ha llegado y la factura todavía no, y saldos residuales causados por diferencias entre el albarán y su factura. Para el segundo grupo dio un paso más: identificó a dónde reclasificar cada saldo, con la cuenta de gasto y las dimensiones adecuadas.
Después la firma convirtió el análisis en un panel de GRNI en el que un usuario de finanzas podía conciliar, revisar, reclasificar y ver la actividad subyacente, resumida por proveedor, obra y artículo, con el detalle de cada transacción enlazado a Sage Intacct. Baker Tilly no explica con qué construyó el panel.
El último paso es el que nos parece más práctico. El servidor MCP de Sage Intacct es de solo lectura, así que Claude no podía contabilizar los asientos. En su lugar los preparó en el formato real de importación de asientos de la organización, para que una persona los revisara y los subiera con la importación CSV estándar de Intacct. El límite de permisos lo impone el sistema, no una promesa escrita en un prompt.
Qué puede y qué no puede hacer el conector
El portal de desarrolladores de Sage describe el servidor MCP como acceso de solo lectura a los datos y metadatos de Intacct, con filtros, orden, paginación y agregación, sobre proveedores, clientes, gestión de tesorería, libro mayor, compras y ventas (Order Entry), con inicio de sesión OAuth 2.0. Para escribir hay que usar las API REST de Intacct, una conexión distinta con otro perfil de riesgo. Comprobamos que el endpoint, https://mcp.intacct.com/mcp, responde 401 a las peticiones sin autenticar y publica los metadatos OAuth estándar del recurso protegido.
La guía de Baker Tilly añade tres puntos que importan para la GRNI:
- El rol es el límite. La IA ve exactamente lo que ve el rol de Intacct del usuario que inicia sesión; una conexión con un rol de administrador «por comodidad» es, según la firma, la forma más habitual de que un piloto bienintencionado acabe con más alcance del aprobado.
- Las dimensiones están en las líneas. Proyecto, departamento, ubicación y clase están en registros de línea, como las líneas de factura o de asiento, así que una pregunta sobre una obra se responde desde el detalle de línea.
- Solo lectura no significa sin riesgo. Los datos siguen yendo al proveedor de IA, los prompts pueden conservarse y el modelo puede malinterpretar datos correctos. Una respuesta de la IA no se convierte en evidencia de auditoría porque los datos salgan del ERP.
Según las notas de configuración de theFinanceStack, el servidor no admite el registro automático de clientes, así que necesitas un ID y un secreto de cliente OAuth de Sage, con la dirección de callback de Claude registrada como URI de redirección, antes de añadirlo como conector personalizado en Claude. El 21 de octubre de 2026 Sage Intacct no estaba en el directorio de conectores de Claude.
Paso a paso
Juntando la descripción de Baker Tilly, la ayuda de Sage y las notas del conector, esta es la secuencia que seguiríamos:
- Confirma la contabilidad. Revisa qué definiciones de transacción de compras contabilizan contra GRNI, qué cuenta usan y si las diferencias de precio en artículos de inventario se corrigen con ajustes solo de valor. La IA no arregla un flujo que se salta pasos.
- Crea un rol de solo lectura dedicado. Lectura de Compras, Proveedores y Libro mayor para las sociedades del alcance; sin nóminas ni administración.
- Registra el cliente OAuth y añade el conector. Hazlo primero en una empresa de pruebas, como recomienda Baker Tilly en su servicio.
- Haz una sola pregunta concreta. Albaranes abiertos con su antigüedad y albaranes cuyas facturas enlazadas no suman el importe recibido, con proveedor, artículo y dimensiones de línea.
- Haz las cuentas fuera del modelo. Exporta la respuesta a CSV y deja que un script determinista clasifique los saldos y prepare el asiento, para que los totales sean reproducibles.
- Revisa y sube. La persona responsable de la GRNI comprueba cada línea propuesta, investiga los saldos antiguos y grandes, y sube el CSV con la importación de Intacct.
- Mide. Anota las horas y el saldo de GRNI antes y después durante varios cierres, porque la fuente no da cifras.
Cópialo y adáptalo
Requisitos previos: Sage Intacct con el AI Gateway activo, un administrador que pueda crear roles, Claude en un plan que permita conectores personalizados y Python 3.10 o posterior para el script. Baker Tilly no ha publicado sus prompts, su panel ni sus archivos, así que todo lo que sigue es una plantilla de Agents Finance basada en la descripción de Baker Tilly y en la documentación de Sage Intacct. Empieza con datos inventados o de pruebas, y no pegues nunca el secreto del cliente OAuth en un prompt, un archivo o un repositorio. El código y los nombres de campo se dejan en inglés, igual que en la versión original, porque son los identificadores que espera Sage Intacct.
1. Lista de control del rol de solo lectura (plantilla de Agents Finance)
Define el rol mínimo: solo lectura de compras, proveedores y libro mayor, una sola sociedad, primero en pruebas, con un responsable nombrado y una regla de revisión.
# Agents Finance template based on Baker Tilly's least-privilege guidance
role_name: AI-GRNI-READONLY
purpose: "Month-end GRNI review through the Sage Intacct MCP Server"
modules:
purchasing: read # receivers, purchase orders, vendor invoices
accounts_payable: read # bills and bill lines
general_ledger: read # GRNI account activity and journal lines
everything_else: none # no payroll, no cash management, no company admin
entities: ["US-OPS"] # only the entities in scope
sandbox_first: true
owner_of_output: "GRNI account owner (named person)"
review_rule: "No CSV is uploaded without line-by-line review by the owner"
revoke_when: ["pilot ends", "user leaves", "secret rotated"]
2. Configuración del conector (plantilla de Agents Finance)
URL del servidor, autenticación, URI de redirección de Claude y dónde se añade el conector según el plan.
MCP server URL: https://mcp.intacct.com/mcp
Authentication: OAuth 2.0, client ID and secret issued as described in Sage's set-up guide
Redirect URI: https://claude.ai/api/mcp/auth_callback
Claude (Pro/Max): Customize > Connectors > Add custom connector > URL + Advanced settings
Claude (Team/Ent): an Owner adds it under Organization settings > Connectors
Each user: Connect, then sign in to Sage Intacct with the read-only role
3. Instrucciones para la sesión de revisión de GRNI (plantilla de Agents Finance)
Las instrucciones piden a Claude solo dos listados en CSV con cabeceras fijas, le prohíben sumar o clasificar saldos (eso lo hace el script) y le obligan a separar las dudas y a no proponer asientos para artículos de inventario.
# GRNI review — instructions for Claude (Sage Intacct MCP, read-only)
## Scope
- Entity: {{ENTITY}}. Period end: {{PERIOD_END}}. GRNI account: {{GRNI_ACCOUNT}}.
- You can only read. Never suggest that anything has been posted or changed.
## Steps
1. List every receiver posted to {{GRNI_ACCOUNT}} up to {{PERIOD_END}} that is not fully
converted, with receiver ID, PO, vendor ID, item, receipt date, amount and the line
dimensions (department, location, project, class).
2. For each receiver, list the vendor invoices converted from it and their amounts.
3. Return both lists as CSV with exactly these headers:
receivers: receiver_id,po_id,vendor_id,item_id,project_id,dept_id,location_id,receipt_date,amount,expense_acct
invoices: invoice_id,receiver_id,vendor_id,invoice_date,amount
4. Do not total, net or classify the balances yourself: the script does the arithmetic.
5. For each receiver where you are unsure of the link or the expense account, add it to a
separate list called QUESTIONS with the reason.
## Never
- Never include OAuth secrets, tokens, bank details or employee data in any output.
- Never propose an entry for a stock item; flag it for a value-only inventory adjustment.
4. Script: clasificar la GRNI y preparar el asiento de reclasificación (plantilla de Agents Finance)
El script lee los dos CSV, marca cada albarán como saldado (cleared), abierto legítimo (open-legitimate), abierto antiguo (open-stale), reclasificación propuesta (reclass-proposed) o a investigar (investigate), y solo prepara asiento para los restos pequeños por debajo de la tolerancia que fijes. Se detiene si el asiento no cuadra y nunca se conecta a Sage Intacct. Ajusta al principio la cuenta de GRNI, el diario, los días de antigüedad y la tolerancia.
#!/usr/bin/env python3
"""GRNI review and reclass draft for Sage Intacct (Agents Finance template).
Reads two CSV exports (receivers and vendor invoices linked to them),
classifies every receiver's GRNI balance and writes:
- grni_review.csv : one row per receiver with status and reason
- grni_reclass_je.csv : a DRAFT journal entry in Sage Intacct's
GL journal entry CSV import layout, for a person to review and upload.
It never connects to Sage Intacct and never posts anything.
"""
import csv
import sys
from collections import defaultdict
from datetime import date
from decimal import Decimal, ROUND_HALF_UP
# ---- settings: adapt to your chart of accounts and policy ----
GRNI_ACCT = "2050" # your GRNI / accrued receipts account
JOURNAL = "GJ" # journal symbol, max 4 characters
STALE_DAYS = 60 # uninvoiced receivers older than this go to review
RESIDUAL_TOLERANCE = Decimal("50.00") # auto-propose reclass only below this
CENT = Decimal("0.01")
def money(value: str) -> Decimal:
return Decimal(value or "0").quantize(CENT, ROUND_HALF_UP)
def main(receivers_path: str, invoices_path: str, as_of: str) -> int:
as_of_date = date.fromisoformat(as_of)
invoiced = defaultdict(Decimal)
invoice_ids = defaultdict(list)
with open(invoices_path, newline="", encoding="utf-8") as f:
for row in csv.DictReader(f):
invoiced[row["receiver_id"]] += money(row["amount"])
invoice_ids[row["receiver_id"]].append(row["invoice_id"])
review_rows, je_lines = [], []
with open(receivers_path, newline="", encoding="utf-8") as f:
for r in csv.DictReader(f):
received = money(r["amount"])
billed = invoiced.get(r["receiver_id"], Decimal("0"))
residual = received - billed # > 0: GRNI still has a credit balance
age = (as_of_date - date.fromisoformat(r["receipt_date"])).days
if not invoice_ids.get(r["receiver_id"]):
status = "open-stale" if age > STALE_DAYS else "open-legitimate"
reason = f"no vendor invoice, {age} days since receipt"
elif residual == 0:
status, reason = "cleared", "invoice equals receiver"
elif abs(residual) <= RESIDUAL_TOLERANCE:
status = "reclass-proposed"
reason = f"residual {residual} after invoice(s) {' '.join(invoice_ids[r['receiver_id']])}"
expense_side = {"ACCT_NO": r["expense_acct"]}
grni_side = {"ACCT_NO": GRNI_ACCT}
amt = abs(residual)
# residual > 0: debit GRNI, credit expense; residual < 0: the reverse
debit_side, credit_side = (grni_side, expense_side) if residual > 0 else (expense_side, grni_side)
for side, dr, cr in ((debit_side, amt, ""), (credit_side, "", amt)):
je_lines.append({
**side,
"DEPT_ID": r["dept_id"], "LOCATION_ID": r["location_id"],
"GLENTRY_PROJECTID": r["project_id"], "GLENTRY_VENDORID": r["vendor_id"],
"DOCUMENT": r["receiver_id"],
"MEMO": f"GRNI residual {r['receiver_id']} PO {r['po_id']}",
"DEBIT": dr, "CREDIT": cr,
})
else:
status = "investigate"
reason = f"residual {residual} above tolerance {RESIDUAL_TOLERANCE}"
review_rows.append({"receiver_id": r["receiver_id"], "po_id": r["po_id"],
"vendor_id": r["vendor_id"], "received": received,
"invoiced": billed, "residual": residual, "age_days": age,
"status": status, "reason": reason})
with open("grni_review.csv", "w", newline="", encoding="utf-8") as f:
w = csv.DictWriter(f, fieldnames=list(review_rows[0].keys()))
w.writeheader()
w.writerows(review_rows)
total_dr = sum((Decimal(l["DEBIT"]) for l in je_lines if l["DEBIT"] != ""), Decimal("0"))
total_cr = sum((Decimal(l["CREDIT"]) for l in je_lines if l["CREDIT"] != ""), Decimal("0"))
if total_dr != total_cr:
print(f"STOP: draft entry does not balance ({total_dr} vs {total_cr})")
return 1
header = ["JOURNAL", "DATE", "DESCRIPTION", "LINE_NO", "ACCT_NO", "DEPT_ID", "LOCATION_ID",
"GLENTRY_PROJECTID", "GLENTRY_VENDORID", "DOCUMENT", "MEMO", "DEBIT", "CREDIT"]
with open("grni_reclass_je.csv", "w", newline="", encoding="utf-8") as f:
w = csv.DictWriter(f, fieldnames=header)
w.writeheader()
for n, line in enumerate(je_lines, start=1):
first = n == 1
w.writerow({"JOURNAL": JOURNAL if first else "",
"DATE": as_of_date.strftime("%m/%d/%Y") if first else "",
"DESCRIPTION": f"GRNI reclass {as_of}"[:30] if first else "",
"LINE_NO": n, **line})
counts = defaultdict(int)
for row in review_rows:
counts[row["status"]] += 1
print("receivers by status:", dict(counts))
print(f"draft entry: {len(je_lines)} lines, debits {total_dr} = credits {total_cr}")
print("nothing was posted; review grni_review.csv and grni_reclass_je.csv")
return 0
if __name__ == "__main__":
if len(sys.argv) != 4:
sys.exit("usage: grni_reclass.py receivers.csv invoices.csv YYYY-MM-DD")
sys.exit(main(*sys.argv[1:]))
Archivos de prueba con datos inventados:
receiver_id,po_id,vendor_id,item_id,project_id,dept_id,location_id,receipt_date,amount,expense_acct
RCV-1001,PO-501,V-ACME,SVC-MAINT,PRJ-01,OPS,HQ,2026-09-12,1200.00,6100
RCV-1002,PO-502,V-BOLT,MAT-PIPE,PRJ-02,FIELD,EAST,2026-09-20,845.50,5200
RCV-1003,PO-503,V-ACME,SVC-MAINT,PRJ-01,OPS,HQ,2026-07-02,300.00,6100
RCV-1004,PO-504,V-CORE,MAT-WIRE,PRJ-03,FIELD,WEST,2026-09-28,2000.00,5200
RCV-1005,PO-505,V-BOLT,MAT-PIPE,PRJ-02,FIELD,EAST,2026-10-15,410.00,5200
invoice_id,receiver_id,vendor_id,invoice_date,amount
BILL-9001,RCV-1001,V-ACME,2026-09-30,1200.00
BILL-9002,RCV-1002,V-BOLT,2026-10-03,832.25
BILL-9003,RCV-1004,V-CORE,2026-10-06,1850.00
BILL-9004,RCV-1004,V-CORE,2026-10-08,190.00
python3 grni_reclass.py receivers.csv invoices.csv 2026-10-31
# receivers by status: {'cleared': 1, 'reclass-proposed': 2, 'open-stale': 1, 'open-legitimate': 1}
# draft entry: 4 lines, debits 53.25 = credits 53.25
# nothing was posted; review grni_review.csv and grni_reclass_je.csv
5. El archivo de importación en borrador que genera
Las cabeceras son nombres de campo de la ayuda de importación de asientos de Sage Intacct: JOURNAL (hasta 4 caracteres), DATE, DESCRIPTION (hasta 30), LINE_NO y ACCT_NO son obligatorios, y cada línea necesita un DEBIT (debe) o un CREDIT (haber). DEPT_ID, LOCATION_ID, GLENTRY_PROJECTID, GLENTRY_VENDORID, DOCUMENT y MEMO son opcionales. Descarga la plantilla desde tu propia empresa, porque incluye tus dimensiones, y respeta sus cabeceras exactas.
JOURNAL,DATE,DESCRIPTION,LINE_NO,ACCT_NO,DEPT_ID,LOCATION_ID,GLENTRY_PROJECTID,GLENTRY_VENDORID,DOCUMENT,MEMO,DEBIT,CREDIT
GJ,10/31/2026,GRNI reclass 2026-10-31,1,2050,FIELD,EAST,PRJ-02,V-BOLT,RCV-1002,GRNI residual RCV-1002 PO PO-502,13.25,
,,,2,5200,FIELD,EAST,PRJ-02,V-BOLT,RCV-1002,GRNI residual RCV-1002 PO PO-502,,13.25
,,,3,5200,FIELD,WEST,PRJ-03,V-CORE,RCV-1004,GRNI residual RCV-1004 PO PO-504,40.00,
,,,4,2050,FIELD,WEST,PRJ-03,V-CORE,RCV-1004,GRNI residual RCV-1004 PO PO-504,,40.00
6. Lista de control del revisor (plantilla de Agents Finance)
En la lista se comprueba que el total cuadra con el mayor, que cuentas y dimensiones coinciden con el albarán original, que ningún artículo de inventario se reclasifica por asiento, que cada saldo antiguo tiene responsable y que sube el archivo una persona con permisos de contabilización.
- [ ] The two CSV files cover every receiver posted to GRNI up to period end (total ties to the GL balance)
- [ ] Every "reclass-proposed" line: expense account and dimensions match the original receiver line
- [ ] No stock item is reclassed by journal; those get a value-only inventory adjustment
- [ ] Every "open-stale" receiver has an owner and an action (chase the invoice, return, close the PO)
- [ ] Every "investigate" line has a note before the close
- [ ] The CSV headers match the company's own downloaded template
- [ ] Debits equal credits; the upload is done by a person with posting rights, not by the AI user
Un ejemplo concreto
Con los archivos inventados de arriba, a 31 de octubre de 2026, el script encuentra cinco albaranes. RCV-1001 está saldado: recibido y facturado por 1.200,00. RCV-1005 es GRNI abierta legítima: 410,00 recibidos hace 16 días y todavía sin factura, así que no se hace nada. RCV-1003 es antiguo: 300,00 recibidos hace 121 días sin factura, así que pasa a una persona, porque la respuesta puede ser una factura perdida, una devolución o un pedido cancelado. RCV-1002 dejó un resto de 13,25 porque el proveedor facturó menos que el albarán; a RCV-1004 le facturaron 40,00 de más en dos facturas. Los dos están por debajo de la tolerancia de 50,00, así que el script propone un asiento de cuatro líneas por 53,25 que lleva cada resto a la cuenta de gasto con el departamento, la ubicación, el proyecto y el proveedor del albarán. Una persona lo aprueba o no.
Resultados que declara la fuente
Baker Tilly describe la prueba de concepto de forma cualitativa. Dice que la pregunta sobre la GRNI, que normalmente exige informes, exportaciones, búsquedas y conciliación en hojas de cálculo, se convirtió en un flujo asistido por IA; que el panel resumía la GRNI por proveedor, obra y artículo y destacaba las transacciones que requerían atención, y que los asientos de reclasificación se prepararon en el formato real de importación de la organización. No da horas, importes, precisión ni nombre del cliente, y su guía deja claro que una prueba de concepto puede acabar en «seguir, revisar el concepto o parar».
Limitaciones y riesgos
- Evidencia. Es la descripción de un distribuidor sobre su propia prueba de concepto, sin cifras ni cliente con nombre; tómalo como un diseño, no como prueba de ahorro.
- Disponibilidad y coste. El AI Gateway no está en todos los países; la nota de Sage de mayo de 2026 citaba Estados Unidos, Reino Unido, Canadá, Australia y Sudáfrica. No hemos podido confirmar su precio.
- Los datos salen del ERP. Los datos de compras y proveedores van al proveedor de IA; revisa las condiciones de datos de tu plan de Claude antes de conectar producción.
- Errores del modelo. Puede enlazar un albarán con la factura equivocada o saltarse líneas cuando los resultados vienen paginados. Por eso las cuentas se hacen en un script y los totales se cuadran con el mayor.
- Criterio contable. Los albaranes antiguos y los artículos de inventario necesitan a una persona y la transacción correcta de Intacct, no un asiento.
Errores comunes
- Conectar con un rol de administrador «solo para el piloto».
- Dejar que el modelo compense y sume saldos en el chat en lugar de en un archivo reproducible.
- Reclasificar por asiento las diferencias de precio de inventario, lo que descuadra el informe de valoración de existencias.
- Usar una plantilla CSV genérica en lugar de la de la empresa, con lo que se pierden las dimensiones.
- Dar por definitivo el archivo de reclasificación porque los datos salen del ERP.
Conclusiones
El caso de Baker Tilly no va de una IA que cierra la contabilidad. Es un patrón más acotado y más útil: una conexión de solo lectura permite a Claude hacer la parte tediosa de la conciliación de la GRNI, cruzar albaranes con facturas y preparar el asiento, mientras la contabilización sigue pasando por la importación normal de Sage Intacct con una persona al mando. Si trabajas con Intacct, empieza con un entorno de pruebas, un rol dedicado y una sola pregunta, mide el tiempo frente a tu cierre actual y solo entonces decide si merece un panel.
Fuentes
- Baker Tilly — From asking questions to reimagining finance workflows with Sage Intacct MCP (Baran Sönmez, 2 de septiembre de 2026; en inglés) (se abre en otra pestaña) (principal)
- Baker Tilly — Sage Intacct MCP Server: what finance leaders need to know (Joel Headdings, 1 de septiembre de 2026; en inglés) (se abre en otra pestaña)
- Baker Tilly — Sage AI Gateway + Baker Tilly AI Consulting Services (webinar, John Campbell, 9 de octubre de 2026; en inglés) (se abre en otra pestaña)
- Portal de desarrolladores de Sage Intacct — AI Gateway y servidor MCP (en inglés) (se abre en otra pestaña)
- Ayuda de Sage Intacct — Buenas prácticas en flujos de compras con inventario (el albarán de recepción contabiliza contra GRNI; en inglés) (se abre en otra pestaña)
- Ayuda de Sage Intacct — Importación CSV de asientos del libro mayor (definición de campos; en inglés) (se abre en otra pestaña)
- Ayuda de Sage Intacct — Ejemplos de números de línea en la importación CSV (en inglés) (se abre en otra pestaña)
- theFinanceStack — Sage Intacct MCP server: acceso de solo lectura y configuración OAuth (octubre de 2026; en inglés) (se abre en otra pestaña)
- Documentación de Claude — Autenticación de conectores (callback OAuth para servidores MCP remotos; en inglés) (se abre en otra pestaña)
Hemos redactado esta ficha con nuestras palabras a partir de las fuentes anteriores y comprobamos que los enlaces funcionaban el 25 de octubre de 2026. ¿Algún dato es incorrecto? Avísanos.
Comparte esta entrada
Esta entrada forma parte de la guía: Agentes de IA para contabilidad · MCP para contabilidad y ERPs