ml-connector
Sage IntacctTwilio

Sage Intacct and Twilio integration

Sage Intacct is your GL and AP system. Twilio is your communications channel. Connecting the two lets finance teams and approvers get real-time alerts on their phones when invoices need approval, payments clear, or exceptions occur. Finance events from Sage Intacct trigger notifications through Twilio's SMS and voice APIs, so no approval bottleneck happens silently. ml-connector handles the different auth models and the polling cadence so alerts reach the right people on time.

How Sage Intacct works

Sage Intacct is a cloud-based ERP and accounting system exposing vendors, AP bills, AP payments, GL accounts, and dimensions through a single XML gateway endpoint. All operations serialize through a POST to https://api.intacct.com/ia/xml/xmlgw.phtml with Content-Type application/xml. Authentication is session-based: an initial getAPISession call exchanges a senderId, senderPassword, companyId, userId, and userPassword for a sessionid, which is cached for 50 minutes and automatically refreshed on the next call. Sage Intacct does not push webhooks, so all data flows are scheduler-driven polling. XML responses may contain application-level errors in errormessage tags despite HTTP 200 status, and control characters must be stripped before entity reference escaping.

How Twilio works

Twilio is a cloud communications platform providing SMS, voice calls, video, email, and identity verification. The SMS and voice APIs are accessed via REST endpoints: https://api.twilio.com/2010-04-01 for core resources, https://messaging.twilio.com/v1 for advanced messaging, and https://verify.twilio.com/v2 for two-factor authentication. Regional variants with dublin.ie1 prefix support EU data residency. Authentication is HTTP Basic Auth using either an Account SID plus Auth Token, or an API Key SID plus API Secret. API Keys can be Main (full account access), Standard (most resources), or Restricted (fine-grained scoped access). Twilio is a communications platform, not a finance system - it has no invoices, GL accounts, vendors, or payment objects.

What moves between them

Finance events flow from Sage Intacct into Twilio. When an AP bill reaches unapproved status in Sage Intacct, or when an AP payment clears, ml-connector reads the event on a polling schedule tied to your AP close cycle, then sends an SMS or voice alert through Twilio to a configured approver's phone number. The flow is one-way: Twilio does not write data back into Sage Intacct. Notifications are sent via Twilio's SMS API for simple text alerts or voice API for confirmation calls, depending on the finance event type and urgency.

How ml-connector handles it

ml-connector stores Sage Intacct credentials (senderId, senderPassword, companyId, userId, userPassword) encrypted and uses them to initialize a session on first call. The sessionid is cached for the full 50-minute TTL and automatically refreshed before expiry, so polling does not interrupt. On the Twilio side, ml-connector stores the Account SID and Auth Token encrypted and presents them as HTTP Basic Auth on every request. It detects the event type from Sage Intacct - for example, a bill row with status 'Submitted for Approval' - and formats the right message for Twilio. Phone numbers for each approver are mapped per Sage Intacct user or cost center. Because Sage Intacct returns XML with HTTP 200 even on application errors, ml-connector parses the XML response body for errormessage tags and re-polls on error rather than failing the alert. Twilio webhooks are not used in this flow; instead, ml-connector checks the status of sent SMS messages on a shorter cadence to catch delivery failures, retries failures with exponential backoff, and logs the full delivery audit trail.

A real-world example

A mid-market manufacturer uses Sage Intacct for AP and GL, with approval workflows across finance, operations, and procurement. Invoices stack up in the system awaiting approval, but approvers scattered across sites do not know they are waiting until they log in. Before the integration, the AP team would email or call approvers to chase signatures, turning approvals into a manual bottleneck. With Sage Intacct and Twilio connected, the moment an invoice reaches 'Submitted for Approval' status in Intacct, ml-connector sends the approver an SMS with the vendor name and amount, and a voice call for high-value invoices. Approvers see alerts in real time on their phones and can check Sage Intacct from their office or mobile; bottleneck time drops from hours to minutes, and the AP team stops chasing approvals by hand.

What you can do

  • Send SMS alerts to approvers whenever AP bills in Sage Intacct reach submitted-for-approval status.
  • Place voice calls through Twilio for high-value or time-sensitive invoice approvals, with recipient confirmation.
  • Route alerts to the correct approver based on invoice amount, vendor, or cost center mapped in Sage Intacct.
  • Validate Twilio delivery status on a schedule and retry failed SMS messages with exponential backoff.
  • Log every alert send, delivery status, and failure in the audit trail for compliance and troubleshooting.

Questions

Can Twilio send messages back into Sage Intacct if an approver replies to an SMS?
No. Twilio is a communications platform, not a finance system, so ml-connector does not write approval decisions, payment authorizations, or any finance data back into Sage Intacct from Twilio replies. The integration is one-way: Intacct events flow out to SMS and voice alerts. Approvers must still log into Sage Intacct to take action.
How does ml-connector handle Sage Intacct's 50-minute session timeout?
ml-connector caches the sessionid from Sage Intacct's getAPISession call for the full 50-minute TTL and automatically refreshes it before expiry on the next polling cycle. This ensures polling and alerts never stall due to session timeout. The auth cache is keyed on senderId, companyId, and userId, so separate Sage Intacct tenants or users maintain isolated sessions in-process.
How does ml-connector choose between SMS and voice alerts in Twilio?
You define the rule in your flow: low-value invoices trigger SMS only via Twilio's messaging API, while invoices above a threshold trigger a voice call via Twilio's voice API so an approver must confirm receipt. ml-connector formats the message body for SMS (short text) or voice (IVR-friendly prompt) based on the event type and amount from Sage Intacct, then routes to the mapped phone number.

Related integrations

Connect Sage Intacct and Twilio

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

Get started