Discounts do not stack
Each action calculates the price from the base price and applies only if the result is lower than the current one. The best discount for the customer wins.
A single source of truth for discounts, bonuses and offers across the whole chain. Tills call it through an API, and the marketer manages rules in the browser.

The loyalty web center keeps the discount rules, bonus accounts and customers of your whole chain in one place. The till sends a receipt for calculation and gets the final prices back, and rule changes reach the stores within seconds.
Each action calculates the price from the base price and applies only if the result is lower than the current one. The best discount for the customer wins.
Rule order is set explicitly. The "stops further discounts" flag works only if the rule actually changed the price.
Bundles are calculated in a separate pass after all rules and apply only when they are cheaper for the customer. XY discounts, tiers and product pairs are supported.
A rule follows the date and time of the receipt. Time windows work across midnight, and there is a birthday window.
Rules do not take effect until they are published. Publishing validates them and saves a versioned snapshot, and the version history stays available. A new version reaches store nodes within seconds.

Financial, goods, bonus and corporate. States: created, active, suspended, closed.
Bonuses are awarded per receipt or per line, with a visit multiplier and an expiry term. The account opens automatically on the first accrual.
Daily expiry from a queue, a bonus rate per chain, and a movement history for every account.
The till works with the center in three steps. The key is tied to the point of sale, and a foreign point is refused.
By card, chip, number or phone. The answer contains the customer, group, status and balances with a freshness mark.
Prices per line with the source rule, gifts, preliminary bonuses, messages. Separately, why a discount did not apply: the first unmet condition.
The receipt is posted in one transaction. Repeating the request returns the same answer, and an outdated calculation is rejected.
A calculation can be cancelled before the receipt is closed. The API documentation is open, and we discuss connecting tills from other makers at the demo.
The same engine runs in the center, in the store node (about 8 ms per calculation) and in the core inside the till. If the connection drops, the receipt is calculated locally or without discounts, closed and queued for resending. Only a payment method can be blocked: insufficient funds, an exceeded offline quota or an inactive customer.

Rules, customers, accounts, receipts, products, stores and reports in the browser, on the Synngate platform. The interface is in ro, ru and en.
Hosted in our cloud or on your side. PostgreSQL or SQL Server, a Windows service or Docker.
Permissions by role, an exchange journal "as it arrived", and an access key for every point.
Customers, cards, owner groups, products, barcodes, special prices and rules are moved by a dedicated loader, and the export is read-only. The center's calculation is checked against the ERP module's calculation on a test set of receipts before launch. Certificates, coupons and stamp cards remain in the ERP module.
It runs the rules and bonuses of the whole chain separately from the accounting system, with a till API, store nodes and browser administration.
The till keeps selling. Calculation runs in the store node or in the till core, and receipts made offline are resent later.
In our cloud or on your server, with PostgreSQL or SQL Server, as a Windows service or in Docker.
There is an open API for it: identification, calculation, confirmation. We agree on the connection at the demo.
A 30-minute conversation about your loyalty program, with no generic slides.