Vendors / Open source & self-hostable

Chromis POS

A solo-maintained uniCenta/Openbravo-lineage Java POS whose liveness is the weak point: the GitHub ChromisPOS repo contains a single squashed import commit dated 2025-08-01 with no tags or releases, SourceForge shows a last-update date of 2024-07-15, and the companion ChromisKitchenScreen repo has not been pushed since 2018-06-02 — the most recent verifiable activity is that 2025-08-01 GitHub import.

scored maintenance legacy rubric

Claims in scope
278
Scored
45
Assessed
43
Unknown
235
Not applicable
36
Cells challenged
0
85% of in-scope claims are unknown. This record measures what Chromis POS publishes at least as much as what it does. A vendor that documents little scores low here whether or not the capability exists. Absence of evidence is recorded as unknown, never as no.

Identity

Owner
John Lewis (solo maintainer; community contributions via GitHub). Independent project, not vendor-backed.
Who it is for
Small retail and hospitality operators on the uniCenta/Openbravo Java lineage who want desktop installers and a remote kitchen screen without a subscription
Site
https://github.com/ChromisPos/ChromisPOS

Pricing

transparency: unknown · unit: free (self-hosted, no per-location or per-terminal fee) · processor lock-in: no

Software
Free open-source software, self-hosted. chromis.co.uk publishes no paid tiers, no subscription, and no per-terminal fee. Distributed via SourceForge and GitHub with dedicated Windows, macOS and Linux installers.

Capabilities

Every claim is binary and checkable. Grades: A primary documentation · B product documentation · C pricing or feature page · D marketing claim · E third-party reporting · F inference with no source. A yes on a differentiator claim requires A or B.

Order capture & FOH workflow

Unknown

order-capture-floor-plan-editor

Not scored by this record.

Unknown

order-capture-seat-level

Not scored by this record.

Unknown

order-capture-coursing-hold-fire

Not scored by this record.

Partial

order-capture-split-merge

Both halves exist but each in exactly one shape. Split: JPanelTicket.splitTicket opens the ReceiptSplit dialog ('caption.split=Split Receipt' in the shipped locale bundle) -- two receipt panes with four arrow buttons moving all selected lines or a single unit of a line (getSelectedLinesUnit) from the active receipt to a new second one; on OK the split-off receipt is sent straight to payment (closeTicket(ticket2)) and the remainder becomes the active ticket, so N-way splitting is possible only by repeating the two-way split and paying each piece as you go. Merge: JTicketsBagRestaurantMap prompts 'This will Merge tables. Are you sure you want to do this?' (message.mergetablequestion), appends every line of the clipboard table's ticket onto the destination table's ticket, and clears the source table. Named shortfalls: splitting is by item line only -- no seat concept exists anywhere in the 1185-path source tree, no even N-way split, and no arbitrary dollar or percentage amount split; merging is whole-table line concatenation in the restaurant module rather than a check-merge operation; and nothing supports re-splitting or merging after partial payment, because the split-off check is paid in full at the moment of splitting. https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/sales/ReceiptSplit.java · retrieved 2026-08-04

A
Unknown

order-capture-bar-tab-preauth differentiator

Not scored by this record.

Unknown

order-capture-transfer-audit

Not scored by this record.

Unknown

order-capture-native-handheld

Not scored by this record.

Yes

order-capture-offline-order-entry

Self-hosted desktop installers against a local database; internet is not in the order-entry path, though no offline matrix is published. https://chromis.co.uk/ · retrieved 2026-08-01

E
Unknown

order-capture-qr-same-check differentiator

Not scored by this record.

Unknown

order-capture-kiosk-first-party differentiator

Not scored by this record.

Unknown

order-capture-drive-thru

Not scored by this record.

Unknown

order-capture-drive-thru-timers

Not scored by this record.

Unknown

order-capture-voice-ai differentiator

Not scored by this record.

Unknown

order-capture-throttling differentiator

Not scored by this record.

Partial

order-capture-scheduled-orders

DeliveryDialog captures a 'Delivery Date :' field alongside three free-text address lines, postcode, phone and comments, so a future date can be attached to a ticket. Shortfall: nothing fires it. There is no lead-time setting per channel and no scheduler in the POS module (the source tree contains no scheduling class outside the admin-side Product Price Scheduler); items reach the kitchen printer or screen only when the operator presses the Send Order button, and the Kitchen Screen simply polls the database every 5 seconds for what has already been sent. The Restaurant & Orders configuration tab in the admin manual (pp. 33-34) documents table display, pickup IDs and layaways with no future-order or fire-time option. https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/commons/dialogs/DeliveryDialog.java · retrieved 2026-08-03

A
Unknown

order-capture-catering

Not scored by this record.

Unknown

order-capture-order-ready-signal differentiator

Not scored by this record.

Unknown

order-capture-void-comp-controls

Not scored by this record.

Menu, modifiers & pricing engine

No

menu-pricing-nested-modifiers

The manual closes the architecture explicitly: 'There are 3 components required for the attributes' -- Attribute Sets, Attributes, Attribute Values (p. 97). Those are three components of one flat selection tier, not three levels of nesting: a product points at one attribute set, the set holds N attributes, each attribute resolves to a single value pick, and a value cannot open a further group. The worked example is Steak Meal / Preparation-Sauce-Potatoes / Rare-Medium-Well done (pp. 99-102). The Attribute panel's full option list is enumerated on pp. 104-105 -- add new record, rename, save, delete, show all attributes, add existing attribute, remove attribute from set -- and contains no minimum, maximum or selection-count field; the only per-attribute setting is a 'Line' column that orders how they display on the POS. Source confirms the data model: AttributeSetInfo.java and AttributeInfo.java each carry exactly id, name and siteGuid, with no parent, min, max or required member. Forced selection exists only once and only at the product level -- 'when an attribute is assigned, it can be made mandatory so that when the product is selected in the Point-of-Sale the attributes is always shown' (p. 171) -- which is a single flag over the whole set, not an independent flag per level. The second mechanism does not add depth either: auxiliary items are a flat assigned/not-assigned link between a base product and add-on products (pp. 183-185), and 'when a product is flagged as an auxiliary item, the product can then only be sold as an add on to a product' (p. 173), so an auxiliary cannot itself be a base carrying its own auxiliaries. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-04 · not refetchable · site policy · graded B when read

C
No

menu-pricing-modifier-price-by-parent-size

The admin manual enumerates both modifier mechanisms and neither carries a per-parent price. Attributes (pp. 95-107) are unpriced choice lists built from attribute sets, attributes and values -- the worked example is Steak / Cook / Rare-Medium-Well done, with no price field anywhere in the three-level structure. Auxiliary Items (pp. 183-185) are ordinary products flagged 'Auxiliary' that carry their own single sell price, and the Auxiliary Items panel does nothing but link them to base products: 'the auxiliary items that are required as part of the offering can be assigned or removed, simply select assigned against the product.' There is no price column on that assignment, no size axis on a product, and therefore no matrix. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

menu-pricing-fractional-placement differentiator

Not scored by this record.

Unknown

menu-pricing-half-and-half-rule differentiator

Not scored by this record.

No

menu-pricing-topping-quantity-tiers

The only tiering Chromis documents is unrelated: 'Pricing Tiers -- Chromis allows products to be sold with prices that are changed based upon the quantity purchased. The application supports 5 levels of pricing' (p. 176), i.e. quantity price breaks on the base product, and the POS strings confirm they conflict with other pricing ('Discount can not be applied to an item with tier pricing assigned'). Auxiliary items -- the topping mechanism -- are assigned to a base product with an assigned/not-assigned flag only, with no light/regular/extra tier and no price multiplier. Adding the modifier twice is the only path. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

