Directional. Field names, enum values, headers and JSON structures on this page
show which information is exchanged, not the final names. None of them has been
aligned with OnlinePOS yet. REKOM will adopt whatever OnlinePOS has by default for
the order object and its webhooks, and does not require any of these specific names.
One post-sale event
Proposed — for OnlinePOS confirmation. Version 1 had three REKOM endpoints after
the sale:
loyaltySaleFinalization, loyaltySaleCancellation and loyaltyOfflineSale.
Version 2 merges them into one event, POST /v1/onlinepos/sale, with a status.
This removes the “three versus four webhooks” ambiguity in the 4 Sep text and gives
REKOM one record per calculation.Statuses
Failure reasons
Payload
The event carries the GUID, the status, the OnlinePOStransactionId and
receiptNumber, the same context block as the basket request (venue, cash
register, BAX, clerk, channel), the loyalty ID if one was resolved, the amount
actually paid and the loyalty discount total that ended up on the transaction.
See the API reference for the schema and examples.
Data on the transaction
Agreed 7 Oct 2026, mechanism agreed after 7 Oct 2026: the calculation GUID, the common loyalty/order ID, is stored on the order and exposed through the REST API as a meta attribute.
Proposed — for OnlinePOS confirmation. Since meta attributes are now the agreed
carrier for the GUID, REKOM proposes storing the loyalty ID and the order loyalty
status as two further meta attributes on the same order, so that Phase 1 attribution
and support lookups need no separate tag or structure (open point O3).
REST sync and reconciliation
The REKOM backend pulls transactions through the existing OnlinePOS REST API, as it does today for other purposes (“we sync orders anyway”, 3 Sep 2026; agreed 7 Oct 2026).
OnlinePOS’s audit trail and end-of-day figures are unaffected by any of this
(agreed 7 Oct 2026).
Receipts
OnlinePOS stores the discount data needed to reprint or reproduce the receipt (3 Sep 2026): note-line text, discount amount, discount code and the footer text. Nothing is fetched from the REKOM backend to print a receipt.Offline sales
When the POS is offline, no lookup and no live pricing happen; the sale completes with the original basket (V1 §14). When the connection returns and the order is replayed to the OnlinePOS backend, the backend sends one sale event withstatus: failed, failureReason: offline, the loyalty ID if the terminal still
returned one, and the transaction ID. The POS generates a calculationId for the
attempt even though no call was made, so the event has a key.
Offline-replayed sales are not priced afterwards. The REKOM backend may credit
the member for the spend (points, visit) from the REST sync, but no discount is
applied retroactively. Finalised transactions are immutable (17 Aug 2026).