Zoho Books and Stampli integration
Zoho Books runs accounting and invoicing. Stampli runs accounts payable automation and approval workflows. Connecting them keeps approved invoices in Stampli synced back to Zoho Books for recording, and vendor and GL account reference data aligned across both systems. ml-connector handles Zoho's regional OAuth2 endpoints, Stampli's SFTP-only access, and the polling cadence required by both systems.
What moves between them
The main flow is Zoho Books into Stampli. After vendors and GL accounts are synced as reference data, invoices captured and approved in Stampli are polled back into Zoho Books and recorded as vendor bills or expense entries mapped to the correct GL accounts and cost centers. Purchase orders may flow from Zoho Books into Stampli to inform the approval workflow. There is no bidirectional syncing of invoice state; Stampli is the approval authority and Zoho Books is the posting system.
How ml-connector handles it
ml-connector stores SFTP and Zoho Books OAuth2 credentials encrypted and routes all Zoho calls to the correct regional base URL determined by the Zoho region field. It polls Stampli's outbound SFTP directory on a schedule (typically every 15 to 30 minutes) to detect new invoice and vendor export files, downloads them, and parses CSV or XML rows. For each invoice, it resolves the associated vendor and GL account by name or ID, constructs a Zoho Books bill or expense entry, and posts it via the OAuth2-authenticated Zoho Books API. When Zoho access tokens expire, ml-connector refreshes proactively at 55 minutes to prevent mid-operation failures. Invoices are deduplicated by reference number or BullMQ jobId to prevent duplicate posts after retries. Because Zoho Books enforces a 100-request-per-minute rate limit and Stampli export files are asynchronous, ml-connector backs off and retries on HTTP 429 and waits for SFTP files to arrive rather than failing immediately.
A real-world example
A mid-sized B2B services company uses Zoho Books for accounting and general ledger management across multiple cost centers. The finance team captures vendor invoices in Stampli for approval and PO matching before they are recorded. Before the integration, approved invoices were exported from Stampli as CSV and re-entered into Zoho Books by hand, with manual vendor and GL account lookups. With Zoho Books and Stampli connected, each approved invoice polls into Zoho Books automatically as a bill or expense entry, assigned to the correct vendor and GL account. The manual re-entry step is eliminated, and the approved invoice audit trail from Stampli feeds directly into Zoho's audit log.
What you can do
- Poll approved invoices from Stampli's SFTP export directory and post them into Zoho Books as bills or expense entries with automatic GL account mapping.
- Sync vendor reference data from both directions so Stampli approval workflows reference vendors that exist in Zoho Books.
- Authenticate Zoho Books with OAuth2 refresh tokens and route calls to the correct regional base URL per organization.
- Handle SFTP file arrival timing and duplicate invoice detection across retries and polling cycles.
- Manage Zoho Books API rate limits with exponential backoff retries when HTTP 429 is returned.
Questions
- Why does Stampli integration use SFTP files instead of a REST API?
- Stampli does not publish a public REST API to third-party developers without a formal partner agreement. File-based integration via SFTP is the only available path. ml-connector polls Stampli's outbound directory at regular intervals to detect and download new invoice and vendor export files.
- How does ml-connector handle Zoho Books regional routing and OAuth2 expiry?
- Zoho Books publishes different base URLs for each region (US, EU, India, Australia, Japan, Canada, China, Saudi Arabia). ml-connector stores the region credential, routes all calls to the correct regional endpoint, and proactively refreshes OAuth2 access tokens at 55 minutes to prevent failures mid-operation.
- What happens if Stampli files arrive late or invoices are processed twice?
- ml-connector implements duplicate detection using the invoice reference number or BullMQ jobId to prevent duplicate posts after retries. If Stampli export files arrive after a scheduled poll, the next polling cycle will detect them. Invoices already posted are skipped on retry.
Related integrations
More Zoho Books integrations
Other systems that connect to Stampli
Connect Zoho Books and Stampli
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started