menu-pricing-size-style-matrix differentiator

Not scored by this record.

Unknown

menu-pricing-included-allowance differentiator

Not scored by this record.

Unknown

menu-pricing-combos

Not scored by this record.

Unknown

menu-pricing-upsell-prompts differentiator

Not scored by this record.

Unknown

menu-pricing-86-propagation

Not scored by this record.

Unknown

menu-pricing-countdown-auto-86 differentiator

Not scored by this record.

Unknown

menu-pricing-dayparting

Not scored by this record.

Unknown

menu-pricing-channel-price-books

Not scored by this record.

Unknown

menu-pricing-dual-pricing differentiator

Not scored by this record.

Unknown

menu-pricing-allergen-nutrition

Not scored by this record.

Unknown

menu-pricing-recipe-linkage differentiator

Not scored by this record.

Unknown

menu-pricing-3p-menu-push

Not scored by this record.

Unknown

menu-pricing-dynamic-pricing

Not scored by this record.

Payments & money movement

Unknown

payments-processor-choice differentiator

Not scored by this record.

Unknown

payments-published-rates differentiator

Not scored by this record.

Unknown

payments-dual-pricing differentiator

Not scored by this record.

Unknown

payments-surcharge-guardrails differentiator

Not scored by this record.

No

payments-emv-nfc

Software-only project with no first-party terminal line, so there are no vendor terminals to certify for EMV or NFC. https://chromis.co.uk/ · retrieved 2026-08-01

E
Unknown

payments-softpos-tap-to-pay differentiator

Not scored by this record.

Unknown

payments-pay-at-table

Not scored by this record.

Unknown

payments-qr-guest-pay differentiator

Not scored by this record.

Unknown

payments-tip-adjust

Not scored by this record.

Unknown

payments-tip-pooling differentiator

Not scored by this record.

Unknown

payments-offline-store-and-forward differentiator

Not scored by this record.

Unknown

payments-offline-decline-liability differentiator

Not scored by this record.

Partial

payments-gift-cards

First-party Electronic Gift Cards are real and fully documented (pp. 163-169): enabled on the Card Setup tab with a card block prefix, activated at sale via a 'New Gift Card' panel, sold at a 0% tax rate 'so any sales tax is calculated on the final sale and not the gift', toppable up from the sales panel, and redeemable from a Gift Card tab on the payment panel for either the full amount or a keyed partial amount, with more than one card usable on a single ticket. Balance tracking is real-time and stored server-side, not on the card: 'the data is held in the database and not on the card' (p. 37), 'There is no rounding requirement, which means if the card has a balance of 5.00 and is used to pay a transaction of 3.00 then the card will still have a value of 2.00' (p. 36), and the receipt prints the remaining balance. GiftCardLogic.java confirms it -- a giftcards table keyed on cardnumber with active and currentvalue columns, read live per redemption, updated by 'update giftcards set currentvalue = ? where cardnumber = ?', with every movement appended to a giftcardtrans ledger carrying activity, spendvalue, cardbalancevalue and ticketid. Because every terminal runs against one shared MariaDB/MySQL instance, balances are common to all terminals on the install. Named shortfall: the claim's online-ordering leg is unattainable, because Chromis has no online-ordering channel to redeem through -- it is a Swing client on a direct JDBC connection with no HTTP, REST or webhook package anywhere in its 1185-path tree, and redemption is a manual card-number keying at the physical payment panel. There is also no balance-enquiry or card-management panel documented outside the sale flow. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-04 · not refetchable · site policy · graded B when read

C
Unknown

payments-house-accounts

Not scored by this record.

Unknown

payments-split-tender

Not scored by this record.

Partial

payments-refund-void-controls

Role-based control is real: User Roles carry a checkable rights tree with permission levels 1-9 (manual pp. 47-57), and the POS source gates line removal and quantity negation on AppUser.hasPermission('sales.EditLines'), totals on 'sales.Total', reprints on 'button.reprintlastticket', with a per-product maximum discount enforced in the product editor. Two named shortfalls. First, the audit trail is not immutable: 'Chromis provides some basic auditing capabilities for the number of No Sales and any lines removed from the sales ticket. By default, these are cleared from the database at an age of 28 days, this is adjustable and entries can be retained for 264 days (1 year) if required' (p. 27) -- deletion is a scheduled MySQL event. Second, there is no manager-approval step: rights are held by the signed-in operator's own role, so an action is attributed to whoever performed it and no separate approver is captured. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

payments-chargeback-tooling differentiator

Not scored by this record.

Unknown

payments-card-on-file differentiator

Not scored by this record.

Unknown

payments-payout-timing differentiator

Not scored by this record.

Unknown

payments-p2pe-pci4

Not scored by this record.

Kitchen & production

Partial

kitchen-station-routing

Site documents a remote kitchen screen sending orders to remote food preparation areas; per-item or per-category routing rules not described. https://chromis.co.uk/ · retrieved 2026-08-01

B
No

kitchen-expo-consolidation

The Kitchen Display Screen product page carries the vendor's complete feature enumeration and no expo role is in it: 'Support for up to 9 separate locations, for example starters area, mains, desserts and bar. 8 orders in full details displayed at a time. Side panel for more than 8 orders. Time elapsed since order was placed. Table or reference details for each order. Recall last order. Screen refresh at 5 second interval. Screen resolutions from 1024x768. Program keys to order panels, for use with keyboard. Low hardware costs. Easy to use Configuration options.' Each screen is one of the nine locations showing what the POS routed to it; nothing consolidates several stations into one order view or holds completion until every contributing station has bumped. There is no separate KDS manual -- this page and the ChromisKitchenScreen repo are the whole documentation set. https://chromis.co.uk/kitchen-display-screen/ · retrieved 2026-08-03

C
Unknown

kitchen-course-firing differentiator

Not scored by this record.

Unknown

kitchen-prep-time-pacing differentiator

Not scored by this record.

Unknown

kitchen-order-throttling differentiator

Not scored by this record.

Unknown

kitchen-channel-pause-propagation differentiator

Not scored by this record.

Unknown

kitchen-order-ready-callback differentiator

Not scored by this record.

Partial

kitchen-bump-bar-hardware

The feature list includes 'Program keys to order panels, for use with keyboard', so keys can be mapped to order panels rather than driving the screen by touch. Shortfall: it is a generic PC keyboard, not a bump bar -- no bump bar or programmable keypad model is named, certified or listed anywhere, and the minimum-requirements list for both the Windows/Linux and Raspberry Pi builds reads 'Keyboard (only required for configuration), Mouse, Display', treating the keyboard as setup hardware rather than the service-time input device. https://chromis.co.uk/kitchen-display-screen/ · retrieved 2026-08-03

C
Unknown

kitchen-all-day-counts

Not scored by this record.

Unknown

kitchen-sla-alerts

Not scored by this record.

Unknown

kitchen-printer-fallback differentiator

Not scored by this record.

Unknown

kitchen-offline-operation differentiator

Not scored by this record.

Unknown

kitchen-item-build-screens differentiator

Not scored by this record.

Unknown

kitchen-pizza-fractional-display differentiator

Not scored by this record.

Unknown

kitchen-recall-refire

Not scored by this record.

Unknown

kitchen-order-modification-alerts differentiator

Not scored by this record.

Unknown

kitchen-guest-ready-notification differentiator

Not scored by this record.

Unknown

kitchen-waste-logging

Not scored by this record.

Unknown

kitchen-speed-of-service-reporting

Not scored by this record.

Unknown

kitchen-prep-forecasting

Not scored by this record.

