fbpx
Ynteractive logo

n8n + QuickBooks: what you can automate

n8n integrations · By Robert Breen

The quickest way to see what n8n does with QuickBooks Online is a single workflow. A deal closes in your CRM, and a minute later the customer and the invoice exist in QuickBooks and the invoice is in the client’s inbox. Here’s that flow node by node, then four more QuickBooks automations and the setup details that catch people out.

The worked flow: closed deal to sent invoice

  1. HubSpot Trigger, event Deal Property Changed, watching the deal stage. Any CRM with a trigger node or outgoing webhooks works the same way.
  2. HubSpot (Deal: Get). Pull the amount, the products sold and the associated company and contact.
  3. IF. Continue only when the new stage is closed won.
  4. QuickBooks Online (Customer: Get All). Use a query filter on the display name to see whether the customer already exists.
  5. IF, then QuickBooks Online (Customer: Create) when there’s no match, with the display name, billing email and address. Either way, you end up with one customer ID.
  6. QuickBooks Online (Invoice: Create). Set the customer ID, line items mapped to your QuickBooks products and services (Item: Get All gives you their IDs), and the terms.
  7. QuickBooks Online (Invoice: Send). Email the invoice to the billing contact from QuickBooks itself.
  8. Slack (Send Message). Tell your finance channel the invoice number and amount, or write the invoice number back to the deal.

Nobody retypes a deal into accounting, amounts can’t be mistyped, and the invoice goes out the day the work is won rather than whenever someone gets to the pile.

Why finance teams connect QuickBooks first

This is for owners and bookkeepers at service businesses, agencies and trades where sales lives in one app and accounting in another. The obvious cost is retyping. The bigger cost is delay. An invoice sent on Friday instead of Tuesday gets paid later, and an overdue invoice nobody chases gets paid last of all. QuickBooks already knows who owes what. n8n moves that information to where people will act on it: an inbox, a Slack channel or a shared sheet.

Four more QuickBooks automations

  • Overdue-invoice reminders. A Schedule Trigger runs each weekday morning. QuickBooks Online (Invoice: Get All) queries for invoices with a balance above zero and a due date before today. An IF or Switch node sorts them into 7, 14 and 30 days late, and Gmail sends a polite reminder with the amount, or Invoice: Send resends the invoice itself. Log each reminder to a sheet so no client gets two in one day. My unpaid invoice reminders lesson builds the reminder logic.
  • Log bills from emailed PDFs. A Gmail Trigger with attachments downloaded, then Extract from File and an Information Extractor to read the vendor, date and total. QuickBooks Online (Vendor: Get All) matches the vendor, or Vendor: Create adds a new one. Before Bill: Create posts anything to payables, Gmail’s Send and Wait for Response asks the owner to approve it. The invoice inbox with approval lesson covers the inbox-and-approval half.
  • Weekly cash and AR summary to Slack. A Schedule Trigger every Monday at 8:00. Invoice: Get All pulls open balances, Payment: Get All pulls the last seven days of payments, and a Summarize node totals them. Slack’s Send Message posts “owed to us” and “came in this week”. One honest limit: the node doesn’t read bank balances, so this summary covers receivables and collections, not your bank position. Transaction: Get Report can add a detailed list if you want one.
  • Sync payments to a Google Sheet. A Schedule Trigger every hour runs Payment: Get All with a date query, then Google Sheets (Append or Update Row) matches on the QuickBooks payment ID. Sales or operations can see who has paid without QuickBooks seats, and re-runs update rows instead of duplicating them.

Pitfalls that are specific to QuickBooks

  • Sandbox vs production. The n8n QuickBooks credential has an Environment setting, Sandbox or Production. Build against an Intuit sandbox company, which is separate test data. Going live means a new credential with production keys, and Intuit requires production apps to meet its requirements first. Customer and item IDs from the sandbox won’t match your real company, so plan to remap them.
  • OAuth refresh. OAuth2 is the only option. Access tokens are short-lived and n8n refreshes them automatically. But if the refresh fails, every QuickBooks node errors until someone reconnects. This happens when the app is disconnected in QuickBooks, the connecting user loses access, or the refresh token lapses. Connect with an admin account that’s staying, and add an Error Trigger workflow that emails you when a run fails.
  • Unique names. QuickBooks won’t let two customers share a display name, so a blind Customer: Create fails on a repeat buyer. Always look up first.
  • Items and tax. Invoice lines point to Items by ID, and sales tax settings vary from company to company. Test with your real product list and tax setup, not one dummy line.
  • Polling gaps. When you poll by date, overlap the time window slightly and dedupe on the QuickBooks ID. Otherwise records edited late, or on the wrong side of a time zone, get skipped.
  • Throttling. Intuit limits how fast one company’s data can be called. Run large backfills through Loop Over Items with a Wait node between batches.

What to build alone and what to hand off

The payment sync and the weekly summary only read from QuickBooks, so they’re safe to learn on. The worst outcome is a wrong number in Slack. Get help for anything that creates invoices, customers or bills in your real company file. Mistakes there end up in your books and your accountant’s reconciliation. Help is also worth it when the CRM-to-QuickBooks mapping involves bundles, multiple tax rates, classes or currencies.

The discipline is the same one I used building a field-service to BigQuery pipeline for a pest-control company: look up before you write, dedupe on IDs, and alert a person when something fails. For more on how I handle back-office work, see the operations automation page.

Frequently asked questions

Does n8n have a QuickBooks trigger?

No. Start the workflow with a Schedule Trigger and the QuickBooks Online node’s Get All operation, or send Intuit webhooks to n8n’s Webhook node and fetch the changed record.

Does the n8n QuickBooks node work with QuickBooks Desktop?

No. The node uses the QuickBooks Online API, so it only connects to QuickBooks Online companies.

Can I test without touching my real books?

Yes. Create an app in Intuit’s developer portal, use its sandbox company, and set the n8n credential’s Environment to Sandbox. Switch to a production credential once the workflow passes your tests.

Want this built?

Tell me where your deals, bills and payments live today and which step takes the most time. You’ll get a written scope and quote first, built and tested against a sandbox before it touches your books.