Sage 100 and Procurify integration
Procurify manages your procurement workflow in the cloud - purchase requests, orders, and approvals all flow through a modern interface. Sage 100 runs your general ledger, accounts payable, and inventory on-premises. The two systems need to stay in sync so approved purchase orders in Procurify become purchase orders in Sage 100, and bill amounts post into the right GL accounts. ml-connector automates this bridge, polling Procurify for new and updated purchase orders and bills, then writing them into Sage 100 via the local BOI agent with the correct vendor links and GL allocations.
What moves between them
Data flows primarily from Procurify into Sage 100. ml-connector polls Procurify daily for new and modified purchase orders and approved requisitions, then creates corresponding purchase orders in Sage 100 and posts approval journals to the GL. Vendors are synced bi-directionally so Procurify vendor names and payment terms are compared against Sage 100 vendor master records, with new vendors in Procurify flagged for manual approval in Sage 100 before they can be used. Account codes from Procurify are mapped to Sage 100's multi-segment GL structure (e.g., 4000-01-00) so each purchase order line item posts to the correct cost center and GL account. Bills and payments in Procurify remain read-only and are not written back to Sage 100; AP invoice creation in Sage 100 stays manual or is sourced from receipt matching.
How ml-connector handles it
ml-connector stores Procurify OAuth credentials and connects to the local Sage 100 BOI agent using Windows service account authentication configured per customer. On each poll cycle, it fetches new purchase orders from Procurify's REST API using the OAuth 2.0 client credentials flow, refreshing the bearer token every 24 hours. Each Procurify PO is validated against Sage 100's vendor master and GL account structure: if a Procurify vendor does not exist in Sage 100, it is flagged for manual approval; if an account code maps to a multi-segment GL account that varies by customer configuration, the mapping is stored per customer and applied consistently. ml-connector then calls the Sage 100 BOI agent to create purchase orders and GL journal entries. Because Sage 100 enforces concurrent write locks on COM records, ml-connector retries failed writes with exponential backoff. Every record carries a full audit trail including timestamps, source ID, destination ID, and the direction of sync. If a Procurify PO is updated after it has been written to Sage 100, ml-connector can flag the change for review but does not overwrite the Sage 100 PO automatically, since Sage 100 may have already received a goods receipt or partial invoice against it.
A real-world example
A mid-sized manufacturing company with decentralized procurement uses Procurify to centralize purchase requests and approvals across two regional plants. Finance runs Sage 100 on-premises and needs every approved purchase order in Procurify to flow into Sage 100 immediately so that purchase commitments are reflected in the GL and forecasting is current. Before the integration, the procurement team exported approved POs from Procurify and emailed them to finance, who manually entered each one into Sage 100 by hand. With Sage 100 and Procurify connected, approved POs move automatically from Procurify into Sage 100 each day, mapped to the right vendors and cost centers, so finance can see committed spend in the GL within 24 hours of approval, and the manual re-entry step is eliminated.
What you can do
- Poll Procurify daily for new and updated purchase orders and requisitions, then create corresponding purchase orders in Sage 100 via the local BOI agent.
- Map Procurify vendors to Sage 100 vendor master records and flag new Procurify vendors for manual approval before use in Sage 100.
- Post GL journal entries for approved purchase orders into Sage 100's general ledger, allocated to the correct cost centers and GL account segments.
- Handle OAuth 2.0 token refresh on the Procurify side and Windows service authentication on the Sage 100 agent, with retries and backoff for COM write locks.
- Maintain a full audit trail of every purchase order synced, including source and destination record IDs, timestamps, and sync direction.
Questions
- Which direction does data move between Sage 100 and Procurify?
- The primary flow is from Procurify into Sage 100. ml-connector polls Procurify for new and updated purchase orders and requisitions daily, then creates matching purchase orders in Sage 100 and posts GL journal entries. Vendors are aligned in both directions so new Procurify vendors can be identified and added to Sage 100's vendor master. Bills and payments in Procurify remain read-only and are not written back to Sage 100.
- How does ml-connector authenticate to both systems?
- On the Procurify side, it uses OAuth 2.0 client credentials to obtain a bearer token, which it refreshes every 24 hours. On the Sage 100 side, it connects to the customer's local BOI agent using Windows service account credentials, which the agent forwards to the COM layer. Both credential sets are stored encrypted and rotated per customer.
- What happens if a Procurify vendor does not exist in Sage 100?
- ml-connector compares each Procurify vendor against the Sage 100 vendor master. If a Procurify vendor is not found, it is flagged in the audit trail and in a review queue so the Sage 100 finance team can decide whether to create the vendor or map it to an existing one before the purchase order can be created.
Related integrations
More Sage 100 integrations
Other systems that connect to Procurify
Connect Sage 100 and Procurify
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started