Delivery, dispatch & third-party channels

No

delivery-driver-roster

Positive absence from the complete shipped source. The only 'driver' match in the full 1185-path repository tree is src-pos/uk/chromis/pos/forms/DriverWrapper.java, which is a java.sql.Driver JDBC adapter (76 lines wrapping acceptsURL/connect), not a delivery driver. The entire delivery capture surface is DeliveryDialog -- delivery date, name, three free-text address lines, postcode, phone, comments -- with no driver field, no assignment state and no run entity; the delivery fee is a manually keyed charge line. Employee Presence Management (admin manual pp. 88-94) gives every staff member clock-in/out and breaks but carries no driver role, no in-store/on-run/returning state and no run history; the People branch of the report tree ships only a Daily Presence report. No driver module exists to be first-class in. https://api.github.com/repos/ChromisPos/ChromisPOS/git/trees/HEAD?recursive=1 · retrieved 2026-08-04

A
No

delivery-dispatch-board

Positive absence. The full 1185-path source tree contains no dispatch class at all ('dispatch' matches zero paths), and the sales package enumerates every order-management surface that ships: JTicketsBag (simple/shared/restaurant variants), the restaurant table map, ReceiptSplit and DeliveryDialog. Delivery is an order type captured in DeliveryDialog with no driver, run or elapsed-time tracking, so there is nothing to put on a board. The only screen in the product range that displays pending orders with elapsed time is the Kitchen Display Screen, and its vendor page enumerates its complete feature list -- location displays, 8 orders at a time, elapsed time since order, table/reference, recall last order -- with no driver availability, no dispatch action and no multi-order run batching. https://api.github.com/repos/ChromisPos/ChromisPOS/git/trees/HEAD?recursive=1 · retrieved 2026-08-04

A
Unknown

delivery-route-map differentiator

Not scored by this record.

Unknown

delivery-driver-tracking differentiator

Not scored by this record.

Unknown

delivery-zones-polygon differentiator

Not scored by this record.

No

delivery-zone-pricing

DeliveryDialog is the entire delivery capture surface and it enumerates its own fields: delivery date, name, three free-text address lines, postcode, phone and comments. Nothing is geocoded or matched to a zone. The delivery fee is a manually added charge line, not a derived one -- the shipped POS strings are 'You can only add a Delivery Charge once to an order' and 'You are about to delete the Delivery Charge' -- and no per-zone fee, order minimum or quoted promise time exists anywhere in the product. The 230-page admin manual has no zone concept; its 'Orders' chapter is supplier purchase orders. https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/commons/dialogs/DeliveryDialog.java · retrieved 2026-08-03

A
Unknown

delivery-address-validation

Not scored by this record.

Unknown

delivery-driver-comp differentiator

Not scored by this record.

Unknown

delivery-cash-reconcile

Not scored by this record.

Unknown

delivery-daas-dispatch

Not scored by this record.

Unknown

delivery-daas-fallback differentiator

Not scored by this record.

Unknown

delivery-3p-direct-integration differentiator

Not scored by this record.

Unknown

delivery-3p-injection

Not scored by this record.

Unknown

delivery-menu-push

Not scored by this record.

Unknown

delivery-86-sync

Not scored by this record.

Unknown

delivery-store-pause

Not scored by this record.

Unknown

delivery-3p-reconciliation differentiator

Not scored by this record.

Unknown

delivery-injection-error-visibility differentiator

Not scored by this record.

Unknown

delivery-tracking-page

Not scored by this record.

Unknown

delivery-promise-time differentiator

Not scored by this record.

Unknown

delivery-offline-behavior

Not scored by this record.

Digital ordering & guest-facing channels

No

digital-first-party-web

Positive absence on both legs. The vendor's own site enumerates the complete product range as exactly two applications -- Chromis POS and the Kitchen Display Screen, both desktop installers -- with no online-ordering, web-ordering or e-commerce product anywhere in the navigation, and the founder's note that 'Over time other applications will be added to the Chromis product range' confirms the range is closed as listed (chromis.co.uk, retrieved 2026-08-04). And the software could not receive a web order if one existed: the full 1185-path repository tree contains no HTTP server, no web framework and no REST package -- Chromis is a Swing desktop client on a direct JDBC connection, and its only remote consumer (the Kitchen Display Screen) works by polling the shared database. There is no first-party web ordering site and no channel by which one could write orders into the POS. https://api.github.com/repos/ChromisPos/ChromisPOS/git/trees/HEAD?recursive=1 · retrieved 2026-08-04

A
No

digital-menu-single-source

No first-party digital channel exists for the POS menu to feed. The vendor's product range is two desktop applications (Chromis POS and the Kitchen Display Screen) with no web or app ordering channel, and the 1185-path source tree contains no HTTP, web or menu-export package -- so there is no digital menu to generate from the POS menu record, single-source or otherwise. The menu record itself lives once, in the shared MariaDB/MySQL database every terminal connects to, but the only consumers are POS terminals and the kitchen screen. Scored no on the same basis as digital-account-saved-payment: the capability's subject (a first-party web/app menu) is absent from the product by the vendor's own enumeration of what it ships. https://api.github.com/repos/ChromisPos/ChromisPOS/git/trees/HEAD?recursive=1 · retrieved 2026-08-04

A
Unknown

digital-native-app differentiator

Not scored by this record.

No

digital-account-saved-payment

Two independent blocks. There is no first-party digital channel to hold an account: chromis.co.uk ships exactly two applications, Chromis POS and the Kitchen Display Screen, both desktop installers. And tokenized card storage is impossible by the vendor's own statement in the manual's Introduction: 'At the time of writing Chromis does not include any Credit/Debit card integration due to PCI regulations, it is intended to investigate these at a later date.' Customer records exist (name, address, marketing opt-in, discount rate) but there is no saved payment method and no reorder flow. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

digital-upsell-engine differentiator

Not scored by this record.

Unknown

digital-scheduled-pacing

Not scored by this record.

Unknown

digital-fulfillment-modes

Not scored by this record.

Unknown

digital-qr-table

Not scored by this record.

Unknown

digital-kiosk differentiator

Not scored by this record.

Unknown

digital-group-ordering

Not scored by this record.

Unknown

digital-catering-portal differentiator

Not scored by this record.

Unknown

digital-voice-ai-phone differentiator

Not scored by this record.

Unknown

digital-drivethru-ai

Not scored by this record.

Unknown

digital-sms-ordering

Not scored by this record.

Unknown

digital-google-order differentiator

Not scored by this record.

Unknown

digital-apple-business-connect

Not scored by this record.

Unknown

digital-loyalty-attach

Not scored by this record.

Unknown

digital-subscriptions

Not scored by this record.

Unknown

digital-promo-parity

Not scored by this record.

Unknown

digital-guest-data-ownership differentiator

Not scored by this record.

Unknown

digital-checkout-pci-sca

Not scored by this record.

Unknown

digital-surcharge-transparency differentiator

Not scored by this record.

Guest data, loyalty & marketing

Partial

guest-loyalty-unified-profile

There is a single customer record per guest in one shared database, and every terminal writes to it, so in-store transactions across terminals do land on one profile with a Loyalty History tab (pp. 136-163). Shortfalls: there are no web, app or kiosk channels to merge from, so the cross-channel half of the claim has no subject; identity is a card number read by MSR or barcode rather than a phone or email match; and the manual documents no dedup or merge behaviour at all. It explicitly supports running anonymous card-only loyalty accounts and registered customers side by side ('you can operate both (anonymous or registered customer details) at the same time', p. 143) with no path described for reconciling the two into one identity. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

guest-loyalty-thirdparty-identity-attach differentiator

