Syncing invoices to Zoho via the dedicated n8n node

Integrationsn8nzoho2026-07-24

Goal

Automatically create invoices (TD01) and credit notes (TD04) in Zoho Invoice or Zoho Books from documents generated by POP, using the official npm package n8n-nodes-pop-zoho on your own self-hosted n8n instance.

This is a separate, distinct package from n8n-nodes-pop (which handles SdI/PEPPOL/VIES and, via its Sync Document to Zoho operation, also a simpler native Zoho sync — see n8n) — install both only if you need both capabilities, or prefer this path if you want the Zoho OAuth connection to live inside n8n itself.

Installation note: this package is published on npm but is not approved/listed on n8n’s official Community Nodes registry — n8n’s Settings → Community Nodes → Install button will not find it. It must be installed manually (see below), and as a result it doesn’t work on n8n Cloud, only on a self-hosted instance.

Prerequisites

Steps

  1. Manual install (n8n’s “Community Nodes” installer won’t find this package):
    git clone https://github.com/getpopapi/n8n-nodes-pop-zoho.git
    cd n8n-nodes-pop-zoho
    npm install
    npm run build
    ln -s $(pwd)/dist/nodes/PopZohoInvoice/PopZohoInvoice.node.js ~/.n8n/custom/PopZohoInvoice.node.js
    ln -s $(pwd)/dist/credentials/ZohoInvoiceOAuth2Api.credentials.js ~/.n8n/custom/ZohoInvoiceOAuth2Api.credentials.js
    ln -s $(pwd)/dist/nodes/PopZohoInvoice/pop-zoho-invoice.svg ~/.n8n/custom/pop-zoho-invoice.svg
    n8n start
  2. On the Zoho API Console, create a Server-based Application with redirect URI https://<your-n8n-instance>/rest/oauth2-credential/callback.
  3. In n8n, create a Zoho OAuth2 (Invoice / Books) credential: product, region, Organization ID (from Zoho → Settings → Organization Profile), Client ID/Secret from the app you just created. Click Connect to complete authorization.
  4. Build the workflow: Webhook node (Authentication: None, Respond: Using 'Respond to Webhook' Node, path webhook/zoho) → POP → Zoho node → Respond to Webhook.
  5. Copy the Webhook node’s production URL and register it in POP’s Webhooks panel, setting the Connector field to “n8n Connector — Zoho”.
  6. In the POP → Zoho node, set the License Key (always the account’s default key, from popapi.io → Account → API → API Key (default) — never a platform-specific Shopify/WooCommerce key) and click the refresh button to fetch the RSA public key.

Verify

Send a request with environment: "sandbox" (or enable Dry Run on the node): the response includes dry_run: true and the zoho_body that would have been sent to Zoho, without creating anything for real and without consuming quota.

Good to know

Common errors

For the generic routing mechanism this node relies on (the /connector/zoho route, HMAC+RSA signing, POP-side error codes), see api/connectors. To choose between this path and the other available channels, see choosing-an-invoicing-integration.