A new B2B channel needs contract pricing. A marketplace deal requires inventory syndication. International expansion requires new tax rules and fulfilment logic. A mobile team needs real-time stock visibility. A merchandising team wants bundles and variants that don’t map cleanly to existing systems.
Every one of these asks is reasonable on its own.
But inside a monolithic ecommerce platform, each ask lands in the same place: one codebase, one release pipeline, one set of plugins, one database schema, one global state.
This is the hidden bottleneck in commerce engineering: business complexity accumulates faster than monoliths can absorb it.
To solve it, engineering leaders eventually stop thinking about “platform capabilities” and start thinking in domains.
That’s where commerce microservices begin.
The Reality Check: Commerce Isn’t One System - It’s Many
If commerce were just “products and carts,” monoliths would work forever. But real commerce spans multiple bounded contexts:
Catalog modeling
Pricing rules
Stock availability
Checkout orchestration
Payment capture
Tax calculation
Shipment routing
Return workflows
Invoicing and finance
Fulfillment and logistics
Customer accounts
B2B entitlements
Treating all of that as a single “feature set” is how engineering teams get stuck.
In practice, scalable commerce architectures hinge on four critical domains:
Catalog
Pricing
Inventory
Checkout / Order
These are deceptively simple words. Underneath them live the hardest modelling problems in e-commerce.
Domain 1: Catalogue - More Than Just “Products”
Catalogue systems do not store “products.” They store models.
SKU hierarchies, variant structures, configurators, taxonomies, media assets, custom attributes, bundles, kits, compatibility rules - all belong here.
Common frustrations appear when catalogue logic is trapped inside a CMS or theme:
Variant logic inside templates
Product attributes stored as metafields/plugins
Bundles implemented as theme hacks
Taxonomies hardcoded into navigation
This inevitably leads to data duplication across:
Web storefront
Mobile apps
Marketplaces (Amazon, Walmart, Flipkart)
POS
Kiosks
B2B portals
Catalogue as a microservice solves this by becoming the source of truth, not the renderer.
It answers questions like:
What products exist?
What variants/options are available?
How do items relate in a taxonomy?
How should items be described to different channels?
When done correctly, the catalogue becomes a content graph, not a template field.
Domain 2: Pricing - The Most Misunderstood Domain in Commerce
Merchants think pricing is simple until it isn’t.
Pricing involves:
List prices
Customer-segment prices
Contract prices (B2B)
Currency conversion
Quantity breaks
Time-based promotions
Discount stacking rules
Tax-inclusive vs tax-exclusive regions
Freight surcharges
MAP policies
Coupon logic
Loyalty points
Pushing this into themes or plugins is how teams end up debugging pricing on production because “B2B customers in Germany are seeing the wrong tier when ordering from mobile.”
Pricing as its own service answers:
What should this customer pay?
Under what conditions should exceptions apply?
How does promotional logic compile into totals?
How do currencies and taxes affect the final amount?
This is why modern architectures separate pricing from the catalogue. Products describe what something is and pricing describes how much it costs for a specific audience.
They are different problems.
Domain 3: Inventory - The Operational Gatekeeper
Inventory is not a number. It is a state machine.
The moment a cart is created, inventory transitions through:
Available
Reserved
Allocated
Picked
Packed
Shipped
Returned
Restocked
Retailers who scale across multiple fulfilment locations end up dealing with:
Multi-warehouse routing
Safety stock buffers
Inventory holds for fraud checks
Preorders/backorders
Oversell prevention
Marketplace feeds
Supply chain delays
Inventory as a microservice answers:
Where is the stock located?
Can it be promised for fulfilment?
How should reservations behave?
Which warehouse should fulfil?
When inventory is entangled inside a monolith, developers end up writing midnight scripts to prevent oversells during flash sales. When it’s a service, it becomes programmable instead of reactive.
Domain 4: Checkout & Order - The Most Complex Transaction Boundary in Commerce
Checkout is where everything converges:
Catalog (valid SKUs)
Pricing (totals & promotions)
Inventory (reservation)
Tax (jurisdiction rules)
Shipping (rates + carriers)
Payments (capture + settlement)
Fraud checks
Order conversion
Most engineers underestimate checkout complexity until they have to support:
BNPL providers
Multi-package shipments
Partial fulfillments
Split payments
VAT/GST region rules
Store credit + gift card logic
PCI compliance constraints
Checkout as a microservice is not about rendering forms. It’s about handling distributed side effects safely.
Order as a microservice is about post-transaction orchestration:
Push to WMS
Push to ERP
Push to accounting
Trigger notifications
Handle returns
Record financial events
Trying to solve all of this with plugins and template overrides is how teams accumulate technical debt faster than they collect revenue.
Why Microservices? Because Ownership Matters
Breaking commerce into microservices is not about Kubernetes clusters and service meshes. It’s about clear ownership boundaries so that one change doesn't require pausing the entire company’s roadmap.
Ownership enables:
Independent release cycles
Isolated failure domains
Better observability
Cleaner integration contracts
Faster onboarding of new engineers
Testability without staging gymnastics
Most importantly, it changes the team structure.
Instead of a “platform team,” you get:
A catalogue team
A pricing team
An inventory team
A checkout/order team
Each with their own domain expertise and velocity.
This is how engineering scales without breaking.
The Problem: Most Teams Can’t (and Shouldn’t) Build This Themselves
The theoretical model makes sense. The practical reality is harder.
To build commerce microservices correctly, a company needs to solve:
Distributed transactions
Idempotent operations
State reconciliation
Webhook/event orchestration
Data modelling conventions
Versioned APIs
Backward compatibility
Observability & tracing
Security and permissions
Performance at scale
Very few are set up to do that while also:
Shipping business features
Meeting revenue targets
Aligning with GTM roadmaps
Supporting retail operations
This is why the smartest engineering teams build around commerce, not under it.
Where Commerce Engine Fits Into This Architecture
Commerce Engine ships these domain boundaries out of the box:
/catalog
/pricing
/inventory
/carts
/checkout
/orders
No plugins, no themes, no template overrides.
Each domain is:
Documented as an API surface
Backed by its own data model
Exposed through consistent REST contracts
Integrated through webhooks and events
This matters for one reason: commerce is a coordination problem, not a templating problem.
Commerce Engine doesn’t tell engineering teams how to render a storefront. It gives them the primitives required to build:
Headless storefronts
Native applications
POS systems
B2B portals
Marketplace integrations
Kiosk flows
ERP/OMS connectors
without rewriting commerce fundamentals.
The Teams That Adopt This Model Share One Belief
When you talk to engineering leaders who choose modular commerce, their reasoning is never “we needed a better CMS” or “we didn’t like our checkout plugin.”
Their reasoning sounds like this:
“We needed a clean domain model.”
“We needed ownership boundaries.”
“We needed commerce to behave like software.”
“We didn’t want plugins deciding our architecture.”
“We needed to scale internationally without rewiring checkout.”
“We needed to integrate deeply with our ERP without duct tape.”
These aren’t feature requests. They’re architectural constraints.
And architectural constraints are what determine long-term velocity.
The Takeaway
Commerce microservices are not trendy. They are inevitable.
Any business that:
sells across multiple channels,
fulfils from multiple locations,
supports multiple customer types,
integrates with multiple operational systems,
will eventually discover that monoliths aren’t designed for multi-anything.
Breaking commerce into the domains of catalogue, pricing, inventory and checkout is how engineering teams regain control. It is how architecture keeps pace with the business instead of slowing it down.
And it’s why the most effective engineering teams don’t rebuild commerce, they compose it.


