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
- 44
- Unknown
- 234
- Not applicable
- 36
- Values 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
Provides a graphical floor-plan editor where an operator can draw sections, place tables of varying shape/capacity, save multiple floor-plan layouts per location, and assign sections to servers.
order-capture-floor-plan-editor
Not scored by this record.
Order lines can be tagged to a seat number at entry, and the check can be split by seat afterward without re-keying items.
order-capture-seat-level
Not scored by this record.
Items can be assigned to courses and held, with a fire-next-course action available from a handheld or terminal that releases only that course to the kitchen.
order-capture-coursing-hold-fire
Not scored by this record.
Supports splitting a check by item, by seat, by even N-way, and by arbitrary dollar/percentage amount, and merging checks or tables back together, including after partial payment.
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
Opens a bar tab against a card pre-authorization with a configurable auth amount, supports incremental re-auth as the tab grows, and auto-closes stale tabs at end of day. differentiator
order-capture-bar-tab-preauth
Not scored by this record.
An open check can be transferred between servers, tables, and devices, and the transfer is recorded in an audit log naming both employees.
order-capture-transfer-audit
Not scored by this record.
Ships a first-party handheld ordering app running natively on the handheld device (not a remote/mirrored desktop session) that can send to kitchen and take a card payment tableside.
order-capture-native-handheld
Not scored by this record.
With the internet down, terminals and handhelds can still create orders, apply modifiers, send to kitchen, and tender cash, and the vendor publishes what does and does not work offline.
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
Guest QR at-table ordering writes items onto the same open check as server-entered items, rather than creating a separate order ticket. differentiator
order-capture-qr-same-check
Not scored by this record.
Offers a first-party self-order kiosk that renders the same menu and modifier tree as the POS with no separate menu build, and the vendor documents ADA/accessibility conformance for it. differentiator
order-capture-kiosk-first-party
Not scored by this record.
Supports drive-thru-specific order flow: order-point/pay-window/pickup-window separation, order sequencing or tandem-lane assignment, and pull-forward or parking-spot assignment.
order-capture-drive-thru
Not scored by this record.
Captures and reports drive-thru speed-of-service timers by segment (order, total, window) tied to individual orders.
order-capture-drive-thru-timers
Not scored by this record.
Vendor ships a first-party AI voice ordering agent for phone and/or drive-thru that injects orders directly as POS orders, or publishes a documented API partner program for third-party voice AI. differentiator
order-capture-voice-ai
Not scored by this record.
Supports order throttling: per-channel capacity limits per time slot with automatic quote-time extension when kitchen load exceeds a configured threshold. differentiator
order-capture-throttling
Not scored by this record.
Accepts future-dated/scheduled orders with a per-channel lead time and automatically injects them into the make queue at a computed fire time rather than on receipt.
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
Provides a distinct catering order flow with quotes, deposits, balance-due tracking, and a delivery/event schedule separate from the standard order queue.
order-capture-catering
Not scored by this record.
Pushes an order-ready signal back to third-party marketplaces (e.g. DoorDash) from POS or KDS state, rather than requiring a tablet tap. differentiator
order-capture-order-ready-signal
Not scored by this record.
Voids, comps, and discounts require a reason code and can be gated behind role-based manager approval, with all instances recorded in an exception report.
order-capture-void-comp-controls
Not scored by this record.
Menu, modifiers & pricing engine
Payments & money movement
The POS operates with third-party payment processors of the merchant's choosing (documented list of supported processors/gateways) rather than requiring the vendor's in-house processing. differentiator
payments-processor-choice
Not scored by this record.
Vendor publishes card-processing pricing publicly (a specific flat rate or interchange-plus markup) rather than quote-only. differentiator
payments-published-rates
Not scored by this record.
Native dual-pricing / cash-discount mode stores two prices per item and prints both cash and card totals on the guest check and receipt. differentiator
payments-dual-pricing
Not scored by this record.
Surcharging engine automatically excludes debit and prepaid cards via BIN/product-code detection, enforces the network percentage cap, and can be enabled or disabled per location. differentiator
payments-surcharge-guardrails
Not scored by this record.
All first-party payment terminals accept EMV chip and NFC contactless including Apple Pay and Google Pay.
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
Accepts contactless payments directly on a phone (Tap to Pay on iPhone and/or Android tap-to-pay) with no separate card reader. differentiator
payments-softpos-tap-to-pay
Not scored by this record.
Vendor ships a handheld that takes EMV/NFC payment at the table, including tip prompt and check splitting, without carrying the card away.
payments-pay-at-table
Not scored by this record.
Guest can scan a QR code on the printed check or table tent to view and pay the check from their own phone, with the payment closing the check in the POS automatically. differentiator
payments-qr-guest-pay
Not scored by this record.
Supports both pre-auth-then-tip-adjust and on-device tip prompt flows, with a documented batch/adjust window and a manager screen for unadjusted tips.
payments-tip-adjust
Not scored by this record.
Configurable tip pooling and distribution rules (by hours worked, sales, role percentage, or points) that produce a per-employee tip allocation exportable to payroll. differentiator
payments-tip-pooling
Not scored by this record.
Card payments can be captured while the internet is down via store-and-forward, with configurable per-transaction and cumulative offline limits. differentiator
payments-offline-store-and-forward
Not scored by this record.
Vendor publicly documents who bears the loss when a stored offline transaction declines on reconnect, and surfaces a post-reconnect report of failed offline payments. differentiator
payments-offline-decline-liability
Not scored by this record.
First-party gift cards with real-time balance tracking, redeemable across every location in the group and through the online-ordering channel.
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
House/on-account tabs with per-account credit limits, running balance, and periodic statement or invoice generation.
payments-house-accounts
Not scored by this record.
A single check can be settled with multiple tenders and split by seat, by item, by even shares, or by arbitrary amount, with no hard cap below eight ways.
payments-split-tender
Not scored by this record.
Voids, refunds, discounts, and no-sales require role-based authorization (manager PIN or approval) and write to an immutable audit log identifying the approver.
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
In-product dispute/chargeback dashboard that lists open disputes and allows evidence submission assembled from the POS transaction record. differentiator
payments-chargeback-tooling
Not scored by this record.
Tokenized card-on-file for a guest profile, reusable across online ordering, phone orders, and in-store, with no PAN stored by the merchant. differentiator
payments-card-on-file
Not scored by this record.
Vendor publishes its deposit schedule and offers a next-day or same-day/instant funding option. differentiator
payments-payout-timing
Not scored by this record.
Vendor provides point-to-point encryption and a current PCI DSS 4.x Attestation of Compliance / P2PE listing available to merchants on request.
payments-p2pe-pci4
Not scored by this record.
Kitchen & production
Items route to specific KDS stations by item, category, order type, or revenue center, with routing rules configurable per location without vendor involvement.
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
An expo screen consolidates items from multiple prep stations into a single order view and only marks the order complete when every contributing station has bumped its items.
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
Items can be assigned to courses and held, then fired to the kitchen on demand from a server terminal, handheld, or expo screen. differentiator
kitchen-course-firing
Not scored by this record.
Per-item cook times are configurable and the KDS staggers item start/display times so that all items on an order finish simultaneously. differentiator
kitchen-prep-time-pacing
Not scored by this record.
Kitchen load throttling automatically paces or delays release of incoming digital orders, or extends quoted prep times, once a configurable order-volume or ticket-time threshold is crossed. differentiator
kitchen-order-throttling
Not scored by this record.
Pausing a store or 86ing an item from the POS/KDS propagates the pause or availability change back to connected third-party marketplaces (DoorDash, Uber Eats, Grubhub) automatically. differentiator
kitchen-channel-pause-propagation
Not scored by this record.
Bumping an order ready on the KDS sends an order-ready status event back to the third-party marketplace so couriers are dispatched on actual readiness. differentiator
kitchen-order-ready-callback
Not scored by this record.
KDS supports physical bump bars or programmable keypads in addition to touchscreen interaction, with documented supported models.
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
An all-day view aggregates outstanding quantities per item (and per modifier) across all open tickets on the station.
kitchen-all-day-counts
Not scored by this record.
Configurable target cook times per station or order type, with visual color escalation and/or audible alert when a ticket exceeds target.
kitchen-sla-alerts
Not scored by this record.
If a KDS screen or kitchen printer goes offline, tickets automatically fail over to a designated backup printer or screen with no ticket loss. differentiator
kitchen-printer-fallback
Not scored by this record.
KDS continues to receive and display tickets from on-site POS terminals when the internet or cloud backend is unreachable. differentiator
kitchen-offline-operation
Not scored by this record.
Station screens can display item-level build/assembly detail (recipe steps, portioning, or full modifier breakout) rather than only the ticket line text. differentiator
kitchen-item-build-screens
Not scored by this record.
Sectioned/fractional topping placement (halves, quarters, specific sections) is rendered visually and unambiguously on the make-line screen or ticket. differentiator
kitchen-pizza-fractional-display
Not scored by this record.
A bumped ticket can be recalled/unbumped, and an individual item can be refired or reprinted without re-entering the order.
kitchen-recall-refire
Not scored by this record.
Edits made in the POS to an order already displayed in the kitchen visually flag the added, changed, or removed items on the live ticket. differentiator
kitchen-order-modification-alerts
Not scored by this record.
Bumping an order ready triggers a guest-facing notification — SMS/text, app push, or an order-status display board — without a separate product purchase. differentiator
kitchen-guest-ready-notification
Not scored by this record.
Waste, spoilage, and remakes can be logged directly at the kitchen/KDS screen with reason codes, and the entry depletes inventory.
kitchen-waste-logging
Not scored by this record.
Reports actual ticket and per-station times (average and percentile) sliced by daypart, station, and order channel, exportable to CSV or an API.
kitchen-speed-of-service-reporting
Not scored by this record.
Generates prep lists or predicted prep quantities from historical sales and forecast demand, surfaced to kitchen staff as a daily prep task list.
kitchen-prep-forecasting
Not scored by this record.
Delivery, dispatch & third-party channels
Product includes a native in-house driver module: drivers are first-class entities with clock-in/out, assignment state (in-store / on-run / returning), and per-driver run history reportable from the POS itself (not via a third-party add-on).
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
Provides a dedicated dispatch/expo screen showing undispatched orders, driver availability, and elapsed time per order, with multi-order run batching (assigning 2+ orders to one driver as a single run).
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
Dispatch includes a live map view with geocoded stops and system-generated route sequencing (turn order optimization) for a multi-stop run, not just a static address list. differentiator
delivery-route-map
Not scored by this record.
Captures live driver GPS position from a driver-facing mobile app and surfaces it back to the dispatch screen. differentiator
delivery-driver-tracking
Not scored by this record.
Delivery areas can be defined as arbitrary map polygons or by drive-time isochrones, not solely as a radius or a ZIP/postcode list. differentiator
delivery-zones-polygon
Not scored by this record.
Each delivery zone carries its own independently configurable delivery fee, order minimum, and quoted promise time, applied automatically from the validated customer address.
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
Address entry is validated/geocoded against a mapping service at order time and rejects or flags out-of-zone addresses before the order is accepted.
delivery-address-validation
Not scored by this record.
Tracks per-delivery driver compensation inputs — mileage or distance driven per run, per-delivery flat reimbursement, and driver-retained tips — and exports them to payroll as separate reimbursement vs. wage lines. differentiator
delivery-driver-comp
Not scored by this record.
Provides a driver cash bank / settle-up flow that reconciles cash collected, orders assigned, and tips owed at end of shift, producing a per-driver over/short figure.
delivery-cash-reconcile
Not scored by this record.
Can hand a first-party order to an on-demand courier marketplace (DoorDash Drive, Uber Direct, Nash, Relay or equivalent) natively from the POS, with the courier quote and status returning into the order record.
delivery-daas-dispatch
Not scored by this record.
Supports hybrid dispatch: rules that automatically overflow an order to a DaaS courier when no in-house driver is available, out of zone, or past a wait threshold. differentiator
delivery-daas-fallback
Not scored by this record.
Offers direct, first-party certified API integrations with DoorDash, Uber Eats, and Grubhub marketplaces (vendor-owned, not solely resold through Otter/Deliverect/Chowly/ItsaCheckmate middleware). differentiator
delivery-3p-direct-integration
Not scored by this record.
Third-party marketplace orders inject automatically into the POS as normal tickets that fire to KDS/printers without tablet re-keying or manual accept.
delivery-3p-injection
Not scored by this record.
Marking an item or modifier 86'd in the POS pushes item-level out-of-stock status to connected third-party channels in near real time, and restores it on availability (DoorDash requires item and item-option 86ing of new POS partners).
delivery-86-sync
Not scored by this record.
Store can be paused/deactivated on each connected third-party marketplace from inside the POS with a timed auto-reactivation, rather than only from each marketplace's own tablet or portal.
delivery-store-pause
Not scored by this record.
Produces a third-party reconciliation report matching marketplace payout deposits to POS-recorded 3P sales, itemizing commission, marketing fees, refunds/adjustments, and identifying missing or unpaid orders. differentiator
delivery-3p-reconciliation
Not scored by this record.
Vendor exposes integration health to the operator — failed/rejected order injections, connection status per channel, and alerts on failure — rather than failing silently. differentiator
delivery-injection-error-visibility
Not scored by this record.
Guests receive a branded order status / driver tracking page or SMS link on the restaurant's own domain for first-party delivery orders, driven by real order and driver state.
delivery-tracking-page
Not scored by this record.
Quoted delivery promise times adjust dynamically from current kitchen load, driver availability, and zone drive time, rather than a fixed per-store constant. differentiator
delivery-promise-time
Not scored by this record.
Vendor documents explicit offline behavior for delivery: whether cash delivery orders, driver assignment, and driver settlement continue during an internet outage.
delivery-offline-behavior
Not scored by this record.
Digital ordering & guest-facing channels
Vendor ships a first-party, commission-free web ordering site on the restaurant's own branding/domain that writes orders directly into the POS with no per-order marketplace commission.
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
Vendor offers a branded native iOS and Android ordering app (published under the restaurant's own brand in the App Store/Play Store), not only a mobile web page or a shared multi-restaurant marketplace app. differentiator
digital-native-app
Not scored by this record.
Guests can create an account with saved addresses, saved (tokenized) payment methods, and one-tap reorder of a previous order across first-party channels.
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 checkout presents configurable or algorithmic upsell/cross-sell suggestions (rules-based add-ons or personalized recommendations from order history), with attach-rate reporting on those suggestions. differentiator
digital-upsell-engine
Not scored by this record.
Supports future/scheduled orders with per-daypart throttling — capacity limits on orders or items per time slot that automatically close slots when the kitchen is saturated.
digital-scheduled-pacing
Not scored by this record.
Single digital ordering flow supports pickup, curbside (with arrival check-in), dine-in/QR table ordering, and delivery, with mode-specific fees and prep timing.
digital-fulfillment-modes
Not scored by this record.
Supports guest-facing QR scan-to-order and/or scan-to-pay at the table that opens or attaches to the existing POS check, including splitting and tipping.
digital-qr-table
Not scored by this record.
Vendor ships a self-order kiosk running the same menu and modifier logic as the POS, with accessibility-compliant UI and unattended EMV payment. differentiator
digital-kiosk
Not scored by this record.
Supports group ordering: a shareable link where multiple participants add their own items to one order under a per-person or total spend cap, with split or single payment.
digital-group-ordering
Not scored by this record.
Offers a distinct catering ordering flow with separate catering menu/minimums, lead-time rules, quotes or proposals, deposits, and invoice/house-account or ACH payment terms. differentiator
digital-catering-portal
Not scored by this record.
Vendor offers AI voice phone ordering (native or a named certified partner) that answers inbound calls and injects the completed order into the POS without staff transcription. differentiator
digital-voice-ai-phone
Not scored by this record.
Supports AI voice ordering at the drive-thru lane, integrated with the POS menu/modifiers and with escalation-to-human handoff.
digital-drivethru-ai
Not scored by this record.
Supports conversational SMS or chat ordering/reordering (text-to-order or text-a-link) that lands in the POS.
digital-sms-ordering
Not scored by this record.
Supports Order with Google — the restaurant's direct ordering link is provisioned to the Google Business Profile as an ordering option (ideally set as 'Preferred by Business'), rather than leaving marketplace links as the only choice. differentiator
digital-google-order
Not scored by this record.
Supports Apple Business Connect ordering placement — an 'Order Food' custom action on the Apple Maps place card pointing at the vendor's first-party ordering flow.
digital-apple-business-connect
Not scored by this record.
Loyalty accrual and redemption work inside the first-party digital ordering flow using the same guest identity as in-store, not as a separate post-purchase enrollment.
digital-loyalty-attach
Not scored by this record.
Supports guest subscription / membership programs (recurring billing for a delivery-fee waiver, a per-period item entitlement, or a paid loyalty tier) managed in the platform.
digital-subscriptions
Not scored by this record.
Discounts, coupon codes, and loyalty offers are defined once and honored identically across POS, kiosk, and first-party digital channels, with channel eligibility controls.
digital-promo-parity
Not scored by this record.
Vendor documents that the operator owns and can export first-party guest records (email, phone, consented marketing status, order history) in bulk, without a fee or vendor approval. differentiator
digital-guest-data-ownership
Not scored by this record.
Digital checkout uses vendor-hosted fields or a hosted payment page so card data never touches the restaurant's page, with the vendor publishing PCI DSS 4.0 compliance (including the client-side script-integrity requirements effective March 2025) and supporting 3DS.
digital-checkout-pci-sca
Not scored by this record.
Digital channels support the same service-fee / dual-pricing / card-surcharge configuration as the POS, with the required guest-facing disclosure and correct handling of jurisdictions and card brands where surcharging is prohibited. differentiator
digital-surcharge-transparency
Not scored by this record.
Guest data, loyalty & marketing
Maintains a single guest profile that automatically merges transactions from in-store POS, first-party web/app ordering, and kiosk under one identity (phone or email match), with documented dedup/merge behavior.
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
Orders arriving from third-party marketplaces (DoorDash, Uber Eats, Grubhub) attach to a native guest profile with usable guest identity rather than landing as anonymous tickets. differentiator
guest-loyalty-thirdparty-identity-attach
Not scored by this record.
Supports at least two of points-per-dollar, visit/punch-count, and spend-tier accrual as configuration, without custom development or a bolt-on loyalty vendor.
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
Supports status tiers with automatic promotion and demotion driven by rolling-window spend or visit counts. differentiator
guest-loyalty-tiers
Not scored by this record.
Documents explicitly what loyalty lookup, accrual, and redemption do when the POS loses connectivity (queue-and-reconcile vs blocked). differentiator
guest-loyalty-offline-behavior
Not scored by this record.
Offer/discount engine exposes explicit stacking and precedence rules (exclusive vs combinable, order of application) as configuration. differentiator
guest-loyalty-offer-stacking-rules
Not scored by this record.
Offers can be issued to a dynamically defined audience (rules over recency, frequency, spend, or items purchased) rather than only broadcast to the whole list. differentiator
guest-loyalty-targeted-offers
Not scored by this record.
Automatically computes recency/frequency/monetary or equivalent lifecycle segments (new, regular, at-risk, lapsed, VIP) without the operator building the queries. differentiator
guest-loyalty-rfm-segmentation
Not scored by this record.
Ships triggered lifecycle automations (birthday, first-visit thank-you, lapsed win-back) as configurable always-on campaigns rather than one-off manual sends.
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
Sends both email and SMS campaigns natively from the platform, not solely by handing the list to a third-party ESP. differentiator
guest-loyalty-native-email-sms
Not scored by this record.
Captures per-channel marketing consent with timestamp and source of consent, and honors revocation received by any reasonable means (not just the STOP keyword) across all channels.
guest-loyalty-consent-management
Not scored by this record.
Handles or explicitly documents A2P 10DLC brand and campaign registration required for the operator to send SMS through the platform.
guest-loyalty-10dlc-registration
Not scored by this record.
Reports redemption and incremental sales attributable to a specific campaign or offer, tying redeemed offers to actual check totals. differentiator
guest-loyalty-campaign-attribution
Not scored by this record.
Provides self-serve export of the full guest list and transaction history, including contact PII, via CSV or API, without a vendor fee or support ticket. differentiator
guest-loyalty-data-export-portability
Not scored by this record.
Triggers post-transaction feedback requests and routes responses by score, sending low scores to private service recovery and high scores toward public review sites. differentiator
guest-loyalty-review-capture-routing
Not scored by this record.
Includes a native referral mechanic with per-guest codes or links, attribution of the referred guest's first order, and two-sided rewards.
guest-loyalty-referral-program
Not scored by this record.
Issues an Apple Wallet or Google Wallet loyalty pass with push-updatable balance, as an alternative to requiring a branded app download. differentiator
guest-loyalty-wallet-pass
Not scored by this record.
Provides admin tooling to fulfill guest data access and deletion requests (CCPA/CPRA-style) including deletion propagation to loyalty and marketing records.
guest-loyalty-privacy-rights-tooling
Not scored by this record.
Enforces loyalty fraud controls such as redemption velocity limits, manager approval on manual point adjustments, and flagging of employee self-redemption, with an audit log.
guest-loyalty-redemption-fraud-controls
Not scored by this record.
Vendor documents AI/ML-generated recommendations for offer content, target audience, or send timing (claim-level; verify it is a shipped product feature, not a roadmap statement). differentiator
guest-loyalty-ai-offer-recommendation
Not scored by this record.
Offers native stored-value/gift card balances tied to the same guest profile and redeemable across all locations of the brand.
guest-loyalty-stored-value-gift
Not scored by this record.
Labor & workforce
Employees clock in and out at the POS terminal using a PIN, badge, or card, with no separate time-clock hardware required.
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
Captures a photo at punch (or performs facial verification) attached to the timecard entry, with a photo-only mode available that stores no biometric template. differentiator
labor-photo-punch-verification
Not scored by this record.
Records time punches while the POS is offline and reconciles them on reconnect without loss or duplicate entries, with the behavior documented. differentiator
labor-offline-time-punch
Not scored by this record.
Permissions are grantable per discrete action (void, comp, discount, refund, drawer open, price change, report access) per role and per location, not limited to fixed cashier/manager/admin tiers.
labor-granular-rbac
CLAIM: permissions grantable per discrete action (void, comp, discount, refund, drawer open, price change, report access) per role AND per location, not fixed tiers. VERDICT: partial/B. NEW SURFACE: the ChromisPos GitHub org's Admin repo (sha 4963bd3b, tree 1098 paths, truncated:false) and ChromisDatabaseCreator repo (sha 0dbc0f60, 227 paths), read via api.github.com + raw.githubusercontent.com (no clone). EVIDENCE: ChromisDatabaseCreator src-pos/uk/chromis/pos/liquibase/packages/populatedbpermissions.xml seeds the dbpermissions table with 87 classname rows (enumeration), labelled in Admin locales/dbpermissions.properties, e.g. 'Line Discount Button' (button.linediscount), 'Ticket Discount' (button.totaldiscount), 'Open Casher Drawer ... Enables the NO Sale - Open cash drawer button' (button.opendrawer), 'Refund Ticket' (sales.RefundTicket) plus per-tender refund rights (refund.cash/cheque/paper/magcard), 'Update Product Price ... update the selling price in the database' (db.updatedatabase), 'Ticket Line Editor' (button.lineeditor), 'Reports ... Allows access to the reporting section', 'Enables Override of locked tables'. Roles are arbitrary named records (Admin RolesDataLogic.java: 'update roles set name = ?, permissions = ?, reports = ?, rightslevel = ?'), and the Chromis Administration manual 1.5.4 (SourceForge ChromisDocs) says 'you can have multiple roles with the same permission level, with each role having different capabilities', 'The panel on the right has a check list of rights', per-report 'report access can be revoked or granted to the Role selected', and a Custom Permissions tab for user-defined buttons/scripts. POS enforcement: ChromisPOS (sha 4601654f) src-pos/uk/chromis/pos/sales/JPanelTicket.java 'm_jDelete.setEnabled(AppUser.hasPermission("sales.EditLines"))'. SHORTFALL: no location scoping of roles (roles carry only a siteguid database-site key; no per-location grant); no comp permission (closest is 'Free Sale (payment)', whole-sale); line void is not discrete - line delete is bundled into sales.EditLines ('Edit Line'). Hence partial. Retrieved 2026-09-17. https://raw.githubusercontent.com/ChromisPos/Admin/4963bd3bb64a31242086a5ae494b100dbdd4f251/locales/dbpermissions.properties · retrieved 2026-09-17 adversarially verified
Manager overrides and approvals are attributed to the individual approver and written to an immutable audit trail queryable after the fact.
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
Builds and publishes employee shift schedules inside the same platform that holds the timekeeping data, rather than requiring a third-party scheduling app. differentiator
labor-native-scheduling
Not scored by this record.
Generates recommended staffing levels or labor hours by daypart from the operator's own POS sales history, not just a static template. differentiator
labor-demand-labor-forecast
Not scored by this record.
Displays labor cost as a percentage of sales in real time during service on a manager view or POS, not only in end-of-day or next-morning reports. differentiator
labor-realtime-labor-percent
Not scored by this record.
Warns or blocks at clock-in when an employee is approaching or would cross a configured overtime threshold, before the overtime is incurred. differentiator
labor-overtime-prevention
Not scored by this record.
Configures meal and rest break rules per state or jurisdiction, prompts required break attestation, and flags missed breaks for premium pay. differentiator
labor-break-compliance-by-state
Not scored by this record.
Enforces minor-labor restrictions (age-based maximum hours, prohibited time windows, school-day limits) at both scheduling and clock-in.
labor-minor-labor-rules
Not scored by this record.
Computes tip pooling and tip-outs automatically per shift from configurable rules (percentage of sales, hours worked, points, or role), rather than requiring a manual spreadsheet.
labor-tip-pooling-rules
Not scored by this record.
Retains a per-shift, per-employee record of tips received, amounts contributed to the pool, and amounts distributed from the pool, exportable for audit.
labor-tip-distribution-audit-trail
Not scored by this record.
Payroll export separates cash from charged qualified tips and carries a Treasury tipped-occupation code, supporting the W-2 Box 12 code TP and Box 14b reporting required for tax year 2026. differentiator
labor-qualified-tips-w2-reporting
Not scored by this record.
Vendor processes payroll itself as a first-party product (tax filing and direct deposit), as opposed to exporting to a third-party payroll provider only. differentiator
labor-native-payroll
Not scored by this record.
Exports timecards, wages, and tips in documented formats or via direct integration for at least two major payroll providers (e.g. Gusto, ADP, Paychex, QuickBooks).
labor-payroll-export-formats
Not scored by this record.
Employees can request shift swaps or claim open shifts in a self-service app, subject to a manager approval workflow that enforces overtime and role eligibility. differentiator
labor-shift-swap-workflow
Not scored by this record.
Reports per-employee sales performance metrics (average check, items or category attachment rate, void and comp rate) by server or cashier. differentiator
labor-server-performance-metrics
Not scored by this record.
Inventory, purchasing & cost control
Supports multi-level recipe/BOM costing where a recipe can contain sub-recipes (prep items) and plate cost recalculates automatically when any component ingredient's cost changes.
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
Stores purchase unit, recipe unit, and count unit per item with explicit conversion factors, plus a yield/waste percentage applied to raw-to-usable conversion.
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
Produces a theoretical-vs-actual usage variance report per item for a defined count period, showing theoretical usage from POS sales times recipe, actual usage from counts plus receipts, and the variance in both units and currency. differentiator
inventory-theoretical-vs-actual
Not scored by this record.
Depletes ingredient on-hand quantities in near real time as orders are fired at the POS, including depletion driven by modifier selections, not only in an end-of-day batch. differentiator
inventory-realtime-depletion
Not scored by this record.
Automatically 86s (marks unavailable) menu items on the POS, online ordering, and connected third-party delivery menus when a component ingredient hits zero or a configured threshold. differentiator
inventory-86-auto-sync
Not scored by this record.
Supports full physical inventory, ad-hoc spot counts of a subset, and scheduled recurring cycle counts, with each count's variance recorded as separate history rather than overwriting prior counts.
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
Provides a mobile/tablet counting app supporting barcode or QR scanning that continues to accept counts with no network connectivity and syncs on reconnect.
inventory-mobile-count-offline
Not scored by this record.
Ships pre-built electronic vendor catalog and order-transmission integrations with named broadline distributors (e.g. Sysco, US Foods, Performance Food Group) that send purchase orders and receive invoices electronically rather than by emailed PDF. differentiator
inventory-vendor-catalogs-edi
Not scored by this record.
Ingests supplier invoices from photo, PDF, or email and extracts line-item detail (item, quantity, unit, price) into the inventory ledger without manual line entry. differentiator
inventory-invoice-ocr
Not scored by this record.
Tracks per-item purchase price history across invoices and alerts when a received price exceeds the prior or contracted price by a configurable threshold. differentiator
inventory-price-change-alerts
Not scored by this record.
Maintains par levels per item per location and generates suggested purchase order quantities from on-hand versus par, with at least one mode driven by a sales forecast rather than a static par. differentiator
inventory-par-auto-suggest
Not scored by this record.
Provides a structured waste/spoilage logging workflow with reason codes that debits inventory and reports waste cost separately from usage variance.
inventory-waste-logging
Not scored by this record.
Tracks expiration or use-by dates on received and prepped items and surfaces an expiring-soon report or alert before spoilage.
inventory-shelf-life-expiry
Not scored by this record.
Supports partial-bottle liquid inventory by weight (scale integration) or by bottle fraction for bar and beverage counting.
inventory-bar-partial-bottle
Not scored by this record.
Exports period COGS and accounts-payable invoice detail in a named accounting system's import format (e.g. QuickBooks, Sage Intacct, NetSuite) with GL account mapping configurable per item category.
inventory-cogs-gl-export
Not scored by this record.
Inventory and recipe costing are delivered natively by the POS vendor rather than requiring a separately-contracted third-party product (e.g. MarginEdge, MarketMan, Restaurant365) to function. differentiator
inventory-native-not-partner
Not scored by this record.
Reporting, BI & data access
Provides a live sales dashboard reflecting transactions within minutes of the sale, accessible from both a browser and a mobile app off-premise.
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
Generates a daily close-out/EOD report reconciling gross sales, net sales, tax, tips, discounts, refunds, tender types, and expected cash deposit in one document.
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
Provides a product mix (PMIX) report at individual menu item AND modifier level with quantity, gross and net sales, filterable by daypart and revenue center.
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
Produces an audit report of comps, voids, discounts, and price overrides attributed to the employee who applied them and the manager who approved them, with reason codes and timestamps.
reporting-comps-voids-audit
Not scored by this record.
Reports cash over/short per drawer, per shift, and per employee, comparing counted cash to expected cash from tendered transactions and paid-outs.
reporting-cash-over-short
Not scored by this record.
Reports sales per labor hour and labor cost as a percentage of sales by hour, by department, and by employee, using actual clocked hours from the POS time clock.
reporting-labor-productivity
Not scored by this record.
Reports per-server metrics including average check, items per check, attachment rate for named categories, and tips as a percentage of sales. differentiator
reporting-server-scorecards
Not scored by this record.
Reports revenue and margin by fulfillment channel — dine-in, direct online, first-party delivery, and each third-party marketplace separately — net of marketplace commission fees. differentiator
reporting-channel-profitability
Not scored by this record.
Supports scheduling any report for automatic recurring delivery by email or to a shared destination on a defined cadence and recipient list.
reporting-scheduled-delivery
Not scored by this record.
Publishes a documented public REST or GraphQL API covering orders, payments, menu, and labor data, with self-service developer credentials obtainable without a signed partner agreement. differentiator
reporting-public-api
Not scored by this record.
Emits outbound webhooks for order and payment lifecycle events to a customer-supplied endpoint, with documented retry behavior and payload signature verification. differentiator
reporting-webhooks
Not scored by this record.
API and raw-data access are included in the standard subscription rather than gated behind an additional per-location fee, revenue share, or enterprise-only contract. differentiator
reporting-api-not-upcharged
Not scored by this record.
Core reporting beyond basic sales summaries — labor vs sales, PMIX, comps/voids audit, multi-location comparison — is available on the entry-level paid plan rather than requiring a higher tier or an add-on analytics SKU. differentiator
reporting-tier-paywall
Not scored by this record.
Documents a historical retention window of at least 24 months of transaction-level detail queryable in the reporting UI, with no silent truncation or archive retrieval fee. differentiator
reporting-history-retention
Not scored by this record.
Sends proactive push or email alerts when an operator-configured metric breaches a threshold or deviates from its historical pattern (e.g. void spike, sales below forecast, discount rate anomaly). differentiator
reporting-anomaly-alerts
Not scored by this record.
Offers a natural-language query or AI assistant that answers ad-hoc questions against the operator's own sales and labor data and returns a figure or chart, not a generic help-article response.
reporting-nl-query
Not scored by this record.
Reports guest-level analytics including new versus returning guest counts, visit frequency, and lifetime spend cohorts tied to identifiable guest records from loyalty or online ordering. differentiator
reporting-guest-cohorts
Not scored by this record.
Produces a forward sales forecast at daypart or hourly granularity from the location's own history, exposed in the reporting UI and consumable by scheduling or ordering workflows. differentiator
reporting-sales-forecast
Not scored by this record.
Generates payroll- and tax-ready tip reporting: declared versus charged tips per employee, tip pool distribution detail, and a tax liability summary by jurisdiction.
reporting-tip-tax-compliance
Not scored by this record.
Multi-location, franchise & enterprise governance
Supports a named organizational hierarchy of at least three levels (e.g. enterprise > region/group > location) as a first-class object that reporting and permissions can be scoped to, not just a flat list of locations.
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
Supports price tiers/zones so one menu item carries different prices per location group, per order channel, and per daypart without duplicating the item record.
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
Provides above-store reporting that aggregates sales, labor, discounts, voids, and item mix across any selected set of locations in one view, with store-vs-store ranking and variance flags.
multi-location-consolidated-reporting
Not scored by this record.
Gift cards issued at one location are redeemable at any other location in the brand, with a reported outstanding-liability balance and inter-store settlement/redemption reconciliation between owners.
multi-location-cross-location-giftcard
Not scored by this record.
A single customer loyalty profile, balance, and stored order history is shared across all locations in the brand rather than being per-location.
multi-location-cross-location-loyalty
Not scored by this record.
A single location/terminal can operate two or more distinct brands or virtual brands with separate menus, receipts/branding, and separately reportable revenue, on the same hardware and drawer. differentiator
multi-location-multi-brand
Not scored by this record.
Tax configuration is per-location with support for multiple simultaneous tax rates, jurisdiction-specific rules (e.g. prepared-food vs grocery, inclusive vs exclusive tax), and per-location tax exemptions.
multi-location-multi-tax-jurisdiction
Not scored by this record.
Labor rules (overtime, break enforcement, predictive-scheduling compliance) are configurable per location or location group and enforced at the terminal, not just reported after the fact.
multi-location-central-labor-policy
Not scored by this record.
Hardware & physical footprint
The POS software runs on commodity off-the-shelf hardware (standard iPads, Android tablets, or PCs) that the operator can buy from a third party, rather than only on vendor-supplied proprietary terminals. differentiator
hardware-commodity-devices
Not scored by this record.
Vendor documentation names the specific client operating systems supported (iOS/iPadOS, Android, Windows, Linux/web) and states minimum OS versions and device specs.
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
Offers a purpose-built handheld ordering device with an integrated card reader (not a phone case add-on), with published drop rating and IP ingress rating.
hardware-handheld-purpose-built
Not scored by this record.
The handheld supports hot-swappable or field-replaceable batteries, or the vendor publishes a rated battery life for a full shift. differentiator
hardware-handheld-battery-swap
Not scored by this record.
Handhelds support cellular/LTE connectivity as a documented fallback when store Wi-Fi drops, either built into the device or via a vendor-supplied failover.
hardware-handheld-lte
Not scored by this record.
Terminals continue to take orders, print to kitchen, and record cash sales with the internet down, and the vendor documents explicitly which functions degrade (card auth, loyalty lookup, refunds).
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
Sells or supports a dedicated kitchen display system with bump-bar or touch input, station routing, and course/fire timing, as a first-party product rather than an integration-only dependency.
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
Offers a self-order kiosk running the same menu and modifier engine as the POS, in both countertop and freestanding form factors, with integrated payment and accessibility (ADA) compliance documented. differentiator
hardware-kiosk
Not scored by this record.
Supports drive-thru-specific hardware: outdoor digital menu boards, order confirmation displays, and speaker/headset integration, with a documented timer/speed-of-service measurement.
hardware-drive-thru
Not scored by this record.
Works with standard ESC/POS thermal receipt and kitchen printers from more than one manufacturer (e.g. Epson and Star), including LAN/Ethernet printers, rather than only vendor-branded printers.
hardware-printer-compatibility
Not scored by this record.
Supports the standard peripheral set — cash drawers (including multi-drawer per terminal), barcode scanners, scales for by-weight items, and customer-facing displays — with a published compatibility list.
hardware-peripherals
Not scored by this record.
Card entry happens on a PCI-listed PTS device using validated point-to-point encryption, so the POS application and tablet stay out of PCI scope; the vendor states the merchant's SAQ type.
hardware-p2pe-terminal
Not scored by this record.
Supports contactless acceptance directly on a commodity phone or tablet (Tap to Pay on iPhone / Tap to Pay on Android) with no separate reader. differentiator
hardware-tap-to-phone
Not scored by this record.
Hardware prices are published per SKU on the vendor's public site, rather than quote-only. differentiator
hardware-pricing-transparency
Not scored by this record.
Hardware can be purchased outright (owned) as an alternative to a mandatory lease or subscription-bundled rental, and the vendor states which. differentiator
hardware-ownership-vs-lease
Not scored by this record.
Vendor documentation confirms whether hardware purchased from the vendor remains usable with other software after cancellation, i.e. it is not software-locked or remotely bricked. differentiator
hardware-usable-after-churn
Not scored by this record.
Publishes a hardware warranty term and a replacement/advance-exchange SLA with a stated turnaround (e.g. next-business-day depot swap). differentiator
hardware-rma-sla
Not scored by this record.
Staff can run the ordering or payment app on their own personal phone (BYOD) with a documented permission and security model.
hardware-byod
Not scored by this record.
Provides a remote device-management console showing each terminal, printer, and KDS as online/offline, with remote reboot, software-version visibility, and staged rollout of updates. differentiator
hardware-remote-device-management
Not scored by this record.
Integrates with specialty beverage hardware — self-pour tap walls, flow meters, or liquor pour spouts — such that pours post to a POS tab automatically.
hardware-selfpour-scales
Not scored by this record.
Supports inbound caller ID hardware or a telephony integration that pops the customer record and order history at the POS on an incoming call.
hardware-callerid-integration
Not scored by this record.
Integrations, API & extensibility
Public, self-serve API reference documentation is readable without a signed partner agreement, NDA, or sales call.
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
API access is included in the base subscription at no additional per-location fee, surcharge, or upgraded plan requirement. differentiator
extensibility-api-access-cost
Not scored by this record.
A free sandbox or test environment with seeded data is available to developers without owning a paid production account. differentiator
extensibility-free-sandbox
Not scored by this record.
Third-party apps authenticate via OAuth 2.0 with scoped, operator-granted, individually revocable permissions (not shared static API keys or credential sharing).
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
The platform pushes real-time webhooks for order lifecycle events (created, modified, paid, voided, refunded) rather than requiring polling.
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
Webhooks are cryptographically signed (e.g. HMAC) AND documented to retry with backoff, with a replayable event log for missed deliveries. differentiator
extensibility-webhook-reliability
Not scored by this record.
A public write API accepts externally originated orders into the POS as first-class tickets that fire to KDS/printers and land in reporting.
extensibility-order-injection-api
Not scored by this record.
The vendor is a named DoorDash Preferred Integration Partner (DPIP) under the 2026 program requirements. differentiator
extensibility-doordash-preferred
Not scored by this record.
Direct, first-party certified integrations exist with DoorDash, Uber Eats, and Grubhub without requiring a paid middleware layer (Otter/Chowly/Deliverect/Checkmate). differentiator
extensibility-first-party-delivery-integrations
Not scored by this record.
The POS is a supported endpoint for at least two major aggregation middleware platforms (Deliverect, Chowly, Otter, Checkmate, ItsaCheckmate).
extensibility-middleware-compatibility
Not scored by this record.
Native, vendor-maintained connectors exist for QuickBooks Online and at least one other GL/accounting system, with mapped journal entries rather than CSV-only export.
extensibility-accounting-connectors
Not scored by this record.
Labor hours export natively to at least two named payroll providers (e.g. Gusto, ADP, Paychex, Paylocity) without manual re-keying.
extensibility-payroll-export
Not scored by this record.
The vendor operates a public integrations marketplace listing named third-party apps that operators can browse and self-install.
extensibility-app-marketplace
Not scored by this record.
The vendor supports a headless/embedded mode where a third-party UI (kiosk, web ordering, drive-thru) drives the POS transaction engine via API.
extensibility-headless-embedded
Not scored by this record.
A complete historical data export (orders, customers, menu, payments metadata) is available to the operator on demand, in a documented machine-readable format, at contract end. differentiator
extensibility-data-portability-exit
Not scored by this record.
Reliability, offline & operations
Order entry, ticket routing, and check printing continue on-terminal when the internet connection is lost.
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
Card payments can be accepted while offline via store-and-forward, not just cash-only fallback. differentiator
reliability-offline-card-auth
Not scored by this record.
The vendor publicly documents who bears the loss when a store-and-forward transaction declines after connectivity returns, and states any per-transaction or cumulative offline cap. differentiator
reliability-offline-decline-liability
Not scored by this record.
Multiple terminals continue to share a single check/table state over the local network while the internet is down (LAN-only degraded operation, not per-terminal islands). differentiator
reliability-lan-degraded-multi-terminal
Not scored by this record.
The vendor documents a local/on-premise transaction engine or edge server (not purely cloud-hosted request/response) for the ordering path. differentiator
reliability-local-transaction-engine
Not scored by this record.
Kitchen display and/or kitchen printer routing continues to function while offline.
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
The system automatically fails over to a backup printer or KDS station when a configured kitchen printer is unreachable, and alerts staff.
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
The vendor documents its conflict-resolution behavior for edits made on two devices during a network partition (e.g. last-write-wins, merge, or operator prompt).
reliability-sync-conflict-handling
Not scored by this record.
The vendor publishes an explicit list of which features are unavailable offline (gift cards, loyalty lookup, refunds, manual card entry, text-to-pay).
reliability-offline-feature-matrix
Not scored by this record.
A public, per-component status page exists showing current and historical incident state without a login.
reliability-public-status-page
Not scored by this record.
24/7/365 live human support by phone is included in the base subscription, not sold as a premium support tier.
reliability-247-live-support
Not scored by this record.
The vendor offers in-person on-site installation and go-live support (first-party or certified dealer network), not remote-only self-install. differentiator
reliability-onsite-install
Not scored by this record.
A hardware replacement/advance-exchange program with a stated turnaround time is included or purchasable.
reliability-hardware-replacement-sla
Not scored by this record.
The vendor publishes a current PCI DSS v4.0/4.0.1 Attestation of Compliance or equivalent (e.g. validated P2PE listing) covering the post-March-2025 future-dated requirements.
reliability-pci-dss-4-attestation
Not scored by this record.
Multi-factor authentication is enforceable on back-office and POS administrative logins, with role-based permissions.
reliability-mfa-role-based-access
Not scored by this record.
A public, free training library (video/LMS) and a practice/training mode on the terminal exist for staff onboarding.
reliability-self-serve-training
Not scored by this record.
Any terminal can assume the master/server role automatically if the designated primary terminal or local server fails. differentiator
reliability-failover-terminal-role
Not scored by this record.
Terminals support an automatic cellular/LTE failover for connectivity, first-party or documented.
reliability-cellular-backup
Not scored by this record.
Commercial, compliance & data ownership
Vendor publicly offers a month-to-month subscription with no minimum multi-year term commitment for its core POS software tier. differentiator
commercial-month-to-month-contract
Not scored by this record.
Vendor's published terms of service or MSA state no early termination fee / no liquidated damages for cancelling the software subscription before term end. differentiator
commercial-no-early-termination-fee
Not scored by this record.
The auto-renewal term and the required cancellation notice window (e.g. 30/60/90 days) are stated in publicly accessible contract terms rather than only in a signed quote.
commercial-autorenew-terms-published
HELD unknown (claim does not apply: no contract term exists). NEW: chromis.co.uk (WP REST /wp-json 403; wp-sitemap.xml empty urlset; homepage links 6 content pages) - /licence-details/ 'Chromis POS and Chromis Kitchen Screen are both released under the GPLv3 licence ... Free to own Free to use Free to modify'; /supporting-chromis/ is a donations page only ('making a small donations'). No paid support plan, subscription or renewal term is offered on any linked page, so there is no auto-renewal term to publish; per merge policy this is not a no. Retrieved 2026-09-17. || 330th: NEW SURFACE 2026-09-18 (330th): the SHIPPED PRODUCT itself, rather than the marketing site, now bounds the 'no contract term exists' hold. Read via api.github.com + raw.githubusercontent.com (no clone; github.com pages untouched): the publisher account ChromisPos has exactly 6 repositories (Admin, Chromis-setup, ChromisDatabaseCreator, ChromisKitchenScreen, ChromisPOS, ChromisTerminal) and the POS itself, ChromisPOS at sha 4601654f34d59a3a76cb537d279b7b1e8eb8cc36, is a complete tree of 1,185 blobs with truncated:false. Its shipped licensing/ directory holds 35 files and is ALL open-source licence text - gpl-3.0.txt, lgpl-2.1.txt, Apache/BSD/CPL and per-dependency LICENSE/NOTICE files - plus the product's own 'Chromis POS Notice.txt', which is the whole of its terms: 'This license file applies to the Chromis POS software (the "Chromis POS Software") ... A) Chromis POS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License ... version 3 ... Chromis POS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY'. There is no EULA, no subscription agreement, no order form and no renewal clause in the distribution. The app's English message catalogue (locales/chromispos.properties, 459 keys, the product's full user-facing string set together with locales/company.properties and chromisposconfig.properties) scores zero on every subscription control, tokenised and case-insensitive: renew 0, auto-renew 0, subscription 0, billing 0, 'licence/license key' 0, 'activation code' 0, and 'licen[cs]' 0 anywhere in the catalogue - i.e. the product ships no licence-key, activation, expiry or billing machinery at all. POISON NAMED: bare 'term' is a trap in this codebase - its single hit is 'alert.noTerminalName=Terminal name not define' (the product ships a ChromisTerminal component); and 'expir' is 3 hits, all unrelated ('label.cardexpdate=Expiry Date', two tax-exemption-certificate messages). chromis.co.uk re-probed with curl today: /wp-json/wp/v2/types and /pages return 401 (a plugin gate, not a bar), wp-sitemap.xml serves an EMPTY urlset and /sitemap.xml is 442 bytes, and the whole site is still the 5 pages the homepage links (Home, Chromis POS, Kitchen Display Screen, Licence Details, Supporting Chromis, Contact US) with no pricing, no store and no support plan - Contact US is a bare feedback form. forum.chromis.co.uk does not resolve (NXDOMAIN). HELD unknown for the same reason as before, now bounded by the product and not just the site: Chromis is GPLv3 freeware with no paid subscription, so there is no auto-renewal term or cancellation-notice window to publish, and per merge policy a capability the product lacks entirely is a hold, not a no. Retrieved 2026-09-18. adversarially verified
The POS software can be purchased and operated with a third-party payment processor of the operator's choice (no mandatory in-house processing lock). differentiator
commercial-processing-not-bundled
Not scored by this record.
Vendor publishes an interchange-plus (cost-plus) processing rate option with the markup stated as a specific bps + per-transaction figure, rather than only blended/flat card-present rates. differentiator
commercial-interchange-plus-published
Not scored by this record.
The processing agreement caps or prohibits unilateral vendor-initiated rate increases outside of pass-through interchange/network changes, or grants penalty-free exit on any increase. differentiator
commercial-rate-increase-clause
Not scored by this record.
Per-location and per-additional-terminal software pricing is published as specific dollar figures on the vendor's public site (not 'contact sales' only).
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
Individual modules (online ordering, KDS, loyalty, inventory, payroll, marketing) can be purchased à la carte and cancelled independently without repricing the base POS subscription. differentiator
commercial-module-unbundling
Not scored by this record.
All required terminals, KDS screens, and printers can be purchased outright at a published price, with no mandatory multi-year hardware lease or rental.
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
Vendor documents support for at least one non-proprietary/third-party hardware option (e.g. standard iPad, Epson/Star ESC/POS printers, generic cash drawer) rather than requiring vendor-only devices. differentiator
commercial-hardware-not-locked
Not scored by this record.
Operators can self-serve export their full transactional history (orders, line items, payments, labor) to CSV or a documented API without contacting support or paying a fee.
commercial-data-export-self-serve
Not scored by this record.
Guest/customer records, loyalty balances or point ledgers, and gift-card liability balances are exportable in machine-readable form by the operator. differentiator
commercial-export-customer-and-loyalty
Not scored by this record.
Contract or documentation specifies a post-termination data retrieval window (a defined number of days during which the operator can still export their data) rather than immediate cutoff. differentiator
commercial-post-termination-export-window
Not scored by this record.
Published terms explicitly state the merchant owns its transaction and customer data, and constrain the vendor's right to use or resell that data (beyond aggregated/de-identified use) for its own products or marketing. differentiator
commercial-data-ownership-clause
Not scored by this record.
Vendor documents validated P2PE or hardware-encrypted card entry plus tokenization such that the merchant's PCI scope is reduced to SAQ A / SAQ P2PE-HW, and names the applicable SAQ.
commercial-pci-p2pe-tokenization
Not scored by this record.
Vendor documents PCI DSS v4.0.1 future-dated controls in effect since 31 Mar 2025 — notably MFA for all access to the cardholder data environment including POS and back-office logins, and (for hosted ordering pages) payment-page script integrity monitoring per Req 6.4.3/11.6.1.
commercial-pci-dss-4-controls
Not scored by this record.
Product provides in-app tooling for CCPA/CPRA and GDPR data-subject requests — locating, exporting, and deleting an individual guest's records — plus a published DPA the operator can execute.
commercial-privacy-dsar-tooling
Not scored by this record.
Vendor publishes an accessibility conformance report (VPAT/ACR) claiming WCAG 2.1 AA (or later) for its self-order kiosk and consumer web-ordering surfaces, including a documented tactile/audio non-visual access mode on kiosks. differentiator
commercial-wcag-kiosk-accessibility
Not scored by this record.
POS supports card-network-compliant dual pricing / cash discount or surcharging with automatic exclusion of debit and prepaid cards from any surcharge, and required receipt and menu-board disclosure of the fee. differentiator
commercial-dual-pricing-compliant
Not scored by this record.
Adversarial verification
An independent pass was instructed to refute this record, defaulting to downgrade when uncertain. It challenged 0 values — 0 upheld, 0 downgraded, 0 upgraded. It separately resolved 31 previously unknown values. 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