Case study / Ecommerce

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

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.

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

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.

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.
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