Automated Revenue and Fee Reconciliation (Stripe to Xero) (Zapier)

Streamline accounting by syncing Stripe sales and merchant fees to Xero using Zapier Paths.

Tools: StripeXero

Platform: Zapier

Short Answer

Every Stripe payment automatically creates a contact, a paid invoice, and a bank transaction for fees in Xero. This ensures your books are always 'reconciled-ready' with 100% accuracy in your Sales Ledger and Expense accounts.

The Problem

Manual reconciliation of Stripe payments in Xero is time-consuming and prone to errors, especially when accounting for Stripe's processing fees. Businesses often struggle to match the gross amount received with the net amount deposited into their bank accounts, leading to inaccurate financial reporting.

The Outcome

Every Stripe payment automatically creates a contact, a paid invoice, and a bank transaction for fees in Xero. This ensures your books are always 'reconciled-ready' with 100% accuracy in your Sales Ledger and Expense accounts.

Step-by-Step Guide

1. **Authenticate Stripe**: In Zapier, create a new Zap and select Stripe as the Trigger. Choose 'New Charge' or 'Payment Intent Succeeded'. Connect your Stripe account using your Secret API Key. 2. **Test Trigger**: Fetch a recent successful payment. Note: Stripe sends amounts in cents (e.g., 1000 for $10.00). 3. **Format Currency (Formatter by Zapier)**: Add an 'Action' step using 'Formatter by Zapier'. Select 'Numbers' -> 'Perform Math Operation' -> 'Divide'. Map the Stripe `Amount` and divide by 100 to get the dollar value. Repeat this for `Fee` if available in the trigger. 4. **Find/Create Contact in Xero**: Add a Xero action step. Select 'Find or Create Contact'. Search by the Stripe `Customer Email`. Check the box 'Create Xero Contact if it doesn't exist yet' and map Name and Email from Stripe. 5. **Initialize Paths**: Add a 'Paths by Zapier' step to handle the Invoice and Fee logic separately. 6. **Path A (Invoice & Payment)**: - Add action: 'Xero - Create Sales Invoice'. Set Status to 'Authorised'. Map the Formatted Amount to the Line Item. - Add action: 'Xero - Create Payment'. Map the 'Invoice ID' from the previous step. This marks the invoice as paid immediately. 7. **Path B (Processing Fees)**: - Add action: 'Xero - Create Bank Transaction'. Select 'Spend Money'. - Map the Formatted Fee amount to a specific 'Bank Fees' account code from your Xero Chart of Accounts. 8. **Error Handling**: Use the 'Filter by Zapier' within paths to ensure the Zap only continues if the `Amount Gross` is greater than 0, preventing errors on $0 trials. 9. **Toggle Live**: Name your Zap and turn it on.

Data Mapping

| Stripe Field | Zapier Transformation | Xero Field | Requirement | | :--- | :--- | :--- | :--- | | `Customer Email` | None (Direct Map) | Contact Email Address | **Required** | | `Amount` | `Formatter: Divide by 100` | Invoice Line Amount | **Required** | | `ID` (Charge) | None | Invoice Reference | Optional (Audit Trail) | | `Currency` | `Formatter: Uppercase` | Currency Code | **Required** | | `Fee` | `Formatter: Divide by 100` | Bank Transaction Amount | **Required for Fees** | | `Created Date` | `Formatter: Date/Time` | Date / Tax Date | Optional (Defaults to today) |

Gotchas & Failure Modes

• **The Cents Trap**: Stripe sends '1000' for $10.00. Failing to use 'Formatter by Zapier' to divide by 100 will result in massive overstatements in Xero. • **Status Mismatch**: Ensure the Xero Invoice status is set to 'Authorised' or 'Draft'. You cannot apply a 'Create Payment' action to a 'Draft' invoice. • **Task Quotas**: This recipe uses Paths and multiple steps. Expect to use 4-6 tasks per sale. Monitor your Zapier plan limits accordingly. • **Account Mapping**: You must manually select the 'Bank Account' and 'Account Code' (e.g., 400 for Sales) in the Xero step; Zapier cannot 'guess' your Chart of Accounts items. • **Rate Limits**: Xero has a limit of 60 requests per minute. If you process hundreds of Stripe orders simultaneously, Zapier will auto-retry, but expect delays.

Verification Checklist

- [ ] Run a 'Test Step' in Zapier for the Formatter to ensure $10.00 isn't showing as $1000. - [ ] Verify the 'Find Contact' step successfully finds an existing email in Xero without creating a duplicate. - [ ] Check Xero 'Draft' or 'Authorised' invoices to confirm the Stripe Charge ID appears in the Reference field. - [ ] Confirm the 'Create Payment' step is linked to the correct Xero Bank Account (e.g., your Stripe Clearing Account). - [ ] Use Zapier 'History' tab to ensure no 'Path' skipped unexpectedly during the live test.

Ready to Automate?

Build this automation with Zapier in minutes.