Skip to main content
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 OnlinePOS transactionId 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).
REKOM’s design does not depend on anything beyond the GUID: the REKOM backend already holds the full request and response for every calculation, keyed by GUID. The REST sync adds the OnlinePOS transaction ID, receipt number, final amounts and the discount code OnlinePOS recorded.

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 with status: 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).

Cancellation versus refund