Sage Intacct and BILL integration
Sage Intacct runs accounting and finance. BILL runs Accounts Payable and expense workflows. Connecting the two keeps vendor and bill data in sync across systems. New vendors created in BILL can flow back to Sage Intacct, approved bills from Sage Intacct move to BILL for payment processing, and payment records are aligned in both directions. ml-connector translates between Sage Intacct's XML gateway and BILL's REST API, handling session management and credential encryption on each side.
What moves between them
Bills approved in Sage Intacct flow into BILL for payment processing. Vendor records sync from BILL back to Sage Intacct so the two systems maintain a shared vendor master. Payment confirmations from BILL can sync back to Sage Intacct to mark bills paid. The sync runs on a schedule or via manual trigger; ml-connector pulls from both systems using their polling APIs since Sage Intacct has no push capability.
How ml-connector handles it
ml-connector stores both credential sets encrypted and manages session refresh on each side. On the Sage Intacct side, it caches the sessionid for up to 50 minutes and automatically requests a new one when the next call requires fresh authentication. For BILL, it obtains a session token via POST /v3/login and respects the 35-minute inactivity timeout. Data flowing from Sage Intacct to BILL is transformed: APBILL records become BILL bills, and VENDOR records map to BILL vendors. Forbidden XML control characters in Sage Intacct data are stripped before the XML is built, preventing parse errors. BILL webhook events (bill.created, bill.updated, vendor.updated) are validated with HMAC-SHA256 and can push changes back to Sage Intacct without polling. Retries use exponential backoff; every record carries a full audit trail and can be replayed if a downstream call fails.
A real-world example
A mid-sized manufacturing firm uses Sage Intacct for accounting and GL management, and uses BILL to automate vendor payments and expense approvals across multiple departments. Before the integration, the finance team manually entered approved bills from Sage Intacct into BILL and synced paid-bill confirmations back to Intacct at month-end, a process that took hours and introduced re-keying errors. With Sage Intacct and BILL connected, approved bills move automatically to BILL, vendors stay aligned in both systems, and payment confirmations sync back to Sage Intacct without manual intervention. Month-end close is faster, and AP reconciliation is eliminated.
What you can do
- Sync approved bills from Sage Intacct to BILL for payment processing, with automatic vendor mapping.
- Push vendor records from BILL back to Sage Intacct to maintain a single vendor master across both systems.
- Receive BILL webhook events for bills and payments, and sync changes back to Sage Intacct without polling.
- Handle session refresh and token expiry on both sides, and strip forbidden XML control characters before sending data to Sage Intacct.
- Track every record with a full audit trail, with retries and replay capability if a downstream call fails.
Questions
- Can vendors flow both directions between Sage Intacct and BILL?
- Yes. Vendors created or updated in BILL can sync back to Sage Intacct using the VENDOR import, so the two systems maintain a shared vendor master. The flow can be configured to run on a schedule or as manual batches.
- Does ml-connector use BILL webhooks, or does it rely only on polling Sage Intacct?
- ml-connector can receive BILL webhook events (bill.created, bill.updated, vendor.updated) for real-time push notifications. Since Sage Intacct does not offer webhooks, bills and payments must be pulled from Intacct on a polling schedule, but vendor changes from BILL can be pushed immediately.
- How does ml-connector handle session expiry on each side?
- Sage Intacct sessions expire after 50 minutes and are automatically refreshed on the next API call. BILL sessions expire after 35 minutes of inactivity and are obtained via a new POST /v3/login when required. ml-connector manages both refresh cycles transparently so credential changes or timeouts do not interrupt data flow.
Related integrations
More Sage Intacct integrations
Other systems that connect to BILL
Connect Sage Intacct and BILL
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started