Not scored by this record.

Partial

guest-loyalty-accrual-models

Two configurable models ship: 'Earn x points for specified spend (ie GBP) -- You issue a specific number of points for each full GBP spent... You set the value of the voucher' (points-per-dollar, with a per-product Loyalty points multiplier, 0.00 to exclude an item, 3.00 for a promotion), and 'Earn & Burn -- You allocate the number of points an item will earn the card holder... You allocate the number of points that are needed to get an item', which the manual itself frames as the punch-card pattern ('buy 10 cups get 11th free'). Shortfall: they are mutually exclusive and effectively irreversible. 'Once selected and a transaction has been processed you cannot change to the other model... Any changes to the alternative model will result in all cards being made inactive and any points lost.' No spend-tier accrual exists. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

guest-loyalty-tiers differentiator

Not scored by this record.

Unknown

guest-loyalty-offline-behavior differentiator

Not scored by this record.

Unknown

guest-loyalty-offer-stacking-rules differentiator

Not scored by this record.

Unknown

guest-loyalty-targeted-offers differentiator

Not scored by this record.

Unknown

guest-loyalty-rfm-segmentation differentiator

Not scored by this record.

No

guest-loyalty-lifecycle-automation

Positive absence on both halves. The customer record carries a 'Receive Marketing' opt-in flag which, when enabled, requires an email address (p. 137) -- so the manual anticipates marketing being done, but the sending is external: 'It may be that the operating model use email to inform customers of offers etc.' Nothing in the 230-page manual, and no string in the shipped POS locale bundle, references a campaign, a birthday trigger, a first-visit or lapsed-customer rule, or any scheduled send; the Utilities menu's only scheduler is the Product Price Scheduler. Loyalty rewards are redeemed at the till against a points balance, not pushed to the guest. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

guest-loyalty-native-email-sms differentiator

Not scored by this record.

Unknown

guest-loyalty-consent-management

Not scored by this record.

Unknown

guest-loyalty-10dlc-registration

Not scored by this record.

Unknown

guest-loyalty-campaign-attribution differentiator

Not scored by this record.

Unknown

guest-loyalty-data-export-portability differentiator

Not scored by this record.

Unknown

guest-loyalty-review-capture-routing differentiator

Not scored by this record.

Unknown

guest-loyalty-referral-program

Not scored by this record.

Unknown

guest-loyalty-wallet-pass differentiator

Not scored by this record.

Unknown

guest-loyalty-privacy-rights-tooling

Not scored by this record.

Unknown

guest-loyalty-redemption-fraud-controls

Not scored by this record.

Unknown

guest-loyalty-ai-offer-recommendation differentiator

Not scored by this record.

Unknown

guest-loyalty-stored-value-gift

Not scored by this record.

Labor & workforce

Yes

labor-clock-in-at-pos

Employee Presence Management, pp. 88-94: 'An employee can clock in and out for the shifts from the Point-of-Sale screen, there is also the ability to record user breaks during a normal shift.' Break types are configurable records with a Visible flag controlling whether each appears 'in the timeclock', and break records cannot be deleted once an employee has used them. Identification is the POS login: a user is created with a name and role, a password is set via Reset Password, and a card number can be assigned with Assign Card (pp. 58-63). Absence reasons with a Paid Absence flag are maintained alongside. A 'Daily Presence' report ships in the People section of the report tree. No separate time-clock hardware is required. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

labor-photo-punch-verification differentiator

Not scored by this record.

Unknown

labor-offline-time-punch differentiator

Not scored by this record.

Unknown

labor-granular-rbac

An Admin component exists as a separate repo, but no per-action permission grid is documented publicly.

F
Partial

labor-manager-override-audit

Actions are attributed -- tickets carry the operating user, a Sales by User report ships, and the close-cash panel breaks takings down per user -- and the no-sale and removed-line audit described on p. 27 is queryable. Two shortfalls. It is not immutable: those audit entries are purged by a MySQL event schedule at 28 days by default, with 264 days the documented maximum retention. And there is no approver to attribute: Chromis authorises by the signed-in user's own role rights (permission levels 1-9, plus a Custom Permissions tab for scripted buttons), not by a manager stepping in to approve another user's action. The only 'override' in the product is the Override Lock right for table locks, which is a role grant rather than a supervisor prompt. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

labor-native-scheduling differentiator

Not scored by this record.

Unknown

labor-demand-labor-forecast differentiator

Not scored by this record.

Unknown

labor-realtime-labor-percent differentiator

Not scored by this record.

Unknown

labor-overtime-prevention differentiator

Not scored by this record.

Unknown

labor-break-compliance-by-state differentiator

Not scored by this record.

Unknown

labor-minor-labor-rules

Not scored by this record.

Unknown

labor-tip-pooling-rules

Not scored by this record.

Unknown

labor-tip-distribution-audit-trail

Not scored by this record.

Unknown

labor-qualified-tips-w2-reporting differentiator

Not scored by this record.

Unknown

labor-native-payroll differentiator

Not scored by this record.

Unknown

labor-payroll-export-formats

Not scored by this record.

Unknown

labor-shift-swap-workflow differentiator

Not scored by this record.

Unknown

labor-server-performance-metrics differentiator

Not scored by this record.

Inventory, purchasing & cost control

Partial

inventory-recipe-bom-costing

The multi-level half is documented and worked through. Recipes live on their own panel (Inventory > Recipes, pp. 186-192); any product can be flagged 'Is an Ingredient', and 'if the product is solely meant to be an ingredient disable In Catalog and it will not appear on the Point-of-Sale sales panel'. Sub-recipes are explicit: 'A recipe can also be an ingredient in another recipe, it cannot be and ingredient to itself', demonstrated by building a double cheese burger from patties, cheese slices and buns and then consuming that recipe as an ingredient of a meal deal. Cost is derived rather than keyed: 'In this panel you cannot enter a cost price for the product this is calculated based upon the ingredients in the recipe.' ProductsRecipeInfo.java matches -- a parent/child link row of productId, productKitId, quantity and isManaged, with no cost column, so depth comes from a kit product itself being a recipe parent. Named shortfall on the automatic-recalculation half: the only documented trigger is saving the recipe -- 'When the recipe is saved the cost price of the product is calculated' -- and the manual documents no recalculation on an ingredient's cost changing and no roll-up of a changed component into the parent recipes that consume it, so a cost move upstream leaves stored plate costs stale until each recipe is reopened and re-saved. Maintenance is rigid for the same reason: 'A product cannot be converted to a recipe', so promoting a bought-in item to an assembled one requires retiring the original product, creating a separate new recipe product, and re-pointing every recipe that referenced it. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-04 · not refetchable · site policy · graded B when read

C
Partial

inventory-unit-conversion-yields

Purchase-to-sell conversion exists: a product carries a Purchasing Unit of Measure and per-supplier pack sizes, and a barcode can be bound to a selling UOM plus a selling quantity so a case of 12 depletes 12 units (pp. 175-180). Shortfalls: the UOM table is only a name-to-quantity lookup -- 'Creating a new record only requires 3 fields: UOM code, Description, Quantity in the UOM' (p. 110) -- so there is no third, distinct recipe or count unit, and there is no yield or waste percentage anywhere. The Recipes panel takes an ingredient and a quantity and nothing else, and derives cost from the ingredient prices, so raw-to-usable loss cannot be modelled. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

inventory-theoretical-vs-actual differentiator

Not scored by this record.

Unknown

inventory-realtime-depletion differentiator

Not scored by this record.

Unknown

inventory-86-auto-sync differentiator

Not scored by this record.

Partial

inventory-count-modes

