AI agentsAcumatica Agent view

How to add AI agents to Acumatica

Short answer

Build an AI agent on Acumatica by giving a model a small set of tools backed by the contract-based REST API and OData Generic Inquiries, then keeping every write behind a human approval. The agent reasons and drafts; Acumatica stays the system of record and enforces its own roles and validations.

Acumatica customers, especially distribution and light manufacturing shops on the Manufacturing Edition, tend to have clean data and a good API but thin staffing in purchasing, planning and finance. The pain is rarely a missing report. It is the repetitive judgement work around exceptions: a PO that will land after the production order needs it, a sales order stuck on credit hold, a vendor bill that does not match the receipt.

An AI agent is a loop: the model reads the situation through tools, decides what to look at next, and proposes an action. On Acumatica that loop is practical because the platform exposes almost every screen as an entity through its REST API, and Generic Inquiries let you publish pre-joined, permission-aware read models without touching the database.

The design question is not which model to use. It is which tools to expose, which of them can write, and who approves. Get those three right and the model is replaceable.

What teams use it for

Late purchase order expediting

The agent reads open PO lines against requirements from production orders and sales orders, finds lines whose promise date lands after the need date, and drafts a vendor email plus a proposed promise-date change for a buyer to approve.

Sales order hold triage

Orders on credit hold or with failed availability get a summary: customer balance, past-due invoices, stock position per warehouse. The agent proposes release, partial ship or escalate to a credit manager.

Three-way match exceptions

For AP bills that fail matching against the PO receipt, the agent compares quantities, UOM and price, explains the variance and drafts a correction or a vendor query.

Reorder and transfer proposals

Using stock item replenishment parameters and recent demand, the agent proposes purchase or warehouse transfer documents as drafts rather than releasing them.

Month-end accrual checks

Before close, the agent scans unreleased batches, receipts without bills and unapplied payments, and produces a checklist with links to the offending documents.

Acumatica integration surface

  • Contract-based REST API under /entity/Default/<version>/ with endpoints such as SalesOrder, PurchaseOrder, StockItem, Bill, Customer. Endpoint versions vary by Acumatica release (for example 24.200.001), and you can define custom endpoints in Web Service Endpoints (SM207060).
  • Generic Inquiries (SM208000) with the Expose via OData option, readable at /OData/<tenant>/<inquiry name>. Best tool for joined, read-only views.
  • OAuth 2.0 through Connected Applications (SM303010), or cookie login at /entity/auth/login for simple service accounts. Prefer OAuth with a dedicated integration user.
  • Push Notifications and Business Events (screens vary by version) to wake the agent on a change instead of polling.
  • License-level API limits on concurrent requests and requests per minute, which matter if the agent fans out many calls.

How it works

  1. 1

    Create a dedicated integration user and role

    Give it only the screens the agent needs. Start with read access. Acumatica role rights then bound what any tool can ever do, regardless of what the model asks for.

  2. 2

    Publish read models as Generic Inquiries

    Build inquiries such as OpenPOLinesWithDemand or HeldOrdersWithCredit with the exact columns the agent needs. Fewer, wider reads beat many narrow REST calls.

  3. 3

    Wrap entities as narrow tools

    Expose get_order_status, list_late_po_lines, draft_po_change. Each tool validates arguments, calls one endpoint and returns trimmed JSON. Do not hand the model a generic HTTP client.

  4. 4

    Split read tools from write tools

    Write tools create drafts (a saved but unreleased document, a note, an activity) and return a proposal object. They never call Release actions.

  5. 5

    Add an approval queue

    Proposals land in a small queue UI, Teams card or Acumatica approval map. A named user approves, and only then does a separate executor perform the write under that user's context.

  6. 6

    Trigger from events and a schedule

    Use a Business Event or push notification for urgent cases and a nightly sweep for the rest. Log every tool call with arguments and result.

Example flows

Late PO sweep

Trigger: Nightly job at 05:00

  1. Call the open PO lines inquiry joined to production and sales demand.
  2. Filter lines where promise date is later than need date minus transit time.
  3. For each, fetch vendor contact and last two receipts for reliability context.
  4. Draft an expedite email and a proposed new promise date.
  5. Post proposals to the buyer queue.

Result: Buyers start the day with a ranked list of lines to chase, each with a ready-to-send message.

Credit hold release assist

Trigger: Business event when a sales order enters Credit Hold

  1. Read the customer's balance, credit limit and past-due invoices.
  2. Check payments received but unapplied.
  3. Summarise and recommend release or hold.
  4. Wait for the credit manager's decision in the queue.

Result: Credit holds clear in minutes with a recorded rationale instead of sitting until someone notices.

Keeping data on-prem

Acumatica can be installed on your own IIS and SQL Server, and the agent stack can sit beside it. Run an open-weight model with vLLM or Ollama on a GPU server in the same network, keep the tool layer as a small service that talks to the local Acumatica endpoint, and keep logs in your own storage. For cloud-hosted Acumatica with sensitive data, the same pattern works in a private cloud tenant and calls the instance URL over TLS. Smaller open models are weaker at long multi-step reasoning, so keep tools coarse and the plan short.

Security checklist

  • Run the agent as a dedicated Acumatica user with a minimal role; never reuse an administrator account.
  • Separate read and write credentials so a prompt-injection cannot reach release actions.
  • Treat text from vendor emails and document descriptions as untrusted input to the model.
  • Log tool name, arguments, result and the approving user for every write.
  • Respect multi-tenant boundaries: always bind the tenant and branch in the tool, not in the prompt.

Ways to get it done

Acumatica's own AI features and Intelligence tooling

Effort: Low, subject to licensing

Good for in-product assistance and simple automation if your edition and release include them; capabilities vary by version.

Build in-house with an agent framework

Effort: 6 to 12 weeks for a first useful agent

Fits teams with a developer who knows the REST API; you own tools, evals and monitoring.

Work with a partner such as Netray

Effort: Typically a few weeks for a scoped pilot

Fits shops needing private or on-prem models, approval design and tool hardening without a build team.

Pitfalls

  • !Letting the model call arbitrary endpoints; one bad filter can pull a whole table through your API limit.
  • !Forgetting that REST sessions consume license capacity; reuse tokens and cap concurrency.
  • !Releasing documents automatically; Release actions post to the GL and are hard to unwind.
  • !Ignoring custom fields: custom endpoints must be extended or the agent will not see them.
  • !No evaluation set, so quality regressions after an Acumatica upgrade go unnoticed.

Frequently asked questions

Does Acumatica have built-in AI agents?

Acumatica has been adding AI features and an intelligence layer, and availability depends on your release and edition. Check your version's release notes. A custom agent is still useful when you need cross-system logic, a specific model, or private deployment.

Can an agent write back to Acumatica safely?

Yes, if writes create drafts and a named user approves before anything is released. Keep the integration user's rights minimal and log every call. Never allow the agent to run Release actions on its own.

Which API should the agent use?

Use Generic Inquiries over OData for reads that join several tables, and the contract-based REST API for entity reads and draft writes. The screen-based SOAP API is legacy for most new work.

Will it hit my API limits?

It can. Acumatica licenses cap concurrent API requests and rates. Use coarse inquiries, cache stable data like items and vendors, and queue calls rather than letting the agent fan out freely.

Can this run without sending data to a cloud model?

Yes. An open-weight model served locally can run the agent, with the tool layer calling your own Acumatica instance. Expect to tune prompts and keep tasks narrower than with the largest hosted models.

Want AI agents working on your Acumatica?

A free 30 minute assessment: we map the integration path for your version and setup, and where it should run.

Get a free assessment