Short Answer
Every shipped Amazon order is instantly recorded as a Xero Invoice. Using Make.com Iterators and Aggregators, multi-line orders are handled natively, tax is accurately applied, and inventory levels stay synchronized across both platforms.
The Problem
Manual entry of Amazon orders into Xero is time-consuming and prone to errors, especially with multi-item orders and varying tax rates. Reconciling Amazon settlement fees against individual invoices is a significant bottleneck for e-commerce accounting teams.
The Outcome
Every shipped Amazon order is instantly recorded as a Xero Invoice. Using Make.com Iterators and Aggregators, multi-line orders are handled natively, tax is accurately applied, and inventory levels stay synchronized across both platforms.
Step-by-Step Guide
1. **Create a New Scenario**: In Make.com, click 'Create a new scenario' and add the **Amazon Seller Central** module.
2. **Configure Amazon Trigger**: Select 'Watch Orders'. Create a connection using your Seller ID and AWS credentials. Set the 'Order Status' filter to 'Shipped' to ensure only finalized revenue is synced.
3. **Add a Router**: Add a Router module to check if the order has been processed previously to prevent double-entry.
4. **Handle Multi-Line Items (Iterator)**: Amazon orders often contain multiple products. Connect an **Iterator** module to the 'OrderItems' bundle. This breaks the order into individual units for granular mapping.
5. **Xero Contact Lookup**: Add a **Xero** 'Search Contacts' module. Search by 'Amazon Customer' or specific email. Follow this with a 'Create a Contact' module using an IF-ELSE filter (or 'Get or Create' logic) to ensure the invoice has a recipient.
6. **Transform Data (Array Aggregator)**: This is crucial for Xero. Connect an **Array Aggregator**. Set the Source Module as the Iterator and the Target structure as 'Xero: Create an Invoice - Line Items'. Map the SKU, Quantity, and Price here.
7. **Map to Xero Invoice**: Add the **Xero** 'Create an Invoice' module. Map the 'Total Amount' and 'Date'. Use the aggregated array from the previous step to populate the line items.
8. **Tax Logic**: Use Make.com's `if()` and `contains()` functions in the Tax Type field to map Amazon's 'ShipToState' to the corresponding Xero Tax Rate codes.
9. **Error Handling**: Right-click the Xero module and select 'Add error handler'. Use a 'Break' or 'Ignore' directive to manage API rate limits or invalid address formats without stopping the entire scenario.
10. **Save and Schedule**: Set the scenario to run every 15 minutes or hourly depending on your volume requirements.
Data Mapping
| Amazon Field | Make.com Mapping Logic | Xero Field | Notes |
| :--- | :--- | :--- | :--- |
| **AmazonOrderId** | `{{1.AmazonOrderId}}` | **Reference** | Primary key for reconciliation |
| **PurchaseDate** | `formatDate({{1.PurchaseDate}}; YYYY-MM-DD)` | **Date** | Ensures Xero accepts the date format |
| **BuyerEmail** | `ifempty({{1.BuyerEmail}}; "amazon-customer@noemail.com")` | **Contact Email** | Fallback for privacy-protected emails |
| **SKU** | `{{4.SellerSKU}}` | **Item Code** | Must match Xero Inventory Item Code |
| **ItemPrice** | `{{4.ItemPrice / 100}}` (if in cents) | **Unit Amount** | Check if currency requires division |
| **TaxAmount** | `{{1.TaxAmount}}` | **Tax Amount** | Map to specific Xero Tax Account |
Gotchas & Failure Modes
• **Rate Limiting**: Amazon SP-API has strict quotas. Ensure your Make.com scheduling is not set to 'Immediately' if you have high volume; 'Every 15 minutes' is safer.
• **Data Arrays**: If you don't use the **Iterator/Aggregator** combo, only the first item of a multi-item order will sync to Xero.
• **Memory Usage**: For scenarios processing over 100 line items per bundle, increase the scenario 'Max number of cycles' in settings to avoid timeouts.
• **Tax Rounding**: Xero and Amazon calculate tax slightly differently. Use the `round()` function in Make to avoid invoice discrepancies of 0.01 that prevent reconciliation.
Verification Checklist
- [ ] **Run Once Test**: Use the 'Run once' button with a specific `AmazonOrderId` to verify mapping.
- [ ] **Check Aggregator Output**: Inspect the 'Array' output to ensure line items are structured correctly for Xero.
- [ ] **Contact Validation**: Verify that the scenario doesn't create duplicate 'Amazon Customer' contacts in Xero.
- [ ] **Tax Audit**: Confirm the Invoice Total in Xero matches the Gross Amount in Amazon Seller Central.
- [ ] **Error Path Test**: Temporarily change a SKU to a non-existent one to ensure the Error Handler triggers correctly.
Ready to Automate?
Build this automation with Make.com in minutes.