Headless storefront wired to the finance ledger

A storefront selling stock it did not really have, and a finance team rebuilding the sales ledger from exports. Rebuilt so orders, returns and reservations move as events, and the reconciliation is a report rather than a project.

Sector Consumer goods
Systems Ecommerce, OMS, ERP
Scope Checkout to revenue posting
Approach Ledger first, storefront second
Before

The situation

The business sold through its own site and two marketplaces. Each channel held its own stock number, updated by a scheduled export, so the site regularly sold units that were already committed to a marketplace order.

Finance had the mirror-image problem. Orders, refunds and marketplace fees arrived as separate files with separate identifiers, so the sales ledger was rebuilt every month by hand and the number never quite matched the payment provider.

Delivery

What we changed

01

One stock position, published outward

Availability is calculated once from the operational ledger and pushed to every channel, rather than each channel keeping its own count.

02

Reservation at checkout, not at export

Stock is committed when the order is placed, so a second channel cannot sell the same unit.

03

Orders as events with one identifier

Every downstream system references the same order id, which is also what appears on the invoice and the payment record.

04

Returns on the original record

Authorisation, receipt and credit are steps on the order that created them, not a separate process with its own numbering.

05

A reconciliation a clerk can read

Orders, refunds, fees and settlements lined up per day, with unmatched items listed as a work queue instead of a variance.

We built the reconciliation report before we built the storefront integration, because it is the only thing that proves the integration is right.

Implementation lead, AxonRays
Cutover

How it went live

The ledger integration went first, running in parallel while finance closed two periods the old way and compared. Only when the two methods agreed on the same daily figures did the storefront start reading availability from the new source.

Marketplace channels were cut over one at a time, each with a short window where listings were frozen so the opening stock position could be established cleanly. Payment settlement matching was the last piece, once there was a stable order identifier for it to match against.

After

What changed afterwards

The site stopped selling stock committed elsewhere.

Month-end sales reconciliation became a report rather than a rebuild.

Refunds and fees reconcile to the settlement without manual matching.

Adding a channel is a configuration exercise, not an integration project.

Modules live
Catalogue Availability Checkout Order events Returns Settlement matching
Interfaces built
Storefront to order management Marketplace listing and order feeds Payment provider settlement Sales and credit posting to ERP

Similar operation?

If your storefront stock and your ledger disagree, the gap is usually one interface and one ownership decision.

Book a scoping call
More

Other rollout notes

All case studies
Case study / Contract logistics

Warehouse go-live for a contract logistics operator

Read the rollout note
Case study / Medical devices

Non-conformance workflow on a regulated shop floor

Read the rollout note