Zoho Books API Integration Research

Date: 2026-05-14 Product: Zoho Books (zoho.com/books) — cloud accounting software, part of the Zoho Finance Suite Vendor: Zoho Corporation — Chennai / Tamil Nadu, India; privately held, founded 1996 Purpose: Evaluate Zoho Books' API capabilities for Orcha integration


Important Context: What Zoho Books Actually Is — and the India Angle

Zoho Books IS a real accounting system / ERP-class target. This is a fundamentally different category from the spend-management tools researched recently (Pleo, Moss, Spendesk, Payhawk, Circula, Finway, Yokoy). Those sit upstream of the ledger and only export to it. Zoho Books is the ledger. It is the customer's actual books of account: chart of accounts, journals, AP/AR, bank reconciliation, tax filing.

Implication for Orcha: Zoho Books is a genuine downstream target system — the place Orcha would push processed AP invoices into, the same role DATEV, SAP, or Business Central play for other customers. The relationship is complementary, not competitive: Orcha does invoice capture / OCR / extraction / tax-compliance coding; Zoho Books is where the finished, coded bill lands. (Mild overlap exists — Zoho sells a "Document Autoscan" OCR add-on — but that is a thin generic scanner, not Orcha-grade extraction.)

The India context (the "in the news in India" reference). Zoho Corporation is one of India's flagship technology companies and is frequently in the Indian press:

This matters for Orcha mainly as vendor-stability and data-residency context: Zoho is large, profitable, privately held (no investor exit pressure), and — critically — operates a dedicated EU data centre (see §2), which is the relevant fact for German/EU customers.


1. Summary — Capability Matrix

Capability Public API Via iPaaS Via Unified API Verdict
Push AP invoices (vendor bills) into Zoho Books YES (POST /bills) YES (Zapier "Create Bill") YES (Rutter/Merge/Codat) Available now
Attach original invoice PDF to a bill YES (POST /bills/{id}/attachment) YES (Zapier "Add Attachment to Bill") Varies Available now
Submit a bill for approval YES (POST /bills/{id}/submit) NO NO Available now (needs Professional+ plan)
Approve a bill YES (POST /bills/{id}/approve) NO NO Available now (needs Professional+ plan)
Read/write chart of accounts YES (full CRUD) Partial YES (read) Available now
Read/write vendors (contacts) YES (full CRUD, contact_type=vendor) YES (Workato/Zapier) YES Available now
Read/write cost centers (Reporting Tags) YES (full CRUD) NO Partial Available now
Read/write tax codes YES (Taxes API) NO YES (read) Available now
Read/write items YES (full CRUD) YES YES Available now
Record vendor payments / read payment status YES (Vendor Payments API; GET /bills/{id}/payments) YES (Zapier "Create Payment") YES (read) Available now
Read bill status / lifecycle YES (GET /bills/{id} status field) YES (triggers) YES Available now
Event notifications (webhooks) YES — but via workflow rules configured in-app YES (iPaaS triggers) YES (Rutter/Merge events) Available now, with caveat
Inbound document creation without REST YES (Incoming Webhooks, Deluge-scripted) N/A N/A Available (niche)

Overall assessment: Zoho Books has a mature, fully-documented REST API with genuine end-to-end write capability for Orcha's core workflow — push a coded vendor bill, attach the source PDF, submit it for approval, and read back its status and payment. This is the strongest, cleanest integration target in the recent research batch, and the only one where the full Orcha workflow (push + attach + approve + status read-back) is supported by documented public endpoints. API access is included in every plan (no separate module to buy). The one real gate is that the approval endpoints depend on the customer being on the Professional plan or higher.


2. API Landscape

API Layers

Layer Base URL / Location Purpose
REST API v3 https://www.zohoapis.com/books/v3 Primary, fully-documented API — all modules
REST API v4 https://www.zohoapis.com/books/v4 (selected modules, e.g. Projects) Newer endpoints for some modules; v3 remains the documented baseline
Developer docs https://www.zoho.com/books/api/v3/ Full reference, per-module
API collection Postman / downloadable collection via docs Machine-readable, client generation
Developer Console https://api-console.zoho.com/ Where the customer registers the OAuth client

