QuickBooks Online and Slack integration
QuickBooks Online holds all your financial records. Slack is where your team collaborates. Connecting them keeps finance events visible to the right people in real time. When a new vendor bill arrives in QuickBooks Online, your AP team sees it in Slack. When an invoice is paid, the cash flow update posts to a finance channel. ml-connector watches QuickBooks Online through webhooks and pushes structured summaries into Slack without manual intervention.
What moves between them
The main flow is one-way from QuickBooks Online into Slack. ml-connector listens for QuickBooks Online webhook events (Create/Update on Bill, Invoice, JournalEntry, Payment) and routes them to designated Slack channels based on entity type and content. Each Slack message includes the key details: bill number, amount, vendor name for bills; invoice number, customer, amount for invoices; and account, amount, line items for journal entries. Reference data like accounts and departments are mapped to descriptive names so Slack messages are readable. Payments and bill settlements also post to Slack when they occur, giving the team real-time visibility into cash flow and AP aging.
How ml-connector handles it
ml-connector holds both OAuth credential sets encrypted and refreshes the QuickBooks Online access token when it expires (every hour) and the refresh token when it rotates (every 24-26 hours). It listens for QuickBooks Online webhook events, but since webhook payloads contain only entity IDs, ml-connector fetches the full record via GET /v3/company/{realmId} for detailed content. Because QuickBooks Online webhooks can arrive out-of-order or duplicated, ml-connector deduplicates using the entity ID and operation timestamp. On the Slack side, ml-connector constructs messages with account mappings (Account ID to friendly account name), formats amounts with currency, and posts via chat.postMessage respecting the one-per-second rate limit with queuing. If Slack rejects a message (rate limit, temporary outage), ml-connector retries with exponential backoff. The integration tracks webhook delivery and handles stale refresh tokens by surfacing the issue in audit logs so an admin can force re-authorization before the entire auth chain revokes.
A real-world example
A mid-sized professional services firm runs QuickBooks Online for accounting and uses Slack for team communication. Finance staff, project managers, and principals are distributed across time zones. Before the integration, a bookkeeper manually reviewed daily bills in QuickBooks Online and summarized notable items in a daily Slack thread, a routine task that ate 30 minutes per day and lagged by hours. With QuickBooks Online and Slack connected, every bill, invoice, and journal entry posts automatically to the finance channel the instant it is created or updated. Project managers see when their customer invoices are finalized and can notify clients. The finance team spots large or unusual bills immediately and can flag them before payment. Month-end journal entries appear in real time instead of being buried in a spreadsheet.
What you can do
- Post QuickBooks Online bills, invoices, and journal entries to Slack channels as they are created or updated, with vendor, customer, account, and amount details.
- Automatically refresh OAuth tokens for both QuickBooks Online and Slack so the connection stays active without manual re-authorization.
- Map QuickBooks Online accounts, vendors, and departments to friendly names in Slack messages for readability.
- Handle out-of-order and duplicate webhook events from QuickBooks Online by deduplicating on entity ID and timestamp.
- Route different entity types to different Slack channels based on configurable channel mappings (bills to ap, invoices to ar, entries to finance).
Questions
- Does the integration handle QuickBooks Online's token rotation?
- Yes. QuickBooks Online access tokens expire every hour and refresh tokens rotate every 24-26 hours. ml-connector refreshes automatically and tracks token rotation so stale credentials do not cause silent failures. If a refresh token becomes invalid, ml-connector logs the error so you can re-authorize before the entire auth chain revokes.
- How does ml-connector handle QuickBooks Online webhook limitations?
- QuickBooks Online webhooks include only entity ID and operation type, not the full record. ml-connector fetches the complete record via GET immediately after receiving the webhook. Since webhooks may arrive out-of-order or be duplicated, ml-connector deduplicates using the entity ID and operation timestamp to prevent duplicate Slack messages.
- Does Slack's rate limit affect message delivery?
- Slack enforces a one-message-per-second limit per channel. ml-connector queues messages and respects this limit, so all financial events post to Slack, but may be delayed a few seconds if multiple events occur rapidly. Failed deliveries are retried with exponential backoff until successful.
Related integrations
More QuickBooks Online integrations
Other systems that connect to Slack
Connect QuickBooks Online and Slack
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started