One count mode is documented, a full periodic stock take (pp. 221-224): Initialize stock take accounting zeroes all stock records from a chosen date, the Stock Taking panel lists every product with the manage-stock flag with a line per location, counts persist if the panel is exited, and finalizing writes a Stock Take report retained in the reports section, giving per-period history rather than an overwrite. Shortfalls: category, location and search filters narrow the display but there is no separate ad-hoc spot-count object and no scheduled recurring cycle count -- counts are tied to the single open accounting period, and finalizing it 'cannot be undone'. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

inventory-mobile-count-offline

Not scored by this record.

Unknown

inventory-vendor-catalogs-edi differentiator

Not scored by this record.

Unknown

inventory-invoice-ocr differentiator

Not scored by this record.

Unknown

inventory-price-change-alerts differentiator

Not scored by this record.

Unknown

inventory-par-auto-suggest differentiator

Not scored by this record.

Unknown

inventory-waste-logging

Not scored by this record.

Unknown

inventory-shelf-life-expiry

Not scored by this record.

Unknown

inventory-bar-partial-bottle

Not scored by this record.

Unknown

inventory-cogs-gl-export

Not scored by this record.

Unknown

inventory-native-not-partner differentiator

Not scored by this record.

Unknown

inventory-menu-margin-linkage differentiator

Not scored by this record.

Reporting, BI & data access

No

reporting-realtime-dashboard

Reporting is a desktop-only, run-on-demand surface, and the manual enumerates it. Reports are JasperReports definitions executed inside the Chromis Administration Java application -- the user picks 'Reports For' and 'Report', clicks Create Report, and prints or exports to PDF/HTML/PNG/XLSX (pp. 193-200). There is no dashboard object, live or otherwise. The hardware section states 'Administration is designed to run on device with other than the POS ideally a networked PC' and the supported-OS list is 'A supported operating system (Windows & Linux)'; chromis.co.uk ships Windows, macOS and Linux desktop installers and no browser or mobile client exists for any Chromis component. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Partial

reporting-eod-closeout

Close Cash produces a single printed document per cash session and the panel source shows what it reconciles: sequence number, start and end datetime, receipt count, sales subtotal (net), sales taxes, sales total (gross), a payments table broken out by tender type, gift-card sales total, card fees, cash in drawer, the no-sale/drawer-opening count, plus hourly-sales and per-user-sales blocks pushed into the report script. Two 'Cash Closed' reports ship in the report tree, one exportable. Shortfalls: tips are absent from the product entirely (no tip or gratuity string exists in the shipped locale bundle or the manual), discounts and refunds are not carried as their own reconciling lines, and there is no counted-cash entry to compare against an expected deposit -- the close records what the system believes it took, not a blind drop. https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/panels/JPanelCloseMoney.java · retrieved 2026-08-03

A
Partial

reporting-pmix-modifier-level

Item-level product mix ships -- the Sales branch of the report tree contains Category Sales, Product Sales By Terminal, Product Sales: Profit, Product Sales Bar Chart, Sales by Category, Sales by User and Payments, and the manual's worked query aggregates ticketlines to units, subtotal excluding tax, gross total and tax per product. Because modifiers are auxiliary items, i.e. real products on their own ticket lines, they do appear with their own quantity and revenue. Shortfalls: the standard report filters are date range, category, location and a text search only -- there is no daypart filter and no revenue-center dimension beyond terminal/location -- and modifiers are not rolled up under their parent item, so attach rates are not readable without writing custom Jasper/SQL. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

reporting-comps-voids-audit

Not scored by this record.

Unknown

reporting-cash-over-short

Not scored by this record.

Unknown

reporting-labor-productivity

Not scored by this record.

Unknown

reporting-server-scorecards differentiator

Not scored by this record.

Unknown

reporting-channel-profitability differentiator

Not scored by this record.

Unknown

reporting-scheduled-delivery

Not scored by this record.

Unknown

reporting-public-api differentiator

Not scored by this record.

Unknown

reporting-webhooks differentiator

Not scored by this record.

Unknown

reporting-api-not-upcharged differentiator

Not scored by this record.

Unknown

reporting-tier-paywall differentiator

Not scored by this record.

Unknown

reporting-history-retention differentiator

Not scored by this record.

Unknown

reporting-anomaly-alerts differentiator

Not scored by this record.

Unknown

reporting-nl-query

Not scored by this record.

Unknown

reporting-guest-cohorts differentiator

Not scored by this record.

Unknown

reporting-sales-forecast differentiator

Not scored by this record.

Unknown

reporting-tip-tax-compliance

Not scored by this record.

Multi-location, franchise & enterprise governance

No

multi-location-org-hierarchy

The Locations panel is a flat, single-field list and the manual says so: 'The location panel is a list of locations used by the Chromis. A location only requires a Location Name for a record to be saved' (p. 111-112). Its purpose is stock, not org structure -- 'When a POS terminal is created it needs to know its location, which used in stock logging. By default, it will always use Main Store.' There is no parent, region or group field, no second or third level, and permissions scope to user roles and report grants rather than to any location tree. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Partial

multi-location-central-menu-publish

Authoring once and having it apply everywhere is structurally true but trivially so: Chromis is one MariaDB/MySQL database that every terminal connects to directly, so a product edited in Administration is immediately live on all terminals with no push step. Shortfalls: there is no targeting and no history. Products are global to the database with no location scoping -- Locations only carry stock levels per location, and the manual flags even that as incomplete ('this feature will be implemented full in a future release') -- so a menu cannot be published to a chosen subset, and no publish or version record of what changed, when and by whom exists. The only staged change mechanism is the Product Price Scheduler, which applies tax class, sell price, cost price and pricing tiers on a date, checked every 6 hours. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
No

multi-location-price-zones

A product carries one sell price, and the manual enumerates every price field that can vary. Pricing Tiers are five levels keyed to quantity purchased, not to location, channel or time. The Product Price Scheduler enumerates exactly what can be varied and it is a date, not a zone: 'The following information can be scheduled: Tax Class, Sell Price inc Tax, Sell Price, Cost Price, Pricing Tiers... set the date that the update should occur' (pp. 210-212). Customer records carry a discount rate, which shifts price by guest rather than by site. No location, order-channel or daypart price dimension exists, and there is only one order channel. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

multi-location-consolidated-reporting

Not scored by this record.

Unknown

multi-location-cross-location-giftcard

Not scored by this record.

Unknown

multi-location-cross-location-loyalty

Not scored by this record.

Unknown

multi-location-multi-brand differentiator

Not scored by this record.

Unknown

multi-location-multi-tax-jurisdiction

Not scored by this record.

Unknown

multi-location-central-labor-policy

Not scored by this record.

Hardware & physical footprint

Unknown

hardware-commodity-devices differentiator

Not scored by this record.

Partial

hardware-os-platforms

Site names dedicated Windows, macOS and Linux installers and notes the Kitchen Screen has no macOS build; no minimum versions or specs. https://chromis.co.uk/ · retrieved 2026-08-01

B
Unknown

hardware-handheld-purpose-built

Not scored by this record.

Unknown

hardware-handheld-battery-swap differentiator

Not scored by this record.

Unknown

hardware-handheld-lte

Not scored by this record.

Partial

hardware-offline-mode

On-premise desktop architecture runs without internet, but the project publishes no explicit list of functions that degrade. https://chromis.co.uk/ · retrieved 2026-08-01

E
Yes

hardware-kds

First-party remote kitchen screen with its own installers and its own ChromisKitchenScreen repo; bump-bar support is undocumented. https://chromis.co.uk/ · retrieved 2026-08-01

B
Unknown

