ml-connector
Zoho BooksPlaid

Zoho Books and Plaid integration

Zoho Books handles your invoicing, bills, and general ledger. Plaid connects to your bank accounts and financial institutions to track balances and transactions. Connecting the two keeps your Zoho bank feeds current and reconciles payment records without manual re-entry. Transaction data flows from Plaid into Zoho so your cash position is always accurate, and initiated transfers flow the other direction to keep payment records aligned.

How Zoho Books works

Zoho Books exposes invoices, bills, vendor payments, customer payments, chart of accounts, journals, and expenses through a REST API with region-specific base URLs. Authentication uses OAuth2 Authorization Code flow with a user-delegated refresh token; access tokens are valid for 1 hour and require the organization_id as a query parameter on every call. Zoho Books supports both webhooks (configured via API endpoints for events like invoice creation or bill payment) and offset-based polling with page and per_page parameters. Rate limit is 100 requests per minute with daily limits by plan, and concurrent calls are capped at 5 on Free plans and 10 on paid plans.

How Plaid works

Plaid provides read access to account balances and transactions from users' bank accounts and financial institutions, and write capabilities for initiating ACH and wire transfers. Authentication uses API key credentials (client_id and secret) supplied as headers or body fields, plus per-user access tokens obtained via the Plaid Link flow. Plaid uses REST endpoints with POST requests, delivered to sandbox or production base URLs. Webhooks push transaction and account events to a registered endpoint and require JWT signature verification using JWK public keys; every webhook must be verified with SHA-256 body hashing and timestamp validation before processing.

What moves between them

Transaction data moves from Plaid into Zoho Books on a schedule tied to your bank reconciliation cycle. Plaid provides transaction history and current balances for each connected account; ml-connector maps those transactions to Zoho invoice and bill records and updates Zoho's bank feeds accordingly. Initiated transfers and ACH payments flow from Zoho into Plaid to keep payment records in sync. Reference data such as account numbers and currency codes are aligned bidirectionally so transactions land on valid Zoho accounts.

How ml-connector handles it

ml-connector stores Zoho OAuth2 credentials (client_id, client_secret, and refresh token) encrypted and uses the region field from the Zoho token response to route all calls to the correct regional base URL, since each organization lives in exactly one region. It also stores Plaid API keys encrypted and presents them on every request. Plaid webhooks are verified by checking the JWT signature with JWK public key lookup, validating the timestamp is within 5 minutes, and comparing the SHA-256 hash of the raw request body to the request_body_sha256 claim in the JWT. Because Zoho enforces a 1-hour token expiry, ml-connector refreshes proactively at 55 minutes to avoid mid-flow token timeouts. Plaid enforces a 50-character max on idempotency keys with a 48-hour expiry window, so ml-connector tags transfer requests with jobId-based keys to deduplicate retries. Zoho rate limits are 100 calls per minute per organization, so ml-connector backs off and retries on 429 responses. Transaction amounts include currency and exchange rate fields, so ml-connector normalizes currency codes via Zoho's GET /settings/currencies endpoint before posting to Plaid.

A real-world example

A small to mid-sized professional services firm uses Zoho Books for invoicing and accounts payable, and maintains multiple bank accounts across different regions for client fund management. Before the integration, the accounting team manually reviewed Plaid transaction feeds daily, matched them against Zoho invoices and bills, and re-entered payment details into Zoho when discrepancies appeared. With Zoho Books and Plaid connected, each day's bank transactions automatically flow into Zoho reconciliation, matched to the correct invoice or bill by Zoho's custom matching rules, and flagged transactions are automatically tagged for manual review. The team now runs bank reconciliation in half the time and catches payment errors the same day they clear.

What you can do

  • Sync Plaid transaction data into Zoho Books on a configurable schedule tied to your bank reconciliation cycle.
  • Verify Plaid webhook signatures using JWT and JWK public key validation to ensure authenticity.
  • Map Plaid transactions to Zoho invoices and bills for automatic reconciliation without manual re-entry.
  • Route all Zoho API calls to the correct regional base URL determined by the organization's configured region.
  • Initiate ACH and wire transfers from Zoho into Plaid with idempotency keys to deduplicate retries.

Questions

Which direction does data move between Zoho Books and Plaid?
Transactions flow primarily from Plaid into Zoho Books so your bank feeds and cash position stay current. Initiated transfers and ACH payments also flow from Zoho into Plaid to keep payment records aligned. Reference data such as account numbers and currencies are synced bidirectionally to ensure transactions land on valid accounts.
How does the integration handle Zoho's region-specific base URLs and token expiry?
ml-connector extracts the region field from Zoho's token response and uses it to route all subsequent API calls to the correct regional base URL, since each organization exists in exactly one region. Zoho access tokens expire after 1 hour, so ml-connector proactively refreshes the token at 55 minutes to avoid timeout failures mid-transaction.
How does the integration verify Plaid webhook authenticity?
Plaid webhooks are verified by extracting and validating the JWT signature using JWK public key lookup, checking that the algorithm is ES256, validating the timestamp is within 5 minutes, and computing the SHA-256 hash of the raw request body to confirm it matches the request_body_sha256 claim in the JWT payload.

Related integrations

Connect Zoho Books and Plaid

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

Get started