Logo home 9

Over 10 years we helping companies reach their financial and branding goals. Onum is a values-driven SEO agency dedicated.

CONTACTS
AI Automation AI / ML Development

AI ERP Integration: Connecting Automation to Your System of Record

Category
AI Automation
Read Time
9 min read
Published
October 7, 2026
Status
Published

The model reading the invoice is the easy half. The half that decides whether the project pays is getting the result into SAP, NetSuite, Dynamics 365 or Odoo safely: drafts not postings, idempotent writes, and limits that bite at month-end.

Most AI automation demos stop at the moment the model produces the right answer: the invoice fields extracted, the order understood, the ticket classified. The business value only appears one step later, when that answer becomes a record in the ERP that finance, operations and auditors already trust. That step is usually most of the project, and it is where the engineering lives.

This guide to AI ERP integration covers the five ways to get data into an ERP, the principle that keeps AI automation safe once it is there, the API limits that catch teams out on SAP, NetSuite, Dynamics 365 and Odoo, and how to prove afterwards that nothing was lost.

Routes

Five Ways to Get Data Into an ERP

The route matters more than the model. It decides whether the ERP’s own validation runs, whether the integration survives the next upgrade, and whether the vendor will still support your system.

RouteHow it worksWhen to use itMain risk
Official APIThe ERP’s published REST, OData or RPC interfaceThe default for almost everythingRate and concurrency limits
Import or staging tablesRecords land in a staging area and the ERP imports them in batchesHigh volumes that do not need to post in real timeErrors surface hours later, in bulk
Integration platformMiddleware sits between the automation and several systemsThe same data must reach more than one systemAnother component to own and monitor
Screen automation (RPA)A bot operates the ERP’s user interfaceOlder on-premise systems with no usable APIBreaks when a screen changes
Direct database writesRows are inserted straight into ERP tablesNeverBypasses validation, corrupts ledgers, voids support

Direct database writes deserve their place on the list only so they can be ruled out. An ERP keeps a great deal of logic outside its tables: tax calculation, numbering, period controls, approval state, audit history. Writing rows directly skips all of it, and the damage is often discovered at month-end close. Screen automation is a legitimate fallback for systems with no API; the trade-offs are covered in AI automation vs RPA vs AI agents.

The Principle

Write Drafts, Let the ERP Approve

The single most useful design rule for AI ERP integration is this: the automation creates records in a draft or pending state, and the ERP’s own workflow takes them the rest of the way. A vendor bill arrives as pending approval, a sales order as pending fulfilment, a journal as unposted.

This keeps everything the ERP already enforces — approval hierarchies, spending limits, segregation of duties, closed periods — in force. The AI does the reading and the data entry; the controls your auditors signed off stay where they were. It also gives the human review step from human-in-the-loop AI automation a natural home inside a system people already use.

A worked flow: supplier invoices into NetSuite
1

Extract

The model reads the invoice and returns supplier, tax ID, invoice number, date, lines and totals, each with a confidence score. Extraction accuracy and its pitfalls are covered in AI document processing automation.

2

Match against master data

The supplier is matched on tax ID or bank details, never on name alone, because “ACME Ltd”, “Acme Limited” and “ACME UK” may be one supplier or three. Lines are matched to the purchase order and receipt.

3

Create a pending bill

The integration creates the vendor bill in a pending-approval state, attaches the original PDF, and sets an external ID derived from the supplier and invoice number so a retry can never create a duplicate.

4

Let NetSuite route it

NetSuite’s own approval routing sends the bill to the right approver. Matched, low-value bills can be auto-approved by a rule the finance team owns, not by the AI.

5

Reconcile daily

Invoices received equals bills created plus invoices waiting in the exception queue. Any gap raises an alert the same day, not at month-end.

Engineering

The Problems Nobody Demos

Retries that create duplicates
A request times out, the integration retries, and the ERP now holds two identical invoices. Every write needs an idempotency key, usually an external ID or alternate key, so that a retry updates the record instead of creating another.
Rate and concurrency limits
ERPs protect themselves. An integration that works for ten test records can fail at month-end volume. Limits differ by system and are covered in the table below.
Partial failure
The order header is created but two of its lines are rejected. The integration needs to either complete the record or remove it cleanly, and log which one happened. Half-written transactions are the hardest errors to find later.
Posting rules the model knows nothing about
Closed periods, tax codes, currency rules and locked customers all cause rejections. Validate against them before writing, and treat every rejection reason as a category in the exception queue.
The API you built on being retired
Odoo deprecated its XML-RPC and JSON-RPC interfaces in Odoo 19 in favour of a new JSON-2 API, with the remaining services scheduled for removal in Odoo 22. Building on the deprecated route today means rebuilding later.
Modifying the core
SAP’s clean core approach keeps custom logic out of the S/4HANA core: extensions use released APIs or run side by side on SAP BTP. Automation that patches the core makes every future upgrade a project of its own.
By System

What to Watch on Each ERP

