Wave Accounting and Cleo integration
Wave Accounting holds your invoices, expenses, and transactions. Cleo Integration Cloud orchestrates those records across your supply chain and trading partners. Connecting Wave to Cleo sends your invoices and financial transactions into the EDI and API ecosystem, so your supply chain partners see the records they need without re-keying. ml-connector handles Wave's webhook events, maps them into Cleo's EDI or API format, and keeps both systems in sync.
What moves between them
Invoices and transactions flow from Wave Accounting into Cleo Integration Cloud. ml-connector listens for Wave invoice.created, invoice.updated, and transaction.created webhooks, then translates those records into EDI transactions (e.g. 810 invoices) or API payloads that Cleo injects into your supply chain. Transaction volume aligns with your accounting cadence: invoices post as they are created or updated in Wave, and monthly or weekly transaction rolls follow your close schedule. Cleo retains full audit trails of each file and event; Wave does not push updates back through Cleo, so the flow is unidirectional.
How ml-connector handles it
ml-connector terminates Wave's OAuth 2.0 Authorization Code Flow, storing the access and refresh tokens encrypted. Every 90 minutes before token expiry, it proactively refreshes to avoid mid-request failures. Wave publishes webhooks to a registered ml-connector endpoint; ml-connector validates the HMAC-SHA256 signature against the configured Wave webhook secret and drops any request older than 5 minutes. On the Cleo side, ml-connector uses OAuth 2.0 password grant to obtain a Bearer token, authenticating the configured Cleo user account. For each Wave invoice, ml-connector constructs an EDI 810 or API payload matching Cleo's expected file format (folders, files, metadata) and uploads it to the Cleo tenant. EDI message mapping follows Cleo's documented conventions: Wave invoice line items become EDI item detail segments, Wave customer becomes EDI ship-to, and Wave account mappings become cost/project codes if Cleo's configuration supports them. ml-connector polls Cleo's audit and event endpoints to detect delivery success and logs any processing errors; if Cleo returns a transient error (5xx), ml-connector retries with exponential backoff. Every record carries source IDs (Wave invoice ID, Cleo file ID) for reconciliation and replay.
A real-world example
A mid-sized B2B distribution company runs Wave Accounting for invoicing and expense management, and orchestrates outbound orders and inbound shipments through Cleo Integration Cloud with trading partners and logistics providers. Before integration, the finance team exported invoices from Wave at month-end and manually uploaded them to Cleo as EDI files, a process that took two days and introduced transcription errors when line-item totals did not match. With Wave and Cleo connected, each invoice created in Wave automatically flows into Cleo as an EDI 810, posted to the correct trading partner folder within minutes. Shipments and acknowledgments flow back through Cleo without human touch-points, and month-end invoice reconciliation is instant.
What you can do
- Stream invoices from Wave Accounting to Cleo Integration Cloud as EDI 810 transactions or API payloads for supply chain partners.
- Validate Wave webhook signatures and filter replay attempts to ensure only fresh events enter the integration.
- Refresh Wave OAuth tokens before expiry and authenticate to Cleo with password-grant OAuth, handling both credential flows.
- Map Wave invoice customers, line items, and transactions to Cleo EDI segments and folder structure for trading partner consumption.
- Poll Cleo audit logs to confirm delivery, retry on transient failures, and maintain a complete record of every file sent.
Questions
- Does Wave Accounting data overwrite or append in Cleo?
- Invoices from Wave flow into Cleo as new EDI files or API payloads, not as updates to existing records. If a Wave invoice is updated (e.g. amount or line items change), ml-connector detects the invoice.updated webhook, maps the new invoice data, and creates a fresh EDI 810 or correction message in Cleo with the updated amounts. Cleo retains the history of all files; your trading partner or Cleo configuration determines whether to treat the new message as a replacement or a supplementary record.
- What happens if ml-connector cannot authenticate to Cleo?
- If the Cleo password-grant OAuth fails (e.g. invalid credentials, user account disabled), ml-connector logs the error and halts the flow for that invoice. The Wave webhook is marked as failed and queued for replay. Once Cleo credentials are corrected and verified, ml-connector reprocesses the queued invoices in order and confirms delivery into Cleo.
- Can Wave customer and product data flow into Cleo in addition to invoices?
- Yes. ml-connector can listen for Wave customer.created, customer.updated, and product.created webhooks and map them into Cleo's user, contact, or metadata endpoints if your Cleo configuration supports it. This keeps trading partner master data synchronized. Product data is most useful if Cleo has a catalog or item master that your trading partners reference; the mapping is configured per deployment based on your Cleo folder and EDI segment schema.
Related integrations
More Wave Accounting integrations
Other systems that connect to Cleo
Connect Wave Accounting and Cleo
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started