

How to Create QuickBooks Bank Deposits from Stripe Payouts with N8n
Automatically creates a bank deposit record in QuickBooks whenever Stripe processes a payout to your bank account.
Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.
Best for
Teams running their own N8n instance who want customizable payout reconciliation without per-execution costs
Not ideal for
Businesses needing instant setup or those without technical resources to manage webhook endpoints
Sync type
real-timeUse case type
syncReal-World Example
A 25-person B2B SaaS company gets 40+ Stripe payouts monthly from different subscription plans and one-time payments. Their bookkeeper spent 2 hours each week manually entering deposits and matching them to Stripe dashboard data. Now deposits auto-create in QuickBooks within seconds of payout completion, with Stripe payout IDs in the memo field for instant reconciliation.
What Will This Cost?
Drag the slider to your expected monthly volume.
Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.





Prices shown for annual billing. Based on published pricing as of April 2026.
Estimated ROI
1000
min saved/mo
$583
labor value/mo
Free
no platform cost
Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.
Implementation
Import this workflow directly into n8n
Copy the pre-built n8n blueprint and paste it straight into n8n. All modules, filters, and field mappings are already configured — you just need to connect your accounts.
Before You Start
Make sure you have everything ready.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Deposit Amount | amount | |
| Arrival Date | arrival_date | |
| Payout ID | id | |
| Bank Account | account | |
| Currency | currency | |
1 optional field▸ show
| Method | method |
Step-by-Step Setup
Workflows > New > Triggers > Webhook
Set up Stripe webhook endpoint
Create a webhook trigger in N8n to catch Stripe payout events. This receives real-time notifications when payouts complete.
- 1Click the + button to create a new workflow
- 2Add a 'Webhook' trigger node from the triggers panel
- 3Copy the webhook URL from the node settings
- 4Set HTTP method to 'POST'
Stripe Dashboard > Developers > Webhooks
Configure Stripe webhook
Tell Stripe to send payout events to your N8n webhook. Only enable payout.paid events to avoid noise from other transactions.
- 1Go to Stripe Dashboard > Developers > Webhooks
- 2Click 'Add endpoint'
- 3Paste your N8n webhook URL
- 4Select only 'payout.paid' from the event list
- 5Click 'Add endpoint'
Workflows > Node Library > QuickBooks Online
Add QuickBooks Online node
Connect to QuickBooks to create bank deposits. You'll need a QB developer app with sandbox credentials for testing first.
- 1Drag a 'QuickBooks Online' node after the webhook
- 2Select 'Deposit' as the resource
- 3Choose 'Create' as the operation
- 4Click 'Create New' next to Credentials
Credentials > QuickBooks Online > OAuth2
Set up QuickBooks OAuth
Create OAuth credentials to access QuickBooks. This requires a Intuit developer account and app registration.
- 1Go to developer.intuit.com and create an app
- 2Copy the Client ID and Client Secret
- 3In N8n credentials, paste both values
- 4Click 'Connect my account' and authorize access
- 5Select your test company file
QuickBooks Node > Parameters
Map deposit basic fields
Configure the essential deposit information using Stripe payout data. Set the deposit account to match your actual bank account in QuickBooks.
- 1Set 'Deposit To Account' to your bank account from dropdown
- 2Map 'Total Amount' to {{ $json.data.object.amount }}
- 3Set 'Transaction Date' to {{ $json.data.object.arrival_date }}
- 4Add 'Memo' with text 'Stripe payout {{ $json.data.object.id }}'
QuickBooks Node > Total Amount > Expression
Add amount conversion
Convert Stripe's cent-based amounts to dollars for QuickBooks. Use N8n's expression editor to handle the math automatically.
- 1Click the expression icon next to Total Amount
- 2Replace the mapping with {{ $json.data.object.amount / 100 }}
- 3Set currency to 'USD' or your base currency
- 4Test the expression shows dollars not cents
QuickBooks Node > Line Items
Configure deposit line items
Add line items to break down the deposit. Map Stripe fees and net amount as separate lines for accurate reconciliation.
- 1Scroll to 'Line Items' section
- 2Click 'Add Line Item'
- 3Set 'Amount' to {{ $json.data.object.amount / 100 }}
- 4Set 'Description' to 'Stripe payout for {{ $json.data.object.arrival_date }}'
Node Context Menu > Add Error Workflow
Add error handling
Set up error handling to catch failed deposits and log issues. This prevents silent failures when QB rejects deposits.
- 1Right-click the QuickBooks node
- 2Select 'Add Error Workflow'
- 3Add a 'No Operation' node to the error branch
- 4Enable 'Continue on Fail' in QuickBooks node settings
Stripe Dashboard > Webhooks > Test
Test with Stripe test data
Send a test payout event from Stripe to verify your workflow processes correctly. Use Stripe's webhook testing tool.
- 1Go back to Stripe webhook settings
- 2Click 'Send test webhook'
- 3Select a 'payout.paid' sample event
- 4Click 'Send test webhook' button
- 5Check N8n execution log for results
QuickBooks > Banking > Banking
Verify QuickBooks deposit
Check that the deposit actually appeared in QuickBooks with correct amounts and details. This confirms the full integration works.
- 1Open QuickBooks Online
- 2Go to Banking > Banking tab
- 3Look for the new deposit entry
- 4Verify amount matches Stripe payout
- 5Check memo contains Stripe payout ID
Workflow Header > Active Toggle
Activate the workflow
Turn on the workflow to process real Stripe payouts automatically. Monitor the first few executions to catch any issues.
- 1Click the workflow toggle to 'Active'
- 2Verify webhook endpoint shows 'Listening'
- 3Wait for your next real Stripe payout
- 4Check execution history for successful runs
Drop this into an n8n Code node.
Copy this template{{ new Date($json.data.object.arrival_date * 1000).toISOString().split('T')[0] }}▸ Show code
{{ new Date($json.data.object.arrival_date * 1000).toISOString().split('T')[0] }}... expand to see full code
{{ new Date($json.data.object.arrival_date * 1000).toISOString().split('T')[0] }}Scaling Beyond 400+ payouts/month+ Records
If your volume exceeds 400+ payouts/month records, apply these adjustments.
Add execution queuing
Use N8n's 'Wait' node with random delays between QB API calls to stay under their 500 calls/hour limit. Set delays of 8-10 seconds for high-volume accounts.
Batch weekend processing
Queue weekend payouts and process them Monday morning to avoid rate limits during business hours when your team uses QuickBooks heavily.
Going live
Production Checklist
Before you turn this on for real, confirm each item.
Troubleshooting
Common errors and how to fix them.
Frequently Asked Questions
Common questions about this workflow.
Analysis
Use N8n for this if you're already running your own N8n instance or want full control over the webhook processing. The self-hosted nature means zero per-execution costs once you're past the learning curve. You can customize error handling, add complex data transformations, and store execution logs locally. Skip N8n if you need this running in 10 minutes — Zapier handles the QB OAuth dance much smoother.
This workflow uses 2 executions per payout (webhook + QB deposit creation). At 50 payouts/month, that's 100 executions total. N8n cloud charges nothing for the first 5,000 executions monthly. Self-hosted is just your server costs. Zapier's QB integration sits on their $20/month plan after the 5-task free tier, so you'd pay $240/year. Make charges $9/month for 1,000 operations. N8n wins on cost if you're already hosting it.
Zapier's QuickBooks integration handles bank account lookup automatically — their dropdown populates your actual accounts without manual mapping. Make's error handling is more visual with better retry logic built-in. But N8n gives you raw webhook data access and custom JavaScript transforms that both others limit. You can build complex payout categorization logic or custom reconciliation reports that Zapier and Make can't match.
You'll hit Stripe's webhook retry behavior if your N8n goes down — they retry failed webhooks for 3 days then give up. QuickBooks rate limits hit at 500 API calls per hour, so high-volume accounts need throttling. The trickiest issue: QB's bank account IDs change if you disconnect/reconnect your actual bank, breaking the deposit mapping until you update the workflow. Set up monitoring on failed executions or you'll miss payouts silently.
Ideas for what to build next
- →Add fee tracking — Create separate journal entries for Stripe fees by parsing the fee breakdown from payout webhook data into QB expense accounts.
- →Set up chargeback alerts — Monitor Stripe dispute webhooks and create QB journal entries or send Slack notifications when chargebacks affect your payout amounts.
- →Build payout reporting — Send monthly payout summaries to Google Sheets or email with total deposits, fees, and net amounts for easier financial reporting.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup