ml-connector
QuickBooks OnlineStampli

QuickBooks Online and Stampli integration

Stampli automates your invoice capture and approval workflow. QuickBooks Online manages your general ledger and vendor relationships. Connecting them ensures invoices approved in Stampli post into QuickBooks Online with correct GL accounts and vendor names, and vendor master data stays synchronized across both systems. Approved invoices, bills, and GL allocations move automatically so your AP team does not re-enter invoices and your month-end close starts with reconciled payables.

How QuickBooks Online works

QuickBooks Online exposes Bills, Vendors, GL Accounts, Journal Entries, and Payments through the QuickBooks Online Accounting API using REST over HTTPS. Authentication requires OAuth 2.0 Authorization Code flow with a one-hour access token and rotating refresh tokens. The API supports both webhooks (push) on Bill, Vendor, Account, and Payment events and a CDC (change data capture) endpoint for polling up to 30 days of history. Webhook payloads contain only the entity ID and operation; the full record must be fetched via GET. All updates require a SyncToken for concurrency control.

How Stampli works

Stampli exposes invoices, vendors, GL accounts, purchase orders, and payments through SFTP file exchange only; no public REST API exists. Authentication uses SFTP credentials (hostname, port, username, password). The platform exports approved invoices and vendor data as CSV files to a designated SFTP directory on an internal refresh cycle (invoices every 5 minutes, vendors every 5 minutes, purchase orders every 2 hours). Third-party integrations must poll the outbound SFTP directory to detect new files. No sandbox environment is available to third parties; testing requires coordination with Stampli support.

What moves between them

The primary flow is Stampli to QuickBooks Online. After invoices are approved in Stampli, ml-connector polls the outbound SFTP directory, retrieves the CSV export, and creates matching Bill records in QuickBooks Online with the vendor, GL account, and line-item detail. Stampli vendor master data syncs into QuickBooks Online Vendor records on each poll cycle so vendor names, addresses, and tax IDs stay aligned. Gl account mappings ensure each Stampli invoice line lands on a valid QuickBooks Online GL account and dimension (department or class). The reverse flow (QBO vendors or GL account changes back to Stampli) depends on Stampli webhooks or export schedules and is not currently automated; Stampli is the primary source for AP records.

How ml-connector handles it

ml-connector stores Stampli SFTP credentials encrypted and polls the outbound directory on a customer-defined schedule (e.g. every 15 minutes). For each new CSV file, it parses the invoice, vendor, and GL allocation rows, maps Stampli GL account codes to QuickBooks Online GL accounts and dimensions, and creates Bill records via the QBO REST API with OAuth 2.0 credentials. When a Bill is created, ml-connector also checks vendor names against existing QBO Vendor records; if the vendor does not exist, it creates one with the address and tax ID from Stampli. All QBO updates include the required SyncToken for concurrency. If an OAuth access token expires (1-hour TTL), ml-connector automatically refreshes it using the stored refresh token. If the Stampli SFTP connection fails, ml-connector retries with exponential backoff and surfaces the error to Stampli's outbound queue for retry on the next poll cycle. Every Bill and Vendor record created carries a full audit trail, including the source Stampli invoice ID, the timestamp, and the GL mappings applied.

A real-world example

A mid-market professional services firm runs Stampli to automate invoice receipt and approval across four office locations and multiple cost centers. The firm also uses QuickBooks Online for accounting and month-end close. Before the integration, the AP team approved invoices in Stampli each day, then manually re-entered them into QuickBooks Online, categorizing each line to the correct cost center and GL account, a process that took 4-5 hours per week and introduced data-entry errors. With Stampli and QuickBooks Online connected, approved invoices flow automatically into QBO Bills with correct GL codes and cost centers, and the AP team's role shifts to exception handling (hold, dispute, or acceleration) rather than data entry. Month-end close begins with payables already reconciled and GL accounts pre-populated.

What you can do

  • Poll Stampli's SFTP directory for approved invoices and automatically create matching Bills in QuickBooks Online with GL accounts and cost center dimensions.
  • Sync Stampli vendor master data into QuickBooks Online Vendor records, keeping names, addresses, and tax IDs aligned.
  • Map Stampli GL account codes to QuickBooks Online GL accounts and dimensions (department, class) so invoices land on valid accounts.
  • Refresh OAuth access tokens and retry failed API calls with backoff, with a full audit trail on every Bill and Vendor created.
  • Detect and skip duplicate invoices using Stampli's invoice IDs, preventing double-posting to the general ledger.

Questions

Why does ml-connector poll Stampli instead of receiving a webhook push?
Stampli does not publish a public webhook API; file-based SFTP integration is the only third-party path without a formal partnership agreement. ml-connector polls the outbound SFTP directory on a schedule you define (e.g. every 15 minutes) to detect new invoice and vendor exports. Internal refresh rates are approximately 5 minutes for invoices and vendors, so a 15-minute poll cycle keeps data in sync within a predictable delay.
Does ml-connector create QuickBooks Online vendors automatically if they do not exist?
Yes. When an invoice arrives from Stampli with a vendor name and tax ID that does not match an existing QBO Vendor, ml-connector creates the Vendor record with the Stampli data (name, address, tax ID). If a vendor already exists by name, ml-connector updates the address and tax ID and then links the invoice to that Vendor. This keeps your vendor master synchronized and prevents duplicate Vendor records.
What happens if the Stampli SFTP connection fails or the QBO API rate limit is hit?
ml-connector retries failed SFTP connections and API calls with exponential backoff. If an SFTP file read fails, the error is logged and the file is retried on the next poll cycle. If QuickBooks Online returns a rate-limit error or temporary outage, ml-connector backs off and re-enqueues the Bill for the next attempt. All errors are recorded in the audit trail so you can investigate and replay the record if needed.

Related integrations

Connect QuickBooks Online and Stampli

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

Get started