Making Shopify Talk to Sage 50 Without Losing Your Mind
Practical guide to connecting Shopify with Sage 50 for UK businesses. Real-world approach that won't break the bank or your systems.
The 3am Panic Email
I got an email at 3am last Tuesday. Well, it arrived at 3am—I read it over coffee the next morning like a sensible person.
"Callum, we're drowning. Orders are up 300% since we launched Shopify, which should be brilliant news. Instead, my office manager is working evenings manually typing orders into Sage, we've shipped wrong stock twice this month, and our accountant is threatening to charge us extra because the books are a mess. Help."
This is the fourth time I've had essentially this exact conversation this year. Growing pains in e-commerce aren't new, but the specific torture of running Shopify whilst trying to keep Sage 50 happy? That's a very British small business problem.
The Problem Nobody Warned You About
Here's what happens: You're a small manufacturer, retailer, or distributor. You've been running Sage 50 for years—it does your accounts, manages your inventory, keeps HMRC happy. It's not sexy, but it works.
Then you launch a Shopify store. Or maybe you've had one ticking along nicely, and suddenly it takes off. Brilliant, right?
Except now someone needs to:
- Manually enter every Shopify order into Sage
- Update stock levels in two places
- Reconcile payments (which come through Shopify Payments, PayPal, and sometimes Klarna)
- Generate invoices that match what the customer actually ordered
- Keep your accountant from murdering you
I've seen businesses where this takes 2-3 hours every single day. One client was paying someone £12/hour just to do data entry between systems. The maths on that gets depressing fast.
Why the "Solutions" Don't Help
So you start looking for help. Here's what you'll find:
Option 1: The Shopify App Store
There are apps that claim to connect Shopify to Sage 50. I've tested most of them. They fall into two categories:
- Apps built for Sage Cloud, which is completely different from Sage 50 Desktop (the one you're actually using)
- Apps that technically work but cost £50-150/month and still require manual intervention for anything non-standard
And here's the thing—if you're running Sage 50, you probably have something non-standard. A custom discount structure. Specific nominal codes for different product types. Multiple warehouses. The apps choke on this stuff.
Option 2: The Big Integration Platforms
Zapier, Make (formerly Integromat), and their cousins. These are brilliant tools. I use them all the time.
But Sage 50 Desktop doesn't have a proper API. It's desktop software from an era when "the cloud" meant weather. These platforms can talk to Shopify beautifully, but getting data into Sage 50? That's where it falls apart.
Option 3: "Just Upgrade to Sage Cloud"
Right. Because migrating your entire accounting system—with years of history, custom reports, and workflows your team actually understands—is definitely the proportionate response to needing to sync some orders.
I'm not saying Sage Cloud is bad. For some businesses, it's the right move. But I've seen quotes for migrations that would pay for two years of manual data entry. That's not a solution; that's a different problem.
What Actually Works (For Real Businesses)
I've built this integration about a dozen times now. Each one's slightly different, but the core approach is the same.
We use Sage 50's SDKs—yes, they exist, and yes, they're about as user-friendly as a hedgehog in a sleeping bag—to build a small application that sits on your server or a dedicated PC. This application:
- Pulls order data from Shopify via their API (which is actually quite good)
- Transforms it into the format Sage 50 expects
- Creates sales orders, invoices, or both in Sage
- Pushes stock levels back to Shopify
- Logs everything so you can see what happened
Not glamorous. But it works.
A Real Example (With Actual Numbers)
A homeware retailer came to me last year. They'd been on Shopify for 18 months, doing about 200 orders per week. Growth was good—too good. Their office manager was spending 15 hours per week on data entry.
They'd tried two different Shopify apps. Both failed because they had a specific requirement: wholesale orders needed different nominal codes and couldn't include VAT (reverse charge), whilst retail orders did the normal thing. The apps couldn't handle it.
We built them a custom integration. Took six weeks from first conversation to going live. The application runs on a spare Windows PC in their office (Sage 50 has to run on Windows, so we're stuck with that).
Results after three months:
- Data entry time dropped by 90%—now it's about 90 minutes per week, mostly handling exceptions
- Stock accuracy improved by about 80% (fewer oversells, fewer disappointed customers)
- Their accountant stopped complaining (this alone was worth it, apparently)
- Payback period was under six months
They're now doing 400+ orders per week with the same office manager, who's much happier because she's doing actual management instead of typing numbers into boxes.
How It Actually Works (Technical Bit)
I'll keep this practical. If you've got a developer on your team or you're technically minded, this is the shape of it:
The Shopify Side
Shopify's API is REST-based and well-documented. You'll need:
- A private app with read access to orders, products, and inventory
- Webhooks for new orders (or scheduled polling if you prefer)
- The Admin API for updating stock levels
Here's a simplified example of pulling orders:
import requests
shop_url = "your-shop.myshopify.com"
access_token = "your-access-token"
headers = {
"X-Shopify-Access-Token": access_token
}
response = requests.get(
f"https://{shop_url}/admin/api/2024-01/orders.json?status=any&fulfillment_status=unshipped",
headers=headers
)
orders = response.json()['orders']
Nothing fancy. The trick is in the filtering and transformation.
The Sage 50 Side
This is where it gets interesting. Sage 50 has an SDK called "SDO" (Sage Data Objects). It's COM-based, which tells you everything you need to know about its vintage.
You'll be working with objects like SalesOrder, SalesOrderItem, and StockItem. The documentation is... let's say "comprehensive" when we're being kind, and "arcane" when we're being honest.
Here's a taste (this is C#, because COM):
using Sage.Accounting.SalesLedger;
SalesOrder order = new SalesOrder();
order.CustomerAccountNumber = "CUST001";
order.OrderDate = DateTime.Now;
SalesOrderItem item = order.Items.Add();
item.ProductCode = "PROD123";
item.Quantity = 2;
item.UnitPrice = 29.99m;
order.Update();
The reality is messier—you need to handle VAT codes, nominal codes, departments, and about fifty other things that can go wrong.
The Middle Bit
The transformation layer is where the business logic lives:
- Mapping Shopify product SKUs to Sage stock codes
- Converting Shopify's customer data to Sage customer records (or creating new ones)
- Handling discounts, shipping, and payment methods
- Dealing with VAT (especially fun with digital products or EU customers)
- Logging everything for debugging
I usually build this as a Windows service that runs every 5-15 minutes. It checks for new orders, processes them, updates stock, and sends a daily summary email.
The Gotchas (Learn From My Mistakes)
1. Sage 50 Is Single-User For SDO Access
You can't have someone working in Sage whilst your integration is writing to it. We work around this by scheduling the integration to run when Sage isn't in use, or by using Sage's multi-user mode carefully.
One client learned this the hard way when their bookkeeper and the integration tried to create the same customer simultaneously. Sage crashed. Fun times.
2. Stock Code Mapping Is Never Simple
You think your SKUs match between Shopify and Sage. They don't. There's always:
- Trailing spaces
- Different cases (PROD123 vs prod123)
- Variants that exist in Shopify but not Sage
- Products that are in Sage but delisted on Shopify
Build a mapping table. Trust me.
3. Payment Reconciliation Is Its Own Beast
Shopify Payments batches deposits. PayPal takes fees. Klarna pays you later. None of this maps neatly to Sage's expectation of "customer pays invoice."
We usually handle this by creating a "Shopify Payments" customer in Sage and reconciling in batches. It's not perfect, but it keeps the accountants happy.
4. Returns and Refunds
Shopify handles returns beautifully. Sage 50 expects you to create credit notes manually. Automating this is possible but fiddly. Most of my clients do returns manually because they're rare enough that automation isn't worth the complexity.
5. The PC Has To Stay On
Because Sage 50 is desktop software, your integration needs to run on a PC that's always on and has Sage installed. I've had clients accidentally solve this by repurposing an old desktop as a dedicated integration server. Works fine.
When This Isn't The Answer
Be honest with yourself about these scenarios:
You're doing under 50 orders per week
The manual work probably isn't killing you yet. Spend your money on marketing instead.
You're planning to move away from Sage 50 anyway
If you're already evaluating Xero, QuickBooks Online, or Sage Cloud, just do that first. Don't build an integration for a system you're leaving.
You've got complex workflows that change constantly
If your business processes are still in flux, custom integration might be premature. Get stable first, then automate.
You need real-time, to-the-second stock accuracy
This approach syncs every few minutes. If you're selling limited-edition drops where every second counts, you need something more sophisticated (and expensive).
What About Other E-commerce Platforms?
I've built similar integrations for WooCommerce, BigCommerce, and even a couple of custom platforms. The Shopify version is usually the cleanest because their API is well-designed.
WooCommerce is more work because every site is different—different plugins, different configurations. But it's doable.
If you're on Magento, we should probably have a different conversation about whether Sage 50 is still the right tool for you.
Quick FAQ
Q: Can I do this myself if I'm technical?
If you're comfortable with APIs, COM objects, and have a few weeks to spare, yes. The Sage 50 SDK documentation is available (though you'll need a Sage Developer account). Shopify's API docs are public and excellent.
Most small businesses don't have that time, which is why they call me.
Q: What happens if Shopify or Sage updates?
Shopify versions their API, so updates are predictable. Sage 50 updates less frequently and usually doesn't break SDK compatibility. I've had integrations running for three years with minimal maintenance.
That said, budget for occasional updates. Software changes.
Q: Can it handle multiple Shopify stores?
Yes. I've got a client with three Shopify stores feeding into one Sage 50 company. We use different customer code prefixes to keep them separate. Works fine.
Q: What about Amazon, eBay, etc.?
You can pull those in too. Amazon's API is more restrictive, and eBay's is showing its age, but it's possible. Each marketplace is additional complexity though.
Q: Does this work with Sage 50cloud?
Yes, despite the confusing name. "Sage 50cloud" is still desktop software; it just has some cloud features bolted on. The SDK works the same way.
The Bit Where I Ask If You Want Help
Look, I'm not going to pretend this is the only way to solve this problem. For some businesses, moving to a fully cloud-based setup makes sense. For others, a manual process with better workflows is enough.
But if you're in that middle ground—growing fast, stuck with systems that work but don't talk to each other, and tired of paying for manual data entry—this approach might save you a lot of headaches.
I've done this enough times that I can usually tell within one conversation whether it's the right fit for your business. Sometimes the answer is "yes, let's build this." Sometimes it's "actually, you should look at X instead."
If you want that conversation, drop me an email at hello@stirlingjonessolutions.co.uk or use the contact form at stirlingjonessolutions.co.uk. I'll ask you some questions about your setup, your volumes, and what's actually painful. Then I'll tell you honestly whether this is worth pursuing.
No sales pitch. No pressure. Just a straightforward chat about whether we can make your systems work better together.
Because at 3am when you're getting panic emails from your office manager, you need solutions that actually work—not vendor promises and marketing fluff.
Need Help with Legacy Systems?
We specialize in modernizing legacy systems without costly replacements. Let's discuss your project.
Start a Conversation