ml-connector
Sage IntacctBasware

Sage Intacct and Basware integration

Sage Intacct runs your general ledger and accounting operations. Basware automates invoice processing, matching, and approval across your vendor network. Connecting the two keeps your vendor master data, GL accounts, and invoice postings synchronized without manual re-entry. New vendors created in either system align across both platforms, GL accounts map correctly to Basware cost centers, and invoices processed and approved in Basware post directly into Sage Intacct's ledger on your schedule.

How Sage Intacct works

Sage Intacct exposes vendors, AP bills, AP payments, GL accounts, and dimensions through a single XML gateway endpoint at https://api.intacct.com/ia/xml/xmlgw.phtml using session-based authentication. An initial API call exchanges partner and user credentials for a sessionid, cached for 50 minutes and automatically refreshed on the next request. All queries and writes go through the same XML endpoint, and Sage Intacct does not support webhooks, so all data flows are scheduler-driven. HTTP 200 responses may contain application-level errors in the XML body, which must be parsed separately.

How Basware works

Basware exposes vendors, purchase orders, accounting documents, accounts, and dimensions via regional REST APIs at https://api.basware.com, https://api.us.basware.com, https://api.au.basware.com, or https://api.ca.basware.com, secured with OAuth2 Client Credentials that default to 1-hour validity. Basware supports webhooks on its P2P API for real-time notifications of accounting documents and purchase orders, while the Network and Data Access APIs require polling. Regional deployment must match the customer instance, and credentials are provisioned by Basware during setup.

What moves between them

Vendor and GL account reference data flows in both directions between Sage Intacct and Basware to keep master files aligned. Accounting documents processed and approved in Basware flow into Sage Intacct after invoice matching and approval, posted to the mapped GL accounts and cost centers on a schedule tied to your invoice processing cycle. Sage Intacct does not initiate payments via Basware; payment confirmations flow back into Basware through separate payment response channels.

How ml-connector handles it

ml-connector caches the Sage Intacct session token and reuses it until expiration, then refreshes silently on the next request. On the Basware side, it refreshes OAuth2 tokens on 401 responses and routes requests to the correct regional endpoint based on customer configuration. Vendor records are mapped bidirectionally so new vendors in either system appear in the other, and GL accounts are aligned with Basware cost centers and dimensions before any invoice is posted. Because Sage Intacct has no webhooks, ml-connector polls for new vendors, GL accounts, and changes on a schedule you define. Basware webhook payloads are validated against the HMAC-SHA256 signature in the X-BWAPI-Signature-256 header, and every request to Basware includes a unique X-BW-REQUEST-ID to prevent duplicate operations. XML control characters are stripped from vendor names and descriptions before they reach Sage Intacct, and retried operations use Sage Intacct's uniqueid flag for server-side deduplication. Every record carries a full audit trail and can be replayed if a downstream call fails.

A real-world example

A mid-market manufacturing company runs Sage Intacct for accounting and GL consolidation across three regional warehouses, and uses Basware for invoice processing and vendor management across a network of 200+ suppliers. Before the integration, the accounts payable team entered vendor data manually in both systems and re-keyed invoice posting lines from Basware into Sage Intacct after each monthly approval cycle, creating data inconsistencies and reconciliation delays. With Sage Intacct and Basware connected, new vendors are synced automatically, invoices post directly to the correct cost centers in Sage Intacct after Basware approval, and the monthly close process starts with the AP ledger already reconciled.

What you can do

  • Sync vendors and GL accounts bidirectionally between Sage Intacct and Basware so master files stay aligned.
  • Post approved invoices from Basware into Sage Intacct's general ledger, allocated to the correct GL accounts and cost centers.
  • Handle Sage Intacct's XML session cache and Basware's OAuth2 token refresh automatically on each request.
  • Validate Basware webhook signatures and route requests to the correct regional Basware deployment.
  • Poll Sage Intacct on your schedule with retries, deduplication via uniqueid, and a full audit trail on every transaction.

Questions

What data moves between Sage Intacct and Basware, and in which direction?
Vendors and GL accounts sync bidirectionally so both systems stay aligned. Approved invoices move from Basware into Sage Intacct's ledger after matching and approval. Sage Intacct does not initiate payments to Basware; payment confirmations flow back through separate channels.
How does ml-connector handle the differences between Sage Intacct's XML gateway and Basware's regional REST APIs?
ml-connector caches Sage Intacct sessions and refreshes them when they expire, handling the single-endpoint XML architecture transparently. For Basware, it routes requests to the correct regional endpoint (EU, US, AU, or CA) and refreshes OAuth2 tokens when they expire.
Does Sage Intacct's lack of webhooks affect how quickly invoices appear in the ledger?
Yes. Because Sage Intacct does not support push notifications, ml-connector polls for new invoices on a schedule you define, typically tied to your invoice approval cycle. Basware can push webhook notifications for real-time awareness, but the actual ledger posting in Sage Intacct happens at the next scheduled poll.

Related integrations

Connect Sage Intacct and Basware

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

Get started