Automated Stripe Revenue & Fee Reconciliation (Make.com)

A robust Make.com scenario to sync Stripe payments, handle merchant fees, and automate Xero bank reconciliation.

Tools: StripeXero

Platform: Make.com

Short Answer

Every Stripe charge automatically creates a Xero Contact, a Sales Invoice, and a Payment. It also logs the Stripe fee as a 'Spend Money' transaction, ensuring your Xero Sales Ledger and Bank Account match the penny.

The Problem

Manual reconciliation of Stripe payments in Xero is time-consuming and prone to errors, especially when accounting for Stripe's 'Net' vs 'Gross' amounts. Businesses often struggle to match bank deposits because Stripe deducts processing fees before the payout hits the bank account.

The Outcome

Every Stripe charge automatically creates a Xero Contact, a Sales Invoice, and a Payment. It also logs the Stripe fee as a 'Spend Money' transaction, ensuring your Xero Sales Ledger and Bank Account match the penny.

Step-by-Step Guide

1. **Create Scenario**: Log in to Make.com and create a new scenario. Name it 'Stripe to Xero Reconciliation'. 2. **Stripe Trigger**: Add the **Stripe > Watch Events** module. Select 'Charge Succeeded' as the event type. Create a Webhook and connect your Stripe account using your Secret API Key. 3. **Router for Filtering**: Add a **Router** module. Set a filter after the trigger to only allow bundles where `Status` = `succeeded` and `Captured` = `true`. 4. **Find/Create Contact**: Add the **Xero > Search Contacts** module. Search by `Email`. Use a **Router** or **If/Else** logic: if no contact is found, use the **Xero > Create a Contact** module using data from the Stripe `Customer` object. 5. **Create Invoice**: Add the **Xero > Create an Invoice** module. Map the `Amount` from Stripe (Note: Stripe sends amounts in cents, use `{{item.amount / 100}}` to convert to dollars). Set the Status to 'Authorised'. 6. **Get Fee Details**: Add the **Stripe > Get a Balance Transaction** module. Map the `Balance Transaction ID` from the trigger. This is critical to retrieve the exact `fee` amount. 7. **Log Payment**: Add the **Xero > Create a Payment** module. Map the Invoice ID from step 5 and the Bank Account ID where your Stripe payouts land. 8. **Log Stripe Fee**: Add the **Xero > Create a Bank Transaction** module. Set the Type to 'SPEND'. Map the fee amount from Step 6 (`{{item.fee / 100}}`). This accounts for the merchant expense. 9. **Error Handling**: Right-click the Xero modules and select **Add Error Handler (Ignore)** or **Break**. This prevents the scenario from stopping if a duplicate invoice error occurs. 10. **Save and Activate**: Schedule the scenario to run 'Immediately' via the Webhook.