Wave Accounting and Slack integration
Wave Accounting holds your invoices, customers, and transactions. Slack is where your team collaborates. Connecting the two keeps critical financial events visible in real time. New invoices, payments received, and transaction activity in Wave flow into Slack channels so your team sees cash movement and billing activity without leaving their chat. ml-connector handles the OAuth 2.0 authentication on both sides, Wave's webhook signature verification, and Slack's message formatting.
What moves between them
Wave webhook events (invoice.created, invoice.updated, invoice.paid, payment.created, transaction.created) flow into Slack channels as formatted notifications. The main flow is from Wave into Slack; no data moves from Slack back to Wave. Transactions and invoice status changes trigger messages that appear in designated team channels, keyed by customer, invoice status, or transaction type as configured per customer.
How ml-connector handles it
ml-connector subscribes to Wave's webhooks for invoice and payment events, verifies each payload's HMAC-SHA256 signature against Wave's secret, and holds an OAuth 2.0 access token (refreshing when it expires after 2 hours). On receipt of a Wave event, ml-connector fetches additional context from Wave's GraphQL API if needed (customer details, transaction amounts, account names), formats a message block for Slack, and posts it via Slack's chat.postMessage REST endpoint using the bot token. It respects Slack's 1-message-per-second rate limit per channel by queuing messages in high-volume scenarios and respecting Slack's X-RateLimit-Remaining header. Every post carries a timestamp and audit trail, and if a Slack post fails, ml-connector logs the error and can replay the Wave event.
A real-world example
A small-business accounting team uses Wave Accounting to manage invoicing and customer billing, and Slack for team communication. Without the integration, the bookkeeper must log into Wave daily to check which invoices were paid and which customers sent payment, then post status updates to the team's finance channel by hand. With Wave and Slack connected, each paid invoice and new customer transaction automatically appears in the team's Slack channel within seconds, tagged with the customer name and amount. The team sees cash flow in real time and can follow up on late payments immediately, without the bookkeeper's manual posting step.
What you can do
- Send Wave invoice events (created, updated, paid) to Slack channels with customer and amount details.
- Post Wave transaction and payment notifications to Slack in real time as they occur.
- Verify Wave webhook signatures with HMAC-SHA256 and Slack event signatures with constant-time comparison.
- Refresh Wave OAuth 2.0 tokens automatically when the 2-hour access token expires.
- Queue and rate-limit Slack message posts to respect the 1-message-per-second channel limit.
Questions
- Which direction does data move between Wave and Slack?
- Data flows from Wave into Slack only. Invoices, payments, and transactions in Wave are sent as messages to Slack channels. Slack messages do not flow back to Wave. The team communicates in Slack about the financial events, but those messages do not update Wave records.
- How does ml-connector handle Wave and Slack authentication?
- ml-connector stores Wave's OAuth 2.0 refresh token and uses it to obtain new access tokens every 2 hours before they expire. Slack uses a non-expiring bot token that ml-connector also stores encrypted. Both tokens are sent with each request; ml-connector includes the Wave access token in GraphQL queries and the Slack token in the Authorization header for every API call.
- What happens if a Slack message post fails or is slow?
- ml-connector logs every post attempt and tracks the Slack API response. If a post fails (network error, rate limit, channel not found), the Wave event is logged and can be replayed to Slack later. If Slack is rate-limited (429 response), ml-connector backs off, checks the X-RateLimit-Remaining header, and requeues the message to respect the 1-per-second-per-channel limit.
Related integrations
More Wave Accounting integrations
Other systems that connect to Slack
Connect Wave Accounting and Slack
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started