Automate PayPal Sales Reconciliation in Xero (Zapier)
Eliminate manual bookkeeping by automatically syncing PayPal transactions, fees, and contacts to Xero using Zapier.
Tools: PayPal → Xero
Platform: Zapier
Short Answer
Every high-volume sale in PayPal automatically creates a corresponding contact and authorized invoice in Xero. Fees are split into a dedicated expense account, ensuring your Xero ledger matches your PayPal balance perfectly.
The Problem
Manual entry of PayPal sales into Xero is time-consuming and prone to errors, especially when accounting for PayPal's transaction fees. Without automation, the gross amount and the net deposit won't match, making bank reconciliation a nightmare.
The Outcome
Every high-volume sale in PayPal automatically creates a corresponding contact and authorized invoice in Xero. Fees are split into a dedicated expense account, ensuring your Xero ledger matches your PayPal balance perfectly.
Step-by-Step Guide
1. **Create the Zap**: Log into Zapier and click 'Create Zap'. Name it 'PayPal Sales to Xero Invoice'.
2. **Set Trigger**: Select 'PayPal' as the App and 'Successful Sale' as the Event. Connect your PayPal account using your IPN (Instant Payment Notification) URL provided by Zapier.
3. **Add a Filter**: Use 'Filter by Zapier'. Set it to only continue if 'Transaction Type' equals 'Cart Payment' or 'Express Checkout' to avoid triggering on transfers or refunds (which should have their own Zap).
4. **Format Data (Optional but Recommended)**: Add 'Formatter by Zapier' -> 'Numbers' -> 'Perform Math Operation'. Use this if you need to strictly calculate `Gross - Fee` to verify totals, though Xero's payment step usually handles the split.
5. **Action - Find or Create Contact**: Select 'Xero' as the App and 'Find Contact' as the Action. Search by 'Payer Email'. Check the box 'Create Xero Contact if it doesn't exist yet' and map the 'Payer Name' and 'Email' from PayPal.
6. **Action - Create Sales Invoice**: Select 'Xero' and 'Create Sales Invoice'. Choose 'Authorized' status. Map 'Item Name' to Description, 'Gross Amount' to Unit Price, and set the 'Account Code' to your Sales/Revenue account.
7. **Map the Reference Field**: Map the PayPal 'Transaction ID' to the Xero 'Reference' field. This is critical for matching the bank feed later.
8. **Action - Add Payment to Invoice**: Add another Xero step: 'Add Payment to Individual Invoice'. Link the 'Invoice ID' from Step 6.
9. **Handle Fees**: In the 'Bank Amount' field, use the Net Amount (Gross minus Fee). Set the 'Account Code' for the fee portion to your 'Merchant Fees' expense account.
10. **Test and Turn On**: Run a test with a recent PayPal transaction. Check Xero to ensure the invoice is marked as 'Paid' and the fee is accounted for. Turn the Zap On.
Data Mapping
| PayPal Field | Xero Field | Logic / Transformation |
| :--- | :--- | :--- |
| `Payer Email` | `Contact Email` | Used for **Find Contact** search key. |
| `Payer Name` | `Contact Name` | Requirement for new contact creation. |
| `Transaction ID` | `Reference` | Map directly for reconciliation matching. |
| `Gross Amount` | `Line Item: Unit Price` | The total customer paid before fees. |
| `Fee Amount` | `Bank Fee` | Map to 'Merchant Fees' expense account code. |
| `Transaction Date` | `Date` | Use Zapier's `{{zap_meta_human_now}}` if PayPal date format fails. |
| `Currency Code` | `Currency` | Must match Xero's enabled currencies. |
Gotchas & Failure Modes
* **IPN Delays**: PayPal's Instant Payment Notification (IPN) can sometimes be delayed by PayPal's servers; don't panic if the Zap doesn't fire for 2-3 minutes.
* **Multi-Currency**: If you accept multiple currencies, Xero requires the 'Multi-Currency' plan; otherwise, Zapier will return a 400 error. Use 'Formatter by Zapier' to convert to your base currency if necessary.
* **Task Usage**: Using 'Find Contact' + 'Create Invoice' + 'Add Payment' uses 3 tasks per sale. High-volume users should monitor their Zapier 'Task Quota'.
* **Duplicate Invoices**: Ensure you map the PayPal Transaction ID to the Xero Reference field. Xero's API prevents duplicate invoices with the same reference number, acting as a natural safeguard.
Verification Checklist
- [ ] Trigger test pulls a real recent PayPal transaction.
- [ ] Filter step correctly identifies the transaction as a 'Sale'.
- [ ] Xero Contact is found or successfully created without duplicates.
- [ ] Xero Invoice status is set to 'Authorized' (not Draft) after creation.
- [ ] Xero Payment step correctly reduces the Gross amount by the PayPal Fee.
- [ ] 'Task History' in Zapier shows a 'Success' status for all steps.
Ready to Automate?
Build this automation with Zapier in minutes.