Case Study
IOI-TECH Retail POS & ERP Integration
IOI-TECH is a technology services provider headquartered in Riyadh, Saudi Arabia, with a second office in Jeddah. Since its founding in 2018 the company has delivered digital transformation projects across Saudi Arabia and the wider Middle East, serving startups, SMEs and global enterprises in more than 20 industries — from retail, banking and telecommunications to oil & gas, healthcare and government.
Its portfolio spans enterprise resource planning (SAP S/4HANA, SAP Business One, Oracle Fusion, Odoo), HR management, cloud hosting, web and portal development, data analytics and AI, cybersecurity, mobile development and sales automation — together with the implementation, training and support services around them.
ERP is IOI-TECH's core competence, and its retail clients run their business on SAP. What they were missing was a commerce and point-of-sale layer that speaks the same language as the ERP. IOI-TECH chose nopCommerce as the foundation and partnered with us to build it.
The Project
The challenge
IOI-TECH's retail customers in Saudi Arabia and the Middle East run their finance, inventory and master data in SAP Business One, while selling through both an online store and physical shops: multiple branches, cash registers and cashiers, cash drawers that must be counted and reconciled, branch-level stock, negotiated price lists per customer, and products sold in several units of measure at once — piece, box, pallet.
Standard nopCommerce covers none of this, and bolting a separate POS product onto the web shop would have produced the classic result: three systems, three versions of the truth, and staff re-keying products, customers and orders between the shop floor, the website and the ERP.
The solution
We designed and built a suite of eight integrated nopCommerce 4.50 plugins on .NET 6 that turn a standard nopCommerce installation into a full omnichannel retail platform wired directly into SAP Business One. All business logic lives in the store backend; POS terminals talk to it over a dedicated REST API layer, and the store talks to SAP over the Service Layer. A sale rung up at the till, an order placed on the website and a document posted in the ERP all describe the same transaction. Everything ships as plugins — the nopCommerce core is never forked, so the client stays on the upgrade path.
SAP Business One integration
The integration module connects nopCommerce to the SAP Business One Service Layer through a purpose-built authenticated HTTP client, covering business partners and partner groups, items and item groups, orders, invoices, delivery notes, credit notes, incoming payments, price lists, warehouses, VAT groups, currencies, cost centres, dimensions, sales persons and document series.
- Bi-directional, per-entity control. Products, customers, vendors, orders, deliveries and VAT groups each have their own sync switch and their own direction — SAP to nopCommerce, nopCommerce to SAP, or both — so each client decides which system owns which data.
- Real time plus scheduled. An event consumer pushes changes to SAP the moment they happen — order placed, order paid, order cancelled or refunded, shipment delivered, product or customer or vendor created, updated or deleted — while a scheduled task runs the periodic full reconciliation.
- Mapping instead of hard-coding. Admin-managed mappings tie nopCommerce categories, customer roles, vendor roles, tax categories and warehouses to their SAP counterparts, with business partner card codes and customer dimensions maintained per record. Orders can be posted to SAP automatically or released manually, and document numbering follows the client's SAP series.
- Operable in production. Every exchange is logged and searchable from an admin grid, with automatic retention cleanup, so a failed document is diagnosed from the store backend rather than from the ERP.
Retail and POS modules
- Point Of Sale — the core retail module. Branches and branch product assignments, POS devices and device types, tills with open/close and cash-count workflow, cash drawer movements with configurable reasons, business date handling, barcode lookup, in-store pickup points, a token-based receipt printing engine with QR codes, per-device license key activation, and a dedicated POS permission set with device- and cashier-scoped API security.
- Inventory — stock transfers between branches and warehouses, so branch inventory stays accurate as goods move.
- Price List — multiple price lists with per-product values, mapped to individual customers and exposed through the API, for wholesale and negotiated B2B pricing alongside the retail price.
- Product Unit Conversion — unit dimensions and per-product conversion factors synchronised across the connected systems, so the same product can be ordered, picked and sold in different units.
- Split Payment — a single order settled with several payment methods at once, each transaction recorded separately for end-of-day reconciliation.
- Pay In Cash — cash settlement at the counter, tied into the till and drawer workflow.
- Delivery Shipping — shipping rates by weight and order total for goods sold in store but delivered to the customer.
Engineering approach
- Clean plugin architecture — domain entities, services, factories and DTOs separated per module; FluentMigrator migrations for schema, so installation and upgrades are repeatable.
- Admin UI built with native nopCommerce Razor views and view components, so store managers work in the interface they already know.
- A REST API layer for the POS terminal app, secured with token authentication plus custom authorisation attributes that scope every request to a licensed device and an authenticated cashier.
- Modular delivery: each plugin installs on its own and the suite composes into a complete solution, so a client can start with the web shop and ERP link and add the POS layer later.
The result
IOI-TECH now has a repeatable retail platform it configures per client instead of building bespoke each time. Store, web and ERP share one catalogue, one stock figure and one customer history; orders and payments reach SAP without anyone re-typing them; cashiers open and close tills with a full audit trail of every drawer movement; and B2B customers are served with their own price lists and units of measure — all inside a nopCommerce installation that can still be upgraded.
Technologies
.NET
C#- ASP.NET Core MVC
- nopCommerce 4.50
Entity Framework Core- LinqToDB
SQL Server- FluentMigrator
- AutoMapper
- Razor Views
REST API- JWT
- FluentValidation
- QRCoder