ml-connector
Wave AccountingZendesk

Wave Accounting and Zendesk integration

Wave Accounting tracks customer invoices and payments for small businesses. Zendesk manages support tickets and customer interactions. Connecting the two brings customer invoicing context directly into your support tickets so agents can see billing information without logging into a separate system. New customers created in Wave automatically appear in Zendesk as organizations, and invoice events trigger updates to keep the support context current.

How Wave Accounting works

Wave Accounting is a cloud accounting platform offering invoicing, expense tracking, transactions, and customer management via a GraphQL API. It uses OAuth 2.0 for authentication with 2-hour access tokens and refresh tokens (requires offline_access scope). Wave publishes webhooks for invoice.created, invoice.updated, invoice.paid, payment.created, and customer events; ml-connector acknowledges with HTTP 200 on successful processing. The connected Wave business must have an active Wave Pro subscription. Invoices cannot be patched, only created or deleted, and accounts payable, purchase orders, and employees are not exposed through the GraphQL API.

How Zendesk works

Zendesk is a cloud support platform managing tickets, users, organizations, and knowledge base articles through a REST API. Authentication uses OAuth 2.0 (recommended for connectors) or API tokens with basic auth. OAuth access tokens do not expire until revoked. Zendesk has no native finance entities - invoices, purchase orders, GL accounts, or payments do not exist as ticketing objects. Email fields on users are writable only at creation; subsequent updates add secondary emails. Webhooks can be configured via the Webhooks API, with HMAC-SHA256 signature verification. API token limits are 256 active tokens per account, and rate limits apply per the official Zendesk documentation.

What moves between them

Wave Accounting customers flow into Zendesk as organizations, and customer contact records become Zendesk users. Invoices and payments from Wave are stored as custom fields or linked records within Zendesk organizations so support agents can view billing history in context. The main flow is Wave into Zendesk, triggered by Wave webhooks on customer creation, invoice updates, and payment events. Wave has no inbound synchronization, so Zendesk changes do not flow back to Wave.

How ml-connector handles it

ml-connector stores both OAuth credential sets encrypted and refreshes each token when a call returns a 401 response. On the Wave side, it subscribes to webhooks for customer, invoice, and payment events; Wave retries failed deliveries, and ml-connector returns HTTP 200 on successful processing and HTTP 500 to trigger a retry. Customer records are created as Zendesk organizations with metadata from the Wave customer object (name, email, custom fields). Invoices are attached as linked data within each organization so the support team can see the invoice amount, due date, and payment status without leaving Zendesk. Because invoices in Wave cannot be patched, updates trigger a new webhook event that ml-connector uses to refresh the invoice record in Zendesk. All records carry audit timestamps and job IDs for replay if a downstream Zendesk call fails.

A real-world example

A small software consulting firm uses Wave Accounting for invoicing and customer financial tracking, and Zendesk for support tickets. Before the integration, when a customer opened a support ticket, the agent had no visibility into open invoices or payment history and had to ask the customer for invoice details or log into Wave separately. With Wave and Zendesk connected, each organization in Zendesk displays the customer's current invoices, payment status, and recent invoice changes directly in the ticket context. Agents can prioritize support for customers with aging invoices, and the sales team can see support history when following up on unpaid invoices.

What you can do

  • Sync Wave Accounting customers into Zendesk as organizations with company name, email, and custom fields.
  • Attach Wave invoices and payment records to Zendesk organizations so agents see billing history in the support ticket.
  • Keep customer and invoice records current using Wave webhooks for customer.created, customer.updated, invoice.created, invoice.updated, and payment.created events.
  • Authenticate Wave with OAuth 2.0 and refresh tokens, and Zendesk with OAuth 2.0 or API tokens, with automatic token refresh on 401 responses.
  • Maintain a full audit trail on every synced record with timestamp and replay support if a Zendesk API call fails.

Questions

Can data flow both ways between Wave Accounting and Zendesk?
No. The integration syncs Wave customers and invoices into Zendesk only. Zendesk is a support platform with no finance entities, so changes to tickets or support data remain in Zendesk and do not flow back to Wave accounting records.
How does the integration handle Wave's webhook security?
Wave webhooks are signed with HMAC-SHA256, and the signature is passed in the x-wave-signature header. ml-connector validates the signature within a 5-minute replay window before processing the event. If validation fails, the webhook is rejected to prevent processing of spoofed or tampered events.
What happens if a Wave invoice cannot be patched in Zendesk?
Wave invoices cannot be patched through the GraphQL API, only created or deleted. When an invoice is updated in Wave, a new invoice.updated webhook is sent, and ml-connector replaces the invoice record in Zendesk with the updated data rather than attempting an in-place update.

Related integrations

Connect Wave Accounting and Zendesk

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

Get started