Zoho Books and SAP Concur integration
Zoho Books handles accounting for SMBs. SAP Concur handles travel and expense management. Connecting them keeps your accounts payable and expense workflows in lockstep. Invoices and bills from Zoho Books flow into SAP Concur as payment requests without re-entry, and approved expenses from SAP Concur post back into Zoho Books as journals. The two systems stay aligned on vendor records, amounts, and currencies across all regions.
What moves between them
The main flow runs from Zoho Books into SAP Concur and back. Invoices and bills created in Zoho Books are pushed via webhook to ml-connector, which posts them to SAP Concur as payment requests with vendor and amount details. Simultaneously, expense reports approved in SAP Concur are read via the Event Subscription Service, mapped to Zoho Books contacts and chart of accounts, and posted back as journal entries so Zoho Books expense accounts reflect what was actually spent. Vendor records are synced bidirectionally so both systems reference the same vendors. The integration runs on a per-organization basis, respecting Zoho Books organization_id context and routing to the correct regional API endpoint for each customer.
How ml-connector handles it
ml-connector stores OAuth2 credentials for both Zoho Books (with user-delegated refresh token) and SAP Concur (with company_id and auth_token bootstrap) encrypted at rest. On the Zoho Books side, it refreshes access tokens proactively before the 1-hour expiry and includes the correct organization_id on every call. The connector resolves which regional base URL to use from the region field returned during Zoho Books authentication. For SAP Concur, it extracts geolocation from the token response and uses that for all subsequent calls, rotating through the three datacenters as needed. Invoices from Zoho Books are mapped to SAP Concur payment request fields (vendor, amount, currency code), and the connector handles the fact that neither system supports native idempotency keys by using BullMQ jobId for deduplication and tracking sent records in an audit log. Expenses flowing back from SAP Concur are validated against the Zoho Books chart of accounts before posting; if a cost center or account does not exist, the record is queued for retry with exponential backoff. Both systems enforce rate limits (100 req/min for Zoho Books, per-endpoint limits for SAP Concur), so the connector backs off on 429 responses and resumes when the window closes. Every record carries a full audit trail and can be replayed if a call fails.
A real-world example
A mid-sized services consulting firm uses Zoho Books for accounting and expense management, and SAP Concur for employee travel and expense reporting. Previously, accountants manually entered vendor invoices from Zoho Books into the expense system and then re-keyed approved expenses back into Zoho Books, a process that took 4-6 hours per month and frequently introduced rounding errors and duplicate entries. After connecting Zoho Books and SAP Concur, invoices sync automatically as payment requests the moment they are recorded in Zoho Books, eliminating manual data entry. Approved expenses from SAP Concur post directly into Zoho Books' journal, so the accounting team can close the month with expense accounts pre-reconciled and no re-keying required.
What you can do
- Push invoices and bills from Zoho Books to SAP Concur as payment requests with vendor, amount, and currency details mapped automatically.
- Sync approved expense reports from SAP Concur back to Zoho Books as journal entries allocated to the correct cost centers and accounts.
- Keep vendor records aligned bidirectionally so both systems reference the same vendor master data.
- Authenticate with OAuth2 on both sides, manage token refresh for both Zoho Books (1-hour expiry) and SAP Concur (1-hour access, 6-month refresh), and route to the correct regional API endpoint.
- Handle deduplication via BullMQ jobId, enforce rate limits with automatic backoff, and provide a full audit trail for every record so failed syncs can be replayed.
Questions
- Which direction do records move between Zoho Books and SAP Concur?
- Invoices and bills flow from Zoho Books into SAP Concur as payment requests. Approved expenses flow from SAP Concur back into Zoho Books as journal entries. Vendor records are synced bidirectionally so both systems have the same vendor master data. This dual-flow design keeps accounting and expense management in sync without duplication.
- How does the integration handle Zoho Books' regional base URLs and organization IDs?
- ml-connector receives the region field from the Zoho Books OAuth2 token response and routes all subsequent calls to the correct regional base URL (US, EU, India, Australia, Japan, Canada, China, or Saudi Arabia). The organization_id is included as a required query parameter on every Zoho Books API call. This ensures each customer's data is read from and written to the correct region and organization context.
- What happens if a vendor or account does not exist when Zoho Books records are synced to SAP Concur?
- ml-connector validates that the vendor and cost center exist in SAP Concur before posting. If a required reference is missing, the record is queued for retry with exponential backoff, allowing time for the missing data to be created. Once the vendor or account is available, the sync completes without manual intervention.
Related integrations
More Zoho Books integrations
Other systems that connect to SAP Concur
Connect Zoho Books and SAP Concur
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started