Automated Stripe Sales & Fee Reconciliation (Make.com)
Accurately sync Stripe transactions and processing fees to QuickBooks Online using advanced Make.com workflows.
Tools: Stripe → QuickBooks Online
Platform: Make.com
Short Answer
Every Stripe payment automatically creates a Sales Receipt and an Expense for the fee in QuickBooks. Your QBO 'Stripe Clearing Account' will match your Stripe balance to the penny, enabling one-click reconciliation.
The Problem
Manual entry of Stripe sales into QuickBooks leads to human error and reconciliation headaches. Because Stripe payouts are net of fees, bank balances never match sales receipts without manual fee adjustments.
The Outcome
Every Stripe payment automatically creates a Sales Receipt and an Expense for the fee in QuickBooks. Your QBO 'Stripe Clearing Account' will match your Stripe balance to the penny, enabling one-click reconciliation.
Step-by-Step Guide
1. **Establish Connections**: In Make.com, add the Stripe ‘Watch Events’ module. Link your Stripe account using your Restricted API Key. Add the QuickBooks Online module and authorize via OAuth2.
2. **Stripe Trigger**: Set the Stripe module to the 'payment_intent.succeeded' event. In the 'Limit' field, set it to 1 initially for testing.
3. **Retrieve Fee Data**: Add a Stripe 'Retrieve a Balance Transaction' module. Map the `Balance Transaction ID` from the trigger module; this is essential to access the exact `fee` amount.
4. **Search and Match**: Add a QuickBooks Online 'Search for Customers' module. Use the filter: `Name = {{Customer_Name}}` or `Email = {{Customer_Email}}` to prevent duplicates.
5. **Conditional Logic (Router)**: Place a Router after the search. If the search returns no results, use a 'Create a Customer' module. If results exist, proceed to use that ID.
6. **Create Sales Receipt**: Map the `Amount` from Stripe (Note: Stripe uses cents, so use `{{amount / 100}}`). Map the transaction date and select your 'Stripe Clearing Account' as the 'Deposit To' account.
7. **Record Processing Fee**: Add a QuickBooks 'Create an Expense' module. Map the `Fee` from the Balance Transaction module (divided by 100). Set the 'Category' to 'Bank Charges/Stripe Fees' and the 'Payment Account' to 'Stripe Clearing Account'.
8. **Data Conversion**: Use Make's built-in `formatDate` function for transaction dates: `{{formatDate(created; "YYYY-MM-DDTHH:mm:ssZ")}}` to ensure QuickBooks compatibility.
9. **Error Handling**: Right-click the QuickBooks modules and select 'Add error handler'. Use the 'Break' directive to store the execution and allow you to fix and retry if QBO is down.
Data Mapping
| Stripe Field | QuickBooks Field | Transformation / Notes |
| :--- | :--- | :--- |
| `ID / Email` | `Display Name / Email` | Required for Customer Sync |
| `Amount` | `Total Amount` | `{{1.amount / 100}}` (Convert cents to dollars) |
| `Currency` | `Currency` | Ensure QBO Multi-currency is enabled if non-USD |
| `Created` | `Transaction Date` | `{{formatDate(1.created; "YYYY-MM-DD")}}` |
| `Balance Transaction -> Fee` | `Expense Amount` | `{{2.fee / 100}}` (Mapped to Fee Expense Account) |
| `Description` | `Private Note` | Useful for matching Stripe IDs in QBO |
Gotchas & Failure Modes
* **Decimal Precision**: Stripe sends '1000' for $10.00. Always divide by 100 in Make using the `{{1.amount / 100}}` syntax.
* **Rate Limits**: QuickBooks Online has strict API limits (500 requests per minute). If processing bulk historical data, use Make's 'Sleep' module or set the scenario to run at longer intervals.
* **Customer Duplication**: Always search by Email before creating a customer; otherwise, Make will create a new record for every transaction from a repeat customer.
* **Taxes**: Ensure the 'Tax Code' in QBO matches your Stripe tax calculation, or create a specific item in QBO to handle Stripe-collected tax.
Verification Checklist
- [ ] **Webhook Status**: Stripe Dashboard shows the webhook delivered successfully (200 OK).
- [ ] **Make Execution**: The 'History' tab in Make shows a successful flow through all modules with green bubbles.
- [ ] **Customer Check**: Verify if the customer was matched correctly rather than duplicated in QBO.
- [ ] **Net Zero Check**: In QBO, check that 'Sales Receipt' (Positive) and 'Expense' (Negative) both hit the Stripe Clearing Account.
- [ ] **Date Validation**: Confirm the QBO transaction date matches the Stripe payment date, not the automation run date.
Ready to Automate?
Build this automation with Make.com in minutes.