EP 180: Aleks Iwan – Using n8n in combination with Acumatica

  • There are 2 main ways to build something that interacts with an ERP:
  • 1. Build within the ERP framework
  • 2. Build outside and interact with APIs
  • #2 is what we’d like to talk about on this episode
  • When you build outside, you then need a way to schedule what you built and be able to handle errors when what you built breaks at random times
  • I think that’s where n8n comes in, but I want to learn more about it from Aleks

AI Summary (written by AI, edited by Tim)

n8n, Acumatica, and the Missing Layer Between a Script and a Production Workflow

A scheduled script is not the same thing as a production workflow. That distinction ended up being the most useful part of Tim Rodman’s conversation with Alex about n8n and Acumatica.

Tim came into the discussion thinking of n8n as something close to a cron job with better error handling. By the end, he was looking at it more like an integration platform: a place where APIs, deterministic logic, AI decisions, approvals, retries, transformations, notifications, and human review can all live in one workflow.

That matters because calling an ERP API is getting easier. Tim is already using AI coding tools to write Python that can interact with Acumatica. Alex writes C# and has built plenty of Acumatica customizations himself. Either one could write code that calls an endpoint and runs on a schedule.

But then the annoying questions start. What happens when one record fails? Where does the failed record go? How does someone know it failed? Can it be retried? What if the workflow needs a human approval halfway through? What if one step needs AI but the next five steps absolutely do not? And how do you test a change without breaking all of the cases that were already working?

That is where n8n started to look interesting. Not because it eliminates code, and definitely not because every workflow suddenly needs AI, but because it gives the whole process somewhere to live.

The Interesting Part Is Outside the ERP

For Acumatica, Tim framed custom development in two broad buckets. A solution can be built inside the Acumatica framework, or it can be built outside Acumatica and interact with the ERP through APIs.

Alex works in both worlds. He taught himself Acumatica development after becoming a departmental super user during an Acumatica implementation, worked through the T-series development courses, picked up C# and SQL, and eventually became a two-time Acumatica MVP. He also moved into a broader technology and business-analysis role where the problem was no longer just “how do we customize Acumatica?”

The environment itself pushed him in that direction. The group he works for includes a manufacturing company and a construction company. The manufacturing side uses Acumatica, while the construction side has been running other systems and went through an RFP for replacements. That means the technology problem is inherently broader than one ERP.

That is a pretty common reality in the mid-market. Even when Acumatica is the center of the transaction system, there are still email systems, meeting tools, file shares, other applications, AI models, websites, and sometimes entirely different ERPs around it.

Once that happens, the API layer becomes very important. The question stops being only what Acumatica can do internally and becomes how Acumatica participates in a larger process.

n8n Is More Than a Scheduler

Alex first reached for n8n for a very simple reason: cost. He wanted to automate workflows without buying a Zapier subscription, discovered that n8n could be self-hosted, installed it locally, and started forcing himself to use it so he could learn how it worked.

At first, it felt a little like sorcery. Alex said he barely understood APIs when he started. He had struggled to get an Acumatica connected application working and eventually discovered that one missing redirect URI was the problem. Trial and error did the teaching.

That learning path is important because n8n did not replace the technical concepts. It exposed them in a way that made them easier to work with. Alex still had to understand authentication, API requests, JSON, webhooks, transformations, errors, and the business process itself.

The basic building block in n8n is a node. A workflow is a collection of nodes, and those nodes can make API calls, receive webhooks, transform data, send email, invoke AI models, run code, and perform other steps in the process.

The code underneath is not some proprietary mystery language. Alex described workflows as JSON, with JavaScript or Python available when more custom manipulation is needed. The workflow can be built graphically, but it can also be exported, edited, generated, or modified with AI.

That immediately reminded Tim of Microsoft Power Query and Power Automate. Power Query lets someone work graphically while M code sits underneath. Power Automate is probably the closer comparison functionally, but Alex described n8n as more technically open because the workflow can still become code when that is useful.

And that openness matters more now because AI can work with the code representation. Alex sometimes builds workflows himself in the GUI. Other times it is faster to let AI generate part of the workflow, test what it created, and then clean it up manually. The process can move in either direction instead of forcing a choice between “low code” and “real code.”

Self-hosting is another major part of the appeal. Alex runs n8n locally and has deployed workflows into client environments where the client can self-host or use a subscription depending on how they want to configure things. He described accessing the local application through a browser on localhost, with port 5678 being the number he remembered.

Tim was careful not to pretend they had resolved every licensing or commercial question around self-hosting. They had not. The useful point in the conversation was technical: n8n can live in an environment the customer controls instead of requiring every workflow to be tied to another cloud subscription.

