Automated Shopify Order to Xero Invoice Reconciliation (Make.com)

Eliminate manual bookkeeping by syncing Shopify sales, customers, and tax data to Xero in real-time using Make.com.

Tools: ShopifyXero

Platform: Make.com

Short Answer

A seamless, real-time workflow where Shopify orders generate Xero contacts and invoices automatically. You achieve 100% accurate financial records, real-time tax liability tracking, and automated inventory adjustments within your accounting ledger.

The Problem

E-commerce merchants often struggle with manual data entry between Shopify and Xero, leading to human error, mismatched tax reporting, and delayed financial visibility. This automation ensures every sale is accounted for accurately without manual intervention.

The Outcome

A seamless, real-time workflow where Shopify orders generate Xero contacts and invoices automatically. You achieve 100% accurate financial records, real-time tax liability tracking, and automated inventory adjustments within your accounting ledger.

Step-by-Step Guide

1. **Create Scenario**: Log into Make.com, click 'Create a new scenario', and name it 'Shopify Orders to Xero Invoices'. 2. **Configure Shopify Trigger**: Add the **Shopify > Watch Orders** module. Select 'Webhooks' as the connection type. Add a new webhook, connect your store, and set the status to 'paid' to ensure only finalized orders sync. 3. **Search for Existing Contact**: Add the **Xero > Search Contacts** module. Map the `Customer: Email` from Shopify to the 'Email Address' field in Xero to prevent duplicate records. 4. **Add Router (Optional)**: If you want to handle guest checkouts differently, add a Router. Otherwise, proceed to contact logic. 5. **Conditional Contact Creation**: Add a **Xero > Create a Contact** module. Set a Filter between the Search and Create modules where 'Contact ID' from the search results `Does not exist`. Map name, email, and address fields. 6. **Map Line Items**: Add an **Iterator** module if you have complex orders, though the Xero 'Create Invoice' module in Make.com natively handles arrays. Map the `Line Items` array from Shopify to the Xero Invoice 'Line Items' section. 7. **Create Invoice**: Add the **Xero > Create an Invoice** module. Map `Order Name` to 'Invoice Number', `Total Price` to 'Amount', and use the `Contact ID` from the previous steps. 8. **Apply Tax Rates**: Use a `switch()` function in the mapping to convert Shopify Tax Titles (e.g., 'State Tax') to your specific Xero Tax Type codes (e.g., 'OUTPUT'). 9. **Record Payment**: Add the **Xero > Create a Payment** module. Link it to the Invoice ID created in step 7 and map it to your 'Shopify Clearing' bank account in Xero. 10. **Error Handling**: Right-click the Xero modules and select 'Add error handler'. Use the **Break** directive to store the execution and allow for manual retries if the Xero API is down.

Data Mapping

| Shopify Field | Xero Field | Make.com Mapping / Function | Required? | | :--- | :--- | :--- | :--- | | `Order ID` | Invoice Number | `{{1.name}}` | Yes | | `Customer: Email` | Contact Email | `{{1.customer.email}}` | Yes | | `Line Items[]` | Line Items | `Map items directly to Xero Array` | Yes | | `Created At` | Date | `{{formatDate(1.created_at; "YYYY-MM-DD")}}` | Yes | | `Total Tax` | Tax Amount | `{{1.total_tax}}` | Yes | | `Shipping Address` | Postal Address | `{{1.shipping_address.address1}}` | No | | `Currency` | Currency Code | `{{upper(1.currency)}}` | Yes |

Gotchas & Failure Modes

* **Xero Rate Limits**: Xero has a limit of 60 calls per minute. If you have high volume, use the 'Sleep' module or set the scenario to run at intervals rather than 'Immediately'. * **Line Item Mappings**: Ensure Shopify SKUs match Xero Item Codes exactly, or the module will fail. Use the `ifempty()` function for items without SKUs. * **Tax Logic**: Shopify provides tax amounts, but Xero often recalculates based on the Tax Type code. Ensure your Xero Tax Rates are configured to 'Tax Inclusive' to match Shopify's checkout totals. * **Connection Expiry**: Xero OAuth connections in Make.com may occasionally require re-authorization after 60 days of inactivity.

Verification Checklist

- [ ] **Run Once**: Use the 'Run Once' button and manually paste a Shopify Order ID. - [ ] **Contact Search**: Verify the 'Search Contacts' module successfully found an existing contact during testing. - [ ] **Tax Validation**: Check the Xero Invoice to ensure the tax amount matches the Shopify Order total exactly. - [ ] **Payment Applied**: Confirm the Xero Invoice status is set to 'PAID' (if the payment module was triggered). - [ ] **Log Inspection**: Check the Make.com 'History' tab for any 'Data Mapping' errors or 400-series API responses.

Ready to Automate?

Build this automation with Make.com in minutes.