hardware-kiosk differentiator

Not scored by this record.

Unknown

hardware-drive-thru

Not scored by this record.

Unknown

hardware-printer-compatibility

Not scored by this record.

Unknown

hardware-peripherals

Not scored by this record.

Unknown

hardware-p2pe-terminal

Not scored by this record.

Unknown

hardware-tap-to-phone differentiator

Not scored by this record.

Unknown

hardware-pricing-transparency differentiator

Not scored by this record.

Unknown

hardware-ownership-vs-lease differentiator

Not scored by this record.

Unknown

hardware-usable-after-churn differentiator

Not scored by this record.

Unknown

hardware-rma-sla differentiator

Not scored by this record.

Unknown

hardware-byod

Not scored by this record.

Unknown

hardware-remote-device-management differentiator

Not scored by this record.

Unknown

hardware-selfpour-scales

Not scored by this record.

Unknown

hardware-callerid-integration

Not scored by this record.

Integrations, API & extensibility

No

extensibility-public-api-docs

Source is public on GitHub and SourceForge, but no self-serve REST API reference is published for the product. https://github.com/ChromisPos/ChromisPOS · retrieved 2026-08-01

E
Unknown

extensibility-api-access-cost differentiator

Not scored by this record.

Unknown

extensibility-free-sandbox differentiator

Not scored by this record.

No

extensibility-oauth-partner-apps

Desktop application with direct database access; no OAuth 2.0 authorization server or scoped third-party app model. https://github.com/ChromisPos/ChromisPOS · retrieved 2026-08-01

E
No

extensibility-webhooks-push

Read the full 1185-path repository tree (untruncated). There is no HTTP server, no webhook, no event-dispatch and no REST package anywhere in src-pos, src-data or src-beans -- the only 'api' match in the entire tree is lib/tinylog-api-2.4.1.jar, a logging facade. Chromis is a Swing desktop client that opens a JDBC connection straight to MariaDB/MySQL; consumers observe order state the way the Kitchen Display Screen does, by polling the database on a 5-second timer. There is nothing to subscribe to. https://api.github.com/repos/ChromisPos/ChromisPOS/git/trees/HEAD?recursive=1 · retrieved 2026-08-03

A
Unknown

extensibility-webhook-reliability differentiator

Not scored by this record.

Unknown

extensibility-order-injection-api

Not scored by this record.

Unknown

extensibility-menu-write-api differentiator

Not scored by this record.

Unknown

extensibility-doordash-preferred differentiator

Not scored by this record.

Unknown

extensibility-first-party-delivery-integrations differentiator

Not scored by this record.

Unknown

extensibility-middleware-compatibility

Not scored by this record.

Unknown

extensibility-accounting-connectors

Not scored by this record.

Unknown

extensibility-payroll-export

Not scored by this record.

Unknown

extensibility-app-marketplace

Not scored by this record.

Unknown

extensibility-headless-embedded

Not scored by this record.

Unknown

extensibility-data-portability-exit differentiator

Not scored by this record.

Reliability, offline & operations

Yes

reliability-offline-order-entry

Local install with local database; order entry and check printing are LAN operations independent of internet. https://chromis.co.uk/ · retrieved 2026-08-01

E
Unknown

reliability-offline-card-auth differentiator

Not scored by this record.

Unknown

reliability-offline-decline-liability differentiator

Not scored by this record.

Unknown

reliability-lan-degraded-multi-terminal differentiator

Not scored by this record.

Unknown

reliability-local-transaction-engine differentiator

Not scored by this record.

Yes

reliability-offline-kds-printing

The kitchen screen is described as a remote LAN display fed by the POS, so it survives internet loss. https://chromis.co.uk/ · retrieved 2026-08-01

E
No

reliability-printer-fallback

Remote-order routing is a static per-product assignment with no alternate target. The manual's Remote Orders section enumerates the destinations -- 'Chromis is configure with 3 printers: Kitchen Printer, Kitchen Printer 2, Bar Printer. These need to create using the terminal configuration application. If the Chromis Kitchen screen is used, then the product can be sent to a screen rather than a printer, each screen will have a number allocated when they setup' (p. 172) -- and defines no backup or secondary printer per route. The shipped POS strings for a failed print are the plain errors 'Unable to Print Receipt', 'Unable to print Receipt', 'Printer Not Available' and 'No Printers installed'; nothing reroutes the ticket and nothing raises a standing alert that a station has gone dark. https://master.dl.sourceforge.net/project/chromispos/ChromisDocs/1.5.4/Chromis%20Administration.pdf · retrieved 2026-08-03 · not refetchable · site policy · graded B when read

C
Unknown

reliability-sync-conflict-handling

Not scored by this record.

Unknown

reliability-offline-feature-matrix

Not scored by this record.

Unknown

reliability-public-status-page

Not scored by this record.

Unknown

reliability-247-live-support

Not scored by this record.

Unknown

reliability-onsite-install differentiator

Not scored by this record.

Unknown

reliability-menu-build-service differentiator

Not scored by this record.

Unknown

reliability-hardware-replacement-sla

Not scored by this record.

Unknown

reliability-pci-dss-4-attestation

Not scored by this record.

Unknown

reliability-mfa-role-based-access

Not scored by this record.

Unknown

reliability-self-serve-training

Not scored by this record.

Unknown

reliability-failover-terminal-role differentiator

Not scored by this record.

Unknown

reliability-cellular-backup

Not scored by this record.

Commercial, compliance & data ownership

Unknown

commercial-month-to-month-contract differentiator

Not scored by this record.

Unknown

commercial-no-early-termination-fee differentiator

Not scored by this record.

Unknown

commercial-autorenew-terms-published

Free software with no subscription, so no auto-renewal term or cancellation window exists to publish.

F
Unknown

commercial-processing-not-bundled differentiator

Not scored by this record.

Unknown

commercial-interchange-plus-published differentiator

Not scored by this record.

Unknown

commercial-rate-increase-clause differentiator

Not scored by this record.

Yes

commercial-pricing-published

Price is published and unambiguous: free open-source software, repeatedly stated on the vendor site, with no paid tier offered. https://chromis.co.uk/ · retrieved 2026-08-01

B
Unknown

commercial-module-unbundling differentiator

Not scored by this record.

Partial

commercial-hardware-purchase-outright

No first-party hardware is sold, so no lease is possible; operators source their own terminals and printers. https://chromis.co.uk/ · retrieved 2026-08-01

E
Unknown

commercial-hardware-not-locked differentiator

Not scored by this record.

Unknown

commercial-data-export-self-serve

Not scored by this record.

Unknown

commercial-export-customer-and-loyalty differentiator

Not scored by this record.

Unknown

commercial-post-termination-export-window differentiator

Not scored by this record.

Unknown

commercial-data-ownership-clause differentiator

Not scored by this record.

Unknown

commercial-pci-p2pe-tokenization

Not scored by this record.

Unknown

commercial-pci-dss-4-controls

Not scored by this record.

Unknown

commercial-privacy-dsar-tooling

Not scored by this record.

Unknown

commercial-wcag-kiosk-accessibility differentiator

Not scored by this record.

Unknown

commercial-dual-pricing-compliant differentiator

Not scored by this record.

Adversarial verification

An independent pass was instructed to refute this record, defaulting to downgrade when uncertain. It challenged 31 values — 0 upheld, 0 downgraded, 0 upgraded. This is published in full because a reader who can see which values were contested, on what evidence, and which way they moved has something no affiliate-funded comparison offers.

Capability claims

