Version 2 — 8 October 2026. This document replaces OnlinePOS’s Version 1
(28 Aug 2026, asynchronous model) and its 4 Sep 2026 update (synchronous model).
It was agreed on 7 Oct 2026 that REKOM rewrites the description with the clarified
points and sends it back to OnlinePOS for review. This is that rewrite.
Purpose
REKOM operates a loyalty programme for its guests. When a guest pays by card at an OnlinePOS till in a REKOM venue, the card is recognised through Nexi Engage, the basket is sent to the REKOM backend, and the REKOM backend returns the basket with the guest’s loyalty benefits applied as discounts. The guest approves one payment on the final amount. OnlinePOS keeps its audit trail unchanged; loyalty and discount reporting live in REKOM. This document describes the integration end to end: the systems involved, what each party is responsible for, the decisions that are already settled, REKOM’s proposals for everything that is not, and a draft API contract for the two endpoints the REKOM backend exposes to OnlinePOS.Parties
How to read this document
Every statement carries one of four statuses, so OnlinePOS can tell at a glance what is settled and what needs an answer.Agreed
Settled between the parties. The date it was agreed is given in-line, e.g.
agreed 7 Oct 2026. Sources are the shared Google Doc, the
“Rekom Loyalty Beskrivelse” thread and the “Rekom | Nexi Engage integration” thread.
Proposed
REKOM’s Version 2 proposal. Marked proposed — for OnlinePOS confirmation
(or Nexi, where relevant). Silence is not acceptance; each one is listed in
the open points.
Open
Not yet resolved. Each open point names an owner and, where REKOM has a view,
REKOM’s proposal. See the open points.
Not chosen
An alternative that was on the table and was rejected, marked ❌ with the date
and the reason. Kept so nobody re-proposes it without knowing why it was dropped.
Example: Option 2 for store enrollment.
Directional (see the banner at the top of this page). Wherever this document
names a field, header, enum value or JSON structure (
calculationId, loyaltyId,
noDiscount, lineDiscountCode, the context block, the totals block, the error
codes, and so on), the name shows which information is exchanged, not its spelling.
REKOM adopts whatever OnlinePOS has by default and does not require any specific
name. Pages that rely on such names repeat this as a “Directional” note.Where to start
Architecture overview
The systems, the two integration surfaces and the context diagram.
Loyalty basket flow
The synchronous call, its latency contract, timeouts, fallback and statuses.
Basket rules
What the REKOM backend may change, the discount code, receipt text, rounding and validation.
API reference
Draft OpenAPI 3.1 contract for
POST /v1/onlinepos/basket and POST /v1/onlinepos/sale.Decision log
Every decision with date, status and source.
Open points
What still needs an answer, who owns it, and what REKOM proposes.
Status of this document
Commercial terms (estimates, billing) are deliberately outside this document and
are handled separately between the parties.