ml-connector
Sage 100SFTP / Flat Files

Sage 100 and SFTP / Flat Files integration

Sage 100 runs on-premises accounting and operations, while SFTP is the backbone of modern EDI and flat-file exchange with legacy systems and trading partners. Connecting Sage 100 to SFTP keeps your account payable, purchase orders, GL entries, and vendor master data flowing to and from external partners without manual exports and re-imports. ml-connector deploys a local Windows agent on the Sage 100 server that reads your data via the BOI interface, formats it into CSV or EDI (X12, EDIFACT), and uploads to SFTP on a schedule you define, while also pulling inbound files and posting them back into Sage 100.

How Sage 100 works

Sage 100 is an on-premises ERP with no native cloud API. It exposes AR, AP, GL, inventory, and purchasing data through SOAP eBusiness Web Services (limited to Sales Orders and Customers only) or through the BOI COM layer for full access to AP invoices, purchase orders, GL accounts, GL journal entries, vendors, and items. Authentication uses username and password per call, with no OAuth or tokens. All access requires a Windows service account and individual user enablement in Sage 100 admin. Sync is polling only against DateLastUpdated or DateCreated fields at recommended intervals of 15 minutes for AP and PO, hourly for vendors, and daily for GL accounts. Every call requires a company code identifier, and GL accounts use a multi-segment format that varies by customer configuration.

How SFTP / Flat Files works

SFTP / Flat Files exchanges data as structured files (CSV, X12 EDI, EDIFACT, XML, fixed-width text) over SSH key or password authentication on port 22. No standard base URL exists; each partner provides their own host. Data discovery is polling only: the connector polls an inbound folder on the SFTP server every 5 to 60 minutes to detect new files. File format and column layout are partner-specific and configured per relationship. X12 or EDIFACT acknowledgments (997 or CONTRL) must be generated and deposited in an acks folder after processing inbound files. Host key verification is required in production to prevent man-in-the-middle attacks.

What moves between them

Data flows bidirectionally on a schedule. Outbound from Sage 100: AP invoices, purchase orders, GL journal entries, vendors, and items are extracted via BOI at configured polling intervals (15 minutes for AP and PO, hourly for vendors, daily for GL), transformed to CSV or EDI format, and uploaded to the SFTP outbound folder. Inbound to Sage 100: files arriving in the SFTP inbound folder are polled, parsed according to the configured mapping spec, validated against Sage 100 company code and GL account segment format, and posted as new transactions (invoices, journal entries) back into Sage 100. Acknowledgments are generated and returned to the acks folder.

How ml-connector handles it

ml-connector deploys a lightweight Windows service agent on the Sage 100 customer server that connects to Sage 100 via BOI COM and to the remote SFTP server via SSH. Outbound polling reads records with a DateLastUpdated filter to fetch only changed records, transforms them to the format spec agreed with the trading partner (CSV columns or EDI X12/EDIFACT structure), and uploads to SFTP with a timestamped filename to avoid collisions. Inbound polling discovers files in the SFTP inbound folder, parses them according to the partner-specific mapping configuration, validates GL account segments and company code against the live Sage 100 config, checks for duplicates using invoice number or transaction ID, and posts new records as AP invoices or GL journal entries via BOI. Acknowledgment files are generated (X12 997 or EDIFACT CONTRL) and uploaded to the acks folder so the partner knows receipt was successful. The service runs on a polling schedule tied to your accounting calendar (e.g., once per day before month-end close, every 15 minutes during month-end cutoff). Retries use exponential backoff on network or BOI lock contention. Every transaction carries a full audit trail linked to the source file and timestamp.

A real-world example

A mid-sized wholesale distributor runs Sage 100 on-premises for AR, AP, inventory, and GL. They receive invoices from five regional suppliers and generate purchase orders to three vendors, all via SFTP in X12 EDI format. Before the integration, the AP team exported open invoices from Sage 100 weekly, merged them into a consolidated X12 file, uploaded manually to the SFTP server, then downloaded supplier responses and invoices from the inbound folder and re-entered key fields (invoice number, amount, account code) into Sage 100 by hand. Month-end reconciliation required chasing discrepancies between what was sent and what actually posted. With Sage 100 and SFTP / Flat Files connected, open invoices and new purchase orders flow automatically from Sage 100 to SFTP every morning, supplier invoices and acknowledgments are pulled from SFTP every 15 minutes and posted as AP transactions in Sage 100 without re-keying, and the audit trail shows exactly which file posted which invoice. Manual data entry is eliminated, and month-end close starts with AP already reconciled to the EDI audit log.

What you can do

  • Extract AP invoices, purchase orders, GL journal entries, vendors, and items from Sage 100 via BOI and upload to SFTP as CSV or X12 EDI on a polling schedule.
  • Receive inbound files from SFTP, parse them according to partner-specific mapping specs, and post as new AP invoices or GL journal entries into Sage 100.
  • Validate incoming data against Sage 100 company code and multi-segment GL account format before posting to prevent misallocations.
  • Generate and return X12 997 or EDIFACT CONTRL acknowledgments to the SFTP acks folder so trading partners confirm successful receipt.
  • Track every transaction end-to-end with a full audit trail linked to the source file, timestamp, and BOI posting result, with automated retries and backoff on locks or network delays.

Questions

Does ml-connector require installation on the Sage 100 server?
Yes. Because Sage 100 has no cloud API, ml-connector deploys as a lightweight Windows service agent on the customer server to access BOI COM. The agent requires a Windows service account with permission to read Sage 100 data and write to the local network. It does not modify Sage 100 system files or install dependencies beyond the .NET runtime.
What file formats and EDI standards are supported?
CSV (with configurable column layout), X12 (810 invoices, 850 purchase orders, 820 payments), EDIFACT (INVOIC, ORDERS), and fixed-width text. The exact format per trading partner is specified in a mapping configuration file. Acknowledgments are returned as X12 997 or EDIFACT CONTRL depending on the inbound format.
How does the integration handle Sage 100's multi-segment GL account format?
Sage 100 GL accounts use a customer-configured multi-segment format (e.g. 4000-01-00). ml-connector reads the live GL account master from Sage 100 on every sync cycle and validates all incoming journal entries against it before posting. If an inbound file references an invalid account segment, the record is rejected with a detailed error logged to the audit trail, and an acknowledgment error is returned to the SFTP acks folder.

Related integrations

Connect Sage 100 and SFTP / Flat Files

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

Get started