ml-connector
Zoho BooksAnaplan

Zoho Books and Anaplan integration

Zoho Books runs accounting for SMBs; Anaplan runs financial planning and forecasting. Connecting the two keeps your planning models current with actual invoices, bills, and purchase orders from your books. Finance teams no longer manually export accounting records and re-enter them into planning models. When a new invoice or bill is created in Zoho Books, ml-connector pushes it into Anaplan, allocated to the correct planning dimension, and your financial models stay aligned with actual transactions without re-keying.

How Zoho Books works

Zoho Books exposes contacts, invoices, bills, purchase orders, vendor payments, customer payments, items, chart of accounts, journals, and expenses through a region-specific REST API (US, EU, India, Australia, Japan, Canada, China, Saudi Arabia). Authentication uses OAuth2 Authorization Code flow with user-delegated refresh tokens; access tokens expire after 1 hour and must be refreshed proactively. Every API call requires the organization_id as a query parameter, obtained via GET /organizations after initial authentication. Zoho Books supports outgoing webhooks configured through the API for invoice, bill, purchase order, and contact events, with HMAC signature verification required. Polling is also available via list endpoints with offset-based pagination (page, per_page, has_more_page). Rate limits are 100 requests per minute across all plans, with concurrency limits of 5 on Free and 10 on paid plans; exceeding either returns HTTP 429.

How Anaplan works

Anaplan is a connected planning platform that models financial, workforce, and supply-chain plans through workspaces containing models, modules, and lists. Data enters Anaplan exclusively through polling: POST to an Import Action to start a bulk import, poll GET task status until completion, then retrieve the result. Workspaceids must be lowercase hex and modelIds uppercase hex. Anaplan authenticates via Basic Auth (username and password, 35-minute tokens), certificate-based auth with a client certificate pair, or OAuth2. Anaplan enforces a 600 requests-per-minute tenant-wide rate limit shared across all integrations; any rate limit spike returns HTTP 429. Models lock during bulk operations, so concurrent API reads are blocked until import/export completes. Workspace Admin role is required for transactional APIs. Anaplan has no native finance objects, so invoices and bills map to module structures you define inside planning models.

What moves between them

Invoices, bills, and purchase orders flow from Zoho Books into Anaplan models via bulk import. Ml-connector reads Zoho Books invoices and bills via webhooks (if configured) or periodic polling, aggregates them into a CSV file matching the target Anaplan module structure, posts the file to an Import Action, and polls until completion. Chart of accounts and contact lists from Zoho can also be imported to support Anaplan dimension mapping. The flow is one-way into Anaplan; Anaplan planning models do not write back to Zoho Books. Frequency is configurable per flow (e.g., hourly, daily, or weekly).

How ml-connector handles it

ml-connector stores Zoho Books OAuth2 credentials encrypted and uses the region field from the token response to route all calls to the correct regional base URL (US, EU, India, AU, JP, Canada, China, or Saudi Arabia). It obtains the organization_id immediately after authentication and includes it on every API call. On the Anaplan side, ml-connector stores workspace and model IDs in the correct case (workspace lowercase hex, model uppercase hex) and uses Basic Auth or certificate auth to obtain tokens valid for 35 minutes; tokens are refreshed before expiry. Ml-connector batches Zoho invoice and bill records into CSV files matching the Anaplan module's expected column structure, posts the file to a pre-created Import Action, and polls the task status until COMPLETE or CANCELLED. If a poll hits Anaplan's 600 request-per-minute tenant-wide limit, ml-connector backs off exponentially and retries. Zoho's 1-hour access token expiry is handled by proactive refresh at 55 minutes, preventing mid-flow token failures. Every record carries an audit trail showing source Zoho ID, Anaplan task ID, and import status.

A real-world example

A mid-market consumer goods company uses Zoho Books for accounting and Anaplan for financial planning and monthly forecasting. Previously, each month-end close required the finance analyst to export invoices and bills from Zoho Books, clean them in Excel, and upload them into Anaplan planning models to reconcile actual spend against the forecast. The import often took a full day and introduced manual-entry errors. With Zoho Books and Anaplan integrated, invoices and bills flow automatically into Anaplan each day, Anaplan models refresh with current actuals, and the month-end reconciliation task shrinks to validating that planned and actual spend dimensions align.

What you can do

  • Sync invoices, bills, and purchase orders from Zoho Books into Anaplan planning models via bulk import actions.
  • Route API calls to the correct Zoho Books regional base URL determined at OAuth2 authentication time.
  • Handle Zoho Books organization ID requirements, OAuth2 token refresh at 55 minutes, and credential encryption.
  • Map Zoho Books records to Anaplan module structures using configurable field mappings and support pre-created Import Actions.
  • Respect Anaplan's 600 request-per-minute tenant-wide rate limit and workspace/model ID case requirements (lowercase workspace, uppercase model).

Questions

How does ml-connector handle Zoho Books regional URLs?
Zoho Books returns a region field in the OAuth2 token response (us, eu, in, au, jp, ca, cn, or sa). ml-connector uses that region to select the correct base URL for all subsequent API calls. If a customer has a Zoho account in India, all calls route through https://www.zohoapis.in/books/v3. No manual region configuration is required after initial authentication.
Does ml-connector retry if Anaplan hits its rate limit?
Yes. Anaplan enforces a 600 request-per-minute tenant-wide limit shared across all integrations and returns HTTP 429 if the limit is exceeded. ml-connector detects 429, backs off exponentially with jitter, and retries the request. The backoff prevents thundering-herd behavior when multiple integrations compete for the rate limit.
Can Anaplan planning models write changes back to Zoho Books?
No. The flow is one-way: Zoho Books into Anaplan. Anaplan planning models are read-only with respect to Zoho Books. Changes made inside Anaplan do not sync back to invoices or bills in Zoho Books; they remain independent planning artifacts.

Related integrations

Connect Zoho Books and Anaplan

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

Get started