Sage 300 Shopify Integration
A Sage 300 Shopify integration connects Sage 300, still called Accpac by plenty of the people running it, to a Shopify B2B storefront. Sage 300 is built for multi-entity and multi-currency operations. It is the dominant Sage product in Canada and among distributors with cross-border operations.
Last updated
In this article
Talk to our expertsIt also has something its sibling does not, and the difference decides how your integration is shaped.
Sage 300 has an OData web API. Sage 100 works through COM.
This is the most useful thing to know before you scope anything.
Sage 100's Business Objects Interface is built on COM, which is in-process and Windows-bound, so every real-time Sage 100 integration needs a component running on a Windows machine near the Sage server. There is no way around it.
Sage 300 exposes the Sage 300 Web API, a genuine HTTP interface following OData over JSON. It can be called over HTTPS from somewhere else. No COM host required.
The base URL follows a specific shape and it is worth reading closely, because one segment of it does something important:
{protocol}://{host}/Sage300WebApi/v1.0/-/{company}/{module}/{resource}
Sage's developer reference defines that {company} segment as "The org ID of the company being requested." Multi-entity routing is not a clever piece of middleware. It is a segment in the URL. An order for the Canadian entity and an order for the US entity go to different paths, and the integration's job is to decide which, from the account and the storefront context.
Authentication is HTTP Basic over TLS. Not OAuth. We mention it because proposals sometimes assume OAuth and then discover otherwise; if someone has quoted you an OAuth flow for Sage 300, ask which documentation they read.
The API covers the modules you would expect, including AR, IC and OE, with resources such as ARCustomers, ARShipToLocations, ARTerms, ICItems, ICLocations, ICPriceListCodes, ICUnitsOfMeasure, OEOrders and OEInvoices. It is actively maintained; the Sage 300 2026 release notes list a Web API addition: "The IC Manufacturers' Item end-point is now available."
Where the Web API stops, which matters more than where it starts
Here is the part that turns a clean story into an accurate one.
The Web API is a thin OData surface over Sage 300's Views, which are the business objects that hold the validation and posting rules. A resource exists only where a View has been surfaced. So coverage is uneven, and the gaps are not random, they are simply wherever Sage has not yet published one.
Two gaps matter for commerce.
Check OE shipment write-back against your version. Sage's Web API Endpoint Reference, dated August 2022, lists three Order Entry transaction endpoints, OECreditDebitNotes, OEInvoices and OEOrders, and says "This release of the Web API includes a limited set of initial features, with additional features planned for future product updates and releases." If your version has no shipment resource, shipment write-back needs another route, and any vendor promising shipment sync should be asked which one they use.
Customer contract pricing sits outside the Web API's listed resources. I/C Contract Pricing is a real and documented Sage 300 feature, but the only contract resource in Sage's Web API Endpoint Reference is POVendorContractCosts, on the purchasing side, so check customer contract pricing against your version. Where your version has no resource for it, contract pricing is reached through the View or .NET layer, or resolved at runtime. Anyone showing you a REST endpoint for customer contract pricing should be asked to name it.
None of this is a reason to avoid Sage 300. It is the difference between a scoped project and a guessed one.
The other two ways in, and when they apply
The .NET API is current and supported, delivered through ACCPAC.Advantage.dll. It is Windows-side and in-process, so it is not a network API, but it reaches everything the Views expose rather than only what has been surfaced as a REST resource. Where the Web API has a gap, this is usually the answer.
The COM API is the original interface and should be treated as legacy for new integration work. Sage's own engineering commentary makes the point that if you are writing an integration to something like a web server, the COM object model is not what you want.
All three sit on the same Views underneath, which is why they agree with each other and why the Views are the thing to understand.
How a price gets decided
Sage 300 holds price list codes, assigned per A/R customer, and the Premium edition adds pricing by unit of measure, by weight and by quantity. Price list codes are reachable through the Web API with full create, read, update and delete.
Contract pricing, as above, sits outside the Web API's listed resources. So the honest design is that listed pricing can be synced into Shopify B2B catalogs, and anything computed, including contract pricing, is resolved from Sage 300 at the moment it is needed through a route that can reach it.
A/R ship-to locations deserve a specific mention because the mapping is unusually clean. Ship-to is a first-class Sage 300 entity with its own record, and it maps directly onto Shopify B2B company locations, each able to carry its own terms. Distributors used to fighting their ERP's address model find this one straightforward.
Where the two systems line up
Sage 300 A/R customers become Shopify companies. Ship-to locations become company locations with their own terms. Contacts become buyer logins under the right company.
Items become products with the units of measure the catalog needs, drawn from ICItems and ICUnitsOfMeasure.
Inventory comes from IC by location, so a buyer sees the warehouse that will actually ship.
Price list codes map into Shopify B2B catalogs; computed pricing resolves from Sage.
A Shopify order becomes a Sage 300 OE order in the correct company, routed by that {company} URL segment, with the customer reference and terms attached.
Uncap Connect keeps pricing, inventory, customer data and orders current in both directions, built for B2B so customer-specific pricing, credit terms and tax behave the way they do in your business.
What happens when an order fails
The Sage 300 specifics are the entity one and the endpoint one.
If an order is routed to the wrong company, it does not fail loudly. It lands, correctly formed, in the wrong set of books, and somebody in finance finds it later. So entity resolution is validated before submission rather than trusted, and mis-routing is treated as a blocking error rather than a warning.
Where a needed operation has no Web API resource, the integration has a documented fallback path rather than a silent gap. Knowing which operations those are is discovery work, not something to find out in testing.
Beyond that the pattern is the usual one. Transient failures retry on a backoff. Permanent failures hold with the payload and the exact Sage error preserved, somewhere your team already looks, and replay without asking the customer to reorder. The buyer's Shopify order stays visible to them throughout.
How a Sage 300 Shopify integration runs
A Sage 300 Shopify integration settles entity routing and the Web API's endpoint gaps during planning and mapping, before anything is built.
- Step 1, plan. Uncap Blueprint maps the integration surface, the pricing model and the phased plan before development begins. It is $7,500 at a fixed price and delivered in four weeks.
- Step 2, map. A/R customers become Shopify companies, ship-to locations become company locations, price list codes map to B2B catalogs, and each order is routed to the right company through the company segment in the Web API URL.
- Step 3, sync. Inventory, orders, customers and pricing move in both directions, and contract pricing resolves from Sage 300 when it is needed.
- Step 4, monitor. With Uncap Connect, a live console shows every sync, flags conflicts and replays anything that fails. Orders are checked for the right company before submission.
Timeline and price: Uncap Connect has a typical deploy of 3 to 5 weeks and starts at $8,000 for onboarding, then a flat $390 per month. For Sage 300 and the depth of sync your operation needs, the Uncap team confirms fit directly.
Track record: In a Google review, Bryan Snyder of Canon Medical wrote that Uncap's team "successfully led the full migration of our medical equipment marketplace to Shopify, including the implementation of Shopify B2B and integration with our ERP, tax, and back-office systems." The review does not name the ERP, so treat it as Uncap's general ERP record.
Industries that run Sage 300
Construction Supply, where will call and job accounts decide whether the site gets used.
Building Materials, where products sell by area and length, a waste factor has to be added before a quantity is correct, and lead times decide whether a quote is usable.
Packaging and Shipping Supplies, where each, case and pallet pricing has to resolve correctly for every account.
Sage 300 is one of several Sage products we connect to Shopify. The Sage integration overview covers Sage 100, Sage X3 and Sage Intacct.
Ready to talk
Bring your Sage 300 version and edition, how many companies are in scope, and one account's price list setup. If you use contract pricing, say so early, because that is the part outside the Web API's listed resources.
Talk to Our Experts, or start with a Blueprint, the paid discovery engagement that maps the integration surface, the pricing model and the phased plan before development begins.
Frequently asked questions
Does Sage 300 have a REST API?
It has the Sage 300 Web API, which is an HTTP interface following OData over JSON. It is reachable over HTTPS from outside the network, which is a genuine difference from Sage 100, whose Business Objects Interface is COM-based and needs a Windows component running near the server.
How does authentication work?
HTTP Basic over TLS. Sage's Web API developer reference says the API "uses Basic Access Authentication for authorization control." It is worth confirming with any partner, because proposals sometimes assume OAuth and have to be reworked.
How does multi-entity order routing work?
Through the URL. The Web API path carries a company segment, which Sage defines as "The org ID of the company being requested," so an order for one entity and an order for another go to different paths. The integration's job is deciding which company an order belongs to from the account and storefront context, and validating that decision before submitting.
Does the Web API cover everything?
No, and this is the most important limitation to scope around. It is a thin OData layer over Sage 300's Views, and a resource exists only where a View has been surfaced. Two areas matter for commerce: Sage's Web API Endpoint Reference lists OECreditDebitNotes, OEInvoices and OEOrders as its Order Entry transaction endpoints, so shipment write-back is checked against your version, and its only contract resource is POVendorContractCosts, on the purchasing side, so customer contract pricing is reached another way. Where a gap exists, the .NET API reaches what the Views expose.
Can Sage 300 contract pricing work on a Shopify storefront?
Yes. The only contract resource in Sage's Web API Endpoint Reference is on the purchasing side, so unless your version adds one, customer contract pricing is reached another way. It is reached through the View or .NET layer, or resolved at runtime. Listed pricing from price list codes can map into Shopify B2B catalogs, while computed pricing resolves from Sage when it is needed.
How do ship-to addresses map?
Cleanly, which is not always the case. A/R ship-to locations are first-class records in Sage 300 and map directly onto Shopify B2B company locations, each carrying its own terms.
Does our edition matter?
Yes. Premium adds the full inventory control pricing options, including customer item numbers and pricing by weight, quantity or unit of measure. Standard and Advanced have lower company and user ceilings and fewer segments. It affects what the integration can express.
How long does a Sage 300 Shopify integration take?
Entity count and pricing complexity drive it more than catalog size. A single company with listed pricing is a different project from four companies with contract pricing and an operation that needs shipment write-back. The Blueprint engagement establishes which you have before anyone commits to a date.