Data Centers (8 regions — domain must match the customer's org)

Region API domain
United States zohoapis.com
Europe zohoapis.eu
India zohoapis.in
Australia zohoapis.com.au
Japan zohoapis.jp
Canada zohoapis.ca
China zohoapis.com.cn
Saudi Arabia zohoapis.sa

For Orcha: German/EU customers will be on the .eu data center — Orcha's integration must detect and route to the correct regional domain per customer. The data center is fixed at org-signup time.

Authentication

Aspect Detail
Method OAuth 2.0
Client registration Zoho Developer Console (api-console.zoho.com)
Client types Self Client (backend-only), Server-based, Client-based, Mobile, Non-browser
Tokens Access token (1 h validity), refresh token (permanent until revoked)
Token limits Max 20 refresh tokens/user; max 15 active access tokens/refresh token; max 10 access tokens/refresh token per 10 min
Scopes ZohoBooks.{module}.{operation} — e.g. ZohoBooks.bills.CREATE, ZohoBooks.contacts.READ, ZohoBooks.settings.ALL, ZohoBooks.accountants.CREATE
Mandatory param organization_id must be sent on every API request

Rate Limits

Limit Value
Per minute 100 requests / minute / organization (all plans)
Per day Free 1,000 · Standard 2,000 · Professional 5,000 · Premium/Elite/Ultimate 10,000
Concurrent Free 5 · paid plans 10 simultaneous calls
Over-limit response HTTP 429 (error codes 44, 45, 1070)

The 100/min ceiling is the practical constraint for a bulk backfill; the daily quota is generous for steady-state AP volume.

API Module Coverage (selected — all support CRUD + module-specific actions)

Invoices · Bills · Estimates · Sales Orders · Purchase Orders · Credit Notes · Vendor Credits · Customer Payments · Vendor Payments · Expenses · Chart of Accounts · Journals · Fixed Assets · Bank Accounts · Bank Transactions · Bank Rules · Contacts (customers + vendors) · Contact Persons · Items · Price Lists · Locations · Taxes (groups, authorities) · Currencies · Reporting Tags · Projects · Tasks · Time Entries · Users · Custom Modules · Recurring Bills/Invoices/Expenses.


3. Write Capability Verification

Confidence: HIGH. Write capability is documented directly on the official API reference pages, and independently confirmed by three iPaaS connectors. Zoho Books uses proper REST semantics — POST = create, PUT = update, DELETE = delete — there is no "POST-for-read" ambiguity.

Bills API — the core Orcha target (/books/v3/bills)

Endpoint Method Operation
/bills POST Create a vendor bill
/bills/{bill_id} PUT Update a bill
/bills PUT Update via custom field's unique value
/bills/{bill_id} GET / DELETE Retrieve / delete a bill
/bills GET List bills (filterable)
/bills/{bill_id}/submit POST Submit bill for approval
/bills/{bill_id}/approve POST Approve a bill
/bills/{bill_id}/status/open POST Mark as open
/bills/{bill_id}/status/void POST Void a bill
/bills/{bill_id}/attachment POST / GET / DELETE Add / get / delete file attachment
/bills/{bill_id}/comments POST / GET Add / list comments
/bills/{bill_id}/payments GET List payments applied to the bill
/bills/{bill_id}/credits POST Apply vendor credits
/bill/{bill_id}/customfields PUT Update custom fields
/bills/{bill_id}/address/billing PUT Update billing address

Create-bill required fields: vendor_id, bill_number. Key optional fields: date, due_date, payment_terms, reference_number, currency_id, exchange_rate, line_items[], location_id, custom_fields[], tags[] (reporting tags), documents[] (attachments). Line items support: account_id (GL/expense account — the coding target), tax_id, item_id, location_id, custom fields, and reporting-tag associations.

Other confirmed write endpoints

Module Create Update Delete Notes
Chart of Accounts POST /chartofaccounts PUT /chartofaccounts/{id} DELETE + activate/inactivate; 17+ account types incl. accounts_payable, expense, cost_of_goods_sold
Contacts (vendors) POST /contacts PUT /contacts/{id} DELETE contact_type = customer/vendor; only contact_name required
Reporting Tags POST /reportingtags PUT /reportingtags/{id} DELETE + /options PUT for tag values; hierarchical (5 levels), max 500 options
Items POST /items PUT /items/{id} DELETE + activate/inactivate
Vendor Payments POST /vendorpayments PUT DELETE Links to bills; also surfaced at GET /bills/{id}/payments
Taxes POST /settings/taxes PUT DELETE Tax codes, tax groups, authorities
Purchase Orders POST /purchaseorders PUT DELETE + convert PO → bill
Journals / Expenses / Credit Notes / Vendor Credits POST PUT DELETE Full CRUD

No write blind spots material to Orcha. Every object Orcha needs to read or write is exposed with documented endpoints.


4. iPaaS & Middleware Findings

Platform Zoho Books connector? Operations exposed Signal
Celigo YES — native connector on integrator.io, region-selectable Imports Sales Orders to ERP; exports Invoices, Credit Memos, Customer Payments from ERP → Zoho. Detailed "Available/Supported Zoho Books APIs" doc page exists (Export/Import/Lookup taxonomy) High — confirms bidirectional write
Workato YES Actions: create customers, manage vendors, update invoices & estimates; fetch organizations & sales orders High — "Actions" = confirmed writes
Zapier YES — strong connector Triggers: New Bill, Customer, Estimate, Expense, Invoice, Item, Customer Payment, Purchase Order, sales-order workflow, vendor workflow. Actions: Create Bill, Create Contact, Create Credit Note, Create Payment, Create Sales Order, Add Attachment to Bill / Sales Order / Invoice Very high — independently confirms POST /bills + bill attachment via API
Make.com YES Native Zoho Books modules Medium

Takeaway: iPaaS connectors confirm rather than reveal — the public API is already complete. Notably, Zapier's "Create Bill" + "Add Attachment to Bill" actions independently verify the two endpoints most important to Orcha. iPaaS is therefore not needed as a middleware layer — Orcha should integrate the REST API directly. iPaaS is only relevant as a fallback for customers who already standardize on one.


5. Alternative Channels

Channel Available? Detail
Outbound webhooks YES, with caveat Webhooks are an action type on a workflow rule — configured in the Zoho Books UI (Settings → Automation), not via API. A rule on the Bills/Invoices/etc. module can fire an HTTP(S) POST on create/edit/status-change. Payload is customizable (field-mapping syntax). HMAC signature verification is supported (hash of payload + shared secret). Caveat: the customer must set up the workflow rule; Orcha cannot create the subscription programmatically. Workflow rules / advanced automation are gated at Professional+.
Incoming webhooks YES (niche) Zoho Books can receive webhooks that run a Deluge custom function to create/update records (e.g. create an invoice/contact from an external trigger). Low-code, not a REST channel — not the recommended path for Orcha, but confirms a second inbound route exists.
Unified APIs YES — Zoho Books is a connector Zoho Books is a supported connector in Rutter, Merge, and Codat — all three. This is the favorable case: a third party (Orcha) can reach Zoho Books through a unified API. Coverage is read-heavy (financial statements, accounts, contacts, invoices, bills) with some write support depending on provider.
SFTP / file import Not a primary channel Zoho Books is API-first cloud SaaS. CSV/Excel import exists in the UI for migration, but there is no programmatic SFTP integration path — and none is needed given the REST API.
Native ecosystem Extensive Deep native integration with the rest of Zoho (CRM, Inventory, Expense, Projects, Analytics) and direct connectors to banks, payment gateways, and tax authorities.

6. Licensing & Access Requirements

Plans & Pricing (per organization; annual billing shown as per-month)

Plan Monthly Annual (/mo) Users API daily quota Notable for Orcha
Free $0 $0 1 + 1 accountant 1,000 API works, but no approval workflows
Standard $20 $15 3 2,000 API listed as a headline feature
Professional $50 $40 5 5,000 Adds sales & purchase approvals + workflow customization
Premium $70 $60 10 10,000 Custom functions, validation rules, custom buttons
Elite $150 $120 10 10,000 Advanced inventory / logistics
Ultimate $275 $240 15 10,000 Analytics bundle

What the customer needs to buy / enable before integration can start

Item Required? Notes
API access Included in every plan — no separate module, add-on, or API-user license Free plan already has a 1,000-call/day quota. The pricing page highlights "API Access" from Standard up, but the API documentation explicitly grants the Free plan a daily quota. There is no "API module" to purchase — this is the key positive finding.
Professional plan or higher Required only if Orcha uses the submit / approve bill endpoints "Set up sales and purchase approvals" is a Professional-tier feature. A customer on Free/Standard can still receive pushed bills + attachments via API, but the approval-workflow endpoints map to a feature their plan doesn't have.
Workflow rules for webhooks Required only if Orcha wants event push-back Customer configures the workflow rule + webhook URL in-app; advanced automation is Professional+.
OAuth client registration Required The customer (admin) registers a client in the Zoho Developer Console — see checklist below.
BillPay add-on ($59–69/mo) Optional Zoho's own payment-execution add-on. Not needed for Orcha; relevant only if the customer wants Zoho to pay the bills.
Document Autoscan add-on ($8–10 / 50 scans) Optional / irrelevant Zoho's in-house OCR. This is the (thin) overlap with Orcha — a customer using Orcha would not need it.

Customer admin setup checklist

  1. Confirm the customer's plan — Professional+ if approval-workflow endpoints are in scope; any plan otherwise.
  2. Identify the customer's data center (.eu for German/EU customers) — Orcha must route to the correct regional domain.
  3. Admin registers an OAuth client at api-console.zoho.com — recommended type: Server-based Application (or Self Client for a pure backend service). Receives Client ID + Client Secret.
  4. Generate an authorization grant with the required scopes (e.g. ZohoBooks.bills.ALL, ZohoBooks.contacts.ALL, ZohoBooks.accountants.ALL for chart of accounts, ZohoBooks.settings.ALL for reporting tags/taxes).
  5. Exchange the grant for a refresh token (store securely; it does not expire until revoked).
  6. Retrieve the organization_id via GET /organizations — must accompany every request.
  7. (Optional) Configure workflow rules + webhook URLs in Zoho Books for status push-back to Orcha.

Bottom line on licensing: there are no hidden API costs. No per-call metering charges, no API-user seats, no separate API module. The only licensing dependency is the Professional-plan gate on the approval endpoints — and that is a feature gate, not an API surcharge.


7. Orcha-Specific Deep Dive

Orcha Integration Capability Summary

Orcha Need Zoho Books Support Endpoint(s) Confidence Notes
Push incoming AP invoices FULL POST /bills HIGH vendor_id + bill_number required; line items carry account_id for GL coding
Attach original invoice PDF FULL POST /bills/{bill_id}/attachment (or documents[] in create payload) HIGH Confirmed in API docs and Zapier "Add Attachment to Bill" action
Write reference data — chart of accounts FULL (CRUD) POST/PUT/DELETE /chartofaccounts HIGH 17+ account types incl. accounts_payable, expense
Write reference data — cost centers FULL (CRUD) POST/PUT /reportingtags + /options HIGH Reporting Tags = Zoho's cost-center / department mechanism; associable at transaction and line-item level; max 10 tags / 500 options each
Write reference data — vendors FULL (CRUD) POST/PUT/DELETE /contacts (contact_type=vendor) HIGH Only contact_name strictly required
Write reference data — tax codes FULL (CRUD) POST/PUT/DELETE /settings/taxes HIGH Tax codes, groups, authorities
Submit bill for approval FULL POST /bills/{bill_id}/submit HIGH Customer must be on Professional+ for the approval feature
Approve / reject bill FULL (approve) POST /bills/{bill_id}/approve HIGH Approve documented; reject path via status endpoints / re-submit. Professional+
Read bill status / lifecycle FULL GET /bills/{bill_id} (status field), GET /bills (filter by status) HIGH Statuses incl. draft, open, overdue, paid, partially-paid, void, pending-approval
Read payment status FULL GET /bills/{bill_id}/payments, Vendor Payments API HIGH Payment application is queryable per-bill
Sync reference data inbound FULL GET /chartofaccounts, GET /contacts, GET /reportingtags, GET /settings/taxes, GET /items HIGH Orcha can pull the customer's COA / vendors / cost centers to validate coding before push
Event notifications (status changes) PARTIAL Outbound webhooks via workflow rules (customer-configured, HMAC-signed) MEDIUM Works, but the customer must set up the workflow rule in-app; not API-provisioned. Polling GET /bills is the reliable fallback.

The key result

Zoho Books supports the entire Orcha AP workflow with documented public endpoints:

Create vendor (if new) → push the coded bill (POST /bills with account_id line-item coding + reporting-tag cost centers) → attach the source PDF (POST /bills/{id}/attachment) → submit for approval (POST /bills/{id}/submit) → optionally approve (POST /bills/{id}/approve) → read back status and payment (GET /bills/{id}, GET /bills/{id}/payments).

This is materially better than the spend-management tools in the recent research batch, where invoice push was universally impossible (email/UI only). Zoho Books is a true target system, and the integration is a conventional "push to the customer's ledger" pattern.

Caveats / things to verify with a pilot customer

  1. Approval-feature plan gate. The submit/approve endpoints presuppose the customer's plan has purchase-approval workflows (Professional+). On lower plans, push the bill directly to open status and skip the approval calls.
  2. Webhook provisioning is manual. Real-time status push-back requires the customer to configure a workflow rule. For v1, poll GET /bills filtered by last_modified_time; treat webhooks as an enhancement.
  3. Data-center routing. Orcha must store each customer's region and route to the matching domain (.eu, .in, etc.).
  4. Reporting-tag ceiling. Max 10 reporting tags per org — if a customer's cost-center dimensionality is higher, plan the mapping carefully.
  5. Rate limit. 100 req/min/org — a bulk historical backfill must be throttled; steady-state AP volume is comfortably within the daily quota.

Assessment: Zoho Books is a HIGH-VALUE, LOW-FRICTION Direct-API Integration Target

Unlike the spend-management peers, Zoho Books is squarely a destination ledger for Orcha — complementary, not competitive. The API is mature, RESTful, fully documented, included in every plan at no extra cost, and covers every operation Orcha needs.

Architecture Decision

Approach Cost Complexity Control Verdict
Direct REST API $0 (included in customer's plan) Low–Medium Full Recommended — clean REST, complete coverage, no middleware tax
iPaaS (Celigo/Workato/Zapier) $$$/yr Medium Partial Not needed; only as a fallback for customers already standardized on one
Unified API (Rutter/Merge/Codat) $$/yr Medium Medium Consider only if Orcha wants one abstraction across many accounting systems — Zoho Books is a connector in all three, so it would "come for free" in a unified-API strategy
Incoming webhooks (Deluge) $0 Medium Low Not recommended — niche, low-code, fragile

Phased Integration Plan

Phase 1 — Reference-data sync (read). Pull the customer's chart of accounts, vendors, reporting tags (cost centers), and tax codes via GET endpoints. Use these to validate/align Orcha's coding before any write. (Effort: low.)

Phase 2 — Bill push + attachment (write). POST /bills with line-item account_id coding and reporting-tag cost centers, then POST /bills/{id}/attachment with the source PDF. Create vendors on the fly via POST /contacts when no match exists. This delivers the core value. (Effort: medium.)

Phase 3 — Approval workflow. For Professional+ customers, POST /bills/{id}/submit and (where Orcha holds approval authority) POST /bills/{id}/approve. Gate this behind a per-customer capability flag. (Effort: low–medium.)

Phase 4 — Status & payment read-back. Poll GET /bills by last_modified_time for status changes and GET /bills/{id}/payments for settlement; offer webhook-based push-back as an optional upgrade for customers willing to configure the workflow rule. (Effort: low.)

What NOT to build

Recommendation

Proceed with a direct REST API integration. Zoho Books is the cleanest target evaluated recently: full workflow coverage, no API licensing cost, EU data residency available, and three independent iPaaS connectors confirming the write surface. The only real dependency to manage is the Professional-plan gate on approval endpoints — surface it in a per-customer capability flag and the rest of the integration is unaffected. Recommend a pilot with one EU (.eu data center) customer on the Professional plan to exercise the full push → attach → approve → read-back loop end-to-end.


9. Sources

Official API Documentation

Help / Product Documentation

iPaaS & Unified API

Third-Party Guides

Vendor / India Context