Why Not Just Write Python?

This is the question Tim kept coming back to because Python is the path he has been taking himself. If Codex can write a Python script that talks to Acumatica, why add another tool?

The answer is not that Python cannot do the same work. It can. C# can too. Alex’s point was that once code owns the workflow, the code also has to own authentication, sequencing, transformations, error handling, retries, logging, notifications, and whatever human intervention the process requires.

Sometimes writing all of that is exactly the right answer. But sometimes dropping a few nodes into a workflow is faster and easier to maintain than building the orchestration layer from scratch.

That word— orchestration — is probably the best way to think about it. n8n is not merely scheduling Python or C# scripts. In Alex’s use cases, it is primarily orchestrating API requests and moving information between systems while deciding what happens next.

Tim’s mental model changed during the conversation. He started closer to “cron job plus error handling” and ended closer to “full iPaaS-type integration platform.” That is a much bigger category.

A Real Accounts Payable Workflow

The accounts payable example made the architecture concrete. One of Alex’s production workflows monitors an email inbox for incoming invoice documents.

The first AI step reads the document. A relatively inexpensive model extracts the information from the PDF, Word document, or other invoice attachment.

Then another AI step works with Acumatica. Through Acumatica tools exposed to the workflow, the process reads the vendor name, tries to find the vendor in Acumatica, looks at prior bills for that vendor, examines descriptions and GL coding, and uses that history to prepare a draft payload for the Bills and Adjustments API.

But it does not blindly create the AP bill. Before posting, the workflow sends a nicely formatted draft for human review. If the vendor cannot be matched confidently, the workflow asks a person which vendor should be used.

That human-in-the-loop design was not an afterthought for Alex. It was a rule. AI can help interpret the invoice and suggest what should happen, but the process still has a human fallback when the result is uncertain or consequential.

This is also a good example of where n8n is doing more than AI. Email monitoring, API calls, record lookup, payload construction, branching, approval, attachment handling, and posting are all parts of one coordinated workflow. The AI model is only used for the parts that need interpretation.

Deterministic Logic First, AI Only Where It Earns Its Keep

One of the strongest ideas in the episode was that most back-office ERP work is still deterministic. If a workflow can be expressed as “if this is true, do this; otherwise do that,” ordinary code is usually the better tool.

Tim described this as deterministic versus probabilistic logic. Deterministic logic is the normal computer-programming world where the same inputs should follow the same rules every time. AI introduces a probabilistic element where the result can vary and can occasionally be wrong.

Alex’s rule was simple: if a basic IF statement can make the decision, use the IF statement. Do not send five rows of data to an AI model and pay for it to make a decision that could have been encoded directly.

The invoice workflow shows the boundary nicely. Checking whether an email has an attachment is deterministic. Checking whether an API response is empty is deterministic. Routing a record based on a known field value is deterministic.

But looking at an arbitrary PDF and deciding whether it is actually an invoice requires interpretation. Reading an invoice description and inferring how it relates to historical coding can require analysis. Those are the kinds of decision points where an AI model may make sense.

This is a much better way to think about “AI automation” than trying to make the whole workflow intelligent. The workflow should stay boring wherever boring works.

Alex put the cost argument even more directly. At runtime, use the least expensive model that can reliably do the job. A frontier model may be worth using while writing code because better coding ability can materially improve the output. But using the most capable model available just to read a routine invoice is overkill if a cheaper model can handle it.

That distinction between build-time AI and runtime AI became another useful frame. Build-time AI helps design the solution, write code, analyze a document, generate sample data, or prototype a workflow. Runtime AI becomes part of the ongoing business process and therefore brings recurring cost, security, reliability, and governance questions with it.

The bar should be higher for runtime AI. It is one thing to have a model help a developer write a function. It is another thing to make that model part of every AP invoice, sales meeting, or customer interaction from now on.

The Workflow Should Remember What Failed

The error-handling discussion may have been the part Tim liked most. A scheduled script can run at 2:00 a.m., fail on record 137, send an error message, and leave someone to figure out what actually happened.

In a production workflow, the failed record should not disappear. Tim and Alex discussed keeping the failed item in an error queue or table so someone knows exactly which record still needs to be processed, even when the upstream API provides a useless error message.

That changes the operational question from “did the job fail?” to “which item failed, why, and what still needs to happen?” That is a much more useful question.

Alex gave a good troubleshooting example from his own work. A workflow kept producing invalid JSON after an AI step. He spent hours debugging it and eventually discovered that the model had been given too few output tokens, so its structured JSON response was being cut off before the next JavaScript step received it.

