ml-connector
Sage 100AvidXchange

Sage 100 and AvidXchange integration

Sage 100 runs your accounting and accounts payable on a server in your office. AvidXchange handles invoice approval routing and pays your suppliers by check, ACH, or virtual card. Connecting the two sends your vendors, GL accounts, and bills into AvidXchange for coding and approval, then brings the completed payments back into Sage 100 so the ledger stays current without re-keying. ml-connector handles the very different way each system exposes data and moves the records on a schedule you set.

How Sage 100 works

Sage 100 is on-premises only and has no native cloud API. Its narrow eBusiness Web Services SOAP surface covers just Sales Orders and Customers, so full accounts payable, GL, purchase order, and vendor access runs through the Business Object Interface, a COM layer that must execute on the Sage 100 server. The standard pattern is a lightweight Windows agent on that server wrapping the Business Object Interface and exposing an HTTPS endpoint the connector can reach, authenticated with an agent API key plus the three-character company code. Sage 100 has no webhooks, so changed records are read by polling DateLastUpdated and invoice date fields.

How AvidXchange works

AvidXchange exposes vendors, invoices with images, purchase orders, GL codes and accounting dimensions, and settled payments through the AvidConnect REST API over HTTPS with JSON. Customers generate a company token and a user token inside AvidSuite under System Setup, Account Information, Connections, API, and those tokens are passed as headers on each call. There is no public webhook capability, so the connector pulls payment status and completed payment detail on a schedule. Vendors must already exist in AvidXchange before an invoice can be coded and paid, and GL codes are read-only on the Avid side.

What moves between them

Records move in both directions. From Sage 100 into AvidXchange, the connector pushes vendor master records, GL accounts and segmented cost center values, and approved AP invoices with their scanned images. AvidXchange runs the approval workflow and executes payment. From AvidXchange back into Sage 100, the connector pulls settled payment records, the check number, ACH trace, or virtual card detail, and posts them against the matching open bills in accounts payable. Vendor and GL reference data is refreshed on a slower cadence than invoices and payments, which are polled every fifteen to thirty minutes.

How ml-connector handles it

ml-connector stores the Sage 100 agent key and the AvidXchange company and user tokens encrypted, and calls the customer's local agent over HTTPS rather than reaching Sage 100 directly, since the Business Object Interface is COM and cannot be called remotely. It supports a per-customer server URL and configurable TLS verification because many Sage 100 servers use a self-signed certificate. Vendors and GL codes are synced first, so every invoice lands on a vendor that exists in AvidXchange and codes to a valid Sage 100 account. Because neither system sends webhooks, the connector polls both sides on a schedule. Settled payments are matched back to their bills using vendor number plus invoice number, the natural key in Sage 100 accounts payable, since neither side accepts an external idempotency key. The Business Object Interface can raise record-locking errors under concurrent writes, so the connector backs off and retries, and every record carries a full audit trail and can be replayed if a post fails.

A real-world example

A regional construction firm of about 120 staff runs Sage 100 on a server in its main office for job costing, GL, and accounts payable, and processes several hundred subcontractor and material invoices a month. Before the integration, an AP clerk keyed each invoice into Sage 100 by hand, routed paper copies for partner sign-off, then cut checks and re-entered the payment detail. With Sage 100 and AvidXchange connected, approved invoices and their images flow into AvidXchange for routing and payment, vendors and GL accounts stay in step, and the completed check and ACH detail post back into Sage 100 automatically. The clerk stops re-keying invoices and payments, and approvals leave a clear trail.

What you can do

  • Push Sage 100 vendor records into AvidXchange so payments route to the correct payee.
  • Sync Sage 100 GL accounts and segmented cost center values into AvidXchange for invoice coding.
  • Submit approved Sage 100 AP invoices with their scanned images into the AvidXchange approval workflow.
  • Post settled check, ACH, and virtual card payments from AvidXchange back into Sage 100 accounts payable.
  • Bridge the Sage 100 local agent key and the AvidXchange company and user tokens, with retries and a full audit trail on every record.

Questions

Why does Sage 100 need a local agent for this integration?
Sage 100 is on-premises and has no cloud API. Its full accounts payable and GL access runs through the Business Object Interface, a COM layer that only executes on the Sage 100 server and cannot be called remotely. A lightweight Windows agent on that server wraps the interface and exposes an HTTPS endpoint that ml-connector calls using an agent API key and the company code.
Which direction do invoices and payments move between Sage 100 and AvidXchange?
Vendors, GL codes, and approved AP invoices move from Sage 100 into AvidXchange for coding, approval, and payment. Settled payment detail, including check number, ACH trace, or virtual card data, moves from AvidXchange back into Sage 100 accounts payable. Vendors must exist in AvidXchange before an invoice can be paid, so the connector syncs vendor records first.
How does the integration stay in sync without webhooks?
Neither Sage 100 nor AvidXchange sends webhooks, so ml-connector polls both on a schedule you control. Sage 100 changes are read using DateLastUpdated and invoice date fields, and AvidXchange payment status is pulled every fifteen to thirty minutes. Each settled payment is matched back to its bill by vendor number and invoice number, and any failed post is retried and recorded in the audit trail.

Related integrations

Connect Sage 100 and AvidXchange

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started