ml-connector
Sage IntacctZendesk

Sage Intacct and Zendesk integration

Sage Intacct is your accounting backbone. Zendesk is your customer support channel. Connecting the two keeps your customer master data aligned and brings support history into your financial records. When a vendor or customer is updated in Intacct, their profile appears in Zendesk so support agents see the financial relationship. Support tickets logged in Zendesk flow back into Intacct as audit context attached to the customer record. ml-connector bridges the two APIs and keeps the data synchronized on your schedule.

How Sage Intacct works

Sage Intacct is a cloud-based ERP and accounting system that exposes vendors, accounts payable bills, payments, general ledger accounts, and dimensions through a single XML gateway endpoint at https://api.intacct.com/ia/xml/xmlgw.phtml. Authentication is session-based, requiring senderId, senderPassword, companyId, userId, and userPassword for an initial getAPISession call that returns a sessionid cached for 50 minutes. Intacct does not support webhooks, so all data retrieval is polling-based. HTTP 200 responses may contain application-level errors embedded in the XML body, requiring error message parsing. XML control characters must be stripped before entity reference escaping.

How Zendesk works

Zendesk is a cloud-based customer support platform that manages support tickets, users (agents and customers), organizations (companies), and knowledge base articles through a REST JSON API scoped to a customer subdomain. Authentication is OAuth 2.0 authorization code flow (recommended for connectors) or API token with basic auth. Zendesk supports webhooks for ticket events (created, updated, solved, closed, assigned) and user events via HMAC-SHA256 signature verification using the X-Zendesk-Webhook-Signature header. Zendesk does not have ERP finance entities like invoices, purchase orders, payments, or GL accounts.

What moves between them

Sage Intacct vendors are the primary source. ml-connector polls Intacct vendors on a schedule you define and creates or updates matching Zendesk organizations so the customer account list stays current. Zendesk support tickets flow back into Intacct as customer context; ml-connector either polls Zendesk tickets on a schedule or receives them via Zendesk webhook events and stores them in Intacct audit records tied to the vendor. The vendor record becomes a single pane with both financial and support context. No data flows back into Intacct GL accounts or bills; Zendesk reads tickets only.

How ml-connector handles it

ml-connector maintains the Sage Intacct session by caching the sessionid for up to 50 minutes and automatically requesting a new session on the next call after expiry. All Intacct operations are XML POST requests serialized through the single gateway endpoint, and every response is parsed for application-level error tags even on HTTP 200 status. Vendor records are mapped to Zendesk organizations by external ID; new vendors create new organizations, and vendor profile updates (name, address, contact) sync to the matching organization. Zendesk tickets are pulled via REST API or received via webhook events; ml-connector verifies webhook signatures using the HMAC-SHA256 header. Tickets are stored as audit trail records in Intacct linked to the vendor customer. Rate limiting and session expiry are handled with exponential backoff retries.

A real-world example

A mid-market software vendor uses Sage Intacct for accounts payable and vendor management, and Zendesk for technical support. Before integration, the support team had no visibility into which customers were in good standing with AP, and finance had no way to see if a customer had open issues or complaints. With the integration, every vendor in Intacct appears as an organization in Zendesk, and when a support ticket is created, it flows back into Intacct audit so the AP team can see the relationship between invoice payment status and customer satisfaction. During collections, the AP manager opens the vendor record and sees the recent support history.

What you can do

  • Sync Sage Intacct vendors to Zendesk organizations so customer profiles stay current across both systems.
  • Receive Zendesk support tickets via webhook or polling and attach them as audit context to the matching Intacct vendor record.
  • Authenticate Sage Intacct via the XML gateway and manage the 50-minute session refresh automatically.
  • Verify Zendesk webhook signatures using HMAC-SHA256 and parse Intacct XML responses for application-level errors.
  • Sync vendor contact and profile information, mapping Sage Intacct vendor fields to Zendesk organization attributes.

Questions

Which direction does data move between Sage Intacct and Zendesk?
Vendors and customer master data move from Sage Intacct into Zendesk organizations. Support tickets flow from Zendesk back into Intacct as audit context attached to the customer record. GL accounts, bills, and payments remain in Intacct only; Zendesk reads tickets but does not write financial data.
How does ml-connector handle Intacct's XML gateway and session expiry?
ml-connector sends all operations as XML POST requests to the single Intacct gateway endpoint and caches the sessionid for up to 50 minutes. When the session expires, the next call automatically requests a new sessionid. All HTTP 200 responses are parsed for application-level error tags, since Intacct embeds errors in XML even on success status.
Can ml-connector receive tickets via Zendesk webhooks instead of polling?
Yes. ml-connector can be configured to receive Zendesk ticket events via webhook and verify the HMAC-SHA256 signature using the X-Zendesk-Webhook-Signature header. Webhooks are faster than polling and reduce API load, but they require webhook configuration in the Zendesk Admin Center.

Related integrations

Connect Sage Intacct and Zendesk

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

Get started