The funny part is that the LLM did not solve the LLM problem. When Alex asked AI for troubleshooting help, it led him down the wrong path. Plain old trial and error finally found the setting.

That story fits the broader theme nicely. AI can be a useful component inside the workflow and a useful development tool outside it, but it is not automatically the authority on why the workflow is broken.

Production Automation Needs Testing, Not Just a Successful Demo

Getting one sample record to work is the easy part. The harder question is whether the workflow still works when the input changes.

Alex likes to test with a wide range of edge cases. He uses AI to generate sample JSON, sends it to n8n webhooks with Postman, and watches how the workflow behaves.

Tim recognized that as the beginning of a test suite. Once there is a library of sample inputs that represent different scenarios, those samples can be rerun after a workflow change to make sure a fix for the new edge case did not break an old one.

n8n can even participate in automating that testing. If it has access to the folder containing test cases, the workflow can iterate through them and run them against the new version.

This is where low-code automation starts looking a lot more like software development. There are versions, edge cases, regression risks, test data, failures, debugging, and maintenance. The boxes on the screen may make it easier to see, but the engineering problem does not disappear.

Meeting Notes Into Acumatica Without Dumping a Transcript Into a Field

A second production example started with a common handoff problem. A customer was not getting enough information from the sales process into the consulting team after an opportunity closed.

The workflow begins when a meeting ends. Depending on the meeting application, a webhook or API can provide the meeting transcript. Alex mentioned tools such as Read AI, Fireflies, and Fathom as examples of meeting systems that can expose the transcript rather than requiring the n8n workflow to do transcription itself.

The LLM then analyzes the transcript and tries to connect it to Acumatica. It looks for a business account, checks whether the meeting title or content appears to match an existing opportunity, and produces a suggested match.

Crucially, that suggestion lands in a holding table for a person to review. The user can confirm or amend the proposed opportunity before processing the record.

Once approved, the workflow creates an activity on the matched opportunity. The meeting summary and attendees become usable metadata, while the full transcript is attached as an HTML file.

That storage decision is small but smart. Instead of stuffing a potentially huge meeting transcript into a database text field, the workflow stores a concise summary in the database and attaches the raw transcript as a file. Tim liked that because the structured data stays useful without asking the ERP database to become a transcript repository.

The pattern is the same as the AP example. AI makes a fuzzy association, but a human can review the answer before it becomes part of the ERP record.

Then They Let Users Talk to the Opportunity

The meeting-note project led to another use case: chatting with an Acumatica opportunity. The customer wanted to ask questions about an opportunity using the information already in Acumatica plus the accumulated meeting summaries.

The user interface lived directly in Acumatica. Alex described a sidebar on the opportunity screen where the user could enter a prompt.

Behind the scenes, the prompt went to an n8n webhook. The workflow supplied opportunity details and meeting summaries as context to an AI model, received the answer, and returned it to the Acumatica sidebar.

That is a useful architectural point. The user does not have to care where the reasoning is happening. The interface can remain inside the ERP while the orchestration and AI live somewhere else.

Alex also noted that the model itself could potentially run locally. His broader point was that n8n and a locally hosted model can be combined even when Acumatica itself is cloud-hosted. The browser interface and ERP APIs do not require the model to be in the same hosting environment as Acumatica.

Tim found the ability to tightly constrain the context especially interesting. Instead of giving a general-purpose assistant broad access, a custom workflow can decide exactly which opportunity details and meeting summaries the model receives for that request.

n8n Does Not Need AI At All

The conversation kept returning to AI because those examples are fun, but Alex made a point that should not get lost: n8n can run completely deterministic workflows. AI is just another node when it is needed.

One example involved historical data left behind during an ERP migration. If moving all of the old data into the new ERP is too expensive, a workflow could iterate through files on a file share, group them by customer and year, perform calculations or transformations, and produce an output that preserves some continuity with the pre-ERP history.

That work can be done with ordinary API calls, regular expressions, code, HTML generation, and email. No AI model is required.

Alex likes email as the finish line for some of these jobs. He can start a workflow, let it do its work, and receive a formatted result when it is done instead of staring at a screen waiting for the process to finish.

There is still a practical limit to everything. Alex learned the hard way that an enormous HTML email can make Outlook very unhappy. Even automation has a way of finding a new bottleneck once the old bottleneck is gone.

Security Is Where the Easy Demo Stops Being Easy

The episode did not pretend that connecting email, AI, internal documents, and ERP APIs is automatically safe. In fact, this was one area where both Tim and Alex were willing to say they did not have every answer.

Alex described a strict internal rule for AI access. If an AI system can access internal documents, he does not want it accessing the external web at the same time. If it can access the external web, he does not want it accessing internal documents.

