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
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
order-capture-floor-plan-editor
Not scored by this record.
order-capture-seat-level
Not scored by this record.
order-capture-coursing-hold-fire
Not scored by this record.
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
order-capture-bar-tab-preauth differentiator
Not scored by this record.
order-capture-transfer-audit
Not scored by this record.
order-capture-native-handheld
Not scored by this record.
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
order-capture-qr-same-check differentiator
Not scored by this record.
order-capture-kiosk-first-party differentiator
Not scored by this record.
order-capture-drive-thru
Not scored by this record.
order-capture-drive-thru-timers
Not scored by this record.
order-capture-voice-ai differentiator
Not scored by this record.
order-capture-throttling differentiator
Not scored by this record.
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
order-capture-catering
Not scored by this record.
order-capture-order-ready-signal differentiator
Not scored by this record.
order-capture-void-comp-controls
Not scored by this record.
Menu, modifiers & pricing engine
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
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
menu-pricing-fractional-placement differentiator
Not scored by this record.
menu-pricing-half-and-half-rule differentiator
Not scored by this record.
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
menu-pricing-size-style-matrix differentiator
Not scored by this record.
menu-pricing-included-allowance differentiator
Not scored by this record.
menu-pricing-combos
Not scored by this record.
menu-pricing-upsell-prompts differentiator
Not scored by this record.
menu-pricing-86-propagation
Not scored by this record.
menu-pricing-countdown-auto-86 differentiator
Not scored by this record.
menu-pricing-dayparting
Not scored by this record.
menu-pricing-channel-price-books
Not scored by this record.
menu-pricing-dual-pricing differentiator
Not scored by this record.
menu-pricing-allergen-nutrition
Not scored by this record.
menu-pricing-recipe-linkage differentiator
Not scored by this record.
menu-pricing-3p-menu-push
Not scored by this record.
menu-pricing-dynamic-pricing
Not scored by this record.
Payments & money movement
payments-processor-choice differentiator
Not scored by this record.
payments-published-rates differentiator
Not scored by this record.
payments-dual-pricing differentiator
Not scored by this record.
payments-surcharge-guardrails differentiator
Not scored by this record.
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
payments-softpos-tap-to-pay differentiator
Not scored by this record.
payments-pay-at-table
Not scored by this record.
payments-qr-guest-pay differentiator
Not scored by this record.
payments-tip-adjust
Not scored by this record.
payments-tip-pooling differentiator
Not scored by this record.
payments-offline-store-and-forward differentiator
Not scored by this record.
payments-offline-decline-liability differentiator
Not scored by this record.
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
payments-house-accounts
Not scored by this record.
payments-split-tender
Not scored by this record.
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
payments-chargeback-tooling differentiator
Not scored by this record.
payments-card-on-file differentiator
Not scored by this record.
payments-payout-timing differentiator
Not scored by this record.
payments-p2pe-pci4
Not scored by this record.
Kitchen & production
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
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
kitchen-course-firing differentiator
Not scored by this record.
kitchen-prep-time-pacing differentiator
Not scored by this record.
kitchen-order-throttling differentiator
Not scored by this record.
kitchen-channel-pause-propagation differentiator
Not scored by this record.
kitchen-order-ready-callback differentiator
Not scored by this record.
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
kitchen-all-day-counts
Not scored by this record.
kitchen-sla-alerts
Not scored by this record.
kitchen-printer-fallback differentiator
Not scored by this record.
kitchen-offline-operation differentiator
Not scored by this record.
kitchen-item-build-screens differentiator
Not scored by this record.
kitchen-pizza-fractional-display differentiator
Not scored by this record.
kitchen-recall-refire
Not scored by this record.
kitchen-order-modification-alerts differentiator
Not scored by this record.
kitchen-guest-ready-notification differentiator
Not scored by this record.
kitchen-waste-logging
Not scored by this record.
kitchen-speed-of-service-reporting
Not scored by this record.
kitchen-prep-forecasting
Not scored by this record.
Delivery, dispatch & third-party channels
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
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
delivery-route-map differentiator
Not scored by this record.
delivery-driver-tracking differentiator
Not scored by this record.
delivery-zones-polygon differentiator
Not scored by this record.
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
delivery-address-validation
Not scored by this record.
delivery-driver-comp differentiator
Not scored by this record.
delivery-cash-reconcile
Not scored by this record.
delivery-daas-dispatch
Not scored by this record.
delivery-daas-fallback differentiator
Not scored by this record.
delivery-3p-direct-integration differentiator
Not scored by this record.
delivery-3p-injection
Not scored by this record.
delivery-menu-push
Not scored by this record.
delivery-86-sync
Not scored by this record.
delivery-store-pause
Not scored by this record.
delivery-3p-reconciliation differentiator
Not scored by this record.
delivery-injection-error-visibility differentiator
Not scored by this record.
delivery-tracking-page
Not scored by this record.
delivery-promise-time differentiator
Not scored by this record.
delivery-offline-behavior
Not scored by this record.
Digital ordering & guest-facing channels
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
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
digital-native-app differentiator
Not scored by this record.
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
digital-upsell-engine differentiator
Not scored by this record.
digital-scheduled-pacing
Not scored by this record.
digital-fulfillment-modes
Not scored by this record.
digital-qr-table
Not scored by this record.
digital-kiosk differentiator
Not scored by this record.
digital-group-ordering
Not scored by this record.
digital-catering-portal differentiator
Not scored by this record.
digital-voice-ai-phone differentiator
Not scored by this record.
digital-drivethru-ai
Not scored by this record.
digital-sms-ordering
Not scored by this record.
digital-google-order differentiator
Not scored by this record.
digital-apple-business-connect
Not scored by this record.
digital-loyalty-attach
Not scored by this record.
digital-subscriptions
Not scored by this record.
digital-promo-parity
Not scored by this record.
digital-guest-data-ownership differentiator
Not scored by this record.
digital-checkout-pci-sca
Not scored by this record.
digital-surcharge-transparency differentiator
Not scored by this record.
Guest data, loyalty & marketing
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
guest-loyalty-thirdparty-identity-attach differentiator
Not scored by this record.
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
guest-loyalty-tiers differentiator
Not scored by this record.
guest-loyalty-offline-behavior differentiator
Not scored by this record.
guest-loyalty-offer-stacking-rules differentiator
Not scored by this record.
guest-loyalty-targeted-offers differentiator
Not scored by this record.
guest-loyalty-rfm-segmentation differentiator
Not scored by this record.
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
guest-loyalty-native-email-sms differentiator
Not scored by this record.
guest-loyalty-consent-management
Not scored by this record.
guest-loyalty-10dlc-registration
Not scored by this record.
guest-loyalty-campaign-attribution differentiator
Not scored by this record.
guest-loyalty-data-export-portability differentiator
Not scored by this record.
guest-loyalty-review-capture-routing differentiator
Not scored by this record.
guest-loyalty-referral-program
Not scored by this record.
guest-loyalty-wallet-pass differentiator
Not scored by this record.
guest-loyalty-privacy-rights-tooling
Not scored by this record.
guest-loyalty-redemption-fraud-controls
Not scored by this record.
guest-loyalty-ai-offer-recommendation differentiator
Not scored by this record.
guest-loyalty-stored-value-gift
Not scored by this record.
Labor & workforce
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
labor-photo-punch-verification differentiator
Not scored by this record.
labor-offline-time-punch differentiator
Not scored by this record.
labor-granular-rbac
An Admin component exists as a separate repo, but no per-action permission grid is documented publicly.
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
labor-native-scheduling differentiator
Not scored by this record.
labor-demand-labor-forecast differentiator
Not scored by this record.
labor-realtime-labor-percent differentiator
Not scored by this record.
labor-overtime-prevention differentiator
Not scored by this record.
labor-break-compliance-by-state differentiator
Not scored by this record.
labor-minor-labor-rules
Not scored by this record.
labor-tip-pooling-rules
Not scored by this record.
labor-tip-distribution-audit-trail
Not scored by this record.
labor-qualified-tips-w2-reporting differentiator
Not scored by this record.
labor-native-payroll differentiator
Not scored by this record.
labor-payroll-export-formats
Not scored by this record.
labor-shift-swap-workflow differentiator
Not scored by this record.
labor-server-performance-metrics differentiator
Not scored by this record.
Inventory, purchasing & cost control
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
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
inventory-theoretical-vs-actual differentiator
Not scored by this record.
inventory-realtime-depletion differentiator
Not scored by this record.
inventory-86-auto-sync differentiator
Not scored by this record.
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
inventory-mobile-count-offline
Not scored by this record.
inventory-vendor-catalogs-edi differentiator
Not scored by this record.
inventory-invoice-ocr differentiator
Not scored by this record.
inventory-price-change-alerts differentiator
Not scored by this record.
inventory-par-auto-suggest differentiator
Not scored by this record.
inventory-waste-logging
Not scored by this record.
inventory-shelf-life-expiry
Not scored by this record.
inventory-bar-partial-bottle
Not scored by this record.
inventory-cogs-gl-export
Not scored by this record.
inventory-native-not-partner differentiator
Not scored by this record.
inventory-menu-margin-linkage differentiator
Not scored by this record.
Reporting, BI & data access
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
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
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
reporting-comps-voids-audit
Not scored by this record.
reporting-cash-over-short
Not scored by this record.
reporting-labor-productivity
Not scored by this record.
reporting-server-scorecards differentiator
Not scored by this record.
reporting-channel-profitability differentiator
Not scored by this record.
reporting-scheduled-delivery
Not scored by this record.
reporting-public-api differentiator
Not scored by this record.
reporting-webhooks differentiator
Not scored by this record.
reporting-api-not-upcharged differentiator
Not scored by this record.
reporting-tier-paywall differentiator
Not scored by this record.
reporting-history-retention differentiator
Not scored by this record.
reporting-anomaly-alerts differentiator
Not scored by this record.
reporting-nl-query
Not scored by this record.
reporting-guest-cohorts differentiator
Not scored by this record.
reporting-sales-forecast differentiator
Not scored by this record.
reporting-tip-tax-compliance
Not scored by this record.
Multi-location, franchise & enterprise governance
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
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
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
multi-location-consolidated-reporting
Not scored by this record.
multi-location-cross-location-giftcard
Not scored by this record.
multi-location-cross-location-loyalty
Not scored by this record.
multi-location-multi-brand differentiator
Not scored by this record.
multi-location-multi-tax-jurisdiction
Not scored by this record.
multi-location-central-labor-policy
Not scored by this record.
Hardware & physical footprint
hardware-commodity-devices differentiator
Not scored by this record.
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
hardware-handheld-purpose-built
Not scored by this record.
hardware-handheld-battery-swap differentiator
Not scored by this record.
hardware-handheld-lte
Not scored by this record.
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
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
hardware-kiosk differentiator
Not scored by this record.
hardware-drive-thru
Not scored by this record.
hardware-printer-compatibility
Not scored by this record.
hardware-peripherals
Not scored by this record.
hardware-p2pe-terminal
Not scored by this record.
hardware-tap-to-phone differentiator
Not scored by this record.
hardware-pricing-transparency differentiator
Not scored by this record.
hardware-ownership-vs-lease differentiator
Not scored by this record.
hardware-usable-after-churn differentiator
Not scored by this record.
hardware-rma-sla differentiator
Not scored by this record.
hardware-byod
Not scored by this record.
hardware-remote-device-management differentiator
Not scored by this record.
hardware-selfpour-scales
Not scored by this record.
hardware-callerid-integration
Not scored by this record.
Integrations, API & extensibility
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
extensibility-api-access-cost differentiator
Not scored by this record.
extensibility-free-sandbox differentiator
Not scored by this record.
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
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
extensibility-webhook-reliability differentiator
Not scored by this record.
extensibility-order-injection-api
Not scored by this record.
extensibility-menu-write-api differentiator
Not scored by this record.
extensibility-doordash-preferred differentiator
Not scored by this record.
extensibility-first-party-delivery-integrations differentiator
Not scored by this record.
extensibility-middleware-compatibility
Not scored by this record.
extensibility-accounting-connectors
Not scored by this record.
extensibility-payroll-export
Not scored by this record.
extensibility-app-marketplace
Not scored by this record.
extensibility-headless-embedded
Not scored by this record.
extensibility-data-portability-exit differentiator
Not scored by this record.
Reliability, offline & operations
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
reliability-offline-card-auth differentiator
Not scored by this record.
reliability-offline-decline-liability differentiator
Not scored by this record.
reliability-lan-degraded-multi-terminal differentiator
Not scored by this record.
reliability-local-transaction-engine differentiator
Not scored by this record.
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
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
reliability-sync-conflict-handling
Not scored by this record.
reliability-offline-feature-matrix
Not scored by this record.
reliability-public-status-page
Not scored by this record.
reliability-247-live-support
Not scored by this record.
reliability-onsite-install differentiator
Not scored by this record.
reliability-menu-build-service differentiator
Not scored by this record.
reliability-hardware-replacement-sla
Not scored by this record.
reliability-pci-dss-4-attestation
Not scored by this record.
reliability-mfa-role-based-access
Not scored by this record.
reliability-self-serve-training
Not scored by this record.
reliability-failover-terminal-role differentiator
Not scored by this record.
reliability-cellular-backup
Not scored by this record.
Commercial, compliance & data ownership
commercial-month-to-month-contract differentiator
Not scored by this record.
commercial-no-early-termination-fee differentiator
Not scored by this record.
commercial-autorenew-terms-published
Free software with no subscription, so no auto-renewal term or cancellation window exists to publish.
commercial-processing-not-bundled differentiator
Not scored by this record.
commercial-interchange-plus-published differentiator
Not scored by this record.
commercial-rate-increase-clause differentiator
Not scored by this record.
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
commercial-module-unbundling differentiator
Not scored by this record.
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
commercial-hardware-not-locked differentiator
Not scored by this record.
commercial-data-export-self-serve
Not scored by this record.
commercial-export-customer-and-loyalty differentiator
Not scored by this record.
commercial-post-termination-export-window differentiator
Not scored by this record.
commercial-data-ownership-clause differentiator
Not scored by this record.
commercial-pci-p2pe-tokenization
Not scored by this record.
commercial-pci-dss-4-controls
Not scored by this record.
commercial-privacy-dsar-tooling
Not scored by this record.
commercial-wcag-kiosk-accessibility differentiator
Not scored by this record.
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
| Claim | As first scored | Verdict | What the verifier found |
|---|---|---|---|
| order-capture-scheduled-orders | unknown / F — placeholder rationale, cell never examined | resolve-to-partial | Placeholder 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-size | unknown / F — placeholder rationale, cell never examined | resolve-to-no | Both 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-tiers | unknown / F — placeholder rationale, cell never examined | resolve-to-no | The 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-controls | unknown / F — placeholder rationale, cell never examined | resolve-to-partial | Half 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-consolidation | unknown / F — placeholder rationale, cell never examined | resolve-to-no | The 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-hardware | unknown / F — placeholder rationale, cell never examined | resolve-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-pricing | unknown / F — placeholder rationale, cell never examined | resolve-to-no | DeliveryDialog 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-payment | unknown / F — placeholder rationale, cell never examined | resolve-to-no | Two 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-profile | unknown / F — placeholder rationale, cell never examined | resolve-to-partial | One 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-models | unknown / F — placeholder rationale, cell never examined | resolve-to-partial | Two 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-automation | unknown / F — placeholder rationale, cell never examined | resolve-to-no | The 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-pos | unknown / F — placeholder rationale, cell never examined | resolve-to-yes | Employee 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-audit | unknown / F — placeholder rationale, cell never examined | resolve-to-partial | Attribution 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-yields | unknown / F — placeholder rationale, cell never examined | resolve-to-partial | Purchase-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-modes | unknown / F — placeholder rationale, cell never examined | resolve-to-partial | Stock 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-dashboard | unknown / F — placeholder rationale, cell never examined | resolve-to-no | Reporting 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-closeout | unknown / F — placeholder rationale, cell never examined | resolve-to-partial | Read 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-level | unknown / F — placeholder rationale, cell never examined | resolve-to-partial | Read 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-hierarchy | unknown / F — placeholder rationale, cell never examined | resolve-to-no | The 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-publish | unknown / F — placeholder rationale, cell never examined | resolve-to-partial | Not 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-zones | unknown / F — placeholder rationale, cell never examined | resolve-to-no | A 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-push | unknown / F — placeholder rationale, cell never examined | resolve-to-no | Read 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-fallback | unknown / F — placeholder rationale, cell never examined | resolve-to-no | The 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-modifiers | unknown / F -- placeholder rationale, cell never examined | resolve-to-no | The 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-cards | unknown / F -- placeholder rationale, cell never examined | resolve-to-partial | First-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-costing | unknown / F -- placeholder rationale, cell never examined | resolve-to-partial | Multi-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-merge | unknown / F -- placeholder rationale, cell never examined | resolve-to-partial | Read 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-roster | unknown / F -- placeholder rationale, cell never examined | resolve-to-no | Positive 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-board | unknown / F -- placeholder rationale, cell never examined | resolve-to-no | Positive 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-web | unknown / F -- placeholder rationale, cell never examined | resolve-to-no | Two 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-source | unknown / F -- placeholder rationale, cell never examined | resolve-to-no | There 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.
- https://chromis.co.uk/
- https://github.com/ChromisPos/ChromisPOS
- https://sourceforge.net/projects/chromispos/files/ChromisDocs/1.5.4/
- not refetchable
- https://chromis.co.uk/kitchen-display-screen/
- https://api.github.com/repos/ChromisPos/ChromisPOS/git/trees/HEAD?recursive=1
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/commons/dialogs/DeliveryDialog.java
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/panels/JPanelCloseMoney.java
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/sales/JPanelTicket.java
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/locales/chromispos.properties
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/inventory/AttributeSetInfo.java
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/inventory/AttributeInfo.java
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/inventory/ProductsRecipeInfo.java
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/giftcards/GiftCardLogic.java
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/sales/ReceiptSplit.java
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/sales/restaurant/JTicketsBagRestaurantMap.java
- https://raw.githubusercontent.com/ChromisPos/ChromisPOS/HEAD/src-pos/uk/chromis/pos/forms/DriverWrapper.java