Systems
The REKOM backend is a single service from OnlinePOS’s point of view, reachable at
https://loyalty.xeniamoments.com (production) and
https://loyalty-staging.xeniamoments.com (test). Both hosts are TBC until
DNS is live; see Configuration and security.
Context diagram
Two integration surfaces
- Nexi Engage ↔ OnlinePOS
- OnlinePOS ↔ REKOM backend
Purpose: recognise the card and return a loyalty ID to the POS.
- On Windows, the POS drives the Viking terminal through BAXI. The lookup
is BAXI action 193 (
getasset) carrying only thecardref; no token is distributed to terminals. Lookups only work once the store (BAX) is enrolled with Nexi Engage, which the terminal does with action 114 (registerstore) at every startup. See Store enrollment. - On Android, Softpay calls the Nexi Engage backend directly. No enrollment is needed (Nexi, 31 Aug 2026).
Design principles
These are the properties the rest of the document is derived from.-
One payment motion. The guest taps to pay once. Behind that single tap
the terminal reads the card, Nexi Engage recognises the member, and the basket
goes to the REKOM backend. Then one of two things happens, and the guest notices
neither:
- the sale proceeds straight on with the original amount (no member, no benefit, or no answer in time), or
- the amount is adjusted down with the loyalty discounts before it is authorised.
- No interaction during the call. The basket call is a pure calculation. Any choice the guest makes (vouchers, upsell) happens before payment intent, in REKOM’s own channels (REKOM, 31 Aug 2026; accepted 4 Sep 2026).
- The returned basket is the truth. The REKOM backend is the source of truth for all discount calculation, including what happens to discounts already on the basket; OnlinePOS validates schema and arithmetic only (agreed 7 Oct 2026).
-
Fail open. If the REKOM backend does not answer in time, the sale completes
normally with the original basket. Only the order’s loyalty status is set to
failed; the sale itself is not failed. Loyalty never blocks a sale (agreed 4 Sep 2026). - Immutable transactions. A finalised transaction is never changed. Loyalty metadata is written only while the basket is sent and received (agreed 17 Aug 2026).
- Separate books. OnlinePOS’s audit trail is unchanged; loyalty and discount reporting are REKOM’s, fed by the REST sync (agreed 7 Oct 2026).