My-Scan
Introduction
My-Scan is Extenda Retail's self-scanning / self-service platform. It supports the complete shopping trip - starting on a mobile or handheld scanning device, scanning and managing a basket, checking out, paying, and verifying the basket through a post-checkout rescan performed by a store employee.
API Groups
My-Scan's public and internal capabilities are organized into three API groups, each independently versioned and documented (OpenAPI/Swagger):
| Group | Consumed by | Purpose |
|---|---|---|
| Shopper API | Mobile / handheld scanning apps | Drives the basket flow: create/continue a basket, add/remove/update items, price checks, promotions, finish (checkout) a basket, retrieve parameters. |
| POS API | POS / SCO systems | Download the finalized ticket for payment, and upload the payment result back to the backend for reporting/analytics. |
| Administration API | Back-office / support tooling | Look up ongoing baskets for a customer or store, and force-cancel a stuck or abandoned basket — without needing device access. |
Core Services
My-Scan is implemented as a set of cooperating backend services. Three have primary developer-facing documentation:
| Service | Responsibility |
|---|---|
| My-Scan Core Service | The central logic and API layer. Owns the basket/ticket lifecycle and exposes the Shopper, POS, Administration, and Internal APIs described above. Orchestrates checkout via configurable checkout engines (Hii Retail Checkout Engine or legacy SelfScan backends). |
| My-Scan Rescan Service | An on-premise service used after checkout: a store employee re-scans some or all of the shopper's items (full or partial rescan) to catch discrepancies before the transaction is finalized. |
| My-Scan ItemData Service | Provides item, pricing, and promotion lookups (by barcode or item number), supporting both on-premise and multi-tenant cloud deployments. |
Wider Ecosystem
Beyond the Core Service, Rescan Service, and ItemData Service, My-Scan is supported by a broader set of internal services and tooling maintained by Extenda Retail, covering areas such as:
- Device & terminal management — registering, managing, and monitoring handheld scanners and scanner walls (docking/release stations).
- Rescan support — persisting rescan data and determining when a rescan should be triggered for a given shopping trip.
- Shopper & customer data — managing shopper profiles and customer records used during a shopping trip.
- Platform services — centralized parameter/configuration management, request routing/authentication, and logging.
- Analytics & loss prevention — reporting, self-service analytics, and fraud/impact-control integrations.
- Messaging — asynchronous notifications for scenarios such as abandoned terminals.
- Tooling & infrastructure — internal admin tools, hosting/deployment automation, shared libraries, and integration test suites.
All of these are internal (private) repositories maintained by the My-Scan team. This documentation currently focuses on the Core Service, Rescan Service, and ItemData Service, since these expose the primary developer-facing APIs; the remaining services provide supporting infrastructure, tooling, and internal integrations and are not separately documented here.
For the external systems My-Scan integrates with (identity, configuration, catalog/pricing, payments, and loss prevention), see Integrations.
Typical Shopping Trip Flow
- A shopper starts a session on a mobile or handheld device, creating a basket via the Core Service (Shopper API).
- As items are scanned, the Core Service validates each action, applies pricing/business rules, and resolves item/price/promotion data via the ItemData Service.
- When the shopper finishes, the Core Service starts checkout — which may include a rescan step, where the Rescan Service guides a store employee through re-verifying some or all scanned items.
- Once validated, the basket/ticket is finalized. Payment can happen directly on the shopper's device (e.g. via Softpay) or via download to a POS/SCO (POS API).
- Support staff can use the Administration API at any point to inspect or cancel ongoing baskets if something goes wrong.