His concern is prompt injection. A model browsing an external page could encounter malicious instructions embedded in content and potentially treat those instructions as if they came from the user. If the same agent also has access to private company data, the consequences could be serious.

Tim raised a different concern around email as an interface. If approvals or instructions arrive over email, what happens if a message is spoofed and appears to come from an authorized sender?

Alex’s immediate answer was partly the human-in-the-loop design, but he also acknowledged that he had not fully worked through the protocol-level concern Tim was raising. That uncertainty should remain visible because it is exactly the sort of issue that separates an interesting prototype from a production control environment.

They briefly discussed domain-authentication controls such as DMARC and tools intended to make domain impersonation harder. But neither tried to turn that tangent into a complete security design.

That is probably the right place to leave it. Email can be a convenient workflow interface. Convenience does not make it a security architecture.

AI-Generated Code Still Needs a Human Looking at It

The same skepticism applied to development. Tim joked that he might be tempted to let AI write JavaScript and never look at it because he does not particularly like the language.

Alex pushed back on that idea. Developers still need to review AI-generated code because the model can confidently write something that is simply wrong.

He had seen that directly with Acumatica. An AI coding assistant confidently claimed that an AR Invoice had an Order Number field that Alex knew did not exist in the way the model described.

This is not an argument against using AI for code. In fact, Alex thought the strongest current models were extremely useful for coding and that the quality had improved dramatically.

It is an argument against confusing speed with correctness. A model can produce a lot of code very quickly. Someone still has to understand what is being put into the production system.

AI Workflow Builders May Be Great Prototyping Tools

Near the end, Tim started thinking about where frontier AI platforms fit relative to n8n. OpenAI and Anthropic are both moving toward tools that can build agents and workflows, so the obvious question is whether platforms like n8n eventually get absorbed into the AI products themselves.

Tim’s theory was more nuanced than that. AI-native workflow builders can be excellent prototyping environments because a nontechnical person can get an idea far enough along that it actually sees the light of day.

But the prototype may not be the production architecture. If every deterministic step is being executed through an AI model, token costs can become silly very quickly. A workflow that is convenient to prototype with AI might later be rebuilt in n8n with ordinary deterministic nodes and only the necessary AI calls left in place.

That handoff could become an important pattern. A business user proves the use case with an AI tool. Then a developer turns it into something cheaper, more controlled, more observable, and more reliable for ongoing use.

Tim contrasted that with what he called “industrial strength” ongoing workflows. The frontier AI tools may be wonderful for discovering what should be built, while a dedicated orchestration layer may be a better place to run the process every day.

The Hard Part Is Still Finding the Use Case

None of this technology answers the most important question: what should actually be automated? Alex’s warning from the beginning of the conversation was that putting AI on top of a broken workflow just gives you a broken workflow that runs faster and produces less deterministic output.

Tim was working on the same problem from a different direction. He has been thinking about how to teach people to identify useful AI opportunities, prototype them, and then hand the promising ones to someone who can build the production version.

That is probably why the conversation worked so well. Alex came from the developer side asking how to build and orchestrate the workflow. Tim came from the process and ERP side asking where the workflow is actually worth building.

n8n sits right in the middle of those two questions. It is technical enough to deal with APIs, JSON, webhooks, code, testing, and error handling, but visual enough that the whole business process does not have to disappear inside a source-code file.

It is also flexible enough to keep AI in its proper place. A workflow can be deterministic for ten steps, probabilistic for one decision, human-approved for the next step, and deterministic again after that.

That may be the most useful mental model from the episode. Do not start with “where can AI run my workflow?” Start with the workflow. Decide which parts should be ordinary code, which parts need interpretation, where a person must stay involved, what happens when something fails, and how the whole thing gets tested.

Then pick the tools. For the kinds of Acumatica API workflows Alex is building, n8n looks like a very interesting one.

The Bottom Line

Tim finished the conversation much more interested in n8n than when he started. He had been picturing a better scheduler. What he saw instead was a flexible orchestration layer that can connect Acumatica to the rest of the technology around it without requiring every integration to become a hand-built application.

Alex was just as clear that n8n is not perfect. It has quirks and limitations like everything else. The value comes from learning where it is strong, where it is weak, and where a different approach is better.

The bigger trend may be the explosion of custom workflows around ERP systems. Tim’s view was that AI is making those workflows easier to imagine and prototype, but the universal platform that handles every company, ERP, data warehouse, AI model, and business process does not seem obvious yet.

For now, custom still matters. And if those custom workflows need APIs, error handling, deterministic logic, selective AI, approvals, retries, testing, and a human in the loop, n8n gives ERP people another very practical place to put all of that stuff.