Automating SA Invoices: Shopify to Xero/Sage
April 4, 2026
If you are running a Shopify store in South Africa, you’ve likely noticed a major legal gap: Shopify’s "Order Confirmation" is not a valid SA Tax Invoice.
SARS (South African Revenue Service) has very specific requirements for what constitutes a legal tax invoice, especially if you are a VAT-registered business. You need the words "Tax Invoice," your VAT number, the customer’s address (if the order is over R500), and a clear breakdown of the 15% VAT.
Many store owners spend their Monday mornings manually typing Shopify order data into Xero or Sage. It's a waste of time and a big source of human error. Here's how to automate it so your invoices are SARS-compliant from the moment the order is placed.
The SARS Invoicing Requirements (A Quick Checklist)
To be legal for orders over R500, your invoice must contain:
- The words "Tax Invoice" in a prominent place.
- Your business name, address, and VAT registration number.
- The customer's name and address.
- An individual serialized invoice number.
- The date of issue.
- A full description of the goods/services.
- The amount of VAT charged (at 15%).
- The total price including VAT.
Option 1: Using a Dedicated Connector (Amaka or Stock2Shop)
If you use Xero, the Amaka app is the gold standard for Shopify integration. It syncs your Shopify orders as individual invoices or as daily summaries.
The Pros:
- It handles the VAT mapping automatically (Mapping Shopify "VAT" to Xero "15% VAT on Income").
- It syncs your Shopify Payments and Payfast payouts, making bank reconciliation a breeze.
The Cons:
- It can be expensive if you have thousands of orders a month.
- Custom mapping (e.g., mapping specific Shopify tags to Xero account codes) can be tricky.
Option 2: The Custom Bridge (When the App Isn't Enough)
If you've got rules that don't fit a plug-and-play app — invoicing only after fulfilment, splitting revenue across different account codes per product tag, applying loyalty discounts to specific line items, or routing wholesale orders to a different Xero entity — you'll need a custom bridge.
The shape of it is simple. Shopify "pings" our server the moment something happens (an order is paid, an order is fulfilled, a refund is issued). Our server reads the order, applies your business rules, and creates the matching invoice in Xero or Sage — with the right VAT code, the right account code, and the right customer contact attached. The customer never knows it happened. Your bookkeeper opens Xero on Monday and the week's invoices are already there, correctly categorised.
The reason to go this route is control. Connector apps work for the 80% case. The custom bridge is for the 20% where your business has a quirk the app can't model — and that quirk is usually what's costing you hours every week.
Handling Multi-Currency (Selling in USD, Reporting in ZAR)
If you sell to international customers in USD, SARS still requires you to report the ZAR value of the transaction based on the exchange rate at the time of the sale.
When you automate this, the workflow needs to:
- Pick up the Shopify order in USD.
- Pull the current spot rate at the time of sale (from a source like Open Exchange Rates).
- Either create the Xero invoice in ZAR directly, or use Xero's multi-currency feature to record the USD sale and let Xero handle the FX gain/loss at month-end.
Why This Saves 10+ Hours a Week
Manual data entry is a silent killer of e-commerce growth. By automating the Shopify-to-Xero flow:
- Your bookkeeper doesn't have to spend days reconciling transactions.
- Your tax returns (VAT201) are accurate because the VAT was calculated correctly at the source.
- Your customers get a professional, SARS-compliant PDF invoice emailed to them automatically, reducing support tickets.
Final Thoughts
Don't wait until you have 500 orders a month to fix your invoicing. The mess of manual entry only gets harder to clean up the longer you wait. Whether you use a plug-and-play app or a custom build, getting Shopify and your accounting software talking to each other properly is one of the highest-leverage things you can do as an SA brand.
Struggling with your Shopify-Xero sync or VAT mapping? Message me on WhatsApp. I help local e-commerce stores automate their back-office tech.
Frequently asked questions
What makes a Shopify order confirmation not a valid SA Tax Invoice?
Shopify's standard order confirmation lacks several key SARS requirements. It doesn't prominently display "Tax Invoice," often omits the VAT number, and may not break down the 15% VAT clearly. For orders over R500, the customer's full address is also required, which is often missing. These omissions make it non-compliant for VAT-registered businesses.
When building a custom webhook, what's a common trigger for invoice generation?
A common and more reliable trigger for invoice generation in a custom webhook setup is the "Fulfilled" order status. This ensures the invoice is only created once the goods have actually been dispatched. Simply using "Paid" can lead to premature invoices if an order is later cancelled or partially fulfilled, adding unnecessary reconciliation work.
How does multi-currency selling affect SARS compliance for SA businesses?
If you sell in USD to international customers, SARS still requires you to report the transaction's ZAR value. Your automation needs to fetch the spot exchange rate at the time of sale. You can then either create the Xero invoice directly in ZAR or use Xero's multi-currency features to record the USD sale and let Xero manage the foreign exchange gains or losses.
What are the main benefits of automating Shopify invoice syncing to Xero or Sage?
Automating this process saves significant time, eliminating manual data entry that leads to errors. It ensures your VAT returns are accurate from the source, reducing tax compliance headaches. Your bookkeeper spends less time on reconciliation, and customers automatically receive professional, SARS-compliant PDF invoices, cutting down on support queries.
Related Articles
- Connecting Shopify to Sage/Xero: Why Syncing Fails and How to Fix It
- Automating the Entire Checkout-to-Courier Workflow for Shopify Plus
- POPIA for Developers: Ensuring Your SA Web App is Legally Compliant
- Stripe vs. Paddle for SA SaaS: Handling Global VAT and Local Compliance