ERPPreferred routeWhat catches teams out
SAP S/4HANAReleased APIs (OData), or side-by-side extensions on SAP BTPOnly released APIs are upgrade-safe; custom code in the core conflicts with clean core
Oracle NetSuiteSuiteTalk REST web services or RESTletsOne account-wide pool of concurrent requests shared by every integration: 15 on Service Tier 1, plus 10 per SuiteCloud Plus licence
Microsoft Dynamics 365Dataverse Web API with an application userService protection limits per user, per web server: 6,000 requests and 20 minutes of execution time in a rolling five-minute window, and 52 concurrent requests; excess returns HTTP 429 with a Retry-After header
OdooJSON-2 API from Odoo 19XML-RPC and JSON-RPC still work but are deprecated; build new integrations on JSON-2

The NetSuite limit is the one that most often surprises people, because it is shared. If an e-commerce connector, a payroll sync and a new AI integration all run at nine in the morning, they compete for the same handful of slots and one of them starts failing. The fix is a queue with controlled concurrency in front of the ERP, which also gives you a natural place to retry with back-off. Middleware patterns for exactly this kind of buffering are discussed in our piece on middleware in IoT; the principles carry over directly.

Assurance

Proving Nothing Was Lost

An integration that posts correctly 99.9 percent of the time and loses the rest silently is worse than a manual process, because nobody is looking for the missing records. Reconciliation is what turns “it seems to work” into evidence.

  • Counts: items received equals records created plus items in the exception queue plus items rejected, every day
  • Totals: the value of invoices received matches the value of bills created and queued
  • Trail: each ERP record links back to its source document, the model version, the confidence scores and the person who approved it
  • Ageing: nothing sits in the exception queue past an agreed deadline without an alert

Auditors do not ask whether the AI was accurate. They ask how you know every document became exactly one record. Build the answer before they ask.

Checklist

Before You Connect to Production

1Use a dedicated integration user
Its own credentials and its own role, with only the permissions the workflow needs. Every record it creates is then attributable, and access can be revoked without touching anyone’s login.
2Write to draft states only
Let the ERP’s approval workflow decide what posts. If something should post automatically, make that an ERP rule the business owns.
3Make every write idempotent
External IDs or alternate keys on every record, so retries are safe. Test it by deliberately sending the same request twice.
4Queue in front of the ERP
Control concurrency, honour Retry-After headers, and absorb peaks rather than passing them on to a system that will throttle you.
5Test against a sandbox with real volumes
Month-end volume, closed periods, a locked customer, a currency you rarely see. Limits and edge cases do not show up with ten test records.
6Reconcile from day one
Counts, totals, trail and ageing, reported daily from the first live run, not added after the first missing invoice is found.
FAQ

Frequently Asked Questions

How do you integrate AI automation with an ERP?
Through the ERP’s official API in almost every case, using a dedicated integration user, writing records in a draft or pending state so the ERP’s own approval and validation rules still apply, with idempotent writes and a daily reconciliation.
Can AI post directly to the general ledger?
It can, but it rarely should. Creating unposted or pending records and letting the ERP’s approval workflow post them keeps segregation of duties and period controls intact. Low-risk items can still post automatically through a rule the finance team owns.
What are the Dynamics 365 API limits?
Dataverse applies service protection limits per user, per web server: 6,000 requests and 20 minutes of combined execution time in a rolling five-minute window, and no more than 52 concurrent requests. Exceeding them returns HTTP 429 with a Retry-After header, which the integration should honour.
Why does NetSuite integration fail under load?
NetSuite limits concurrent requests for the whole account, and every integration shares that limit. The base depends on service tier, for example 15 on Tier 1, with 10 more per SuiteCloud Plus licence. A queue with controlled concurrency prevents integrations from starving each other.
Is RPA a good way to connect AI to an old ERP?
It is a reasonable fallback when the system has no usable API, but it breaks when screens change and is slower than an API. Use it deliberately for the systems that need it, and prefer an API or import route wherever one exists.
Which Odoo API should new integrations use?
The JSON-2 API introduced in Odoo 19. The older XML-RPC and JSON-RPC endpoints are deprecated, and their remaining services are scheduled for removal in Odoo 22, so new work built on them will need rebuilding.
Wrapping Up

Conclusion

An AI model that reads invoices well is the easy half. The half that decides whether the project pays is a disciplined integration: the official API, a dedicated user, drafts rather than postings, idempotent writes, a queue that respects the ERP’s limits, and a reconciliation that proves every document became exactly one record.

Integration with real ERP and legacy systems is the work we specialise in, and it is the reason most automation never leaves the demo, as covered in why AI automation projects fail. If you are planning to connect automation to your system of record, our AI automation services start with exactly this design.

About MetaDesk Global

Engineering the Next Generation of Connected Products

MetaDesk Global helps startups and enterprises develop intelligent connected products that combine embedded systems, Industrial IoT, Edge AI, and cloud technologies. Our expertise includes:

Industrial IoT (IIoT) Solutions Embedded Firmware Development Edge AI Development Predictive Maintenance Systems PCB Design IoT Gateway Development Cloud Integration OTA Firmware Updates AIoT Product Development End-to-End Product Engineering

From hardware design to AI-powered industrial platforms, we build scalable solutions for the next generation of connected products.

Start Your Project

Building a Connected Product?

We design IIoT sensor networks, Edge AI pipelines, and secure cloud platforms — from prototype to production.

Request a Free Quote →