ml-connector
Zoho BooksAdyen

Zoho Books and Adyen integration

Zoho Books tracks customer invoices and receivables. Adyen processes payments and settlements. Connecting them keeps your accounting and payment operations in sync. When a customer invoice is created in Zoho Books, ml-connector posts a payment intent to Adyen, captures the payment when authorized, and records the settlement back into Zoho Books revenue accounts. Your customers get a unified checkout, and your finance team never re-keys payment data between systems.

How Zoho Books works

Zoho Books exposes customers, invoices, customer payments, items, chart of accounts, and journals through REST APIs across region-specific endpoints (US, EU, India, Australia, Japan, Canada, China, Saudi Arabia). Authentication uses OAuth2 Authorization Code flow with a user-delegated refresh token, and an organization_id query parameter is required on every call. Every monetary entity carries currency_id and exchange_rate fields. Zoho Books supports outgoing webhooks configured via the API for invoice, customer payment, and contact events, with HMAC signature verification and webhook history filtering. Polling is available via offset-based pagination with has_more_page indicators.

How Adyen works

Adyen provides payment processing and settlement management through REST APIs for Checkout, Management, and Balance Platform operations. Authentication uses API Key in the X-API-Key header or Basic Auth via Authorization header, both scoped to company or merchant account level. Adyen supports incoming webhooks for payment authorizations, captures, refunds, disputes, and transfer events, all requiring HMAC-SHA256 signature verification. Adyen is a payments platform with no native accounting, vendor, or GL entities, so finance sync occurs via settlement and reconciliation reports rather than direct GL posting.

What moves between them

The main flow moves from Zoho Books into Adyen, then back. Invoice creation in Zoho Books triggers a payment intent in Adyen; when the payment is authorized and captured, ml-connector records the customer payment back into Zoho Books revenue accounts and resolves the invoice. Settlement reports from Adyen flow into Zoho Books daily for reconciliation against invoiced amounts and actual deposits. Disputes and refunds flow from Adyen back to Zoho Books as adjustments to the revenue journal.

How ml-connector handles it

ml-connector stores both credential sets encrypted: the Zoho Books OAuth2 refresh token (region-aware) and the Adyen API Key. On the Zoho Books side, it determines the correct regional base URL from the token response's api_domain field and includes the organization_id on every call. It listens to Zoho Books webhooks for invoice.created and customerpayment.created events, verifies their HMAC signatures, and idempotently posts payment intents to Adyen's Checkout API, deduplicating via BullMQ jobId. When Adyen webhooks arrive (AUTHORISATION, CAPTURE, SETTLEMENT_REPORT), ml-connector verifies the HMAC-SHA256 signature and records the captured amount back into Zoho Books via the Customer Payments endpoint. Zoho Books refresh tokens expire after 1 hour and are refreshed proactively; Adyen API Keys do not expire but are rotated per your security policy. Currency conversion is handled by pulling Zoho Books currency settings and mapping to Adyen settlement currencies. Rate limits on Zoho Books (100 requests/minute) are observed via exponential backoff and jitter.

A real-world example

A mid-sized SaaS company built on Zoho Books for invoicing and accounting needs to accept customer payments online and deposit them directly to the bank without manual reconciliation. Before integration, the finance team invoiced in Zoho Books, customers sent payments through a separate payment form, and the team manually matched deposits to invoices during month-end close. With Zoho Books and Adyen connected, each invoice generates a one-click payment link, payments are captured and settled automatically, and Adyen settlement reports post directly into revenue accounts. Month-end reconciliation is now automatic, and customers see a single invoicing and payment experience.

What you can do

  • Create Adyen payment intents from Zoho Books invoices and capture payments when authorized.
  • Record Adyen settlements and captures back into Zoho Books customer payments and revenue accounts.
  • Reconcile Adyen settlement reports against Zoho Books invoiced amounts daily.
  • Handle multi-currency payments by mapping Zoho Books currencies to Adyen settlement currencies.
  • Verify Zoho Books HMAC-SHA256 webhook signatures and Adyen HMAC-SHA256 signatures on every inbound message.

Questions

Which direction does data move between Zoho Books and Adyen?
The flow is bidirectional. Zoho Books invoices and customer records move to Adyen to generate payment intents and checkout links. When payments are authorized and captured in Adyen, the settlement amounts flow back into Zoho Books as customer payments and revenue journal entries. Settlement reports from Adyen reconcile against Zoho Books invoices daily.
How does ml-connector handle Zoho Books regional endpoints and currency?
ml-connector extracts the api_domain field from the Zoho Books OAuth2 token response and routes all calls to the correct regional base URL. It pulls currency settings from Zoho Books GET /settings/currencies, maps each invoice currency_id to the Adyen settlement currency, and records conversions in the journal. Organization_id is included on every Zoho Books call as a required query parameter.
How are webhooks verified and what happens if a payment fails?
Both Zoho Books and Adyen webhooks are verified using HMAC-SHA256 signature checks with their respective secrets before any data flows. If a payment authorization fails in Adyen, ml-connector receives an AUTHORISATION webhook with status=Refused and does not record a customer payment in Zoho Books. Disputes and refunds from Adyen generate separate webhooks that flow back as adjustments to the revenue journal, with full audit trails on every record.

Related integrations

Connect Zoho Books and Adyen

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

Get started