Automated Stripe Sales & Fee Reconciliation (Make.com)
Streamline financial reporting by syncing Stripe charges to QuickBooks Online including automatic fee deduction using Make.com logic.
Tools: Stripe → QuickBooks Online
Platform: Make.com
Short Answer
A fully automated real-time workflow that creates Sales Receipts in QuickBooks Online. It accurately converts currency, handles transaction fees as line items, and checks for existing customers to maintain a clean ledger.
The Problem
Manual bookkeeping for Stripe transactions is prone to error and time-consuming. Most integrations fail to account for Stripe's 'cents-based' data format or the 2.9% + 30¢ processing fees, leading to discrepancies between bank deposits and accounting records.
The Outcome
A fully automated real-time workflow that creates Sales Receipts in QuickBooks Online. It accurately converts currency, handles transaction fees as line items, and checks for existing customers to maintain a clean ledger.
Step-by-Step Guide
1. **Create Scenario**: Log in to Make.com and create a new scenario titled 'Stripe to QBO Reconciliation'.
2. **Stripe Trigger**: Add the 'Stripe > Watch Events' module. Create a Webhook and select `charge.succeeded` as the event type. Connect your Stripe account via API Key.
3. **Data Transformation (Math)**: In subsequent modules, remember that Stripe provides amounts in cents. Use the Make formula `{{1.amount / 100}}` for all currency fields.
4. **Search Customer**: Add the 'QuickBooks Online > Search Customers' module. Filter by the Stripe `Customer Email`.
5. **Router Module**: Insert a Router. This creates path A (Customer exists) and path B (New customer needed).
6. **Create Customer (Conditional)**: On Path B, add 'QuickBooks Online > Create a Customer'. Map the Stripe name and email fields. Add a filter to this path: `Customer ID (from Search) Does not exist`.
7. **Sales Receipt Module**: Add 'QuickBooks Online > Create a Sales Receipt'. This is the core module. Map the Customer ID from the search or the create step using the `ifempty()` function.
8. **Line Item & Fee Handling**:
- Line 1: Map the full charge amount (Gross).
- Line 2: Create a negative line item for the fee. Fetch the fee from the 'Stripe > Get a Balance Transaction' module (use `{{ -1 * (fee / 100) }}`) and map it to a 'Bank Fees' expense account in QBO.
9. **Error Handling**: Right-click the QBO module and select 'Add error handler'. Use a 'Break' or 'Ignore' directive to ensure one failed transaction doesn't stop the entire scenario.
10. **Activation**: Run the scenario once with 'Run Once' using historical data, then toggle the 'Scheduling' switch to ON.
Data Mapping
| Source Field (Stripe) | Transformation (Make.com Syntax) | Destination Field (QBO) | Required? |
| :--- | :--- | :--- | :--- |
| `Customer: Email` | `lower(email)` | Customer Email | Yes |
| `Amount` | `{{1.amount / 100}}` | Line Item: Amount | Yes |
| `Currency` | `upper(currency)` | Currency | Yes |
| `ID` | `{{1.id}}` | Private Note / Memo | No |
| `Created` | `parseDate(created; "X")` | Transaction Date | Yes |
| `Fee` | `{{ -1 * (3.fee / 100) }}` | Line Item: Stripe Fee | Yes (for reconciliation) |
Gotchas & Failure Modes
• **Cents vs. Dollars**: Stripe sends $10.00 as `1000`. Failure to use the `/ 100` formula will record massive over-revenue in QBO.
• **The Fee Gap**: The Stripe 'Charge' object does not always contain the 'Fee' immediately. You must use the 'Get a Balance Transaction' module in Make to retrieve exact fee data.
• **Operation Quotas**: Make.com triggers for every event. If you have high volume, ensure you use the 'Search' module effectively to avoid creating 10,000 duplicate customers and burning your operations quota.
• **Historical Data**: Webhook triggers only work for *future* events. To sync past data, use the 'Stripe > List Charges' module as a temporary one-time trigger.
Verification Checklist
- [ ] Trigger a test payment in Stripe Test Mode.
- [ ] Check Make.com 'History' tab to ensure the bundle passed correctly through the Router.
- [ ] Verify in QBO that the Sales Receipt 'Gross Amount' minus 'Stripe Fee' equals the 'Net Amount'.
- [ ] Confirm no duplicate customer profiles were created in QBO during the test.
- [ ] Check the 'Mapping' of the Date field to ensure it isn't showing a 1970 Unix timestamp.
Ready to Automate?
Build this automation with Make.com in minutes.