ml-connector
Sage 300Airbase

Sage 300 and Airbase integration

Sage 300 handles your general ledger, accounts payable, and purchase orders. Airbase automates spend requests, approvals, and reimbursement. Connecting them keeps your vendor data synchronized and lets approved spend flow directly into your GL without manual re-keying. Finance teams spend less time chasing receipts and reconciling cash.

How Sage 300 works

Sage 300 is a Windows IIS-based ERP for mid-market accounting and operations. It exposes accounts payable vendors, invoice batches, purchase orders, GL accounts, and GL journal batches through REST endpoints using OData filters for date-based queries. Authentication uses HTTP Basic Auth with uppercase username and password sent in every request header. Sage 300 has no webhooks or change-data-capture, so all data syncing is pull-based. The API requires a dedicated web user with API security group privileges, and the host IIS server must be configured with Anonymous Auth enabled and Windows Auth disabled.

How Airbase works

Airbase is a spend management platform accessible via REST API with bearer token authentication. It manages bills, purchase orders, vendors, payments, and expense reimbursements alongside GL account sync. Airbase supports webhooks for purchase request approval events, though webhook signature verification details are available in the Airbase developer portal. GL accounts and subsidiaries are read-only since Airbase syncs the chart of accounts from the connected ERP. The token scope is admin-level with no granular scoping model documented.

What moves between them

Vendor master data flows from Sage 300 to Airbase so purchase request creators in Airbase see the correct vendor list. Approved purchase requests and expense allocations flow back from Airbase into Sage 300, where they create GL journal batches allocated to the correct GL accounts. The sync runs on a scheduled poll cadence since Sage 300 has no webhooks; Airbase can optionally push purchase approval events if the customer enables them in the Airbase portal.

How ml-connector handles it

ml-connector stores the Sage 300 basic auth credentials encrypted, uppercasing the username and password before every request per Sage 300's requirement. It queries Sage 300's APVendors and GLAccounts endpoints using OData $filter to fetch only new or updated records since the last sync. For Airbase, it authenticates with a static bearer token and polls Bills or Expenses endpoints, or optionally receives purchase_request_approved webhooks if the customer has enabled them. When an Airbase expense or bill is approved, ml-connector maps its GL account and amount into a Sage 300 GLJournalBatch. The Sage 300 API is self-hosted (no Sage-managed cloud), so ml-connector accepts the customer's full IIS base URL. Large sync volumes (1500+ calls) can trigger IIS AppPool timeouts, so ml-connector breaks vendor and transaction fetches into paginated batches. Retries and exponential backoff handle transient failures, and every record carries an audit trail so failed approvals can be replayed once resolved.

A real-world example

A mid-sized manufacturing distributor runs Sage 300 for accounting and inventory, and uses Airbase for employee expense reimbursement and corporate card reconciliation. Before the integration, the finance team downloaded approved Airbase expenses weekly, manually created GL journal batches in Sage 300 to match each employee's cost center, and spent the first half of month-end chasing duplicate or missed allocations. With Sage 300 and Airbase connected, each approved expense automatically creates a GL batch entry mapped to the correct GL account and subsidiary, and the vendor master data stays in sync. Month-end close now starts with the expense detail already in place, eliminating the manual batch creation step.

What you can do

  • Sync AP vendors from Sage 300 to Airbase so purchase request creators see current vendor lists.
  • Pull approved expenses and purchase requests from Airbase into Sage 300 GL journal batches allocated to the correct accounts.
  • Map Airbase expenses to Sage 300 GL accounts and cost centers automatically.
  • Handle Sage 300's HTTP Basic Auth with uppercase credentials and accept customer-hosted IIS base URLs.
  • Poll Sage 300 on a schedule since it has no webhooks, with full audit trail and error replay on every record.

Questions

Which direction does data flow between Sage 300 and Airbase?
Vendor master data flows from Sage 300 to Airbase so employees see accurate vendors when creating purchase requests. Approved expenses and purchase requests flow back from Airbase into Sage 300 as GL journal batches. This two-way synchronization keeps both systems aligned on vendors and ensures approved spend posts to the GL without manual re-keying.
Does Sage 300 support webhooks or do you have to poll?
Sage 300 has no webhooks or change-data-capture, so ml-connector polls the APVendors and GLAccounts endpoints on a schedule using OData filters to fetch only new or updated records. Airbase can optionally push purchase approval events via webhook if enabled in the Airbase portal, providing real-time notification of approvals.
What are the setup requirements for Sage 300's HTTP Basic Auth?
Sage 300 requires a dedicated API user created in Administrative Services with the Web API security group assigned. The username and password must both be uppercase. ml-connector stores these credentials encrypted and sends them in every request header. The customer's IIS server must also be configured with Anonymous Auth enabled and Windows Auth disabled for the API endpoints.

Related integrations

Connect Sage 300 and Airbase

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

Get started