ClaimAs first scoredVerdictWhat the verifier found
order-capture-scheduled-ordersunknown / F — placeholder rationale, cell never examinedresolve-to-partialPlaceholder marker, not a finding. Read the vendor's 230-page Administration manual and the POS source. DeliveryDialog captures a 'Delivery Date :' with the address block, so a future date can ride on a ticket, but no scheduler injects it: no per-channel lead time exists, the POS module contains no scheduling class, and the kitchen only receives what the operator has pushed with Send Order. Partial, shortfall named. source
menu-pricing-modifier-price-by-parent-sizeunknown / F — placeholder rationale, cell never examinedresolve-to-noBoth modifier mechanisms are fully enumerated in the manual. Attributes (pp. 95-107) are a three-level set/attribute/value structure with no price field. Auxiliary items (pp. 183-185) are products carrying their own single price, linked to base products by an assigned/not-assigned flag with no price column on the link. Products have no size axis. Positive evidence of absence, not silence. source
menu-pricing-topping-quantity-tiersunknown / F — placeholder rationale, cell never examinedresolve-to-noThe manual's only 'Pricing Tiers' are five quantity price breaks on a base product's own price (p. 176), unrelated to modifier tiering, and conflicting enough with other pricing that discounts are blocked on tiered items. The auxiliary-item link carries no multiplier and no light/regular/extra concept. source
payments-refund-void-controlsunknown / F — placeholder rationale, cell never examinedresolve-to-partialHalf the claim holds: a checkable rights tree with permission levels 1-9, and POS source gating line deletion and quantity negation on sales.EditLines and totals on sales.Total, plus per-product maximum discount. The audit half fails on the vendor's own words -- no-sale and removed-line audit rows are purged by a scheduled MySQL event at 28 days by default, 264 days maximum -- and no approver is captured because authorisation is by the operator's own role, not a manager prompt. source
kitchen-expo-consolidationunknown / F — placeholder rationale, cell never examinedresolve-to-noThe KDS product page carries the vendor's own complete eleven-item feature list and there is no expo role in it. Each screen is one of nine location displays showing what the POS routed there; nothing consolidates stations or gates completion on all stations bumping. Grade C because this page plus the ChromisKitchenScreen repo are the entire KDS documentation set -- SourceForge publishes no KDS manual in any version folder. source
kitchen-bump-bar-hardwareunknown / F — placeholder rationale, cell never examinedresolve-to-partial'Program keys to order panels, for use with keyboard' is a real non-touch input path, so this is not a flat no. But the claim requires documented supported models and there are none -- the minimum-requirements list is 'Keyboard (only required for configuration), Mouse, Display' for both the PC and Raspberry Pi builds, i.e. a generic keyboard, no bump bar named or certified. source
delivery-zone-pricingunknown / F — placeholder rationale, cell never examinedresolve-to-noDeliveryDialog enumerates the whole delivery capture surface: date, name, three free-text address lines, postcode, phone, comments. Nothing geocodes or zones. The fee is a manually added line -- shipped strings are 'You can only add a Delivery Charge once to an order' and 'You are about to delete the Delivery Charge' -- so no per-zone fee, minimum or promise time can be derived from an address. The manual's Orders chapter is supplier purchase orders, not delivery. source
digital-account-saved-paymentunknown / F — placeholder rationale, cell never examinedresolve-to-noTwo independent blocks, both first-party. The vendor ships exactly two applications, both desktop, so there is no digital channel to hold a guest account. And the manual's Introduction states outright that Chromis has no credit/debit card integration at all because of PCI, which forecloses a tokenized saved payment method. source
guest-loyalty-unified-profileunknown / F — placeholder rationale, cell never examinedresolve-to-partialOne customer record per guest in one shared database with a loyalty history tab, so cross-terminal identity is genuinely unified. But identity is a card number read by MSR or barcode rather than phone/email match, there are no web/app/kiosk channels to merge from, and the manual documents no dedup or merge behaviour while explicitly supporting anonymous card-only accounts alongside registered customers. source
guest-loyalty-accrual-modelsunknown / F — placeholder rationale, cell never examinedresolve-to-partialTwo models ship as configuration and the manual devotes 24 pages to them: 'Earn x points for specified spend' (points-per-currency-unit with a per-product 0.00-3.00 multiplier) and 'Earn & Burn' (per-item earn and per-item redemption, which the manual itself frames as buy-10-get-11th-free). Held back from yes because they are mutually exclusive and effectively irreversible -- switching model inactivates every card and loses all points -- and no spend-tier accrual exists. source
guest-loyalty-lifecycle-automationunknown / F — placeholder rationale, cell never examinedresolve-to-noThe customer record has a 'Receive Marketing' opt-in requiring an email address, and the manual frames the sending as something the operator's own business model does elsewhere. No campaign, birthday, first-visit or lapsed-guest trigger appears in 230 pages, and no send-related string exists in the shipped POS locale bundle. The only scheduler in the product is the Product Price Scheduler. source
labor-clock-in-at-posunknown / F — placeholder rationale, cell never examinedresolve-to-yesEmployee Presence Management, manual pp. 88-94: employees clock in and out for shifts from the Point-of-Sale screen, with configurable break types flagged visible in the timeclock and break records locked from deletion once used. Users authenticate by password and an optionally assigned card number. A Daily Presence report ships. Grade B vendor documentation carries a table-stakes yes. source
labor-manager-override-auditunknown / F — placeholder rationale, cell never examinedresolve-to-partialAttribution to the acting user is real (tickets carry the user, Sales by User report, per-user close-cash breakdown) and the no-sale/removed-line log is queryable, so this is not a flat no. But it is not immutable -- purged at 28 days by default, 264 days maximum -- and there is no approver to attribute, because Chromis authorises by the signed-in user's role rather than by a manager approving another user's action. The only 'override' is the Override Lock table-lock right, a role grant not a prompt. source
inventory-unit-conversion-yieldsunknown / F — placeholder rationale, cell never examinedresolve-to-partialPurchase-to-sell conversion exists via a Purchasing UOM, per-supplier pack sizes and a selling-UOM/selling-quantity pair per barcode. But the UOM record has exactly three fields (code, description, quantity), so no distinct third recipe or count unit exists, and there is no yield or waste percentage anywhere -- Recipes take ingredient plus quantity only. source
inventory-count-modesunknown / F — placeholder rationale, cell never examinedresolve-to-partialStock Taking (pp. 221-224) is a real full physical count with per-location lines, saved partial progress, a finalized accounting period and retained Stock Take reports, so period-over-period history is preserved rather than overwritten. Shortfall: that is the only mode. Filters narrow the display but no ad-hoc spot count and no scheduled recurring cycle count exist, and finalizing cannot be undone. source
reporting-realtime-dashboardunknown / F — placeholder rationale, cell never examinedresolve-to-noReporting is enumerated in the manual as JasperReports definitions run on demand inside the desktop Chromis Administration application, printed or exported to PDF/HTML/PNG/XLSX. There is no dashboard object at all, and no browser or mobile client exists for any Chromis component -- supported platforms are Windows/Linux desktop (plus a macOS POS installer), with Administration explicitly intended for a networked PC. source
reporting-eod-closeoutunknown / F — placeholder rationale, cell never examinedresolve-to-partialRead the Close Cash panel source rather than inferring. It produces one document per session covering sequence, date range, receipt count, net sales, tax, gross sales, tender-type breakdown, gift-card total, card fees, cash in drawer, no-sale count, hourly sales and per-user sales, and two Cash Closed reports ship. Shortfall: no tips anywhere in the product, no discount or refund reconciling lines, and no counted-cash entry to compare against an expected deposit. source
reporting-pmix-modifier-levelunknown / F — placeholder rationale, cell never examinedresolve-to-partialRead the Available Reports tree screenshot in the roles chapter: the Sales branch ships Category Sales, Product Sales By Terminal, Product Sales: Profit, Product Sales Bar Chart, Sales by Category, Sales by User, Payments, Cash Closed and Cash-Flow. Item-level PMIX with units, net, gross and tax is real, and auxiliary-item modifiers appear as their own product rows. Shortfall: filters are date/category/location/search only -- no daypart, no revenue center -- and modifiers do not roll up under their parent. source
multi-location-org-hierarchyunknown / F — placeholder rationale, cell never examinedresolve-to-noThe manual enumerates the Locations record and it has one field: 'A location only requires a Location Name for a record to be saved.' Its stated purpose is stock logging by terminal, defaulting to Main Store. No parent, region or group level exists, and permissions scope to roles and report grants rather than any location tree. source
multi-location-central-menu-publishunknown / F — placeholder rationale, cell never examinedresolve-to-partialNot a no: Chromis is one shared database, so a product edited once in Administration is immediately live on every terminal with no push step. But there is no targeting and no history -- products are global with no location scoping (per-location stock levels are flagged in the manual as not yet fully implemented), so a menu cannot go to a chosen subset, and no publish or version record of what changed, when and by whom exists. source
multi-location-price-zonesunknown / F — placeholder rationale, cell never examinedresolve-to-noA product carries one sell price. Pricing Tiers key to quantity purchased, not to site, channel or time. The Product Price Scheduler enumerates exactly what can vary and it is a date: tax class, sell price inc tax, sell price, cost price, pricing tiers. The only other price variation is a per-customer discount rate. No location, channel or daypart price dimension exists, and there is only one order channel. source
extensibility-webhooks-pushunknown / F — placeholder rationale, cell never examinedresolve-to-noRead the complete untruncated 1185-path repository tree. No HTTP server, webhook, event-dispatch or REST package exists in src-pos, src-data or src-beans; the only 'api' match is a tinylog logging facade jar. Chromis is a Swing client on a direct JDBC connection, and its own Kitchen Display Screen consumes order state by polling the database every 5 seconds -- the reference implementation of the thing webhooks would replace. source
reliability-printer-fallbackunknown / F — placeholder rationale, cell never examinedresolve-to-noThe Remote Orders section enumerates routing destinations -- Kitchen Printer, Kitchen Printer 2, Bar Printer, configured in the terminal application, or a numbered Kitchen Screen -- assigned statically per product, with no secondary or backup target on any route. Shipped failure strings are plain errors ('Unable to Print Receipt', 'Printer Not Available', 'No Printers installed'); nothing reroutes the ticket and nothing raises a standing alert that a station has gone dark. source
menu-pricing-nested-modifiersunknown / F -- placeholder rationale, cell never examinedresolve-to-noThe manual states the attribute architecture as a closed set -- 'There are 3 components required for the attributes': Attribute Sets, Attributes, Attribute Values. Those are three components of one flat selection tier, not three nested levels; a value cannot open a further group. The Attribute panel's complete option list (add, rename, save, delete, show all, add existing, remove from set) contains no min, max or selection-count field, and the source model confirms it -- AttributeSetInfo.java and AttributeInfo.java each carry only id, name and siteGuid. Forced selection exists once, as a product-level mandatory flag over the whole set, not per level. Auxiliary items add no depth: they are a flat assigned/not-assigned link, and an auxiliary-flagged product 'can then only be sold as an add on to a product', so it cannot itself be a base with its own auxiliaries. source
payments-gift-cardsunknown / F -- placeholder rationale, cell never examinedresolve-to-partialFirst-party Electronic Gift Cards are fully documented (pp. 163-169) -- activation at sale, 0% tax on the gift line, top-ups, full or partial redemption from a Gift Card payment tab, multiple cards on one ticket -- with genuine real-time server-side balance: 'the data is held in the database and not on the card', no rounding requirement, and GiftCardLogic.java reading currentvalue live per redemption against a giftcardtrans ledger. All terminals share one database, so balances are common across the install. Shortfall that blocks a yes: the claim requires redemption through the online-ordering channel and Chromis has no such channel -- a Swing client on direct JDBC with no HTTP, REST or webhook package in its 1185-path tree -- so cards are in-store only, keyed by hand at the payment panel. source
inventory-recipe-bom-costingunknown / F -- placeholder rationale, cell never examinedresolve-to-partialMulti-level BOM is documented and worked through: 'A recipe can also be an ingredient in another recipe, it cannot be and ingredient to itself', demonstrated by composing a double cheese burger from patties, cheese and buns and then consuming that recipe inside a meal deal. Cost is derived, not keyed -- 'In this panel you cannot enter a cost price for the product this is calculated based upon the ingredients in the recipe' -- and ProductsRecipeInfo.java carries no cost column, so depth comes from a kit product itself being a recipe parent. Shortfall that blocks a yes: the only documented recalculation trigger is 'When the recipe is saved the cost price of the product is calculated'. Nothing documents recalculation when an ingredient's cost changes, and nothing documents a roll-up into parent recipes, so plate costs go stale until each recipe is reopened and re-saved -- the exact failure the claim is written to catch. source
order-capture-split-mergeunknown / F -- placeholder rationale, cell never examinedresolve-to-partialRead the shipped source rather than the site. Split is real: JPanelTicket.splitTicket opens the ReceiptSplit dialog (title 'Split Receipt'), which moves selected lines or single units between two receipt panes and pays the split-off receipt immediately. Merge is real: the restaurant table map prompts 'This will Merge tables. Are you sure you want to do this?' and concatenates the source table's ticket lines onto the destination. Held at partial because the claim demands four split shapes and Chromis ships one -- by item line only, with no seat concept anywhere in the 1185-path tree, no even N-way split, no dollar/percentage split -- and nothing operates after partial payment, since the split half is settled at split time. source
delivery-driver-rosterunknown / F -- placeholder rationale, cell never examinedresolve-to-noPositive absence from the complete source tree, not silence. The only 'driver' in all 1185 paths is DriverWrapper.java, a java.sql.Driver JDBC adapter. DeliveryDialog is the whole delivery surface and has no driver field; Employee Presence Management covers all staff with no driver role, assignment state or run entity; the report tree's People branch is Daily Presence only. There is no driver module of any kind, first-class or otherwise. source
delivery-dispatch-boardunknown / F -- placeholder rationale, cell never examinedresolve-to-noPositive absence. Zero 'dispatch' matches in the full tree; the sales package enumerates every order-management screen that ships and none tracks undispatched orders, driver availability or runs. The only pending-order display with elapsed time in the product range is the Kitchen Display Screen, whose vendor page carries its complete feature list with no dispatch role and no run batching. source
digital-first-party-webunknown / F -- placeholder rationale, cell never examinedresolve-to-noTwo independent first-party blocks. The vendor's site enumerates the complete product range as two desktop applications, POS and Kitchen Display Screen, with no ordering site offered and a stated intent to add other applications 'over time'. And the source could not accept a web order regardless: no HTTP server, web framework or REST package exists anywhere in the 1185-path tree -- a Swing client on direct JDBC, observed by its own KDS via database polling. source
digital-menu-single-sourceunknown / F -- placeholder rationale, cell never examinedresolve-to-noThere is no first-party digital channel for the menu to feed, so no digital menu exists to be single-source or drifting. The menu record is genuinely single (one shared database serving every terminal and the kitchen screen) but its only consumers are in-store surfaces. Scored no on the same basis as digital-account-saved-payment: the vendor's own enumeration of what it ships forecloses the capability's subject. source

Sources

Every URL this record cites. 17 in total.