A multi-tenant commerce platform for complex pricing and fulfilment.

A self-service B2B platform bringing customer-specific catalogues, contract pricing, approvals, ordering, payments, fulfilment, and account administration into one product.

Client

Wholesale and distribution business

Industry

B2B commerce

Duration

26 weeks

Team

Product lead · Product designer · 4 engineers

Delivered

2026

Customers were requesting quotes and placing repeat orders through email, phone calls, spreadsheets, and sales representatives. Each account had negotiated pricing, product access, credit terms, delivery rules, and approval limits that the existing storefront could not represent. Internal teams re-entered orders into the ERP, while customers had no dependable view of inventory, fulfilment, invoices, or account activity.

Constraints that shaped the build
  • Every customer organisation required its own catalogue, contract prices, payment terms, roles, and approval policies.
  • The ERP had to remain the source of record for products, inventory, invoices, credit, and fulfilment.
  • Large repeat orders and bulk SKU entry needed to remain fast for procurement teams working from spreadsheets.
  • The platform had to support multiple brands, markets, currencies, tax rules, and fulfilment locations from one codebase.
01

Model the commercial rules

We mapped the quote-to-cash journey and separated global product data from account-specific assortment, pricing, credit, approval, tax, and delivery policy.

02

Design tenancy into the core

Organisation boundaries, buyer roles, branches, cost centres, approval limits, and delegated administration became first-class platform concepts.

03

Build around ERP events

Spring Boot services consumed product, price, inventory, customer, invoice, and fulfilment changes while protecting the buying experience from ERP latency and downtime.

04

Launch account by account

Pilot customers validated negotiated pricing, bulk ordering, approvals, and fulfilment visibility before each market and brand moved onto the shared platform.

Buyer portal

Account-aware catalogue and search, contract pricing, saved lists, rapid reordering, bulk upload, quotes, checkout, payments, and order tracking.

Commerce services

Java services for catalogue, pricing, customer accounts, carts, approvals, orders, payments, invoices, and fulfilment orchestration.

Operations console

Customer onboarding, catalogue and pricing controls, order exceptions, credit visibility, impersonation with audit, and delegated account administration.

ERP and event integration

Resilient synchronisation, Kafka event flows, reconciliation tools, retries, and operational monitoring around the existing ERP.

24/7

self-service ordering outside sales-office hours

RBAC

organisation, branch, buyer, approver, and administrator roles

1 core

supporting multiple brands, markets, and commercial models

Events

keeping commerce and ERP workflows synchronised and observable

Core technology
  • Java
  • Spring Boot
  • React
  • Next.js
  • PostgreSQL
  • Kafka
  • Redis
  • OpenSearch
  • OpenTelemetry
  • AWS
What mattered most

The difficult part of B2B commerce was not the basket or checkout. It was making negotiated commercial relationships explicit enough that customers could serve themselves without losing the flexibility they received from a sales representative.

Does this resemble the problem in front of you?

Share the context, constraints, and where you are stuck. We’ll reply with useful questions and a clear next step.

Tell us about it