Changelog
What's new in the Eventini POS app
Eventini POS: built for the line, not the office.
Every release ships real features from real operator feedback. Tap to Pay, split payments, kitchen tickets, and more — shipped in 3 weeks from first commit.
59
Builds shipped
v3.2
Current version
91
Days since v1.0
Releases
Every version of the Eventini POS app, from initial launch to the latest build.
v3.5.13
build 103CurrentMay 14, 2026
Multi-location push notifications, Cash Tip Reconciliation across every report, multi-iPad Stripe reader sharing with handoff, S710 auto-reconnect, Call-In order type, and invoice deposits + multi-installment auto-charge. Plus cash-freeze fixes and KDS modifier-group coloring.
- Push notifications now scope to each iPad's set location — only the iPad bound to Wicker Park wakes for Wicker Park orders. Powered offline iPads still queue and receive notifications for their last-set location.
- Cash Tip Reconciliation — at session close, record cash tips per staff plus an Unattributed bucket. Saves to a single source-of-truth doc per session and surfaces on POS Reports, the marketplace POS Dashboard (Overview / Sales / Tips tabs), and a new "Cash to remit" widget on the organization dashboard.
- Multi-iPad reader sharing — pairing the same Stripe S710 / S700 / WisePOS to two iPads now coordinates. A green / amber / red status pill shows who has the reader, with a one-tap "Take Over" hand-off and a 60-second grace period so a card mid-tap doesn't get yanked. Switching an iPad to KDS role automatically releases the reader for its peer.
- Call-In Orders — opt-in order type for phone-in pickups (Settings → Sales & Orders → Order Settings). Skips the payment screen, prints a receipt stamped UNPAID with PAY ON ARRIVAL, and surfaces a red UNPAID chip on every KDS and the transaction list so the kitchen knows to collect on arrival.
- Invoices now support deposits and multi-installment auto-charge schedules. Customer's card saves on the deposit charge (off-session), a daily cron auto-charges follow-ups on their resolved due dates, and the cancel sheet pre-fills the refundable-paid sum from policy.
- Auto-complete on bump (per-station Push Bar toggle) — when ON for a prep station, bumping the last actionable item on a ticket runs the full cashier-complete pipeline: customer SMS, ticket-time metric, status flip on every KDS.
- KDS modifier-group color picker (Settings → Hardware → KDS Display → Modifier colors) — map a group name like NO or ALLERGIES to a color from an 8-swatch palette so high-stakes lines jump off the ticket.
- Stripe S710 reader now auto-reconnects after a Wi-Fi drop, exposes battery + charging telemetry on the device doc, and shows a live green / amber / red status pill on the register screen with a tap-through to setup when offline.
- Reports / Banking / Dashboard / Org-admin views fold cash tips into the existing Tips card and add a "Cash to remit" line — same Firestore source as the iPad, no parallel computation.
- Per-modifier-group color on KDS station view and the order-detail sheet, with the existing "2× Ranch" rollup preserved.
- Cash rounding moved from Settings → Hardware to Settings → Sales & Orders → Cash Handling, with a new "Round Up & Down" half-up toggle alongside the existing "Round Up" mode (mutually exclusive).
- Push Bar toggle backfill — flipping Push Bar mid-shift now restamps the day's in-flight orders so previously-orphaned tickets snap into the right view immediately, with a toast confirming the restamp count.
- POS Online Ordering tab writes storefront settings per-location when a location pill is active, so multi-location providers can give each storefront its own hours / settings without overwriting the provider baseline.
- Rewards "free item" picker now supports categories AND/OR specific items — a coffee shop can drop "any latte" into a punch-card reward without enumerating every size + syrup combo.
- Punch-card visits limited to one per 24 hours per customer (visible disclaimers in admin + storefront). Dollars-mode rewards still accrue per dollar with no cooldown.
- Special Pricing fields on Edit Item — Price ($) no longer kicks the cursor out mid-keystroke; Start / End fields are now native time pickers instead of free-text.
- Modifier picker — qty stepper (+) now counts toward "Choose N-N" group validation, and saved items rehydrate the stepper to its saved qty instead of resetting to 1.
- Cash, Open Tab, and Card + Tip flows no longer freeze the "Confirming Order" overlay forever when the Firestore write fails. The cashier gets a toast (or, for card-after-tip, an Alert with the PaymentIntent id so they can refund or record manually) and can retry without force-quitting.
- Reports → Net Sales no longer attributes historical refunds to "Today" — refunds now cross-reference against the visible (timeframe + location) order set on every code path. Previously the All-Locations breakdown was leaking the full 500-doc lifetime refund pool into the current window.
- POS Orders screen sound + display are now location-aware on the cashier iPad. Setting the pill to Mama silences haptic, chime, and the order listener for Papa orders, matching how the KDS multi view has worked all along.
- Single-payment invoices now actually work at the pay step — /api/invoice/pay and /api/invoice/status were referenced by the customer pay page but never existed on the marketplace repo. Both endpoints now exist (status is read-only; webhook is the single writer).
- Multi-location dashboard pill now defaults to "All locations" with two or more locations, and clicking "All locations" stays on All Locations instead of reverting to the default. Selection persists across refreshes via the URL (?location=, ?tab=) with a per-provider localStorage fallback.
- Piña's Mexican Eats — one-off migration divided out 5.6% baked-in sales tax across 33 menu items and 28 modifier-option prices so tax is now correctly added at checkout instead of double-charged (was tax-on-tax-inclusive). Modifier groups reordered to Meat → Tortilla → Toppings → No.
v3.5.12
build 102May 13, 2026
Faster cold start, cancel works on every payment overlay, modifier-qty steppers, receipt screen leading with the iPad picker, KDS pagination + no more "..." cut-offs, and the storefront location pill always visible with a pickup-location confirm at checkout.
- Splash screen comes down ~1–3 seconds sooner on every launch.
- Cancel works on every payment overlay (initializing, waiting, processing, etc.).
- Optional + buttons let you ring up multiples of the same modifier (2× Ranch).
- Receipt screen leads with the iPad picker; no more duplicate "waiting for customer" spinner.
- Managers now see Transactions, Refunds, and Online Ordering (still no Reports / Banking).
- KDS tickets show full content — no more "..." cut-offs — and big tickets paginate.
- Storefront always shows the location pill; checkout asks customers to confirm the pickup location.
v3.5.11
build 101May 9, 2026
Bar Mode card flow charges in one tap — pre-auth, tip prompt, and receipt all run automatically with no separate Open Tab step. Cleaner Gift Card sheet, single back button in Settings, and Tabs panel keeps just Open and Closed views.
- Bar Mode card flow charges in one tap — pre-auth, tip prompt, and receipt all run automatically without a separate Open Tab step.
- Cleaner Gift Card sheet, single back button in Settings, and the Tabs panel keeps just Open and Closed views.
- Manager-only surfaces (Transactions, Online Ordering, Integrations) are now hidden from cashier and cook accounts.
v3.5.9
build 97May 8, 2026
Tab improvements end-to-end — searchable / sortable open tabs, Apply Discount on a tab, Bar Mode hardware setting that streamlines the reader-side flow, and automatic gift-card re-credit on refunds.
- Tab improvements — searchable, sortable, filterable open tabs list with a redesigned compact layout. Tab detail opens as a full screen with a three-dot actions menu (Nightly Close, Apply Discount, Delete Tab).
- Apply Discount on a tab — pick from saved presets (Employee, Friends & Family, etc.) or any custom %, manager-PIN gated, shown as a line item with a long-press to remove.
- Bar Mode — hardware setting that streamlines the reader-side flow for high-volume bars: tap → tip → receipt prompt on the reader. Skips the rewards lookup and iPad receipt picker entirely.
- Gift card refunds — refunds now re-credit the gift-card portion automatically, with the card portion still going to Stripe.
- Reliability fixes across tab open / close, discount math, and modal dismissal.
v3.5.8
build 96May 7, 2026
Gift cards end-to-end — issue at the register, scan QR to redeem, deliver by email or text, and customers see a live-updating balance page. New Gift Cards Report. Comps and discounts now break out separately in every sales report.
- Gift card issuance from the Gift Cards keypad — Cash / Card / Comp picker matching the regular Payment Method sheet. Cash flow drops the drawer; Comp issues a free card without taking payment.
- Gift card delivery — required Email or SMS pick on every issuance. SMS uses ClickSend through the marketplace; email uses Resend. Both link to a public e-gift-card page.
- Live e-gift-card landing page at eventini.io/gc/{code} — balance auto-updates the moment the POS deducts (Firestore onSnapshot), with a "Live" pulse pill, scale-pulse on change, and a grayscale state when fully redeemed.
- QR scanner on the iPad gift-card redeem sheet — fullscreen camera with bracket-frame overlay, torch toggle, sub-100ms detection, scan beep + haptic + screen flash, then auto-fills the code and validates.
- New Gift Cards Report (Reports tab on iPad + /pos-gift-cards on the dashboard) — outstanding-liability hero, period sales / redemption stats, lifetime totals, redemption rate, per-card detail with provider + status filters, CSV export.
- Comp button on Payment Method that drops a 100% discount with one tap. Custom $-off discount input alongside the existing percent presets.
- Storefront BOGO support end-to-end — schema, dashboard editor, and storefront cart auto-apply.
- Sales / Daily / Weekly / Monthly / Custom / All-Tx reports now break out: Gift Cards Sold (issuance count + face value), Gift Card Redemptions (re-labeled — was misleadingly "Gift Card Sales"), Gift Card $ Redeemed, Comped Orders, Discounted Orders.
- CSV exports get a new Comp column so accountants can filter comped orders out of revenue when reconciling.
- POS Audit page on the dashboard now surfaces three new event types — ORDER_COMPED (amber), GIFT_CARD_ISSUED, GIFT_CARD_REDEEMED (purple) — so a manager filtering for comps in the audit feed sees a flat list.
- POS Dashboard (/pos-dash) gets a 4-up stat row for Gift Cards Sold / Redemptions / Comped Orders / Discounts that mirrors the iPad sales report line items.
- Order placement auto-tags is_comp on any order whose discount drove total to $0, so existing comp-by-discount flows are tagged retroactively without a UI change.
- Camera permission strings rewritten to App-Store-ready format with a one-page review-notes doc covering each permission's why / where / data-handling.
- Gift card SMS + email delivery now actually sends. iPad calls were going to the Render fallback server (which doesn't host the gift-card routes) and silently 404'ing without surfacing the error.
- Gift card delivery sheet no longer pretends success on a failed send — the modal stays open with the error reason so the cashier can switch delivery method or fix the address / phone.
- Public-read Firestore rule on GiftCards/{code} so the unauthenticated landing page can subscribe without permission errors.
v3.5.7
build 95May 6, 2026
In-house delivery polish — runner-slip-on-Complete, online delivery on the KDS, and cross-device printing so refires, kitchen reprints, customer receipts, and delivery slips fire from any iPad.
- Online delivery orders appear on every prep KDS, route to the correct prep printers, and trigger the same delivery confirmation text customers get from in-person orders.
- Cross-device printing — refires, kitchen reprints, customer receipt prints, and delivery slips fire from any iPad and land on whichever iPad has the printer paired.
- Optional QR code on customer receipts that links to your storefront URL — opt in via Settings → Hardware → Receipts.
- Operating Hours "Same every day" toggle now applies edits to all seven days immediately.
- Auto-complete on expo bump runs the full cashier completion: customer notifications, customer record update, and cross-device delivery slip print.
- Order detail now shows the order type (Delivery / Carry-Out / Dine-In) and the delivery fee as its own line item.
- Reports and transactions dashboard break out delivery revenue and delivery fees collected, including in the downloadable sales report PDF and CSV export.
- Tab close polish: the tip prompt now shows the actual remaining charge, and tabs with a customer email or phone get a receipt sent automatically once paid.
- Multi-station kitchen tickets show a DELIVERY label on every prep ticket; the destination address block prints only on the final runner slip.
- Completing an order whose record was deleted on another device no longer red-banners.
- Location settings (no-cash delivery, sub-zones, delivery fee, tip toggle) now persist on save.
v3.5.6
build 94May 5, 2026
Fee accounting and order reporting accuracy improvements; reliability and performance tightening.
- Per-method net-revenue formula now uses the same revenue helper the dashboard + Banking page use — Cash / Card / Gift Card numbers add up to Net Sales exactly.
- Reports breakdown card and CSV export agree line-for-line on every number.
- Card sales no longer go negative on long windows when refunds exceed current-period card revenue.
v3.5.5
build 93May 4, 2026
Per-location tip-prompt toggle, multi-printer category fan-out, runner-slip-on-Complete for delivery orders, refund-aware reports, plus a print-queue fix so back-to-back delivery completions never lose a slip.
- Show Tip Option (per-location toggle in Settings → Locations). Off skips the iPad tip screen, the S710 / S700 reader tip prompt, and Tap-to-Pay-on-iPhone tip selection — payments charge at $0 tip with no UI break. Useful for fast-counter or no-tip-policy storefronts.
- Multi-printer category fan-out — pencil-edit a printer station to pick exactly which categories print there. A category can route to several printers at once (Kitchen + Expo + Receipt) so the expediter sees the full ticket while the line cook only sees food.
- Delivery Receipts copy stepper in Settings → Print Copies — independent of regular customer receipts so a delivery-heavy shop can print a slip per bag without doubling dine-in receipts.
- Phone-only Current Order sheet now has a tight Dine-In / Carry-Out / Delivery selector at the top so the cashier can pick destination without backing out of the cart.
- Cashier-side Complete on a delivery order prints the runner slip (address, unit, instructions, big bold PAID/UNPAID banner) at the receipt printer. Place-time print removed so the same order doesn't print twice.
- Reports dashboard surfaces a Refunds line between Gross Sales and Net Sales when refunds are present, so the math reconciles visually.
- Menu Performance + Rush Hours: Today / Week / Month / 3 Months / Year / All toggle. Both reports are now refund-aware — partial refunds reduce per-item and per-hour revenue proportionally; fully-refunded orders drop out of the order count.
- Settings → Hardware → pencil edit on a printer now opens a unified editor (rename + category routing) instead of just renaming.
- Receipt formatter cleanup — duplicate ===/--- divider stacks removed across customer receipts and kitchen tickets; each ticket prints with a clean single strip.
- Order card header on phone wraps cleanly instead of clipping the right edge — Delivery pill, order number, customer name, UNPAID badge, and push-bar status all stay visible on iPhone widths.
- Print queue now re-drains after the in-flight pass finishes. Completing two delivery orders in a row used to leave the second slip stuck in the queue until the next print event woke it.
- Phone Charge → Delivery: tapping Charge with Delivery selected now correctly opens the Delivery Details sheet instead of failing silently. Was an iOS modal-stacking race when the cart sheet hadn't finished dismissing.
- Hardware → Printers pencil no longer surfaces a "new NativeEventEmitter requires non-null argument" red box — the printer SDK loader is hardened against missing native modules and the noisy LogBox warning is suppressed app-wide.
- Pencil-icon Edit on a printer no longer throws a TypeError on Hermes — the redundant dynamic import that triggered it was replaced with the statically-imported Alert.
v3.5.4
build 92May 3, 2026
In-house delivery end-to-end — configure delivery per location, customer pays online or pays the driver, and a live tracker mirrors progress through the kitchen pipeline. Plus USB Star printer support, multi-station KDS polish, and refund-deduction fixes across every report.
- In-house delivery flow — toggle delivery per location, set the restaurant address and delivery radius, and customize the customer-facing tracker so each stage maps to a station in your kitchen pipeline.
- Customers can pay online with card, send a pay-later link, or pay the driver in cash. The pay portal lives inside the marketplace experience with inline card entry, gift cards, promo codes, and rewards.
- Live order tracker shows real progress through the kitchen with a segmented progress bar and a download-receipt button after payment.
- Print Copies setting — duplicate kitchen, bar, or receipt tickets per station for kitchens that want a copy for the line plus a copy for expo. Range 1-5 per station.
- Star USB receipt printers are now supported via an iPad USB-C hub or dock, alongside Bluetooth and LAN printers.
- Multi-station KDS (Push Bar) polish — per-item Complete on Expo for items it owns, single-tap "Send to cashier", and a category-scoped Expo so the expediter only sees what they're responsible for.
- Receipts: delivery orders print a customer receipt at the cashier station with a bold paid/unpaid banner and full delivery details so the runner has every detail on paper.
- Faster transaction-list refresh after a refund — the list updates immediately when the cashier navigates back instead of waiting for the next polling cycle.
- Reporting math fixes — refunds now consistently deduct from net revenue across the dashboard, transactions, sales reports, and daily reports. Refunds itemize line-by-line with the order number on the daily report.
- Refund cap simplified to the order's gross — small-ticket refunds were getting under-counted when the cap subtracted service + org fees from the eligible refund amount.
- Delivery extras (address, payment method, instructions) were being silently dropped from placeOrder because only order_type was being spread from the extras object.
v3.5.3
build 91May 2, 2026
Catering inbox + storefront catering tab, role-based permissions overhaul (owner-only financials, cashier scoping), banking ACH cash-settlements, and a unified bottom-sheet pattern across post-checkout flows.
- Catering — when a menu has a Catering category, the storefront grows a Catering tab so customers can place event orders alongside regular ordering. Catering checkouts route to a dedicated Catering inbox on the iPad with event-day context (date, time, guest count, service type) instead of mixing into the regular orders queue.
- Catering visibility across reports — Order History, Sales Report, Reports dashboard, Banking, and the home dashboard all surface "of which X catering / $Y" so the operator can see event work without splitting the math. Cancelled or refunded catering still shows in Order History (audit trail) while staying out of Net Revenue.
- Role-based permissions — managers and cashiers see a tailored app. Reports, Banking, Payouts, and Online Ordering are owner-only; non-owners with manage_storefront can still operate the storefront. Bottom-nav tabs and the More menu hide entries staff can't reach. Revenue is masked on the dashboard for non-owners with an owner-gated reveal.
- Staff invite from /pos/dashboard now sends both an email AND an SMS with the iPad welcome link. The "Other" role is rename-able with a per-permission checklist so custom roles get exactly the access the owner grants.
- Banking — new ACH cash-settlements section under Payouts; the cash-settlement-link flow restyled to match the rest of Banking.
- Tap to Pay opened to all roles — cashiers can now run Tap to Pay sales directly without manager assistance.
- Receipt + post-checkout sheets rewritten on a unified bottom-sheet pattern — explicit dismiss only (no accidental swipe-down or backdrop-tap closures), and the iPad page-sheet gray bleed is gone. The Phone Number screen always shows a Skip button even when phone is required.
- Math Breakdown modal redesigned — every Net Sales / Banking / Reports number is tappable and opens a clean financial-statement explainer with sub-formulas where relevant.
- Sign-out fix — switching accounts on a shared iPad no longer resurrects the previous staff member after a force-quit. Location switching is now scoped to a staff member's assigned locations.
- Org cash-settlement market_rate display fix — was showing 1000% on some orgs.
- Location pill resolves to a specific location instead of a stale "All locations" label after a sign-out / sign-in cycle.
v3.5.2
build 90April 30, 2026
Cash-discount-on-cards bug squashed, online-orders timezone fix, deep tab UX work, the Order Strip ticker, customizable SMS templates, and per-location storefront independence.
- Order Strip — new thin ticker pinned to the bottom of the POS chrome on every screen except orders / KDS / refires / modals / employee / auth. Each tile shows order number and wait time, color-coded by age. Tap to mark complete, long-press to open detail.
- Settings → Notifications → Messaging Templates — customize the SMS body for Order Confirmed, Order Ready, Tab Food Ready, and Receipt. Live token chips show what's substituted (order number, provider name, etc.). Defaults restorable per-template.
- Tabs — per-item delete + −1 decrement. Long-press an item on an open tab to delete the line; if quantity > 1, a "−1" button decrements in place. Persists to Firestore.
- Phone-on-tab-additions — when adding new items to an open tab, an optional phone field is shown. If filled, that customer is texted when their kitchen ticket is bumped complete (independent of the tab's main customer phone).
- Storefront — per-location online-ordering toggle, hours, and items. Turning off online ordering at one location no longer shuts the whole storefront down; that location is filtered out and the rest keep taking orders.
- Storefront — public storefront now displays provider description, social links (Instagram, TikTok, Facebook, Twitter), and external links above the menu.
- Cash payment sheet — only the Cancel button dismisses. Tapping the dimmed background no longer closes the sheet mid-flow.
- Notifications — tapping a new-order push on an idle iPad now deep-links straight to the orders screen (no clock-in detour when PIN-on-app-open is off). Foreground new-order pushes silently no-op so the cashier doesn't have to dismiss a modal Alert.
- Cash Discount no longer prints on credit-card or manual-card receipts. POS write paths are now gated to cash + split payments, with a server-side guard ignoring any phantom cash-discount on non-cash methods. Read-only backfill script ready for historical rows.
- Online orders missing from the sales report — late-evening orders were being filtered against UTC day-boundaries and falling onto the next day. Dashboard refires + tips endpoints now bucket day boundaries in the provider's timezone.
- Tabs — deleting a tab now clears the cart, the active charge sheet, and the reader display. No more lingering items requiring an app restart.
- Tabs — Manual Card on a tab now picks up the tab's actual total (was sending $0 because the empty new-items cart was being read instead).
- Tabs — close path retries the Firestore write up to 3 times so the row never gets stuck "open" after a captured charge.
- Manual Card — wrapped in try/finally so the modal always closes and the loading state always resets, even on an unexpected error after charge approval.
v3.5.1
build 89April 28, 2026
Push Bar — the multi-station KDS workflow restaurants have been asking for. Plus refire-from-Expo, High-Volume Mode, Bank Deposit Reconciliation, and per-location hardware bindings.
- Push Bar — sequential multi-station KDS workflow for restaurants. Each iPad picks its role (Cashier / Prep KDS / Expo) and orders flow station-to-station: chef hits Continue, the item lands on the next station with a green "just arrived" cue, expo aggregates the full order before handing off to the cashier. Per-item routing means the Pizza KDS only sees pizzas, the Bar KDS only sees drinks. Real-time sync — no refresh needed.
- Refire from Expo + Cashier — kitchen messed up an item? Tap Refire on the order screen, pick a reason (Under-cooked / Wrong item / Customer complaint / etc.), and the item resets to its first station with a red "REFIRE" banner. Re-printed kitchen ticket calls out the reason in giant letters.
- High-Volume Mode — restaurant rush toggle. Long-press the green "HV" pill on the cashier orders header (or flip in Settings → Push Bar). When on, the expediter's bump finalizes the order and texts the customer automatically — no cashier-confirm step. Per-location sticky.
- Bank Deposit Reconciliation — new card on the Banking screen explains the gap between Provider Net Revenue and the actual Stripe deposit: Net Revenue → minus Cash kept in drawer → Card sales credited → minus Stripe processing fees → Expected bank deposit.
- Refire Frequency report — Reports → Quick Actions surfaces top items refired (with the most-recent reason inline) and refire reason distribution. Worth a glance every shift to spot recipe / pour-out problems.
- Hardware quick-status sheet — More → Hardware on the cashier screen surfaces printer / card reader / internet / bluetooth status at a glance, with deep links to the full pairing flows.
- Cross-location hardware auto-swap — printer pairings now scope per-location. Move an iPad to a different storefront via Settings → Device, and the receipt / kitchen / bar bindings swap automatically. Stripe Terminal also resets so the next charge discovers against the new location's terminal.
- Tips per-staff allocation — float allocation matches the web report exactly (no more pennies lost on small tips split among multiple staff).
- Reports / Banking refund accuracy — refunds are now scoped to orders within the timeframe (a refund processed today on yesterday's order won't crater today's net), ghost refunds without a Stripe ID are skipped (no real money moved → no impact on reported numbers), tab-inflated order counts fixed, CSV Payment Breakdown reconciles to Net Sales exactly, and every screen shows an explicit date range.
v3.5.0
build 88April 25, 2026
Restaurant Mode — full sit-down service flow alongside the existing food-truck experience, with Stay/Send/Pay cart actions, multi-printer routing per station, and bar tabs with a $1 pre-authorization.
- Restaurant Mode — per-location toggle (Settings → Locations) flips the cashier UI between counter and table service. Cart adds Stay / Send / Pay buttons (fire kitchen tickets without settling, fire and settle, or settle without firing). Categories carry a configurable Print Station (Kitchen / Bar / custom Patio Bar / etc.) and station-aware ticket headers print "BAR" or "KITCHEN" based on the items.
- Multi-printer routing — pair a printer per station from Settings → Hardware. Bar items route to the bar printer, food to the kitchen, drink-only orders never tie up the kitchen line. LAN/Ethernet Epson + Star discovery added alongside Bluetooth, with multi-pass scan and manual MAC/IP fallbacks.
- Bar tabs with $1 pre-authorization — open a tab, customer taps card once for a $1 hold, tab is auto-named after the cardholder's last name. At close, "Charge" prompts tip directly on the reader, increments the auth, and captures — no second tap. New "Close Tab" button captures with a configurable auto-tip percentage (default 20%).
- Order Actions sheet — three-dot menu on the cart bottom row consolidates dining option, tab name, customer info, discount, tax-exempt, split checks, no-sale (open drawer), and reprint kitchen ticket.
- Open tabs visible on Transactions — tabs no longer hide from the transactions list. Open tabs appear with a yellow "Open" pill and a "Pre-auth ····XXXX" badge when the card is on file; tapping opens the edit-tab modal so the cashier can audit / charge / close. Still excluded from revenue rollups until they close.
- Heartbeat now falls through receipt → kitchen → bar so a same-printer-on-multiple-stations setup never flashes "disconnected".
- Cashier UX polish — toast-stack remount fixed (every toast no longer re-renders the entire app tree), "invalid date" on reprint receipts replaced with the current time, paymentStatus overlays cleared cleanly between flows.
- Tab close uses skipTipBuffer so the reader shows the exact tab amount instead of amount + 30%/$2 floor headroom.
- Reports + dashboard reconciliation — single source-of-truth refund-cap inside computeProviderNetRevenue ensures the home dashboard hero, the reports breakdown, and the exported sales-report CSV all produce the same Net Sales number.
- Hardware pairing — duplicate-station pairing now writes the SecureStore slot for the target station BEFORE connecting, so pairing the same physical printer to bar + kitchen + receipt actually persists across launches. Same-MAC printers can be disambiguated via a port-name fallback when the macAddress field is null on iOS BLE.
v3.3.5
build 71April 16, 2026
Cash flow parity with card on the iPad, receipts attribute the on-clock staff (not the PIN'd cashier), gift card org-fee verified, plus a major fix on the organization dashboard so multi-org providers stop seeing each other's revenue.
- Cash transactions now show the same center modal the card flow uses while the customer enters their phone on the smart reader — cashier sees "Customer is entering their phone number on the reader" with Skip / Complete buttons so they can bypass if the customer declines.
- Multi-organization switcher in the organization dashboard header — providers who belong to more than one org can flip between them with a single tap, and the choice persists across refreshes via localStorage.
- Receipts and reports now attribute orders to the staff member who is actually CLOCKED IN at the order's location, not the manager / owner who happened to PIN into the terminal. Multi-staff terminals finally credit the right server.
- Gift card org-fee handling verified end-to-end — the org fee runs once on the gift card purchase, and any gift-card-paid portion of a future order is excluded from the org-fee base so providers aren't double-charged.
- Organization dashboard cross-org bleed — a provider with two locations bound to two different orgs was showing identical revenue / order counts on both org dashboards. Performance API + main dashboard + Providers tab + Earnings tab + KDS Live Tickets now all filter orders by the location's organization_id, so each org only sees what was rung up at locations that joined IT.
- Org dashboard order cache is now keyed by orgId so switching orgs no longer serves the previous org's filtered results from cache.
v3.3.4
build 69April 16, 2026
Auto-rewards before every charge, transactional rewards routing through Render, kitchen newest-first sort, receipt server attribution, and a cleaner POS header that scrolls instead of clipping.
- Rewards is now part of every charge — Cashier taps Charge → picks Cash / Card / Split → reader immediately asks the customer for their phone, shows their rewards / free-item picker, then auto-continues to actual payment. No separate Rewards button to remember.
- iPad shows a center modal during the rewards preflight ("Customer is checking rewards on the reader") with Skip Rewards and Continue to Payment buttons that cancel the active reader prompt.
- Rewards calls (lookup, redeem, earn) now route through Render (eventini-fallback) first with Vercel as fallback — locks the transactional path to a backend that doesn't silently roll back deploys.
- Receipts and kitchen tickets now stamp the actual clocked-in staff name on the order at placeOrder time so historical receipts always show the correct server, even if the device is shared or the cashier later clocks out.
- Kitchen line + ticket views switched to newest-first sort — fresh orders land at the top regardless of source (in-person, online, scheduled). Online orders no longer leapfrog in-person orders that were rung up first.
- Tablet POS header tab strip wrapped in a horizontal ScrollView — Reader / Printer / Drawer pills no longer get clipped past the right edge on smaller iPads.
- Item-card initials fall back gracefully — "Veggie/Vegan (V)" now shows VV instead of "V("; tokens that don't start with a letter / digit are dropped from the placeholder.
- Reader "Thank You" screen auto-dismisses after 3 seconds so the customer isn't stuck staring at an OK button waiting for the next person to tap it.
- Receipt server name was sometimes empty or wrong because the receipt modal passed an empty string instead of the order's staff. Order now carries its own staff_name field.
- Online orders showing in the wrong order vs. in-person orders — fixed by switching to a single descending sort across all sources instead of source-grouped concatenation.
v3.3.3
build 66April 15, 2026
Smart-reader rewards, inventory tracking with cross-device alerts, auto clock-out warnings, linked modifiers, searchable settings, Cook role, payouts editor, tax-exempt payments, and dynamic auto-complete timing.
- Rewards on the smart reader — customer enters phone on the terminal, picks a free item inline, and the iPad auto-applies the reward at $0 with a tagged reward-claim line
- Multi-account picker for rewards — phones linked to several Eventini accounts surface a tappable list with name / email / points / visits
- Tax Exempt option on the payment screen — sales tax zeros for the transaction; the tax CSV now breaks out exempt sales vs. taxable sales with a dedicated summary row + daily columns
- Inventory / stock tracking — 3-bar signal-strength indicator (red / yellow / green) on every item, long-press stepper to adjust, tap-to-edit numeric keypad, auto-disable at zero, slide-up stock sheet with quick adjust and threshold tweak
- Reusable alert-banner primitive drives storefront-offline, low-stock, and long-shift alerts with Resolve + Dismiss actions and per-device dismissed-by state — cross-device via Firestore
- Auto clock-out warnings — cross-device banner fires when a staff member has been clocked in longer than 12 hours so a manager can confirm or clock them out
- Linked modifiers — advanced item edit section ties menu items to modifier groups by name with confidence % recommendations and a searchable picker
- Modifier on/off cross-item sync by name — flipping a modifier off in one item's sheet updates the same modifier across every item that uses it
- Staff roles — Cook and Other added to manage-staff; Other lets the provider type a custom title (e.g. "Prep", "Runner") that flows through to reports
- Banking — Payout Schedule editor wired to the Stripe Connect API (daily / weekly / monthly with delay days), Payouts preview card on Banking with a dedicated /payouts screen (Scheduled + History groups, "View on Stripe" deep link)
- Settings search — fuzzy subsequence + substring scoring, breadcrumb path (Settings › Section › Label), matched segments bolded, top 3 results
- Free-item rewards config — searchable picker (chips) in Rewards card to pin the free reward to a specific set of menu items, with "any item" fallback when empty
- Auto-complete orders dynamic timing — cashier-set minutes on the settings card are now honored when auto-completing orders
- Online Ordering toggle sync — flipping Online Ordering on the POS storefront card now correctly drives the same state the dashboard reads, no more split-brain between POS mode and dashboard
- Concurrent order safety — orders now queue through a persistent retry queue with exponential backoff, surviving app restarts and draining on boot so back-to-back taps never lose an order mid-flight
- Kitchen ticket sort — oldest active orders on the left so new orders append to the right instead of shoving the cashier's view
- Rewards redemption deferred until placeOrder succeeds — canceled transactions no longer drain the customer's streak or points
- Pending in-cart redemptions adjust the displayed balance live — claiming twice in a row shows the count drop each time, and the Apply button honors the adjusted balance
- Per-location rewards config merged over provider baseline — visits required, reward type, and allowed free items respect the pill location
- Canceling the rewards sheet on the iPad also cancels the reader's active prompt so the terminal doesn't sit on a stale screen
- Cart + printed receipt flag reward-claim lines — iPad shows a subtle "Free" label with the original price struck through; printed receipts mark the line as (REWARD) with a "Reward redeemed" sub-line
- Apple Sign In / Google Sign In now routes reviewers and partner accounts to the Partner Login screen cleanly when their Apple ID isn't tied to an Eventini provider account (fixes App Store review rejection 2.1(a))
- Rewards phone lookup matches every stored phone format (E.164, 10-digit, "(555) 123-4567", dashed) across both users.phoneNumber and users.phone fields so duplicate-format rows are found
- Reader "Your Rewards" screen renders reliably after phone entry — adds at least one button so Stripe Terminal doesn't silently auto-skip an empty selection form
- Modifier sheet stale-closure bug — adding an item via the auto-expand modifier sheet now commits the selected groupOptions / variant / modifier ids instead of the captured-at-open-time values
- Stock indicator and price on menu cards now share the same baseline so the $-column isn't offset from the availability bars
v3.3.2
build 65April 14, 2026
Multi-location symmetry — the top pill now drives attribution for every write, and settings plus storefront config (tax, hours, rewards, gift cards) now honor per-location overrides.
- Location pill drives attribution — orders, tabs, time entries, sessions, invoices, and the audit log all stamp whichever storefront the pill shows instead of only the device binding
- Per-location settings overrides — tax rate, service fee, tip defaults, business info, receipt header / footer, and cash rounding can be set per storefront and fall back to the provider baseline
- Per-location storefront config — operating hours, prep time, pickup mode, minimum order, status, cover image, gift cards, rewards, and customer notes all honor per-location overrides
- Settings reload automatically when the pill changes — flipping storefronts swaps tax rate, receipt header, hours, and rewards live with no restart
- Location pill is always tappable, even when the device is not yet bound to a location
- Banking Locked tab redesigned as an inline placeholder — swiping between tabs no longer flashes the PIN modal across other pages
- Back to Dashboard button in Banking Locked properly swaps to the dashboard tab via the pager (previously a dead no-op)
- Security policy (PIN gates, cashier-access lock, lock-screen timeout) and device hardware (printer, cash drawer, sound) stay provider-wide so org policy is enforced consistently
- Cash orders placed while the pill was set to a different location now show up in the Kitchen and Transactions views under the pill location instead of disappearing into the device binding
- Cover image updates from a specific storefront no longer overwrite the provider main listing image — cloud-function sync only fires when the pill is on All locations or matches the device binding
v3.3.0
build 63April 14, 2026
Cash change confirmation, restricted cashier access with manager-PIN gates, persistent clock-in, kitchen ticket stability, and resynced reports with corrected Gross / Net formulas.
- Change Given Back banner — after a cash payment the full-screen confirmation pins the change amount until the cashier taps Yes, so it never disappears mid-handoff
- Restrict Cashier Access toggle in Settings → Security — gates Banking, Reports, and Invoices behind a manager / owner PIN and masks sensitive dashboard numbers for cashiers
- Labor / Tips Report (renamed from Tips Report) — per-staff hours, shifts, and break minutes now live on the same screen as the tip breakdown
- Clock-in persistence — staff stay clocked in across POS session exits; only a physical Clock Out ends a shift
- Kitchen ticket row — oldest active orders on the left so new orders append to the right instead of shoving the cashier's current view
- Charge button now shows the pre-tax amount on the big black button so cashiers can quote the subtotal at the counter
- Gross Sales formula tightened to a straight sum of cash + card collected ("money in the drawer + money through the terminal")
- Net Sales formula made explicit: gross − refunds − taxes − org fees − tips (no more hidden fees in the net line)
- Reports 1D / 1W / 1M / 3M / 6M / 1Y toggles now drive both the hero revenue / order count and the breakdown card from the same data source — top and bottom can't drift apart anymore
- Labor / Tips Report tip totals now match the Sales report row exactly — fully-refunded orders no longer leak into the tip aggregate
- Exiting the POS session no longer silently clocks out every active employee
v3.2.0
build 59April 13, 2026
Multi-location support, smart-reader receipt selection, WisePOS E auto-heal, phone-number search, and split-payment reliability fixes.
- Multi-location support — providers can now run one Eventini account across multiple storefronts with per-iPad device binding
- Per-location order, time entry, and audit attribution so revenue and reports always scope correctly
- Locations CRUD in Settings with eager-creation of Stripe Terminal locations on add
- LocationSwitcher bottom sheet with separate Viewing scope (any role) and This Device reassignment (manager PIN required)
- Per-location menu item availability — opt-in card on each item to limit visibility to specific storefronts
- Staff "Assigned Locations" — restrict cashiers to specific storefronts, owners always have all
- Reports CSV gains a Location column; Dashboard, Transactions, and Sparklines filter by viewing location
- Smart-reader receipt selection on S700 / S710 / WisePOS E — "How would you like your receipt?" runs on the reader screen with sms / email / print / none
- Require Customer Phone setting — when on, the smart-reader phone prompt is mandatory with no Skip
- Phone-number search across kitchen Done section, POS sidebar Transactions, and the main Transactions screen
- Message customers from completed orders with pickup-reminder templates ("ready and waiting whenever you can grab it")
- WisePOS E auto-heal — pre-charge liveness probe that detects silent reader disconnects plus server-side unstick of in-flight operations
- Reader-offline monitor cron posts Slack alerts when a reader has been offline ≥ 10 min while the storefront is actively selling
- POS terminal location chip on both phone header and tablet tab strip; tap to swap location or jump to settings
- Storefront Offline banner respects safe area on iPad and slides in/out smoothly with the native driver
- LocationSwitcher sheet ported to the modern BottomSheet pattern (drag-handle, content-sized, dismiss-on-drag)
- Internet readers now self-heal overnight disconnects via heartbeat and foreground-resume reconnect
- Slack reader alerts now resolve the storefront business name instead of showing a raw provider ID
- Split cash + card on a $20 order with a service fee: modal showed "card: $10" but actually charged $10.60 — both now use the fee-inclusive total
- Cash modal Confirm button on non-tab orders no longer blocked at partial amounts — relabels to "Pay Partial → Card" so customers handing over partial cash don't get double-charged
- Payment modal dismiss mid-collection now cancels the in-flight reader operation, fixing the "Operation in progress wasn't completed before starting new operation" error on the next charge
- PIN-screen error copy for staff restricted to other locations now says "You're not assigned to <Location>" instead of a generic "Incorrect PIN"
v3.1.2
build 58April 10, 2026
Storefront offline banner, manager-PIN revenue blur, customer phone capture in the receipt modal, Reports breakdown expansion, and cash-flow UX polish.
- Pinned red Storefront Offline banner across every main screen with a one-tap Reopen button
- Manager-PIN-gated revenue blur on the Dashboard hero card — reveals for 60 s, then auto-re-blurs
- Customer phone capture step at the start of the receipt modal for cash and Bluetooth reader flows
- Customer Paid breakdown in the transaction detail modal — splits Paid in Cash / Paid by Card / Gift Card / Customer Paid total
- Three new opt-in Sales & Orders toggles: Enhanced Modifiers (centered card over dimmed backdrop), One-Tap Add (auto-commit variant items with no add-ons), and Auto-Complete Orders (3-min default)
- Reports breakdown expanded with on-screen Gross Sales, Net Sales, Tips Collected, and Invoice Revenue rows
- Cash payment UX — quick-bill row ($20 / $40 / $50 / $60 / $80 / $100 / Exact) no longer blocked by the keypad; tapping any quick-bill dismisses it
- Pinned Cash Received + Change Due banner through every step of the receipt modal
- Modifier groups now auto-open the option-form sheet after creation — saves the cashier the "now add options" tap
- BottomSheet keyboard avoidance — the "Additional Price" modifier input is no longer hidden by the on-screen keyboard
- Sidebar customer name and order label reset cleanly between orders — no ghost text lingering after focus
- Eager-mount every main tab to eliminate the one-frame "page drop" on fast cashier swipes
- Removed stacking LayoutAnimation calls across the menu item editor and Apply-to-Other-Items modal — no more visible flashes
- Reports timeframe filter was only updating the hero stat — the breakdown card stayed on all-time numbers. Every row now respects the 1D / 1W / 1M toggle
- Clock-out no longer prompts "clock in" when the menu was edited mid-shift by another staffer — orders screen refreshes clock data on focus
- SMS Receipt option in the delivery step now shows for every flow where a phone was captured (previously smart-reader-only)
v3.0.0
build 51April 5, 2026
Render-primary payment architecture with automatic Vercel fallback, category reordering, and tip UX improvements.
- Render-primary / Vercel-fallback payment architecture for maximum uptime
- Category drag-to-reorder in menu management
- Custom tip input on Stripe S710 card reader
- Print button on kitchen order queue with online order auto-print
- Bluetooth device status indicators with connection hints
- Repositioned "No Tip" option for better UX on reader screen
- Online order auto-print to kitchen display on arrival
- Storefront slug-based URLs instead of raw provider IDs
- Fixed orgStripeAccountId leaking Firestore ref into Stripe metadata
- Fixed card capture flow on Bluetooth readers
- Fixed online ordering save failing with undefined Firestore values
- Fixed stale reader connection state after reconnect
v2.9.0
build 50April 4, 2026
Reader setup improvements, cloud functions enhancements, and tap-to-pay refinements.
- Reader setup improvements for faster terminal pairing
- Cloud function enhancements for payment processing
- Tap-to-pay flow refinements
- Order store updates for better state management
v2.8.0
build 47April 4, 2026
Custom tip on S710 reader, repositioned No Tip option, and tab tag fixes.
- Custom tip amount input on Stripe S710 card reader
- Repositioned "No Tip" option for better discoverability
- Fixed tab tag display on open tabs
v2.7.0
build 46April 2, 2026
Version bump with updated changelog and MFi review notes for App Store submission.
- Updated App Store changelog and MFi review documentation
- Version references updated across the app
v2.6.0
April 2, 2026
Bluetooth device status indicators, connection hints, and card capture fixes.
- Bluetooth device status indicators showing connection state
- "Check Bluetooth" hints when readers are disconnected
- Fixed card capture flow on Bluetooth-connected readers
- Fixed online ordering save failing with undefined Firestore values
- Fixed stale reader connection state and added payment diagnostics
v2.5.0
April 1, 2026
Performance overhaul with PIN lock and clock-in persistence fixes.
- Optional PIN lock for terminal security
- Category grid layout for faster item selection
- Tip-after-payment flow for card-present transactions
- Cash denomination pills for quick change calculation
- Performance overhaul for faster screen transitions
- Managers can now submit vendor absences (was owner-only)
- Fixed PIN lock and clock-in persistence across app restarts
- Fixed incomplete Stripe transactions in all tip flows
v2.3.0
March 31, 2026
Customer notes for online orders, push notifications, and reusable modifier groups.
- Customer notes on online orders with push notification delivery
- Firebase Cloud Messaging setup for real-time order alerts
- Reusable modifier groups: copy from library when creating new items
- POS edit mode: toggle items on/off, tap to edit inline
- Skip clock screen if staff already logged in
- Compact stat cards on mobile with smaller icons and labels
- Pickup time shown on all order view modes (list, grid, ticket)
- Order cards show real source, customer name, and pickup time
- Items always show edit and visibility toggle without long-press
- Fixed gift card tab payments not accounting for prior partial payments
- Fixed split payments on tabs with partial cash and multi-method close
- Fixed menu item card iPad layout and added unsaved changes warning
v2.2.0
March 31, 2026
Earnings clamped to zero on refunds, vendor absence scheduling, and storefront snooze controls.
- Vendor absence scheduling with custom messages
- Snooze controls for temporarily pausing online orders
- App version checking with update prompts
- Refunds no longer cause negative balances on dashboard, reports, transactions, or banking screens
- Improved status hero card display on storefront
- Modifier group form improvements
v2.0.0
build 22March 29, 2026
Multi-brand printer support, kitchen tickets, split payments, tabs, pre-ordering, and staff management.
- Multi-brand thermal printer support (Star Micronics, Epson) with kitchen ticket formatting
- Split payments: partial cash, multi-method, and tab-based checkout
- Tabs: open a tab, add items, close with any payment method
- Pre-ordering with scheduled pickup windows
- PIN-based staff login with clock in/out and break tracking
- Tablet split-view POS layout with drag-to-reorder menu items
- Ticket view for orders with timing indicators
- Refund flow with PIN verification and audit logging
- Tablet receipt sheet with formatted output
- Inline modifier editing on item creation
- Responsive scaling for all screen sizes
- Stripe deep link return for seamless Connect onboarding
- Fixed leave org persistence leaking organization_id across sessions
- Fixed duplicate tip screen appearing after payment
- Fixed org link: setDoc+merge so join works even if config doc is missing
v1.5.0
build 11March 26, 2026
Tablet split-view POS, drag-to-reorder, inline modifiers, and refund support.
- Tablet split-view POS with simultaneous menu and cart
- Drag-to-reorder for menu items and categories
- Inline modifier editing during item creation
- Refund processing with receipt tracking
- Google Sign-In and Apple Sign-In support
- Fastlane setup for automated TestFlight uploads
- Responsive scaling for tablet and phone layouts
- Menu editor overhaul with better category management
- Ticket time tracking for kitchen display
v1.3.0
build 5March 25, 2026
Tips report, live payment flow, fee display, and duplicate transfer prevention.
- Tips report with breakdown by payment method
- Live payment flow with real-time status updates
- Processing fee display on transaction details
- Payment splits between provider and organization
- Org payout tracking in admin dashboard
- Fixed duplicate Stripe Connect transfers on retry
- Fixed revenue display rounding errors
- Fixed crash on empty order submission
- Added detailed privacy strings for App Store review (camera, photos)
v1.0.0
March 16, 2026
Initial release of the Eventini POS app with Tap to Pay on iPhone, Stripe Terminal, and organization fee splits.
- Point-of-sale terminal for on-site event transactions
- Tap to Pay on iPhone via Stripe Terminal Apple entitlement
- Stripe card reader integration for traditional payment processing
- Cash payments with automatic change calculation
- Organization system with fee splits and service fee restructuring
- Organization join flow for vendors
- Firestore-first menu with variants, modifiers, and categories
- Online ordering configuration sync to storefront
- Haptic feedback across all interactive elements
- Card processing fee display on transactions
- Tips collected before charge with preset percentages
Pipeline
Upcoming integrations, payroll features, and third-party tools on our roadmap.
Payroll Software Integration
In ProgressAutomated payroll processing for organization vendors with direct deposit, tax withholding, and W-2/1099 generation.
QuickBooks & Xero Sync
PlannedTwo-way sync between Eventini earnings and your accounting software. Automatic invoice creation and reconciliation.
Square POS Integration
PlannedConnect existing Square terminals to Eventini for unified reporting across all your point-of-sale hardware.
Automated Tax Filing
ExploringEnd-of-year tax document generation and filing assistance for providers and organizations.
Multi-Location Organization Support
PlannedManage multiple food parks or event venues under a single organization with location-level reporting.
Third-Party Delivery Integration
ExploringConnect DoorDash Drive, Uber Direct, or local couriers for delivery fulfillment on online orders.
Have a Feature Request?
We build based on what operators actually need on the ground. Let us know what would make Eventini POS better for you.
