Sage Intacct and Cin7 integration
Sage Intacct manages your accounting and GL, while Cin7 Core handles inventory, purchases, and sales order fulfillment. Connecting the two keeps your procurement GL in sync with your order book, moves purchase bills from Cin7 into Intacct's AP automatically, and aligns supplier and cost center dimensions across both systems. When you receive a PO from a customer in Cin7, post it to GL; when you invoice in Cin7, the revenue line flows into Intacct's general ledger without re-entry.
What moves between them
Purchases and bills move from Cin7 into Sage Intacct. When a purchase order in Cin7 transitions to an invoice or receipt, ml-connector reads the purchase record and posts a corresponding AP bill into Intacct's AP module, mapped to the correct vendor and GL account. Sales orders and invoices in Cin7 flow into Intacct as revenue GL entries, allocated to the cost center or customer dimension specified in Cin7. Suppliers and customers are synced bidirectionally so additions or changes in either system propagate to the other. Cost dimensions and GL accounts are validated against Intacct before any transaction is posted. The integration polls Cin7 and Intacct on a configurable schedule tied to your billing cycle, typically daily or per-pay-period, rather than relying on real-time webhooks.
How ml-connector handles it
ml-connector uses Intacct's session-based authentication by issuing an initial getAPISession call with the provided partner and user credentials, caching the sessionid for the 50-minute lifetime. On each subsequent poll, if the cached session has expired, it refreshes transparently. All Intacct operations serialize through the single XML gateway endpoint; ml-connector constructs well-formed XML payloads, strips forbidden control characters, and parses responses for both HTTP status and embedded XML error messages. For Cin7, ml-connector uses the API key headers for every request and respects the Purchase Approach field to determine whether an incoming record is a PO, invoice, or receipt. Bill and invoice amounts are rounded to the same precision on both sides. Supplier and customer names are matched case-sensitively, and new suppliers in Cin7 are created in Intacct only if the match fails. GL account mappings are validated before posting; if a cost center in Cin7 does not exist in Intacct, the post is queued with an audit flag and replayed once the dimension is created. Retries use Intacct's uniqueid control flag for idempotency. Rate limits are respected by backing off and retrying with exponential jitter. Every transaction carries a full audit trail including the original Cin7 record ID, Intacct transaction number, and timestamp.
A real-world example
A mid-sized product distributor uses Sage Intacct for general ledger, accounts payable, and cost tracking, and Cin7 Core for inventory management and purchase orders from suppliers. Before the integration, the accounting team received a purchase invoice report from Cin7 at the end of each week and manually entered AP bills into Intacct, matching them to suppliers and GL accounts by hand. Reconciliation took days because the two systems drifted: items received in Cin7 but not yet invoiced sat in limbo, and invoice amounts sometimes did not match due to discounts or shipping charges applied in one system but not recorded in the other. With Cin7 and Sage Intacct connected, purchase invoices flow into Intacct AP automatically as soon as the purchase invoice status changes in Cin7, matched to the correct vendor and cost center. The accounting team now runs month-end close with AP already reconciled, and they can focus on exceptions rather than data re-entry.
What you can do
- Post purchase invoices from Cin7 into Sage Intacct's AP module, mapped to the correct vendor and GL account.
- Sync suppliers, customers, and cost dimensions bidirectionally so new records in either system propagate to the other.
- Map Cin7 sales orders and invoices to Sage Intacct revenue GL entries, allocated to the customer or cost center dimension.
- Handle Sage Intacct's XML gateway authentication, session caching, and 50-minute refresh cycles transparently.
- Poll on your schedule with full audit trail, idempotent retries, and replay on dimension validation failures.
Questions
- Which direction do purchase records move between Sage Intacct and Cin7 Core?
- Purchases and invoices flow from Cin7 into Sage Intacct's AP module. When a purchase in Cin7 reaches invoice or receipt status, ml-connector posts a bill into Intacct mapped to the matching vendor and GL account. Suppliers and customers sync bidirectionally so changes in either system propagate. The chart of accounts in Cin7 is read-only, so revenue and cost entries are always posted from Cin7 into Intacct, never the reverse.
- How does the integration handle Sage Intacct's session-based XML authentication and 50-minute expiry?
- ml-connector caches the sessionid from the initial getAPISession call and reuses it for subsequent requests. When the cache expires or a request returns a session error, ml-connector refreshes transparently by issuing a new getAPISession call. The end-user never sees session management; it is handled automatically in the background.
- What happens if a Cin7 purchase references a supplier or cost center that does not exist in Sage Intacct?
- ml-connector validates GL accounts and supplier names before posting. If a supplier or cost center is missing, the record is queued with an audit flag indicating the validation failure. Once the dimension is created in Intacct, ml-connector replays the queued record and completes the post. This prevents partial posts and ensures every AP bill lands on a valid account.
Related integrations
More Sage Intacct integrations
Other systems that connect to Cin7
Connect Sage Intacct and Cin7
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started