ml-connector
QuickBooks DesktopSFTP / Flat Files

QuickBooks Desktop and SFTP / Flat Files integration

QuickBooks Desktop powers small to mid-sized accounting teams, but it runs locally on Windows and has no native file-transfer APIs. SFTP / Flat Files is the standard transport for legacy business systems. ml-connector sits between them, polling QuickBooks Desktop for vendor and bill changes, writing them to flat files on your SFTP server, and pulling incoming payment and bill records back in. Your finance team gets automated record exchange without manual exports and file-drop management.

How QuickBooks Desktop works

QuickBooks Desktop is a Windows-installed accounting application from Intuit. It exposes vendor lists, bills, purchase orders, invoices, and accounts through QBXML over SOAP. A customer-hosted Web Connector agent on the same Windows machine polls your remote SOAP endpoint at a configurable interval (minimum 1 minute, typical 5-15 minutes) and sends QBXML queries. Authentication uses a session-token handshake where your service returns a GUID for the session. QuickBooks Desktop has no webhooks; all changes are detected via ModifiedDateRangeFilter queries. The application must be running and logged in to the company file for the Web Connector to process requests. Multi-company setups require separate Web Connector registrations. Large queries must be paginated within a 60-second timeout. Editing records requires the current EditSequence version counter to prevent concurrent edits.

How SFTP / Flat Files works

SFTP / Flat Files exchanges data via SSH File Transfer Protocol over TCP port 22. Each trading partner provides their own SFTP host; there is no shared base URL. Authentication uses SSH keys (recommended) or username and password, both sent over an encrypted channel. Data arrives as structured files (CSV, fixed-width, or EDI formats like X12 or EDIFACT) dropped into a standard folder layout: inbound/ for incoming files, outbound/ for files to send, processed/ for archive, and acks/ for acknowledgments. SFTP has no push mechanism; the connector must actively poll the inbound folder on a schedule. File format and column layout are per-partner and require a configuration mapping. EDI workflows produce acknowledgment files (X12 997 or EDIFACT CONTRL) after processing.

What moves between them

Bills and vendors flow from QuickBooks Desktop to SFTP. ml-connector polls QuickBooks Desktop on your schedule, detects vendor and bill changes using ModifiedDateRangeFilter, and writes them to CSV or fixed-width files in the SFTP outbound folder. Payments and new bills flow the reverse direction. ml-connector polls the SFTP inbound folder, reads payment and bill files according to your format mapping, and writes them into QuickBooks Desktop as bill payment checks and new bills. The sync runs on a schedule you control, typically every 15 to 60 minutes, and each record carries a full audit trail showing when it was read, transformed, and written.

How ml-connector handles it

ml-connector implements the SOAP-based QBXML handshake with QuickBooks Desktop using the session-token method: your service receives QBWC credentials, returns a session GUID, and accepts all subsequent QBXML requests in that session. On the SFTP side, ml-connector connects with your SSH key or password, opens the inbound folder, polls for new files on your schedule, parses them according to a configurable CSV or fixed-width mapping, and writes the resulting bills and payments back to QuickBooks Desktop. Outbound records (vendors and bills) are written as flat files and placed in the outbound folder ready for your downstream trading partner. Because QuickBooks Desktop enforces EditSequence version counters, ml-connector re-queries before every update to fetch the current version and prevent conflicts. Errors during file parsing or QBXML writes are logged and retried on the next polling cycle. Large result sets are paginated within QuickBooks Desktop's 60-second timeout to avoid timeouts on high-volume vendors or bills. Host key verification is required in production to prevent MITM attacks on the SFTP connection.

A real-world example

A regional accounting service provider manages QuickBooks Desktop for a dozen small manufacturing and distribution clients. Each client also exchanges payment files with their bank and vendor EDI trading partners via SFTP. Before the integration, accountants manually exported vendor lists and bill activity from each client's QuickBooks Desktop, reformatted them into the specific CSV or EDI layout each trading partner required, and dropped them on SFTP servers by hand. When payments came in from the bank as flat files, another accountant parsed them and re-entered them into QuickBooks Desktop one by one. With QuickBooks Desktop and SFTP / Flat Files connected, new bills are automatically written to the vendor partner's SFTP folder, and incoming payment files are automatically parsed and posted to QuickBooks Desktop. Reconciliation is faster because all records flow automatically.

What you can do

  • Poll QuickBooks Desktop for vendor and bill changes on a configurable schedule and write them as flat files to SFTP.
  • Read payment and bill files from your SFTP inbound folder and post them into QuickBooks Desktop as bills and payments.
  • Detect changes using QuickBooks Desktop ModifiedDateRangeFilter to avoid re-exporting old records.
  • Map CSV and fixed-width file formats per SFTP trading partner with configurable column layout.
  • Maintain the EditSequence version counter on QuickBooks Desktop updates to prevent concurrent edit conflicts.

Questions

How does ml-connector authenticate to QuickBooks Desktop and SFTP?
QuickBooks Desktop uses a SOAP session-token handshake: ml-connector's service receives QBWC credentials from the Web Connector and returns a GUID for that session. SFTP authentication uses SSH keys (recommended) or username and password, both over an encrypted channel. Host key verification is required in production.
Why does ml-connector need to know the EditSequence on QuickBooks Desktop updates?
QuickBooks Desktop uses EditSequence as a version counter to prevent concurrent edits to the same record. ml-connector re-queries the current EditSequence before every bill or payment write to ensure the update succeeds without conflicts caused by simultaneous changes.
Can ml-connector handle different file formats for different SFTP partners?
Yes. Each SFTP trading partner can have their own CSV or fixed-width file format, column order, and naming convention. ml-connector is configured with a mapping spec per partner so it can parse or generate the right format for each outbound or inbound exchange.

Related integrations

Connect QuickBooks Desktop and SFTP / Flat Files

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

Get started