Vendors / Adjacent encroachers — ordering, middleware & back-office
Otter
Otter (Atoms, formerly City Storage Systems / CloudKitchens)
scored live
- Claims in scope
- 255
- Scored
- 255
- Assessed
- 255
- Unknown
- 0
- Not applicable
- 59
- Values challenged
- 156
Identity
- Owner
- Otter is the restaurant-software business of Atoms — the company that operated in stealth as City Storage Systems and that also owns CloudKitchens. Corrected 2026-08-02; the previous record recorded ownership as `independent-public`, which was wrong on its face for a product with a named parent, and wrong in substance because the parent is privately held.
- Parent
- Atoms
- Founded
- unknown — no founding date is published on tryotter.com; the product originated as internal software for CloudKitchens' ghost-kitchen operations before being sold externally.
- Scale
- Vendor claim only: "Over 100,000 restaurants" is repeated across product pages (re-confirmed 2026-08-02 on https://tryotter.com/products/online-ordering), and "Trusted by 17 of the top QSR brands" appears on the enterprise customers page. No ARR, location count or market-share figure is published by the vendor. A third-party report attributes ~18% of US food-delivery transaction volume to Otter as of 2024; that figure was surfaced in search but not retrieved from a primary source this pass and is not relied on. Independent verification: unknown.
- Who it is for
- Two distinct buyers. (1) The historical and still-core ICP: delivery-heavy independents and small groups drowning in marketplace tablets — Order Manager at $149/month consolidates DoorDash, Uber Eats, Grubhub, ChowNow and Caviar onto one tablet and injects into the 21 third-party POS systems named in the integrations directory. (2) The newer, encroaching ICP: single-site to small-multi counter-service operators (fast casual, QSR, bakery, cafe, food truck, food court, pizzeria) buying Otter POS as their primary POS inside the $198/month Advanced Bundle. Enterprise and franchise are marketed to, but the enterprise page sells reporting, dispute recovery and alerting rather than enterprise POS governance. No table-service ICP is addressed anywhere in the product catalog.
- Site
- https://tryotter.com/
Lineage
- 2026-03-20 — renamed: City Storage Systems, the stealth-named holding company behind Otter, publicly rebranded as Atoms. Named independent reporting states that Atoms "will serve as a catch-all parent company under which Kalanick's other ventures will exist — including virtual restaurant company Cloud Kitchens, operating system Otter, office lunch delivery company Picnic, and automated bowl-building technology Lab37", and that "City Storage Systems was the 'stealth' name for Atoms, which has been in the works since 2018." Otter itself is not renamed; only its parent is.
Pricing
transparency: partial · unit: mixed · processor lock-in: yes
- Software
- Published bundles (https://tryotter.com/pricing, retrieved 2026-08-02): Advanced Bundle — list $314/month, promotional $198/month, "+ per order transaction fee"; Advanced + Kiosk — list $657/month, promotional $541/month, same transaction-fee wording; "Build Your Own" — custom pricing, with "Cash-discounting available for processing fees". Per-module prices verified on their own product pages this pass: Order Manager $149/month; Loyalty $30/month/location; KDS $15/month software. WITHDRAWN 2026-08-02 — three figures the previous record carried (Online Ordering $40/month/location, QR Ordering $30/month, Analytics $0/month) could not be reproduced on any Otter page today; the Online Ordering and QR pages now publish no standalone price at all, and Otter's own nav and product pages had previously disagreed with each other on the QR figure. Whether the bundle price is per location or per terminal is still not stated anywhere.
- Card processing
- PUBLISHED, and Otter publishes TWO IRRECONCILABLE RATES. Both are recorded here deliberately; neither is preferred, because nothing published reconciles them. (1) Help-centre article 26596326146707 (Otter POS Introduction) advertises 'industry-leading low processing fees: just 2.39% + 15¢'. (2) Help-centre article 27244902024723 (Otter POS Cash Discounts), in its FAQ, states 'Regardless of the bank or credit card, the cc processing fees will always be 2.3% + $0.10 w/ card present and 2.9% + $0.30 without card present' — note the emphatic 'always', and that only this one gives a card-not-present rate. The two card-present figures differ in both legs (2.39%/15¢ against 2.3%/10¢). A POSSIBLE but UNCONFIRMED explanation sits in article 18739528029715, which says hardware may be leased 'for a lower processing fee' — so the pair may be a buy-rate and a lease-rate. No published document says so, and the Cash Discounts FAQ's 'always' contradicts any conditional reading, so this is recorded as an open inconsistency and not resolved. Supersedes the 2026-08-02 finding that no rate was published anywhere: that was true of tryotter.com and false of the help centre. The pricing page itself still says only '+ per order transaction fee'. Disputes & Refunds (Revenue Recapture) remains separately priced as success-based — 'No upfront fees… We only charge a small % per recaptured revenue' — with the percentage unstated. PROCESSOR LOCK-IN is settled by the same Cash Discounts article, which answers its own FAQ question 'Do we have other payment processor options available?' with 'No, we do not offer other payment processors at this time.' — so processor_lock_in moves from unknown to yes. Sources for this whole block, all retrieved 2026-08-09 from the local corpus dump .cache/otter/articles.txt: https://helpdesk.tryotter.com/hc/en-us/articles/26596326146707-Otter-POS-Introduction , https://helpdesk.tryotter.com/hc/en-us/articles/27244902024723-Otter-POS-Cash-Discounts and https://helpdesk.tryotter.com/hc/en-us/articles/18739528029715-Otter-Plan-Packages-Hardware .
- Contract
- CORRECTED 2026-09-10. The previous entry said 'The only public legal document is a website Terms of Service (https://tryotter.com/terms), which is not the merchant service agreement and contains no term, auto-renewal or notice clause.' That was wrong on its premise: https://www.tryotter.com/legal carries 42 documents, including the Otter Tech Services Terms, a DPA, an Enterprise Restaurant Terms & Conditions, a Cloud Retail Services Terms, a Kitchen Licensee Tech Services, a Virtual Restaurant Terms, a Venmo Food Commerce Hub terms and a Partner Agreement, plus ca- and eater- variants of most. The Tech Services Terms are the merchant agreement and they do carry the term and notice clauses. AUTO-RENEWAL AND NOTICE ARE PUBLISHED: 'We will continue to charge you on a monthly basis throughout the duration of your subscription term and any subsequent renewal terms, unless you decide to cancel at least 30 days prior to the end of your current subscription term by written notice to https://tryotter.com/customer-support' — so the subscription auto-renews and cancellation requires 30 days' written notice before term end, with a mid-month cut-off elsewhere in the same document ('If notice is received after the 15th then service will be terminated the month following.'). The LENGTH of the initial term is still not published: the Terms describe 'Term Plans with Monthly Payment' and repeatedly defer to 'each respective Order Form', which is not public. So the shape of the commitment is known and its duration is not.
- Early termination
- PUBLISHED, and the answer is that Otter levies no separate early termination fee but does not release the operator either. Otter Tech Services Terms: 'If you cancel during the subscription term, you will not be issued any refunds for or credits of any prepaid and unused fees for the remainder of the subscription term, and you will be required to pay any and all unpaid fees related to the subscription term.' So the exposure on early exit is the balance of the term, not a fixed penalty. A separate charge does apply to leased hardware: the 'Unreturned Equipment Fee' is 'the current Hardware price actually offered for sale (without any discounts or promotions) by Otter ... plus a 10% administrative fee for all leased Hardware that is not returned within 60 days after termination of the Tech Services', and it is refundable — 'If you pay an Unreturned Equipment Fee and subsequently return the Hardware undamaged (with the exception of normal wear and tear), you will be refunded your Unreturned Equipment Fee within 30 days.' Supersedes the 2026-08-02 'unknown — the vendor poses the question in its own FAQ and does not answer it in retrievable text': the FAQ accordions are still unrendered, but the contract was never read.
- Hardware
- CORRECTED 2026-08-09 — the previous entry, built from the marketing site, said the POS terminal, card reader and printer 'arrive only inside the subscription bundle' with no standalone price. That is wrong. Help-centre article 18739528029715 (Otter Plan Packages & Hardware, updated 2026-06-30) publishes a full lease-and-buy table for nearly every device, and states the governing rule: 'POS plans do not include hardware. Hardware is available for one-time purchase or via lease for a lower processing fee.' TABLETS: Lenovo M9 9" $20/month lease or $299 buy; Lenovo P11 11" $29/month or $399; Samsung A7 Lite 8.7" $20/month or $299; Samsung LTE A7 Lite 8.7" (US only, sold with a data plan) $80/month lease and NOT available to buy; Samsung A8 10.5" $29/month or $399. POS TERMINALS: iMin Dual Screen $60/month or $749; iMin Single Screen $50/month or $649; HD15 Single Screen (Canada only) $29 CAD/month or $399 CAD; HD25 Dual Screen (Canada only) $39 CAD/month lease, no buy price given. KIOSKS: Kiosk Pro 27" (Standing Flytech, only available in a bundle) $289/month lease or $5,500 buy plus $99/month/device software; Kiosk Mini 15" $100/month or $1,200 buy plus $99/month/device software, S700 card reader and dock included. Note the Kiosk Mini's buy price is $1,200 here against the $1,000 the marketing site carried, and the 21.5" kiosk the marketing site listed at $189/$3,000 does not appear in this table at all. KDS: Flytech K739 21.4" $75/month or $1,000 buy plus $15/month software. PRINTERS: Epson TM-M30ii BT (the one marked compatible with Otter POS) $20/month or $299 buy; Epson TM-M30 NT cloud/hardwired $20/month or $299; Rongta RP328 $20/month or $149 and Rongta RP310 label printer $25/month or $250, both marked 'Not suitable for Otter POS operations'. CARD READERS are listed as a hardware category but no standalone price appears in the article body. Hardware is US and Canada only — outside the US&C Otter provides none and supports Bring Your Own Device instead. Separately, Digital Dine-in, Online Ordering and the Direct Orders Full Suite each carry a one-time $100 setup fee, and the activation fee is charged per location.
API posture
public API: partner-gated
- Cost to integrate
- unknown — https://tryotter.com/become-a-partner describes three tracks (referral, technology, vendor/supplier) and a tiered structure with "marketplace and referral team incentives", but publishes no fee, revenue-share percentage or certification cost.
- Webhooks
- yes — signed, documented and versioned. The Otter API pushes order, menu, storefront, delivery, loyalty and review events to HTTPS endpoints the partner controls; receivers must 'Validate X-HMAC-SHA256 on every request' and 'Return 2xx quickly; do heavy work asynchronously', and several domains require an explicit error callback. Endpoint registration is manual — 'Ask your Account Representative to register your webhook URL(s) and choose an authentication type per endpoint.' Retrieved 2026-09-10 from https://connect.tryotter.com/docs/guides-quickstart/ and the 465 KB OpenAPI document at https://connect.tryotter.com/docs/openapi/public-api.yaml , whose webhook section carries orderCreate, orderUpdate, intentToCancelOrder, orderStatusUpdate and the delivery, menu and loyalty events.
- Data export on exit
- unknown as a RETRIEVAL WINDOW, and the contract points the other way. Otter's DPA commits to the opposite of retention: 'Unless otherwise required by Data Protection Laws, Vendor will destroy (or return, if mandated by Data Protection Laws) the Customer Personal Data upon termination or expiration of the Services within a reasonable period.' No self-serve full-history export exists to use before that: the Guest Directory and Customer Reports carry the guest table with no export control, and the Reports API is marked 'deprecated: true' in the OpenAPI document with 'The Reports API is deprecated and may be removed in a future release. Contact your Otter representative for migration options.' Financials still offers 'download your payout details by transaction' and several Analytics reports carry an Export button (Timecard XLS, Cash Management, the downtime table), so the operator can take away parts of the record while the subscription is live. Nothing published states a post-termination window. Note for a later pass: the word 'export' in the Tech Services Terms is poisoned — every occurrence there is the Export Control clause about shipping hardware abroad.
- Notes
- Otter's structural oddity: it is simultaneously an integration layer for the 21 third-party POS systems named in its own directory and a POS vendor competing with them. It is a named 2026 DoorDash Preferred Integration Partner — a renewal, since it was also in the 2025 inaugural cohort — which is the strongest third-party evidence available about its integration maturity: DPIP eligibility requires POS proactive cancel rate <1%, merchant-avoidable cancellation rate <1%, 250+ live DoorDash stores, and support for order-ready signal, real-time menu sync, self-guided store setup, self-serve activation, real-time item 86ing, item availability polling, integrated promotions and detailed order error reporting. That certification carries most of the load in the delivery and menu-sync scores because Otter's own documentation WAS thin. CORRECTED 2026-09-10 — the sentence that stood here said 'developer.tryotter.com was re-fetched on 2026-08-02 and still renders nothing but a Developer Portal heading, with no reference, auth model, sandbox, webhook contract or rate limits', and that was a statement about the wrong host. developer.tryotter.com is indeed still a soft-200 SPA shell — 1,139 bytes and 199 characters of stripped text for /robots.txt and for a fabricated filename alike — but developer-guides.tryotter.com now 301s EVERY path to https://connect.tryotter.com/docs/ , and that is a full, current, machine-readable developer portal: 53 guides in llms-full.txt, a 12.5 KB llms.txt discovery manifest that also advertises an agent-index.json, a 2.2 MB BM25 agent-search.json and an MCP endpoint, and a 465 KB OpenAPI 3.0.1 document at /docs/openapi/public-api.yaml with 70 paths, 98 operations and 357 schemas. Auth is OAuth 2.0 (client credentials and authorization code) at https://partners.tryotter.com ; store scoping is an X-Store-Id header; webhooks are HMAC-SHA256 signed; rate limits are stated per operation. So Otter DOES expose an inbound public API — but the direction of the DoorDash evidence above still stands, and the API is a PARTNER contract rather than a merchant entitlement: 'Registration is manual', applications are registered by an Account Representative, and 'Scopes must be configured by our internal team to be enabled for an app.' Product scope matters when reading it: the same document carries the Otter POS side (order consumer), the marketplace side (order provider), a 3PL delivery contract, a loyalty-partner contract and a market-intel surface, and a fact about one is not a fact about another. CEILING WARNING: the spec contains the token 'additionalProperties: false' ZERO times across all 357 schemas, so it is a FLOOR for every absence and never a ceiling.
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.
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
Re-evidenced and downgraded 2026-08-09. The marketing directory's "Payments: Stripe (Preferred)" leg is withdrawn - a partner category establishes that a partner exists, nothing more. Otter's own help centre puts the question and answers it: "Do we have other payment processor options available? No, we do not offer other payment processors at this time." The same FAQ fixes the rate as a single non-negotiable schedule - "Regardless of the bank or credit card, the cc processing fees will always be 2.3% + $0.10 w/ card present and 2.9% + $0.30 without card present" - and a second article states that "Otter POS cannot process transactions without a Stripe account created and connected in the Otter Dashboard" and that "the Otter POS credit card processor cannot be connected without Stripe being connected first." Stripe is not a merchant-chosen processor here; it is a mandatory prerequisite of Otter's own payment stack. There is no documented list of supported gateways and no documented way to bring your own. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/27244902024723-Otter-POS-Cash-Discounts · retrieved 2026-08-09
Vendor publishes card-processing pricing publicly (a specific flat rate or interchange-plus markup) rather than quote-only. differentiator
payments-published-rates
Re-confirmed 2026-08-02: both bundles read "+ per order transaction fee" with no figure, and no card rate, interchange table or effective-rate statement appears anywhere on the pricing page. Cash-discounting is mentioned only on the Build Your Own tier. https://tryotter.com/pricing · retrieved 2026-08-02 adversarially verified
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
"Cash-discounting available for processing fees." Two stored prices per item and dual totals on the guest check are not documented. https://tryotter.com/pricing · retrieved 2026-08-01
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
Otter's documented card-fee offset is a cash-discount program (default 3%, per-location percentage, auto-applied only when an order is paid fully in cash), on fixed processing of 2.3% + $0.10 card-present with 'no other payment processors'. 'Surcharge' returns zero results across the entire help centre; no surcharging engine, BIN-based debit/prepaid exclusion or network-cap enforcement exists to document. https://helpdesk.tryotter.com/hc/en-us/articles/27244902024723-Otter-POS-Cash-Discounts · retrieved 2026-08-03
All first-party payment terminals accept EMV chip and NFC contactless including Apple Pay and Google Pay.
payments-emv-nfc
Re-confirmed 2026-08-02 on the POS page: the bundled card reader is listed as supporting contactless, EMV chip, Apple Pay, Google Pay and magstripe. https://tryotter.com/products/otterpos · retrieved 2026-08-02
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
Accepting Payments on Otter POS (updated 2026-05-14) makes a reader mandatory: 'For Credit Card Payments , make sure you connect your Stripe account and card reader first. The card reader gives customers the ability to tap, swipe, or scan their credit card'. The tap is on Otter's reader, not on a phone. Otter Handhelds Introduction does say 'credit card payments can be taken directly on the Otter Handheld device without additional hardware' - but the Handheld is a purpose-built 5.5-inch device Otter sells at $500 to buy or $39/month to lease plus $15/month per screen, not the operator's own phone. Bring Your Own Device (art. 31650150805139) is the only BYOD programme and it covers order management only: an Android tablet plus one of eleven named Bluetooth printers, with no payment path. `tap to pay`, `tap-to-pay` and `softpos` each occur 0 times across all four corpora; `contactless` occurs 2 times in the help centre and 9 on www, every one of them describing the card reader. https://helpdesk.tryotter.com/hc/en-us/articles/33725692118931-Accepting-Payments-on-Otter-POS · retrieved 2026-09-10
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
Otter Handhelds are vendor-shipped hardware ($500 to purchase, $39 per month to lease, plus $15 per month per screen), listed for 'Tableside ordering and payments' and line busting: 'Otter Handhelds provide a mobile solution for managing orders and payments on the go... take customer orders and process payments from anywhere in the restaurant.' The FAQ states 'credit card payments can be taken directly on the Otter Handheld device without additional hardware' (the device is a Stripe reader that takes tap, swipe or insert), and the comparison table confirms 'You can ring in orders, process payments, and issue refunds from the Orders app on both POS devices' - the same Orders app payment screen that carries tip selection and [Split Check] / [Split By Item] (Accepting Payments on Otter POS, art. 33725692118931). The handheld cannot print a receipt and cash should be tendered at the terminal so the drawer opens. https://helpdesk.tryotter.com/hc/en-us/articles/35667642715283-Otter-Handhelds-Introduction · retrieved 2026-08-08
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
QR ordering accepts card, cash, Apple Pay and Google Pay with guest-side split payment and syncs to POS. Scanning a printed check to settle an existing server-opened tab is not documented. https://tryotter.com/products/digital-dine-in · retrieved 2026-08-01
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
Available tipping methods are listed as 'Tip on receipt (after payment)', 'POS tip display (before payment)' and cash tipping. On-device prompt: Display tip options on = all screens, cashier-facing, customer-facing or don't display, with operator-set tip percentages (defaulting to 15/20/25/30%). Adjust flow: if no tip is taken at checkout the receipt prints a tip and signature line, the order is flagged 'Tip Pending' in the POS orders list, and staff use the 3-dot menu > [Add Tip] to enter either a tip amount or the grand total. The window is published - 'orders can have the tips entered up to 24 hours after the transaction' - and enabling it delays settlement: 'payments will be delayed by one additional business day' (repeated in Guide to Connecting Stripe). Stripe caps a tip at 50% of the pre-authorized amount or $50, confirming the pre-auth-then-adjust model. Caveat: on the older Otter POS v1 interface tips must be entered before payment and tips-on-receipt, cash tipping and terminal tip display are unavailable. https://helpdesk.tryotter.com/hc/en-us/articles/36524231987603-Tipping-Guide-for-Otter-POS · retrieved 2026-08-08
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
AUDIT RE-GROUND (2026-08-05): the prior rationale's premise that 'Otter has no labor module' is false — a Time Card app (art. 26645285153555) and Staff Timecard Reporting are documented. The no stands on enumeration instead: the 'Tipping Guide for Otter POS' covers the tip lifecycle end-to-end (tip on receipt after payment, POS tip display before payment, cash tipping, configurable percentage presets, 24-hour post-payment tip entry, Stripe tip caps) and the Hourly Tip Report covers per-staff reporting; no pooling, tip-out, distribution rule or payroll tip-allocation appears in either or anywhere else in the help centre. https://helpdesk.tryotter.com/hc/en-us/articles/36524231987603 · retrieved 2026-08-05 adversarially verified
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
Store-and-forward is documented: offline mode gives 'The ability to continue processing Credit Card and Cash Transactions' when the terminal cannot reach the network, offline orders carry a cloud icon in the order list and 'will be automatically processed when you connect to a network again'; the Otter Handheld does the same in both card-reader and mobile-POS mode, and 'All card payments taken on handheld while offline will be processed together once the internet connection is repaired.' Shortfall: there is nothing to configure and no ceiling is published - 'Offline mode is automatically enabled for all Otter POS customers' and triggers itself - and the article's own limitations list (online orders cannot be accepted, new printers and card readers cannot be paired, wifi/ethernet printers do not print, station tickets do not print) contains no per-transaction amount limit and no cumulative offline total. https://helpdesk.tryotter.com/hc/en-us/articles/26865574404883-Otter-POS-Using-Offline-Mode · retrieved 2026-08-08
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
Otter POS Using Offline Mode is the article that would carry this and it is silent on both halves. It documents the capture ('The ability to continue processing Credit Card and Cash Transactions') and the replay ('Orders will be automatically processed when you connect to a network again'), and it answers its own question 'What are the limitations of Offline Mode?' with exactly three: online orders cannot be accepted, new printers and card readers cannot be paired, and wifi or ethernet printers will not print. Decline-on-reconnect is not among them, and no post-reconnect report of failed offline payments is documented anywhere. The word `decline` never occurs within 600 characters of `offline` anywhere in the 287-article help centre. The nearest published liability statement is general rather than offline-specific - Chargebacks Guide (art. 40477996404883): 'Businesses are liable for all accepted payments and disputes they receive. Otter does not assume liability for accepted payments.' - and an offline transaction that declines on reconnect is precisely a payment that was never accepted, so that sentence does not reach this claim. https://helpdesk.tryotter.com/hc/en-us/articles/26865574404883-Otter-POS-Using-Offline-Mode · retrieved 2026-09-10
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
Re-evidenced 2026-08-09; the previous note ("no first-party gift card product ... is documented") was false and is withdrawn along with its marketing-directory citation. Otter Gift Cards is a first-party product: "Otter Gift Cards are physical cards that allow you to sell self-branded gift cards to your customers", sold and reloaded from the Otter POS checkout Options > Gift Cards flow (maximum load $2,000), accepted as a payment method on Otter POS under Other > Gift card and in the Direct Orders online checkout, with live balance behaviour documented - split tender against the remaining balance, remaining balance confirmed on the receipt, and refunds returned onto the card's balance. eCard Systems is the card-stock printer, not the gift card platform. Shortfalls, which is why this is partial and not yes: it is a paid add-on at "$30/month" plus $1.01 per card, it is "ONLY available for Otter POS customers", the cards are physical only with no documented digital or e-gift issuance, and redemption is switched on per location (Direct Orders > Locations > Location Settings > Payments > Gift Card Payments) rather than group-wide, so redeemability across every location in the group is not established. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/37358535943187-Otter-Gift-Cards · retrieved 2026-08-09
House/on-account tabs with per-account credit limits, running balance, and periodic statement or invoice generation.
payments-house-accounts
The Otter POS payment screen is enumerated exhaustively in five numbered sections - cash and credit card, tipping, split payments, mixed payments, and 'Other Payments (Manual Card Entry, Mark as Paid, and Void Check)' - and the 'Other' bucket is itself fully expanded in the same article. There is no on-account tender. The closest mechanism is an open tab, which the article describes as per-order and per-visit, not per-customer: 'Once an order is placed using the "Pay Later" it is sent to the kitchen and considered an open tab', settled from the order list when 'the customer is ready to pay'. `house account` and `credit limit` each occur 0 times across the help centre, guides, spec and www; `on account` occurs 4 times in the help centre and every one is Otter's own subscription billing, not a guest account. No periodic statement or invoice generation for a guest account is documented; Otter Catering's invoicing is per catering order. https://helpdesk.tryotter.com/hc/en-us/articles/33725692118931-Accepting-Payments-on-Otter-POS · retrieved 2026-09-10
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
The POS payment screen offers [Split Check] and [Split By Item]: 'Enter the specific payment amount, split evenly among multiple guests, or add specific items to each check', and 'You can select the payment method after splitting the payment' - so each part can settle to a different tender. Mixed tender on a single guest's check uses the same control: 'If one customer wants to split payment across different payment methods, you can also use the split payment function... Select the number of payment methods when prompted. For example, for a customer to split payment via cash and card, you would select 2.' No split cap is stated for the POS (the separate guest-side QR dine-in feature is the one with an operator-set maximum number of splits, and it is even-split only). Splitting by seat specifically is not documented - the POS captures an optional Table Number rather than seat positions - and cash discounts do not apply to split payments. https://helpdesk.tryotter.com/hc/en-us/articles/33725692118931-Accepting-Payments-on-Otter-POS · retrieved 2026-08-08
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 gating is documented: per-employee PINs with a manager-override screen, refunds reserved to Supervisors on POS and to the Billing Admin role in the Dashboard, any discount lockable behind Supervisor/Manager/Admin approval, drawer opening permission-gated; the Voided Transactions report is immutable ('you cannot make edits to the voided orders log') with staff attribution, void reason and timestamp. Shortfall: the void log records the creating staff member, not an approver, and no doc shows void authorization itself requiring manager approval. https://helpdesk.tryotter.com/hc/en-us/articles/26844590516755-Creating-Employee-PIN-Codes · retrieved 2026-08-03
In-product dispute/chargeback dashboard that lists open disputes and allows evidence submission assembled from the POS transaction record. differentiator
payments-chargeback-tooling
Disputes & Refunds automates dispute handling with weekly refund reports and instant notifications — but it targets delivery-marketplace refunds, not card-network chargebacks. https://tryotter.com/products/revenue-recapture · retrieved 2026-08-01
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
Otter POS Guest Profile is the guest record on the POS and it holds delivery data only: a phone-number search returns name, address, and 'Delivery Instructions', and the article's whole subject is that the profile 'significantly expedites the process of populating customer delivery information'. No card is stored against it. Manual Card Entry (art. 30017138004243) is the phone-order path and it re-keys the card every time - 'Enter the customer's card information, including the card number, expiration date, and security code'. `save card`, `store card` and `card vault` occur 0 times across all four corpora. Two poisons were removed before publishing this: `card on file` does occur twice in the help centre, both in Otter's own subscription billing (Otter Subscriptions and Otter Invoice Management in Stripe) where the card on file is the operator's, not the guest's; and `token` occurs 39 times in the developer guides and 60 in the OpenAPI spec, every one an OAuth 2.0 access token at POST /v1/auth/token, not a payment token. https://helpdesk.tryotter.com/hc/en-us/articles/28714094344339-Otter-POS-Guest-Profile · retrieved 2026-09-10
Vendor publishes its deposit schedule and offers a next-day or same-day/instant funding option. differentiator
payments-payout-timing
The schedule is published in unusual detail: 'Typically, payouts are processed and deposited into your account within 2 business days, not including weekends', with a day-by-day settlement table split by orders created before and after 12:00 AM EST (Monday to Wednesday, Tuesday to Thursday, and so on), 'one daily payout per store at your organization', explicit weekend and holiday handling and the 2025/2026 US and Canada bank-holiday lists; Guide to Connecting Stripe repeats 'daily payouts... with a two-day delay'. Shortfall: no next-day, same-day or instant-funding option is offered anywhere - the only documented deviations are slower, not faster (enabling after-payment tipping delays payouts by one additional business day, and service hours past midnight EST can add a day). https://helpdesk.tryotter.com/hc/en-us/articles/35655034312851-Otter-Payouts-Schedule · retrieved 2026-08-08
A single account can route settlement funds to different bank accounts per location or legal entity (separate MIDs or split settlement) under unified reporting. differentiator
payments-multi-entity-routing
Settlement is wired per store, not per account: 'Log in to Otter Dashboard and select [Settings] > [Payouts] to connect a Stripe account to each Otter Store receiving payouts', and the walkthrough is 'select the [Add method] for the store/brand you'd like to connect a payment method to'. Otter Payouts Schedule (art. 35655034312851) confirms the split at settlement - 'Otter will typically issue one daily payout per store at your organization'. Update Payout Information (art. 40530789617683) treats a change of legal entity as a per-store operation: when a business is sold and renamed, 'a new Stripe account should be set up under the new business name... don't update the existing Stripe account - create a new one instead', and bank details are edited per account through [Manage on Stripe]. Reporting stays unified in the single Otter Dashboard, where Merchant Statement and payout reports are produced per location across the organization. https://helpdesk.tryotter.com/hc/en-us/articles/26643285732243-Guide-to-Connecting-Stripe · retrieved 2026-08-08
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
`P2PE`, `PCI DSS`, `AOC`, `Attestation` and `SOC 2` each occur 0 times across the 287-article help centre, the 53 developer guides, the OpenAPI spec and 414 www pages including all 42 legal documents; `PCI` itself occurs 6 times on www and `security` 12/1/106/150 as controls. Every one of those PCI mentions assigns the obligation to the operator rather than discharging it: the Otter Tech Services Terms say 'You represent and warrant that you shall comply with all data security standards (including any standard related to the physical compliance requirements of using any Hardware) adopted by the PCI Security Standards Council, LLC', and on leased hardware 'It is your responsibility to (i) regularly inspect your Hardware for any physical damage or any safety concerns, and if relevant, (ii) ensure compliance with physical PCI or other payment processing requirements.' trust.tryotter.com does not resolve, so there is no compliance registry either. Otter's processor is Stripe and its readers are Stripe devices, so an underlying P2PE listing may exist at Stripe; nothing Otter publishes says so, and no attestation is offered to merchants on request in any document. https://www.tryotter.com/legal/tech-services · retrieved 2026-09-10
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
In-house drivers are first-class Otter users, but the module is thin and largely undocumented. User Management (art. 44753081545619) defines a Courier role that 'Provides access to the Courier App (CAS), allowing users to deliver orders on behalf of your organization' (a phone number is required so the courier can receive SMS messages) and a Dispatcher role: 'Any existing user can be assigned the Dispatcher role, granting them the necessary permissions to manage couriers and send them to fulfill orders.' Shortfall: those two role descriptions are the only documentation of the Courier App in the 292-article help centre - there is no article for it, no documented driver clock-in/out (the Time Card app covers staff shifts, not courier runs), no in-store / on-run / returning assignment state, and no per-driver run-history or driver-performance report in Analytics. Couriers & Logistics in Order Manager (art. 27589269188499) still points fleet management at partners - 'Fleet management integrations like Shipday and Nash can help you manage an existing fleet, automate dispatch and efficiently deploy your drivers' - and within Order Manager an in-house delivery is only a per-order 'Self-deliver' status. https://helpdesk.tryotter.com/hc/en-us/articles/44753081545619-User-Management · retrieved 2026-08-08
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
Undispatched work is surfaced and dispatched from the order feed rather than a dedicated screen: 'If (1) an order is a restaurant delivery order and (2) you have a 3PL connected with Otter, a courier needed label will be tagged to the order in the order feed', Settings > Orders > Couriers & Logistics sets Assignment mode to Automatic or Manual, automatic mode requests a quote and then a courier on accept, manual mode exposes a [Request courier] button on the order details page, and the assigned courier appears in the order's Courier tab. Shortfalls: no driver-availability display anywhere - and note this is not because Otter has no drivers of its own, since User Management (art. 44753081545619) defines a Courier role with access to Otter's Courier App (CAS) and a Dispatcher role with permission to 'manage couriers and send them to fulfill orders'; it is that no article in the 292-article English help centre documents any screen that lists couriers with their status. There is also no multi-order run batching: each order is quoted, requested and cancelled individually, and a failure produces 'Failed to find courier' with only Retry or Self-deliver. https://helpdesk.tryotter.com/hc/en-us/articles/27589269188499-Couriers-Logistics-in-Order-Manager · retrieved 2026-08-08 adversarially verified
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
Couriers & Logistics in Order Manager (updated 2026-08-18) is Otter's whole dispatch surface and it has no map. Assignment is a two-value setting - 'Under the Assignment mode, select either "Automatic" courier or "Manual" courier' - and an assigned courier surfaces as a tab, not a pin: 'you can view more details in the order detail's "Courier" tab'. Geography enters only as a radius check: 'If the address is outside of the courier radius, a courier will not be assigned to that order.' `live map`, `multi-stop` and `optimize route` occur 0 times across all four corpora. The poison here is severe and worth publishing: `map` occurs 18 times in the help centre and every occurrence is either the analytics `heat map` or the verb (station profiles 'map to the new one', menu changes that 'map updates to their impact'), so an untokenised count would have read as 18 hits for a feature that does not exist. The only geographic coordinates in the 465 KB OpenAPI spec are a Location object of latitude and longitude attached to the delivery ADDRESS, not to a courier. https://helpdesk.tryotter.com/hc/en-us/articles/27589269188499-Couriers-Logistics-in-Order-Manager · retrieved 2026-09-10
Captures live driver GPS position from a driver-facing mobile app and surfaces it back to the dispatch screen. differentiator
delivery-driver-tracking
330th -- THE NEW SURFACE THAT SETTLES IT: a full census of the Otter operator dashboard app itself (app.tryotter.com, a Vite SPA served anonymously; the login page's entry bundle /assets/index-FNBzh5XZ.js is 2,249,186 bytes and the nonsense control /assets/index-NONSENSE.js returns the 2,513-byte SPA shell, so the bundle is real). Crawled every 'assets/<name>.js|css' reference to a fixpoint: 117 files, 3 rounds, 0 misses, 20 MB. CONJUNCT 2 (surfaced back to the dispatch screen) IS MET, verbatim from that app's own React code and i18n dictionary: a Mapbox component `CourierDetailMap=({orderLocations,onOrderMarkerClick,facilityLatLng,courierLatLng,distanceToFacility,locationIsStale,lastUpdateTime})` is rendered with `courierLatLng: <courier>.lastKnownLocation`, `distanceToFacility: formatDistanceFromKM({distanceInKM: <courier>.distanceToFacilityInKM})` and `locationIsStale`, drawing the courier marker plus a dashed route layer (`routeLayerPaint`) to the order destinations. The shipped English strings name the screen and its staleness alerts: `dispatch_map_courier_details:"Courier details"`, `dispatch_map_couriers:"Couriers"`, `dispatch_map_courier_list_available/busy/returning`, `dispatch_map_courier_state_OUT_FOR_DELIVERY:"Out for delivery"`, `dispatch_map_card_distance_tooltip:"Distance to facility"`, `dispatch_map_card_distance_tooltip_error:"Location stopped updating"`, `dispatch_map_card_distance_tooltip_error_MIN:"Location last updated {{min}} minute ago"`, `delivery_alert_courier_stale_location_alert:"Courier hasn't moved in over {{duration}}"`, `delivery_alert_title_checked_in_courier_far_from_facility_alert:"Courier checked in but is over {{distance}} from the facility"`, `courier_detail_distance_from_facility_DISTANCE:"<b>{{distance}}</b> from facility"`. A position that goes stale, is timestamped per minute and drives a 'hasn't moved' alarm is a LIVE feed, not a status enum. CONJUNCT 1 (captured from a driver-facing mobile app) is met by the same app: the permission enum is `FunctionPermission.DELIVERY_COURIER_APP_ACCESS="delivery:courier-app:access"` and `DELIVERY_COURIER_MANAGEMENT="delivery:courier:management"`, i.e. Otter provisions access to a courier app; couriers have a session state the operator can override -- `courier_state_offline:"Offline"`, `dispatch_map_card_courier_going_offline:"Going offline"`, `courier_detail_force_offline_button:"Force offline"`, `manual_assigment_modal_courier_offline_tooltip:"Cannot assign to offline couriers"`, `manual_assigment_modal_assign_courier_search:"Search couriers"` -- and the map modal falls back to `courier_estimate_no_map:"Map not available"` / `dispatch_map_card_courier_info_unavailable:"Waiting for courier info"` when the feed is missing. This does NOT depend on the RTS Courier attribution the 321st merge refused, and that hold is left alone; for the record the 330th re-ran the iTunes publisher census and it weakens rather than helps that route: developer 1644212667 (Restaurant Technology Solutions, LLC.) publishes exactly ONE app, RTS Courier (com.css.courier), while Otter's own Apple developer 1635778210 ("Otter App", sellerUrl https://www.tryotter.com/) publishes only Otter Go (com.tryotter.otter, v2.17.3, 2026-09-05), a manager app whose listing covers sales, 86ing, store pause and alerts only -- two separate developer accounts and two bundle namespaces. Also checked and empty: www.tryotter.com/sitemap.xml (20 sub-sitemaps; sitemap-release-notes-en-us.xml holds a single 2024 entry). Retrieved 2026-09-18. https://app.tryotter.com/assets/index-FNBzh5XZ.js · retrieved 2026-09-18 adversarially verified
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
Online Ordering Settings enumerates the delivery-area control completely: 'Select Type for how you'd like the delivery area to be set from Driving Distance or Straight Line Distance', where driving distance 'calculates distance by travel miles while driving' and straight-line 'measures distance between two points in a straight line on a flat map', followed by 'Enter Distance allowance for delivery range in Miles or Kilometers'. Those two radius types are the entire configurable surface - no polygon drawing, no boundary or ZIP import, and no drive-time isochrone (driving distance is measured in miles, not minutes). Fees are banded by the same distance metric ('For deliveries within 0-2 miles, the delivery fee is $2.00 and deliveries within 2-4 miles have a delivery fee of $4.00'), and Couriers & Logistics confirms the boundary is a radius: 'be sure the eater's address is within your set delivery radius with your courier'. https://helpdesk.tryotter.com/hc/en-us/articles/21748907448467-Online-Ordering-Settings · retrieved 2026-08-08
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
Direct-order delivery supports distance-banded fees ('For deliveries within 0-2 miles, the delivery fee is $2.00 and deliveries within 2-4 miles have a delivery fee of $4.00'), driving-distance or straight-line area definition, and delivery-fee-specific tax. Shortfall: a band carries only a fee - the order minimum and the estimated delivery-time range are single storefront-level settings, not per-zone, and areas are distance bands rather than drawn zones. https://helpdesk.tryotter.com/hc/en-us/articles/21748907448467-Online-Ordering-Settings · 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
For Direct Orders the guest's address is measured against the store's delivery area at order time - the area is set as Driving Distance or Straight Line Distance with a mileage allowance, and delivery fee bands are computed from that same distance - which requires the address to be geocoded and gates out-of-range addresses before checkout. Shortfalls: no address verification, autocomplete or correction step is documented anywhere in the 292-article help centre, and orders rung in on the POS are not checked at all. Couriers & Logistics warns the operator to do it manually: 'If manually ringing in an order for delivery, be sure the eater's address is within your set delivery radius with your courier. If the address is outside of the courier radius, a courier will not be assigned to that order' - so an out-of-zone POS order is accepted and fails later at dispatch rather than being flagged at entry. https://helpdesk.tryotter.com/hc/en-us/articles/21748907448467-Online-Ordering-Settings · retrieved 2026-08-08
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
Otter tracks no driver compensation input. `mileage` and `tip out` occur 0 times across the help centre, guides, spec and 414 www pages; `driver` occurs 12 times in the help centre as the control, and none concerns pay. Couriers & Logistics delegates the entire driver-labour problem to third parties - under the heading 'Driver management' it says 'Manage existing drivers, automate dispatch, and efficiently deploy your drivers with integrations like Shipday and Nash.' - and its FAQ answers 'How can Otter integrations help simplify my delivery operations?' by naming only DoorDash Drive, Relay, Shipday and Nash. Otter's own payroll export runs on store labour, not delivery: the Labor Cost Report (art. 38681141651987) exports 'the aggregated hours data & aggregated wage data by employee' from the Homebase integration, with no reimbursement line, and the Time Card export's columns are Staff member, Role, Clocked in, Clocked out, Total hours. https://helpdesk.tryotter.com/hc/en-us/articles/27589269188499-Couriers-Logistics-in-Order-Manager · retrieved 2026-09-10
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
Otter does reconcile cash and produces an over/short figure, but the unit is a drawer and never a driver. The Cash Management Report enumerates its reconciliation metrics exhaustively - Open Date, Drawer ID, Drawer Name, Start, Sales, Refunds, Paid In, Paid Out, Expected Balance, Ending Balance, and Difference, 'The amount left over when subtracting the ending balance from the expected balance' - and its transaction rows are keyed to Location, POS Terminal, Drawer Name and Staff Name. No courier, driver or run dimension appears in either table. `driver bank`, `settle up` and `cash on delivery` occur 0 times across all four corpora, and `cash` occurs 457 times in the help centre as the control while never once occurring within 400 characters of `driver`. Consistent with Otter having no in-house driver roster: delivery labour is delegated to 3PL and fleet partners. https://helpdesk.tryotter.com/hc/en-us/articles/41030431592979-Cash-Management-Report · retrieved 2026-09-10
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
The handoff is configured and driven inside Otter, and the quote and status come back onto the order. Settings > Orders > Couriers & Logistics carries an Assignment mode of Automatic or Manual courier. Automatic: 'When a courier needed order is accepted, Otter automatically requests a delivery quote from the connected delivery service provider', and 'Once Otter receives a quote from the delivery service provider, a courier request is automatically sent'. Manual: a [Request courier] button opens a modal where 'Otter starts to request quotes from the delivery service providers' and the operator can 'select a quote from the delivery providers and click Request' - i.e. quote comparison inside Otter. On success 'you can view more details in the order detail's Courier tab'; failures raise 'Failed to find delivery' or 'Failed to find courier' with Retry or Self-deliver, cancellation from either side re-tags the order 'Courier needed', and a customer tracking URL can be shared. Supported providers are Relay, Shipday, DoorDash Drive, Nash and ChowCall; the operator holds the courier account, which is inherent to any DaaS marketplace handoff rather than a shortfall against this claim. Note the earlier note's assertion that no first-party dispatch surface is documented was drawn from marketing pages only and is withdrawn. https://helpdesk.tryotter.com/hc/en-us/articles/27589269188499-Couriers-Logistics-in-Order-Manager · retrieved 2026-08-08 adversarially verified
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
Otter's dispatch runs the opposite way round from this claim and has no rule engine either way. DaaS is the default and self-delivery is the manual fallback: 'If (1) an order is a restaurant delivery order and (2) you have a 3PL connected with Otter, a “ courier needed ” label will be tagged to the order in the order feed. You will need to either deliver the order via self-delivery or choose a delivery service provider to deliver the order for you.' When the 3PL cannot serve the order, nothing overflows - the operator is shown a notification and must choose: 'If the request fails to find a courier, Otter pops a "Failed to find courier" notification. You can either "Retry" or choose to "Self-deliver" the order.' The automatic mode is timing-driven, not availability-driven - 'Otter will either automatically dispatch the order based on your cooking time, or you can manually request it' - and an out-of-zone address simply fails: 'If the address is outside of the courier radius, a courier will not be assigned to that order.' There is no in-house driver roster for a wait-threshold or no-driver-available rule to consult; `self-deliver` is an order status, not a fleet. https://helpdesk.tryotter.com/hc/en-us/articles/27589269188499-Couriers-Logistics-in-Order-Manager · retrieved 2026-09-10
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
Otter is itself the integrator, and the help centre documents a first-party connection flow per marketplace rather than a resold middleware hop. DoorDash: 'The DoorDash self-serve onboarding feature can seamlessly connect your DoorDash Merchant account with Otter', requiring an Otter Dashboard login, a DoorDash Merchant Portal login and 'a valid, active DoorDash store ID' (US, Canada and Australia). Uber Eats (art. 28883991347731): 'Uber Eats x Otter integration takes all orders made through the Uber Eats delivery-app and sends them to a single Otter device', connected in two steps - 'Connecting your integration within the Otter Dashboard' then 'Activating your integration via Chatbot or Otter Dashboard'. Grubhub (art. 4403016352787): the same, connected from Otter Dashboard > Profile > Settings using the merchant's Grubhub admin login. Enterprise multi-location onboarding grants Otter portal access per store 'across DoorDash, Uber Eats, and Grubhub' (art. 53466996694419). Evidence repointed from tryotter.com/integrations, which is a marketing directory and cannot carry a differentiator yes. https://helpdesk.tryotter.com/hc/en-us/articles/4403016409619-DoorDash-Integration-Guide · retrieved 2026-08-08 adversarially verified
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
Documented rather than asserted. Web Order Management Overview lists as a capability 'Automatically accept orders and print tickets to reduce missed orders', and Order Manager's own article (art. 28933440344979) describes the mechanism: 'Automatically accept multiple delivery platform's incoming orders to avoid missing any sales. Turn on the Auto-Accept settings in the Integrations tab for all your integrated delivery platforms', with per-channel toggles and bulk editing, plus a 'POS Injection Status' order filter that 'Flags if an order has been sent to the POS or not' and a per-channel 'Turn on/off the POS injection' setting in Third-Party POS Integration Settings (art. 36895212686483). Otter-provided printers 'are pre-configured to automatically print orders once connected to power and internet'. So a marketplace order lands in the order feed, is accepted without a human, injects to the POS as a tracked state and fires to the printer; if auto-accept is off the operator must accept within the marketplace's window ('usually within 3 minutes, or else the order will be canceled'), which is a configuration choice, not a re-keying requirement. https://helpdesk.tryotter.com/hc/en-us/articles/12158544475283-Web-Order-Management-Overview · retrieved 2026-08-08 adversarially verified
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
'Item availability changes automatically go live across all connected channels once updated', and 86ing can be done from the Otter Dashboard, Otter POS, Order Manager or the Otter Go App. Three states are enumerated: Available - 'If an item was previously Unavailable, it will become available on all connected platforms after selecting Available'; Unavailable Today - unavailable for the remainder of the business day, then 'At midnight, the item will show as Available again, and eaters will be able to order this item from all connected platforms'; and Unavailable Indefinitely, which holds until manually restored without deleting the item. Per-channel control is separate (channel availability). Shortfall against nothing in the claim, but worth recording: restoration is by clock or by hand, not by an inventory count. The previous note's assertion that Otter is certified against DPIP item-86ing requirements is not stated on the marketing page it cited and is withdrawn. https://helpdesk.tryotter.com/hc/en-us/articles/5159002040083-Item-Availability-86-ing · retrieved 2026-08-08 adversarially verified
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
Re-sourced from the tryotter.com/products/app marketing page to the help centre, which overturns the earlier shortfall. Pause/Unpause a Storefront (art. 22205073836051, updated 2026-07-30): 'Pausing a storefront allows you to temporarily or schedule your storefront to appear unavailable on select platforms - to pause orders being placed', and it can be done from Otter POS, the Otter Tablet, Order Manager (web) or the Otter Go app. The flow is per-marketplace - check the box next to each listed platform, or [Pause all] - and step 3 is 'Select time range for pause' (Order Manager wording: 'Select the time period of pause'), followed by a pause reason. So the earlier note's 'Timed auto-reactivation is not documented' was wrong. The Public API corroborates the mechanism: PauseRequest carries 'start - Start time for the pause. Executed immediately if not set' and 'end - Time when the pause should expire. If not provided, uses the default which is 4 AM at store timezone', with POST /manager/storefront/v1/storefront/pause and a matching unpause plus request-status endpoints (developer-guides.tryotter.com/api-reference/). Caveat, not a shortfall on this claim: 'If you are located within the LATAM region, please contact Otter Support to pause or unpause orders for your storefronts', and Special Hours is recommended instead for long planned closures. https://helpdesk.tryotter.com/hc/en-us/articles/22205073836051-Pause-Unpause-a-Storefront · retrieved 2026-08-08
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
Help-centre Reconciliation guide (Analytics app): identifies "if there are orders that didn't get paid for from the OFO or if there are any discrepancies in the payout amount for an order". Difference Summary reports Unpaid Orders, Partially Paid Orders and Pending Orders, with per-order columns Order ID, Platform, Payment Status, cancellation reason, Revenue, Calculated Payment, Difference amount, Actual Payment, Brand. Transaction Summary itemizes Commission, Delivery Commission, Processing Fee, Discounts, Error Charges, Adjustments ("generally due to disputes or order issues"), Tax Withheld and Payout per transaction. Filters by month and brand/store; export button on every view. Payout data sourced from the delivery partners, landing 3-4 days after the partner's payout. Promotion/marketing spend appears as operator-initiated Discounts rather than a separate marketing-fee column. https://helpdesk.tryotter.com/hc/en-us/articles/18163188728339-Financials-Reconciliation · retrieved 2026-08-06
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
Live Alerts documentation lists the alertable events by name, including "A third-party POS injection fails to inject an order", "Delivery App integration is disconnected and can be repaired within the Otter Dashboard" (with an [Update Credentials] button in the alert email and a Disconnect Channels alert in the dashboard) and "There are 3+ consecutive canceled or missed orders on any connected delivery channel", plus storefront paused/offline and item-unavailable alerts. Delivery is by SMS, email, WhatsApp or the Otter iOS app; recipients and brand/location scope are configurable under Settings > Notifications > Live Alerts. The separate Repair Alerts feature shows per-channel connection status for 15 named delivery providers with error types (invalid credentials, 2FA/MFA, third-party blocked, invalid store configuration, account capability issues) and self-repair prompts. Docs state Live Alerts is available only on paid Otter plans. https://helpdesk.tryotter.com/hc/en-us/articles/19456763447827-Live-Alerts · retrieved 2026-08-06
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
Guest-facing tracking exists: 'Can I share order tracking info with my customers? Yes, Otter lets you share a URL with your customers so they can see the progress of their order in real time' (Couriers & Logistics in Order Manager, art. 27589269188499), and Otter Catering (art. 33983809245203) sends email and text confirmations plus a reminder one hour before the scheduled pickup or delivery, with guests able to 'track their order through a provided link within these notifications'. Shortfall, and it is a single one: no article in the 292-article English help centre states that the tracking page sits on the restaurant's own domain or carries its branding - Otter's branding controls (Branded Websites, Online Ordering Logo & Banner, How to Update Storefront Logo) all cover the ordering storefront, not a tracking page - and nothing states what order or driver state drives it. CORRECTION: the earlier note added a second shortfall, that the state must be the 3PL's 'since Otter holds no driver record of its own'. That was false and is withdrawn. User Management (art. 44753081545619) documents a Courier Role - 'Provides access to the Courier App (CAS), allowing users to deliver orders on behalf of your organization. Ensure that a phone number is added to this user role so the courier can receive SMS messages' - and a Dispatcher Role - 'Any existing user can be assigned the Dispatcher role, granting them the necessary permissions to manage couriers and send them to fulfill orders' - and the Couriers article offers 'Self-deliver' at every quote or courier failure and an Assignment mode of Automatic or Manual courier. Otter therefore does hold an in-house courier entity; what remains undocumented is the tracking page's branding and domain, which is enough to hold this at partial. https://helpdesk.tryotter.com/hc/en-us/articles/27589269188499-Couriers-Logistics-in-Order-Manager · retrieved 2026-08-08
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
The promise is operator-set on both halves. Delivery duration is typed in once per store: after choosing the delivery area type and distance, 'set the Estimated delivery time range in minutes' (Online Ordering Settings, art. 21748907448467). Prep time is a per-delivery-platform dropdown the operator maintains: 'If you are on Auto-Accept, every order will follow the prep time you have set for each delivery partner. If you are on Manual-Accept, you will have the option to set your prep time on a per order basis when it comes in.' The only automatic component is fixed padding - 'ASAP orders will typically honor the default prep time you set, with an additional buffer of 2-5 minutes to account for any fluctuations in timing' (Scheduled vs ASAP Orders: Prep Time Adjustments) - and any change is a human action that raises a Prep Time Changed live alert (Live Alerts). No kitchen-load, order-queue, driver-availability or zone drive-time input feeds the quote; where a quote does move algorithmically it is the marketplace's own algorithm, which the same article warns 'might not always' honour Otter's suggested prep time. https://helpdesk.tryotter.com/hc/en-us/articles/360052111214-How-do-I-update-my-prep-times · retrieved 2026-08-08
Vendor documents explicit offline behavior for delivery: whether cash delivery orders, driver assignment, and driver settlement continue during an internet outage.
delivery-offline-behavior
Part of the question is answered explicitly. Otter POS Using Offline Mode states that while the device is offline 'Online orders cannot be accepted on Otter when a device is disconnected from the internet. This includes both auto-accepted orders and manually accepted orders. Online orders that are not accepted can lead to the temporary pause of a storefront by your online order provider', and that a storefront can be unpaused from the POS once back online; meanwhile cash and credit card checks rung in on the terminal continue and upload on reconnect, and handhelds keep taking cards in both card-reader and mobile-POS modes. Shortfall: the delivery-specific half is undocumented. CORRECTION to the earlier note, which dismissed that half as inapplicable 'since Otter holds no driver records' - it does: User Management (art. 44753081545619) documents a Courier Role with the Courier App (CAS) and a Dispatcher Role to 'manage couriers and send them to fulfill orders', and Couriers & Logistics (art. 27589269188499) documents automatic and manual courier assignment, per-order quote requests and a Self-deliver path. No article in the 292-article English help centre states whether courier quoting or assignment works during an outage (both are calls to a 3PL), whether the Courier App or the Dispatcher view functions offline, what becomes of an already-assigned courier's state, or how a cash-on-delivery order or courier settlement is handled. Partial on the documented POS half, silent on the delivery half. https://helpdesk.tryotter.com/hc/en-us/articles/26865574404883-Otter-POS-Using-Offline-Mode · retrieved 2026-08-08
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
Re-confirmed verbatim 2026-08-02: "No hidden fees, no commissions, just pure profit on every order." Caveat carried forward: every bundle also reads "+ per order transaction fee" with no figure published anywhere, so "0% commission" is a channel-commission claim, not an all-in cost claim. https://tryotter.com/products/online-ordering · retrieved 2026-08-02 adversarially verified
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
Digital surface is a website builder plus web ordering; the only Otter mobile apps in the App Store/Play Store are the operator-facing Otter Go app, not a branded guest app. https://tryotter.com/products/app · retrieved 2026-08-01
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
DOWNGRADE (2026-08-02 re-score). The 2026-08-01 verifier moved this from unknown to yes while writing "Card-on-file specifically is not stated, so treat as partial-to-yes... I would accept partial" - the note contradicted the value it set. Shortfall named: the Online Ordering page documents guest accounts and repeat-order convenience, but no stored card-on-file, no vaulted payment token and no saved-payment management surface. Guest identity only. https://tryotter.com/products/online-ordering · retrieved 2026-08-02 adversarially verified
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
"Smart upsells" with item suggestions on kiosk and checkout suggestions on POS. No attach-rate reporting documented. https://tryotter.com/products/kiosk · retrieved 2026-08-01
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
Scheduled orders exist (catering up to 6 months; KDS scheduled queue) and prep times are configurable, but per-slot capacity limits that close slots are not documented. https://tryotter.com/products/catering · retrieved 2026-08-01
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
Re-confirmed 2026-08-02: the Online Ordering page lists pickup, delivery, curbside pickup and dine-in as supported fulfillment modes. Curbside arrival check-in specifically is still not documented. https://tryotter.com/products/online-ordering · retrieved 2026-08-02 adversarially verified
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
QR Ordering product from $30/mo: scan to order, table number input, open tabs, split payment, card/cash/Apple Pay/Google Pay, syncs to POS and kitchen. https://tryotter.com/products/digital-dine-in · retrieved 2026-08-01
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
Re-confirmed 2026-08-02 with full pricing: Kiosk Pro 27" ($289/mo rent, $5,500 buy), Kiosk 21.5" ($189/mo rent, $3,000 buy), Kiosk Mini 15.6" ($100/mo rent, $1,000 buy), all $99/mo per device software, on the same managed menu with integrated contactless payment and POS/KDS flow-through. Shortfall: no ADA, WCAG or VPAT accessibility conformance statement appears anywhere on the page. https://tryotter.com/products/kiosk · retrieved 2026-08-02
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
`group order` occurs 0 times across the 287-article help centre, the 53 developer guides, the OpenAPI spec and 414 www pages. The large-order product is Otter Catering, and its documented flow is single-orderer throughout, step by step: 'Guests browse the catering menu choose items and quantities, and see a clear price per attendee', 'They select pickup or delivery and schedule the order up to 6 months in advance', 'They pay the deposit online using Apple Pay, Google Pay, or any major credit card', 'A few days before the event, guests receive an invoice and pay the remaining balance'. One payer, one cart, a deposit and an invoice - there is no shareable link that lets multiple participants add their own items, and no per-person or total spend cap. Catering settings are enumerated (General, Payment, Scheduling, Ordering Restrictions, Tips, Fees, Delivery Area, Delivery Fees) and no participant or cap setting appears among them. https://helpdesk.tryotter.com/hc/en-us/articles/33983809245203-Otter-Catering · retrieved 2026-09-10
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
Catering app documentation: separate catering menu with a per-attendee price shown to the guest; scheduling up to 6 months ahead; guest pays a deposit online, then receives an invoice for the balance days before the event. Settings are configured per organization, brand or location with overrides, and the documented fields are Lead Time (days or hours of prep needed), Advance Ordering (days ahead an order may be placed), Basket Size Minimum (dollar floor), Guest Count (allowed range), Require Deposit (percentage, minimum dollar amount, days after invoice creation the deposit is due), Invoice Due Date and Invoice Reminders (days before the scheduled order), tips presets, pickup/delivery service fees, delivery radius by driving or straight-line distance, and delivery fee tiers by distance. Orders land in the Order Manager Scheduled tab and fire automatically at scheduled time minus prep time; calendar or list overview of orders and payment status. $35/month add-on to Direct Orders. Payment is card / Apple Pay / Google Pay online or in person - no documented ACH or house-account term billing. https://helpdesk.tryotter.com/hc/en-us/articles/33983809245203-Otter-Catering · retrieved 2026-08-06
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
AUDIT RE-GROUND (2026-08-05): upheld, with the workaround now documented from the vendor's own docs. The Manual Orders feature exists precisely for 'orders... that customers call in for or submit through other non-integrated avenues (Phone Calls, Text Messages, etc.)', where 'you and your staff will need to manually input the order details' — staff transcription is the documented phone-order path. Otter's own voice-ordering blog guide pitches no Otter voice product (its CTA points to Otter POS), the integrations directory's eight categories name no voice-AI partner, and a 2026-08-05 news search surfaced no launch or partnership. https://helpdesk.tryotter.com/hc/en-us/articles/4402306062867 · retrieved 2026-08-05 adversarially verified
Supports AI voice ordering at the drive-thru lane, integrated with the POS menu/modifiers and with escalation-to-human handoff.
digital-drivethru-ai
AUDIT RE-GROUND (2026-08-05): the prior rationale's 'no drive-thru flow appears in the product matrix' is false — Drive Thru is one of five documented POS fulfillment modes (Dine-in, To-Go, Drive Thru, Delivery, Pickup), with ticket routing to a drive-thru printer (Ticket Settings, art. 40190252328595). The no stands on what that documentation enumerates: the drive-thru flow is a staff member selecting the Drive Thru fulfillment icon at the terminal and optionally keying customer name/phone/email/notes; no voice AI, lane audio hardware, order recognition or escalation-to-human component appears in any of the 38 drive-thru-matching help-centre articles. https://helpdesk.tryotter.com/hc/en-us/articles/27241836874515 · retrieved 2026-08-05 adversarially verified
Supports conversational SMS or chat ordering/reordering (text-to-order or text-a-link) that lands in the POS.
digital-sms-ordering
AUDIT RE-GROUND (2026-08-05): upheld, with the workaround now documented from the vendor's own docs: text-message orders are enumerated among the 'non-integrated avenues (Phone Calls, Text Messages, etc.)' for which 'you and your staff will need to manually input the order details' via Manual Orders — i.e. no text-to-order lands in the POS by itself. Otter Marketing's SMS is campaign broadcast (promotions), not conversational order capture, and the documented online-ordering channel set is web, kiosk and QR. https://helpdesk.tryotter.com/hc/en-us/articles/4402306062867 · retrieved 2026-08-05 adversarially verified
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
'Order with Google Integration Guide' (read 2026-08-04 via the help centre's public Zendesk API; HTML front-end 403s): 'allowing customers to order directly from Google maps, Google pay, Assistant and more… Now available for pickup and delivery… sending customers directly to you, without any commissions or fees.' Setup requires the restaurant's Google Business Profile link, Stripe API keys and delivery details, submitted on a form to Otter rather than self-serve. Documented limitation: 'Google Food Ordering only supports a single menu per location' — multi-menu publishes error out. Whether the listing can be marked 'Preferred by Business' is not addressed. https://helpdesk.tryotter.com/hc/en-us/articles/4408288435603-Order-with-Google-Integration-Guide · retrieved 2026-08-04
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
The help-centre article 'Using your Online Ordering URL' has a dedicated Apple Maps section: create the location in Apple Business Connect, then 'Select the arrow next to [Actions] and then click [Add]' > 'Select [Add an Action Link] next to any active Actions' > 'Select the [Order] action from the Action menu, add your Otter Online Ordering website link, and then click [Add]'. It also documents adding the Otter ordering link to the plain website field and to Google Business and Yelp listings. The action points at Otter's own first-party commission-free ordering site (a custom tryotter.com URL). Configuration is done by the operator inside Apple Business Connect - Otter publishes no automated ABC feed - but the ordering placement itself is documented and supported. https://helpdesk.tryotter.com/hc/en-us/articles/38446541679379-Using-your-Online-Ordering-URL · retrieved 2026-08-08
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
Loyalty enrolls via POS and mobile QR with unified guest profiles and cross-location tracking; enrollment/accrual inside the first-party web ordering checkout is not explicitly documented. https://tryotter.com/products/loyalty · retrieved 2026-08-01
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
Otter's guest-retention stack is enumerated across the help centre's Loyalty, Marketing and Online Ordering sections: a free points program supporting only amount-based and purchase-based earning with four discount redemption types, plus SMS campaigns, discounts/promotions and gift cards. No recurring guest billing, paid tier, fee-waiver membership or per-period entitlement appears in any of them, and 'Subscriptions' in Otter (art. 35768671669907) refers exclusively to the merchant's own SaaS billing under the Billing section. https://helpdesk.tryotter.com/hc/en-us/articles/31727842220819-Otter-Loyalty-Introduction · retrieved 2026-08-03
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
Loyalty rewards are define-once and honored across channels: one program's reward types (points-to-cash, order discount, item discount, BOGO) redeem on Otter POS, in the Kiosk checkout flow and on the direct ordering website (art. 40678275262611). Discounts are not. The Discounts page forks at creation - '[Create discount] and select [Create POS discount]' (art. 27238748303763) versus '[Create Direct Orders discount]' - and the Direct Orders article's own FAQ says of those discounts 'No - these discounts will only apply to direct online orders. You can create campaigns for delivery platforms within the Marketing app > Delivery App Marketing tab.' Channel eligibility controls do exist (a 'Channel' filter on the discount list, per-storefront and per-location selection, availability windows), and no discount application on the Kiosk is documented at all. Named shortfall: a discount must be authored once per channel family, so cross-channel parity is not automatic. https://helpdesk.tryotter.com/hc/en-us/articles/43019655616019-Online-Ordering-Discounts-Promotions · retrieved 2026-08-08
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
Both halves of this claim fail, in different ways. Ownership is documented but is NOT the operator's alone: the Otter Tech Services Terms provide that 'Any and all Order Data made through the Online Ordering and Digital Dine In Services shall be owned separately by both parties', with Order Data defined to include 'Personal Data', and Otter separately reserves that 'We will own all intellectual property rights in such de-identified or aggregated forms of Order Data'. Bulk export is undocumented: the Guest Directory Report is a long, current article covering contact information, loyalty status, order history and marketing-subscribed status, with filters, five cohort views and a troubleshooting and FAQ section, and it documents no export or download of any kind. The contrast inside the same publisher is the instrument - where an export exists Otter says so plainly, as in Staff Timecard Reporting's 'Select [ Export ] to download the report in XLS format' and the Cash Management Report's 'Simply click the [Export] button at the top of the page.' `download` never occurs within 350 characters of `customer` anywhere in the help centre. https://helpdesk.tryotter.com/hc/en-us/articles/40222270130963-Guest-Directory-Report · retrieved 2026-09-10
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
Checkout is vendor-hosted end to end: online ordering runs on an Otter-generated tryotter.com storefront, and the Stripe guide states 'Stripe is a third-party payment processor that handles all the heavy lifting of securely processing payments' and 'When a customer pays for any order using Otter POS, the Online Ordering website, or Order with Google, those funds are paid directly to Stripe.' A Stripe connection is mandatory for Otter POS, Online Ordering and Order with Google before any order can be processed, so card data never touches an operator-controlled page. Named shortfall: the 292-article help centre contains no occurrence of 'PCI', '3D Secure', '3DS' or SCA, and no compliance attestation, script-integrity statement or trust centre is published on tryotter.com - the compliance half of the claim is entirely unevidenced. https://helpdesk.tryotter.com/hc/en-us/articles/26643285732243-Guide-to-Connecting-Stripe · retrieved 2026-08-08
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
Kiosk FAQ poses "Can the service fee be passed on to guests?" implying a configurable guest-borne fee; disclosure text and prohibited-jurisdiction handling are not documented. https://tryotter.com/products/kiosk · retrieved 2026-08-01
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
"Unified guest profiles" with loyalty status and transaction history across in-store and mobile enrollment. Dedup/merge behavior on phone or email match is not documented. https://tryotter.com/products/loyalty · retrieved 2026-08-01
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
Otter Loyalty Points documents a retroactive attach path that explicitly includes marketplace orders: 'After purchase, if a Loyalty profile wasn't added to an order, eaters can scan the QR code on their printed, delivery partner, or online order digital receipt to retroactively claim rewards on that order', and QR codes can be printed on receipts for POS, Kiosk and online orders. Named shortfall: the attach is eater-initiated, not automatic - a DoorDash/Uber Eats/Grubhub order arrives with no native guest profile unless the eater themselves scans the receipt QR, the QR can be claimed only once, and no article documents Otter mapping marketplace customer identity into a profile. The operator-facing tables are scoped to first-party orders: Customer Reports (art. 25246908493587) is titled 'Direct Orders Customer table' and the Guest Directory (art. 40222270130963) is available only with Otter POS, Direct Orders or Loyalty subscriptions. https://helpdesk.tryotter.com/hc/en-us/articles/40678275262611-Otter-Loyalty-Points · retrieved 2026-08-08
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
UPGRADE (2026-08-02 re-score). The 2026-08-01 verifier downgraded this to partial because item-based accrual was not in the retrievable text. It is present today, verbatim: "Reward guests by how much they spend, or for buying specific items", alongside "Define what rewards your guests earn - bucks, stars, points, etc." Two accrual models documented, so the shortfall the partial named no longer holds. https://tryotter.com/products/loyalty · retrieved 2026-08-02 adversarially verified
Supports status tiers with automatic promotion and demotion driven by rolling-window spend or visit counts. differentiator
guest-loyalty-tiers
The program builder is documented screen by screen and its options are the whole configurable surface: select brands/locations, name the program, optionally rename the points currency, choose earning type - 'Amount-based' (points per dollar) or 'Purchase-based' (points per order or per specified item/category) - then '[+Create reward]' from an enumerated four: points to cash, order discount, item discount, Buy X Get Y. Steps 1-8 end at '[Publish loyalty program]'. No tier, status level, rolling-window qualification or promotion/demotion rule appears at any step, nor in Otter Loyalty Introduction (art. 31727842220819), Otter Loyalty Points (art. 40678275262611), Loyalty Customer Profiles, Loyalty Insights & Reporting (art. 40680655468435) or the Guest Directory. The word 'tier' appears in the 292-article corpus only for subscription plans, GPO rebates and partner programs. https://helpdesk.tryotter.com/hc/en-us/articles/42994188214931-Creating-a-Loyalty-Program · retrieved 2026-08-08
Documents explicitly what loyalty lookup, accrual, and redemption do when the POS loses connectivity (queue-and-reconcile vs blocked). differentiator
guest-loyalty-offline-behavior
'Otter POS Using Offline Mode' is the vendor's dedicated treatment of connectivity loss. It lists the key features (credit-card and cash transactions continue, orders queue with a cloud icon and 'will be automatically processed when you connect to a network again') and then enumerates the limitations under 'What are the limitations of Offline Mode?' - online orders cannot be accepted, new printers and card readers cannot be paired, wifi/ethernet printers and station tickets do not print. Loyalty lookup, accrual and redemption appear nowhere in either list, and none of the six loyalty articles (arts. 31727842220819, 42994188214931, 40678275262611, 40644257640083, 40680655468435, 40183256731155) mentions offline, network or connectivity. The claim is that the behaviour is documented explicitly; across the whole 292-article corpus it is not, so this is a documented-absence finding, not a statement that loyalty fails offline. https://helpdesk.tryotter.com/hc/en-us/articles/26865574404883-Otter-POS-Using-Offline-Mode · retrieved 2026-08-08
Offer/discount engine exposes explicit stacking and precedence rules (exclusive vs combinable, order of application) as configuration. differentiator
guest-loyalty-offer-stacking-rules
The Direct Orders discount article states under 'Applying Multiple Discounts at Checkout': 'Eaters will only be able to apply 1 discount code per order at checkout.' That is a fixed platform behaviour, not a configurable rule. The two discount builders enumerate their entire settings surface and contain no stacking, exclusivity or order-of-application control: Direct Orders offers name, storefronts, type (item/order/BOGO), fixed or percent amount, minimum basket amount, maximum discount amount, limit-one-redemption-per-customer, discount code, banner distribution and date range; Otter POS Discounts (art. 27238748303763) offers discount settings, availability settings, and exactly three advanced settings - Minimum Check Size, Auto-Apply and Require Manager's Approval. Loyalty redemption is likewise governed by fixed platform rules rather than configuration: 'there is no minimum amount of earned points needed to redeem' and 'no maximum limit on the amount of points that can be redeemed at one time' (art. 40678275262611). https://helpdesk.tryotter.com/hc/en-us/articles/43019655616019-Online-Ordering-Discounts-Promotions · retrieved 2026-08-08
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
Offers are issued to a behaviourally defined audience rather than only broadcast: creating an SMS campaign requires selecting an audience type, and the article tabulates seven - Recent Guests (ordered last week), Monthly Orderers (at least once a month for three months), Weekly Orderers (at least once a week for four weeks), Lapsed Guests (90 days since last order), Loyalty Members, Active Guests (ordered in the past 90 days) and All Guests - with an existing or new discount attached at step 5. Named shortfall: the audiences are a fixed list the operator cannot extend. The article's own FAQ answers 'No - Currently, there isn't a feature to create your own audience type/customer segment to send an SMS Campaign to. The audience types to choose from are pre-set.' There is no rule over spend or items purchased, and the same seven-way segmentation is all the Guest Directory offers as a filter. https://helpdesk.tryotter.com/hc/en-us/articles/52488273009427-First-Party-SMS-Marketing · retrieved 2026-08-08
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
Lifecycle segments are computed for the operator with no query building: the Guest Directory offers views for All guests, Loyalty Members, 'Recent guests: Customers who have placed an order within the last week', 'Lapsed guests: Customers who haven't placed an order within 90 days' and 'Active guests: Customers who have placed an order within the last 90 days'. Customer Reports (art. 25246908493587) exposes the same groups as All Diners / Recent / Lapsed / Active, and SMS Marketing adds frequency segments (Monthly Orderers, Weekly Orderers). Named shortfall: the monetary axis is missing from the segmentation - Total Spend and Average basket size exist only as sortable columns in Customer Reports, never as a derived segment, and there is no VIP, new-guest or at-risk score and no way to define one (SMS Marketing FAQ: 'the audience types to choose from are pre-set'). https://helpdesk.tryotter.com/hc/en-us/articles/40222270130963-Guest-Directory-Report · retrieved 2026-08-08
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
The article's first worked example is a win-back: 'Campaign Goal: Send promotion to customers that haven't ordered from your restaurant in the last 90 days', and campaign creation step 7 is 'Select the reoccurrence, date(s), and send time for the SMS campaign to be sent out' - the Loyalty Exclusive example runs 'Every Monday at 11am, June through July'. Combined with the auto-maintained Lapsed Guests audience this gives a standing, recurring lapsed win-back rather than a one-off send. Named shortfalls: the trigger is a schedule over a segment, not a per-guest lifecycle event, so a send fires on the calendar rather than on the guest's 90th day; no birthday field is collected anywhere in the guest profile and no birthday campaign exists; no first-visit thank-you or onboarding automation is documented; and recurrence is bounded by a date range rather than being genuinely always-on. Otter also caps first-party marketing at one message per customer per two weeks (art. 43019655616019). https://helpdesk.tryotter.com/hc/en-us/articles/52488273009427-First-Party-SMS-Marketing · retrieved 2026-08-08
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
SMS is native and first-party: 'First Party SMS Marketing is a feature that allows restaurants create, manage, and optimize targeted SMS (mobile text) campaigns', built from Apps > Marketing > First Party Marketing > [Create Campaign] with audience, attached discount, auto-populated message body, recurrence and send time, published from the Otter Dashboard - explicitly framed as 'reducing reliance on third-party platforms'. Transactional loyalty SMS is also sent automatically on point earn/redeem (art. 40678275262611). Named shortfall: there is no email campaign capability - the marketing surface is SMS only, no email composer, template, sender domain or ESP handoff appears in the 292-article help centre, and the only email Otter sends on a schedule is the Scheduled Reports operator digest (art. 22964276979987). The Guest Directory does store an email address per guest, but nothing documents sending to it. https://helpdesk.tryotter.com/hc/en-us/articles/52488273009427-First-Party-SMS-Marketing · retrieved 2026-08-08
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
A per-guest 'Marketing subscribed status' is stored and filterable (a 'Marketing Opt-in' filter also exists in Customer Reports, art. 25246908493587); loyalty enrollment is opt-in-prompted at POS and kiosk, and eaters can change notification preferences in their own profile. Shortfall: the documented status is a single boolean, not per-channel consent; no timestamp or source of consent is shown anywhere; and no doc describes honoring revocation received by means other than the eater's self-service preferences. https://helpdesk.tryotter.com/hc/en-us/articles/40222270130963-Guest-Directory-Report · retrieved 2026-08-03
Handles or explicitly documents A2P 10DLC brand and campaign registration required for the operator to send SMS through the platform.
guest-loyalty-10dlc-registration
Otter ships first-party SMS marketing and documents it in detail - First Party SMS Marketing (updated 2026-06-12) walks the whole campaign builder, lists seven pre-set audience types, and answers its own FAQ on custom segments and optional discounts - and it says nothing whatever about carrier registration. `10DLC`, `A2P`, `toll-free`, `short code` and `Twilio` each occur 0 times across the 287-article help centre, the 53 developer guides, the OpenAPI spec and 414 www pages, while `SMS` occurs 210 times in the help centre and `text message` 162 as controls, so the corpus is plainly not silent about SMS. Two poisons were cleared: `carrier` returns exactly 1 tokenised help-centre hit and it is a shipping carrier for returning a printer ('A Return Label will be provided to be used by a common mail carrier in your region'); and `brand registration` returns 4 www hits, all of them in a Kentucky liquor-licensing wiki page about the Kentucky PRO Product Registry Online, nothing to do with A2P. https://helpdesk.tryotter.com/hc/en-us/articles/52488273009427-First-Party-SMS-Marketing · retrieved 2026-09-10
Reports redemption and incremental sales attributable to a specific campaign or offer, tying redeemed offers to actual check totals. differentiator
guest-loyalty-campaign-attribution
Reports top guests, loyalty-attributed sales and average spend, and "which offers resonate". Tying redeemed offers to actual check totals as incremental sales is not documented. https://tryotter.com/products/loyalty · retrieved 2026-08-01
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
The guest list is viewable and searchable but not exportable by any documented route. Guest Directory Report and Customer Reports (art. 25246908493587) are the two articles that hold the guest table - the latter enumerating its columns as Name, Email, Phone number, Marketing opt-in, Last order date, Total Orders, Total Spend, Discounted orders, Discount redeemed, Average basket size and Average Tip - and neither offers an export, a download or a CSV. Two hard constraints sit on top of that: PII is consent-gated in the table itself (the Email column is described as 'Shown only if marketing is allowed for customer', and the Phone number column identically), and the only documented guest-record mutation is a loyalty points adjustment. The API is not the alternative: the Reports API is marked `deprecated: true` in the OpenAPI spec with 'The Reports API is deprecated and may be removed in a future release', and the only guest-history endpoint, POST /v1/eater/order-history, is per-eater by construction - 'Provide an external eater ID to get a list of order related to that eater' - not a bulk list. `guest list` occurs 0 times corpus-wide; `export` occurs 57 times in the help centre and exactly one of those is within 400 characters of `customer`, in a labour report. https://helpdesk.tryotter.com/hc/en-us/articles/40222270130963-Guest-Directory-Report · retrieved 2026-09-10
Exposes a documented outbound guest and order event API or webhook stream that a CDP or marketing platform can subscribe to (e.g. Olo, Punchh, Bridg, Klaviyo). differentiator
guest-loyalty-cdp-event-api
Re-verified 2026-08-10; value and grade unchanged, counts and quotations corrected. DOCS REBUILD 2026-08-10: Otter replaced its developer documentation between 2026-08-08 and 2026-08-10 - the MkDocs guide set and Redoc reference at developer-guides.tryotter.com are now a Docusaurus site at connect.tryotter.com (59 guides indexed by /docs/llms.txt, with /docs/llms-full.txt, /docs/agent-search.json and an MCP endpoint alongside), the OpenAPI document went from 75 paths to 70 and from 27 x-webhooks to 23, and every guide-tier quotation in this record was re-worded at the source. Re-measured against the live spec and the 59-guide corpus on 2026-08-10. A subscribable ORDER event stream exists and is documented to grade A: 23 x-webhooks (was 27) covering orderCreate, orderConfirm, orderStatusUpdate, orderUpdate, orderReady, orderHandedOff, orderFulfilled, intentToCancelOrder, deliveryStatusUpdate, posInjectionStateUpdate and store/menu/storefront/delivery operations, with X-HMAC-SHA256 validation required on every inbound request so a subscriber can verify payloads. The previous note listed reportGenerated among the subscribable events; THAT WEBHOOK WAS REMOVED in the rebuild along with fetchCredentials, removeStore and upsertStore, and it is withdrawn here. Guest data is present but only as an attribute of an order: the Order schema still carries a customer property ('The customer who placed the order', a Person with name, phone, email and personalIdentifiers), so a CDP subscribed to the order stream does receive per-order guest identity. Named shortfalls that keep this at partial, all unchanged: there is no guest, eater, customer or loyalty EVENT TYPE among the 23, so no profile create/update, consent, opt-in or loyalty-accrual event can be subscribed to and a CDP sees a guest only when that guest transacts; the only eater-level pull surface is POST /v1/eater/order-history ('Provide an external eater ID to get a list of order related to that eater'), which requires the caller to already hold an external eater ID; the Loyalty Manager API (/manager/loyalty/v1/{source}/user, /user/search, /user/enrollment-config, /rewards/evaluate, /simulate, /redeem-and-accumulate, /refund) is an inbound request/response surface a loyalty provider implements, not an outbound stream; and an application must be registered by an Otter Account Representative before any webhook endpoint can be configured. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-10 adversarially verified
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
A Ratings and Reviews product exists in the catalog; score-based routing to private recovery vs public review sites is not documented. https://tryotter.com/products/ratings-and-reviews · retrieved 2026-08-01
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
The help centre's Loyalty section holds exactly five articles (Introduction, Creating a Loyalty Program, Points, Customer Profiles, Insights & Reporting; section enumerated 2026-08-04 via the public Zendesk API). 'Creating a Loyalty Program' enumerates everything a program can be built from — 'Amount-based Loyalty Program, Purchase-based Loyalty Program, Reward Redemption Options' — and the Introduction's capability list covers earning on payment, redemption, manual balance adjustment, QR sign-up and reporting. A referral mechanic is in none of them: 'refer a friend' returns zero results corpus-wide and 'referral' matches only reseller partner-program pages. The enumerated earning models exclude per-guest referral codes, referred-first-order attribution and two-sided rewards. https://helpdesk.tryotter.com/hc/en-us/articles/42994188214931-Creating-a-Loyalty-Program · retrieved 2026-08-04
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
`Apple Wallet` and `Google Wallet` occur 0 times across the 287-article help centre, the 53 developer guides, the OpenAPI spec and 414 www pages; `Apple Pay` occurs 3 times in the help centre and 5 on www as the control, so Apple vocabulary is present in the corpus and it never once names a pass. Otter Loyalty Introduction (updated 2026-07-02) enumerates every way a guest reaches their balance and a wallet is not among them: 'Your customers can access the portal through: A direct link shared by the merchant Scanning a printed QR code Scanning QR code on order receipt Accessing their profile on your direct order website' (a bullet list on the page). Sign-up and redemption otherwise happen on the customer-facing POS screen or in the Kiosk checkout flow by phone number. The balance is push-updated nowhere; the guest scans a QR code to see it. https://helpdesk.tryotter.com/hc/en-us/articles/31727842220819-Otter-Loyalty-Introduction · retrieved 2026-09-10
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
Otter's Data Processing Addendum assigns the duty to the operator and offers no tooling to discharge it. Otter is the processor - 'Customer is solely responsible for determining the purposes and means of the processing of Personal Data, and Vendor is Customer's processor' - and on guest requests its commitment stops at notification: 'To the extent legally required, Vendor shall promptly notify Customer if it receives a request from a Data Subject to exercise any of the Data Subject's rights', with the work landing on the operator, who 'shall use its best efforts to respond to and resolve promptly all requests from Data Subjects'. No admin control exists to do that: the Guest Directory Report documents exactly one mutation of a guest record, a loyalty points balance adjustment, and states plainly that 'there is no way to merge customer profiles'. The 81 `CCPA` occurrences on www are all in Otter's own consumer privacy policies, where the eater writes to Otter - that settles a guest's RIGHT, not an operator's tool, and no deletion propagation to loyalty or marketing records is documented anywhere. https://www.tryotter.com/legal/dpa · retrieved 2026-09-10
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
The vendor's own doc states the opposite of guardrails: 'Currently, there is no minimum amount of earned points needed to redeem' and 'no maximum limit on the amount of points that can be redeemed at one time'. Manual balance adjustment is a two-click Guest Directory action with no approval step documented, and no employee-self-redemption flagging exists anywhere in the loyalty docs. A per-guest reward-history log is the only control-adjacent feature. https://helpdesk.tryotter.com/hc/en-us/articles/40678275262611-Otter-Loyalty-Points · retrieved 2026-08-03
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
Shipped automation exists and is documented, but not for the three things this claim names. Delivery App Marketing (updated 2025-12-18) ships Boost Automation, which 'Offers automatic, seamless end-to-end management and optimization for ad campaigns and promotions across multiple storefronts and delivery platforms within parameters you set' - the operator picks a spend target band (1-3%, 3-7%, 7-12%) and Otter optimises inside it. Otter POS Introduction advertises 'AI-driven promotions on delivery apps', and the Otter Go App (art. 46992929408915) ships Weekly AI Insights behind a 'Beta' badge that analyse eight weeks of data and produce 'Suggestions for Improving Metrics' and 'automatic actionable recommendations' - but those are business-performance insights, not offers. Offer CONTENT is template-generated rather than model-generated on the first-party side: the SMS draft 'An SMS draft will auto-populate with: Restaurant name Discount details Discount code (if applicable) Coupon URL' (a bullet list on the page). TARGET AUDIENCE is explicitly not AI-selected - the same article's FAQ answers 'No — Currently, there isn't a feature to create your own audience type/customer segment to send an SMS Campaign to. The audience types to choose from are pre-set.' The one genuinely AI-generated content feature Otter documents is menu item descriptions ('Generate with AI'), not offers. https://helpdesk.tryotter.com/hc/en-us/articles/8953720667667-Delivery-App-Marketing · retrieved 2026-09-10
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
Re-evidenced 2026-08-09; the "third-party eCard integration" reasoning was false and is withdrawn. Native stored value exists: Otter Gift Cards is a first-party $30/month Otter POS add-on, loaded and reloaded at the POS, redeemable at Otter POS and in Direct Orders online checkout, with refunds returned to the card balance. Shortfall, which is what keeps this partial: the balance is keyed to a physical card number (typed in or barcode-scanned), and nothing in the corpus links a gift balance to the Otter loyalty guest profile - the five Loyalty articles describe points, rewards and customer profiles with no stored-value component, the Loyalty Manager API exposes enrollment, user lookup and reward evaluate/simulate/redeem/refund with no balance object, and the gift card article never mentions loyalty. Loyalty profiles are themselves org-wide ("If an eater has been registered as a customer at any Otter-using store within your organization, you'll be able to search to pull up their information"), but gift card redemption is enabled per location, so brand-wide redeemability of the balance is not documented either. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/37358535943187-Otter-Gift-Cards · retrieved 2026-08-09
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
AUDIT OVERTURN (2026-08-05): the prior no ('no native employee records, punch functionality or time-tracking capability exists') is contradicted by the vendor's own 'Time Card App (Clocking In/Out)' doc, read via the help centre's public Zendesk API: staff open the Time Card app on the POS device home screen and 'enter your employee pin code' to clock in and out; Staff Timecard Reporting (art. 26845973817491) exposes clocked hours with Time/Location/Role/User filters and XLS export, and handhelds run the same Time Card app (art. 35667642715283). PIN punch at the POS terminal with no separate time-clock hardware — the claim verbatim. https://helpdesk.tryotter.com/hc/en-us/articles/26645285153555 · retrieved 2026-08-05 adversarially verified
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
AUDIT RE-GROUND (2026-08-05): the prior premise 'Otter has no labor/timekeeping module' is false — the Time Card app documents native PIN clock in/out. The no now rests on the enumerated punch flow: the Time Card doc walks the complete punch sequence (open the Time Card app, enter your employee pin code, clock in/out) with no photo-capture step, and no photo punch, facial verification or biometric reference exists anywhere in the help-centre corpus. https://helpdesk.tryotter.com/hc/en-us/articles/26645285153555 · retrieved 2026-08-05 adversarially verified
Supports mobile clock-in restricted by geofence or location validation for staff who do not punch at a fixed terminal.
labor-geofenced-mobile-punch
AUDIT RE-GROUND (2026-08-05): the prior premise 'Otter has no labor/timekeeping module' is false. The no now rests on the enumerated punch surfaces: 'The Time Card app can be used on both POS devices to clock in and clock out for shifts' (Handhelds Introduction) — i.e. the POS terminal and the handheld, both on-premise POS hardware. No staff mobile-phone punch exists (Otter Go is an operator order-management app), and 'geofence' returns zero results across the help centre. https://helpdesk.tryotter.com/hc/en-us/articles/35667642715283 · retrieved 2026-08-05 adversarially verified
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
This claim requires the behaviour to be documented and it is not, in either article that would carry it. Time Card App (Clocking In/Out) was updated 2026-08-10 and is thorough - the clock-in and clock-out flow, the Staff app report, the export, the edit path, and an FAQ that goes as far as 'Currently, the Time Card report in Otter Dashboard only shows shifts that have a clock in AND a clock out event.' and 'Clock in and clock out data are recorded with the same time as the device (the device's time zone)'. Offline behaviour is not mentioned. Otter POS Using Offline Mode names its three limitations and time cards are not among them, and it describes the offline store as order-scoped: clearing the app cache while offline 'will erase data from the Otter app that has not been sent to the server yet. For example, order history.' `time punch` occurs 0 times across all four corpora; `clock in` occurs 20 times in the help centre as the control and `offline` never once occurs within 500 characters of `clock` anywhere in it. https://helpdesk.tryotter.com/hc/en-us/articles/26645285153555-Time-Card-App-Clocking-In-Out · retrieved 2026-09-10
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
Beyond ten fixed system roles, Admins can build custom roles per app feature with brand- and location-scoped assignment, and the Cash app documents genuinely discrete grants (Open Drawer, Pay in/Payout, Edit Drawer, End Drawer, Manage Drawer, Remote Finish Drawer, View Only - art. 26562624877459) plus per-discount manager-approval locks. Shortfall: voids, refunds and price changes are not individually grantable - refunds ride the fixed Supervisor role on POS and Billing Admin in the Dashboard, and documented custom-role granularity outside the Cash app covers Dashboard app features, not POS actions. https://helpdesk.tryotter.com/hc/en-us/articles/44753081545619-User-Management · retrieved 2026-08-03
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
Individual PIN identity underpins auditing ('this feature also ensures you can monitor actions for auditing and reporting purposes' - art. 26844590516755); the Voided Transactions report is per-staff-member, timestamped, reason-coded and immutable, and cash-drawer edits display the editing user's name beside the changed value. Shortfall: what is logged is the acting staff member - no queryable report is documented that attributes the manager who approved an override, and approval events themselves do not appear in any log. https://helpdesk.tryotter.com/hc/en-us/articles/44155119549843-Voided-POS-Transactions · retrieved 2026-08-03
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
RE-GROUNDED 2026-08-08, off the marketing integrations directory and off the false premise that Otter ships no labor product - it ships a native Time Card app. The no now rests on documented delegation of the scheduling half specifically. Otter's Analytics guide describes the Staff tool as one that 'merges labor data (shift schedules, time punches) and order data (prep times, order ratings)... We support multiple Labor Management Systems (LMS) like Deputy, Homebase, 7shifts, and WhenIWork', and its Labor Hours chart is 'sourced primarily from your timepunch data. If no timepunches are available, it displays scheduled hours' - schedules arrive from an LMS, they are not built in Otter. The native module's own feature enumeration is timekeeping only: 'Time Card app on the Otter home screen', 'Ability to clock in or clock out from the POS terminal', 'Reporting on employee work hours in the Otter Dashboard', plus admin editing of clock-in history, and the Dashboard Staff app is a timecard table with an XLS export (art. 26645285153555). No schedule builder, shift template, publish step or schedule-distribution surface appears anywhere in the 292-article English help centre, and the Homebase guide puts timesheet editing and break logging in the Homebase portal (art. 43081257316243). https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147-Otter-Analytics-Your-Guide-to-Reports-and-Insights · retrieved 2026-08-08 adversarially verified
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
RESCORED 2026-08-05 (was no/F on the disproved no-labor-module premise). The Analytics Staff section documents a 'Staff hours Optimization' chart that 'takes your order volumes for a given period and calculates an optimal staffing rate to meet demand', compares it against the actual staffing rate and 'calls out days where the kitchen may have been overstaffed'; 'Orders per labor hour' renders in 15-minute buckets. Partial, not yes: this is retrospective day-level analysis in the Dashboard, not a forward-looking daypart forecast, and there is no native scheduling surface to apply it to - shift-schedule data comes from LMS integrations (Deputy, Homebase, 7shifts, WhenIWork). https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147 · retrieved 2026-08-05
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
AUDIT OVERTURN (2026-08-05): the prior no ('Otter has no native labor hours') is false — timecards are native, and a labor-vs-sales view is documented: the Labor Cost Report 'provides an aggregated view of employees' hours worked, wages, and labor costs compared to sales', and the Analytics Staff section carries 'Labor as percent of Sales', Labor Hours and 'Orders per labor hour' metrics (art. 12558297776147). Shortfalls: wage data populates only with 'an active Homebase integration connected to your Otter POS store'; the view lives in the Dashboard Analytics app, not a POS or in-service manager surface; and no real-time freshness is documented — Otter's own FAQ says sales reports can take 24-36 hours to be accurate (art. 360052674054 - REMOVED from the help centre between 2026-08-08 and 2026-09-10; its API record now answers 404 RecordNotFound, the same answer a fabricated id gives, so the citation is dead and this cell needs a fresh source). https://helpdesk.tryotter.com/hc/en-us/articles/38681141651987 · retrieved 2026-08-05 adversarially verified
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
RE-GROUNDED 2026-08-05: the old rationale ('no native timekeeping') is disproved - the Time Card app is native - but the finding stands on the docs. The clock-in flow is documented end to end (PIN entry, Clock in / Clock out prompt, confirm) with no threshold warning or block anywhere in it; the only overtime-adjacent signal is after the fact - report totals under 2 or over 12 hours 'displayed in red' in the Dashboard Staff app. Wage and policy data live in the LMS integrations, and a help-centre search for 'overtime' returns only an unrelated check-options article. https://helpdesk.tryotter.com/hc/en-us/articles/26645285153555 · retrieved 2026-08-05
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
RE-GROUNDED 2026-08-05: the 2026-08-02 note's premise (no timekeeping product at all) is disproved - the Time Card app is native - but the vendor's own Homebase Integration Guide places break handling outside Otter: 'All timecard data is automatically sent to Homebase, where you can view and edit timesheets, as well as log breaks.' The native Time Card flow documents clock in/out only - no break punch, no attestation prompt, no per-state or per-jurisdiction rules, no missed-break premium flag anywhere in the help centre. https://helpdesk.tryotter.com/hc/en-us/articles/43081257316243 · retrieved 2026-08-05
Supports predictive-scheduling ordinances by tracking advance-notice deadlines for published schedules and calculating predictability pay owed for employer-initiated changes.
labor-fair-workweek-support
RE-GROUNDED 2026-08-05: the 2026-08-02 premise (no labor product at all) is disproved - native Time Card timekeeping exists - but predictive-scheduling support presupposes native schedule publishing, which Otter does not have: the Staff analytics guide sources 'shift schedules' from LMS integrations (Deputy, Homebase, 7shifts, WhenIWork) and its Labor Hours chart falls back to scheduled hours only 'if no timepunches are available'. No advance-notice deadline tracking or predictability-pay calculation appears anywhere in the help centre; searches for 'forecast' and predictive-scheduling terms return nothing. https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147 · retrieved 2026-08-05
Enforces minor-labor restrictions (age-based maximum hours, prohibited time windows, school-day limits) at both scheduling and clock-in.
labor-minor-labor-rules
RE-GROUNDED 2026-08-05: the 2026-08-02 premise (no timekeeping or employee record at all) is disproved, but the finding holds. The documented employee record is first/last name, role, a 4-digit PIN and optional email/phone - no date of birth, so age-based restrictions have nothing to key on; the Time Card clock-in flow is documented end to end and enforces nothing beyond PIN entry; and there is no native scheduling module for schedule-side enforcement (shift schedules come from LMS integrations). https://helpdesk.tryotter.com/hc/en-us/articles/26844590516755 · retrieved 2026-08-05
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
AUDIT RE-GROUND (2026-08-05): the prior premise 'Otter has no labor module' is false — a Time Card app and Staff Timecard Reporting are documented. The no stands on enumeration instead: the 'Tipping Guide for Otter POS' covers the tip lifecycle end-to-end (tip on receipt, POS tip display before payment, cash tipping, percentage presets, 24-hour post-payment entry, Stripe tip caps) and the Hourly Tip Report covers per-staff reporting; no pool, tip-out or rule-based distribution (hours, sales, points or role) appears in either or anywhere else in the corpus — tips are only ever reported as received per employee. https://helpdesk.tryotter.com/hc/en-us/articles/36524231987603 · retrieved 2026-08-05 adversarially verified
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
The Hourly Tip Report breaks tips down by hour, staff member (via PIN login) and device, filterable by date, brand, location, staff member and channel, and is positioned for payroll use. Shortfall: Otter documents no tip pooling or distribution feature at all, so there is no record of amounts contributed to or distributed from a pool - only tips received per employee - and third-party-platform tips carry no staff attribution. https://helpdesk.tryotter.com/hc/en-us/articles/39344200685971-Tip-Reporting · retrieved 2026-08-03
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
AUDIT RE-GROUND (2026-08-05): the prior premise that Otter holds no employee records is false — native timecards exist. The no stands on the enumerated payroll path: Otter's documented payroll export is the Labor Cost Report's 'hourly breakdown data to import into Homebase' (hours and wages only, and only with an active Homebase integration); tips live in the separate Hourly Tip Report, where third-party-platform tips carry no staff attribution. No export field carries a Treasury tipped-occupation code or separates cash from charged qualified tips, and W-2 production is delegated to the payroll provider. https://helpdesk.tryotter.com/hc/en-us/articles/38681141651987 · retrieved 2026-08-05 adversarially verified
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
Re-evidenced 2026-08-09; the "full integrations category list contains no payroll processor" leg is withdrawn as an enumeration over a marketing page. Otter's own labour documentation states the division of work: the Labor Cost Report "provides an aggregated view of employees' hours worked, wages, and labor costs compared to sales", and "you can use this report to view and export the aggregated hours data & aggregated wage data by employee and directly import the spreadsheet into the 3rd party payroll provider without having to manually process the spreadsheet first." The Hourly Tip Report is likewise framed as something to "use ... to help you manage payroll", i.e. an input to someone else's payroll run. Otter does ship first-party labour features (Time Card clock in/out, Labor Cost Report), so this is not a no-labour-module finding - it is specifically that hours and wages are exported for a third party to file and pay. Across the 292-article corpus there is no wage tax filing product, no wage direct deposit, no Gusto/ADP/Paychex connector, and the Billing & Subscriptions product catalogue sells no payroll SKU. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/38681141651987-Labor-Cost-Report-Homebase-Integration · retrieved 2026-08-09
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
UPGRADED 2026-08-08 off a refuted premise. Otter does hold labor hours: the Time Card app records PIN clock in/out natively and the Dashboard Staff app exports the timecard table in XLS (arts. 26645285153555, 26845973817491). And a payroll-directed export is documented: the Labor Cost Report 'provides an aggregated view of employees' hours worked, wages, and labor costs compared to sales', and 'you can use this report to view and export the aggregated hours data & aggregated wage data by employee and directly import the spreadsheet into the 3rd party payroll provider without having to manually process the spreadsheet first'. Named shortfalls, which is why this is partial and not yes: the wage half is not native - 'In order for data to populate in the Labor Cost Report, you must have an active Homebase integration connected to your Otter POS store', a paid add-on at $20/month that also requires a paid Homebase subscription and an API key installed by an Otter account manager (art. 43081257316243); no payroll provider is named anywhere in the 292-article corpus - Gusto, ADP, Paychex and QuickBooks return zero hits - and no file layout is specified beyond 'the spreadsheet', so neither the 'documented formats' nor the 'two major payroll providers' half of the claim is met; and tips are not in this export, being reported separately in the Hourly Tip Report. https://helpdesk.tryotter.com/hc/en-us/articles/38681141651987-Labor-Cost-Report-Homebase-Integration · retrieved 2026-08-08 adversarially verified
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
RE-GROUNDED 2026-08-05 (old one-line rationale rested on the disproved no-labor-module premise). Otter ships no scheduling module and no employee self-service app: the Staff analytics guide sources 'shift schedules' from supported Labor Management Systems 'like Deputy, Homebase, 7shifts, and WhenIWork', the native Time Card applet is terminal-bound clock in/out only, and the integrations directory (re-retrieved 2026-08-05) still lists exactly those four under Labor. With no native schedule or shift entity there is nothing to swap or claim. https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147 · retrieved 2026-08-05
Provides digital new-hire onboarding that collects W-4 and I-9 documentation and supports E-Verify submission.
labor-digital-onboarding-i9
RE-GROUNDED 2026-08-05: the 2026-08-02 premise (no employee record at all) is disproved - User Management holds native employee records - but new-hire intake in Otter is only the documented add-user flow: first/last name, role, PIN, optional email/phone, then an email invitation to set a password. No W-4, I-9, E-Verify or document-capture step exists anywhere in the help centre, and the integrations directory (re-retrieved 2026-08-05) still lists no payroll or HR provider among its eight categories. https://helpdesk.tryotter.com/hc/en-us/articles/44753081545619 · retrieved 2026-08-05
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
AUDIT OVERTURN (2026-08-05): the prior no ('Otter has no native labor data, time clock or sales-per-labor-hour calculation') is triply false — the Time Card app, Staff Timecard Reporting and an 'Orders per labor hour' metric are all documented. Per-employee performance reporting exists: the Analytics Staff section documents Staff Performance with clickable Individual Staff Member Performance (Orders/hour, Average Prep Time, Average Star Rating, Order Issues Rate), the immutable Voided Transactions report attributes voids per staff member, and the Hourly Tip Report breaks tips per staff member. Shortfall: no per-employee average check, item/category attachment rate, comp rate or sales-revenue figure — the documented per-staff metrics are operational, not sales. https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147 · retrieved 2026-08-05 adversarially verified
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
Re-confirmed 2026-08-02. Inventory Savings is a distributor rebate/GPO tool ("Get cash back on the food you already buy"), not a recipe or BOM engine, and the integrations directory delegates real inventory to Marketman, Restaurant365 and PDI under an explicit Inventory category. https://tryotter.com/products/inventory-savings · retrieved 2026-08-02
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
Upheld, and it no longer rests on an inference. The vendor answers the question outright in its own FAQ: "Does Otter POS support inventory management? Not yet. But we plan to offer this in the near future!" With no stock ledger there is nothing to hold a purchase/recipe/count unit triple, a conversion factor or a yield percentage, and the measurement agrees -- across 294 documents (292 help-centre articles, llms-full.txt and the public OpenAPI spec; 2.00M chars), tokenised, `recipe` 0, `yield` 0, `unit conversion` 0, `food cost` 0 (matcher proven in the same run: `otter` 293 of 294, a nonsense control 0). WHOSE ARTEFACT IT IS matters here: the Otter Dashboard DOES have an app called Inventory, and it is not a stock ledger -- "Otter Inventory Savings" is a Foodbuy GPO cash-back rebate programme keyed to distributor spend, with a rebates dashboard and a bank account for payouts. Counting its name as a hit would have manufactured the opposite verdict. Grade B: the vendor's own help documentation, re-read live 2026-09-09 through the Zendesk Help Center API (which discriminates: a fabricated article id 404s). https://helpdesk.tryotter.com/hc/en-us/articles/26644683397139-Featured-Menu-Items-for-Otter-POS · retrieved 2026-09-09
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
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. Theoretical usage cannot be computed without a recipe layer and actual usage cannot be computed without counts; neither exists. There is no variance report of any kind in the Analytics or Reports sections, whose complete article lists are sales summary, cash management, tips, taxes, payouts, financial reconciliation, merchant statement, guest directory, customer, loyalty, labor cost, voided transactions, order-manager menu, location tagging and scheduled reports. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
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
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. Sale-driven ingredient depletion is structurally impossible without a recipe layer, and there is none: MenuItem_POS carries no component list and SKU Library holds descriptive attributes only. The API's inventory quantities are read-only summaries of packaged products with no documented link to order events, and the webhook catalogue (orders, menus, storefront, delivery, reports, account pairing, ping) contains no stock-movement event. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
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
86 propagation is excellent but is a manual/menu-level action; there is no ingredient on-hand to trigger it automatically. https://tryotter.com/products/inventory-savings · retrieved 2026-08-01
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
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. The vendor's public inventory surface is small enough to enumerate and I enumerated it: three operations, none of which is a count. There is no full-count, spot-count or cycle-count workflow, no count-session object and no count history in either the helpdesk or the API; quantities are only read back, or changed by receiving a shipment. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
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
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. There is no counting application to take offline. The Otter app family documented across the corpus is Orders, Menus, Analytics, Drawers, Inventory (rebates), Loyalty, Time Card and Otter Go, and none counts stock. The only documented barcode-scanner support is for gift cards, and the article scopes it explicitly: "These scanners are only for scanning gift cards." Offline mode is documented for the handheld POS and card reader, never for stock capture. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
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
Inventory Savings links to existing distributors for discounts and rebates "without switching distributors" — a purchasing-rebate relationship, not documented EDI PO transmission or electronic invoice receipt. https://tryotter.com/products/inventory-savings · retrieved 2026-08-01
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
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. Otter's documented method of acquiring purchase data is the opposite of invoice capture: the merchant hands over food-distributor portal credentials ("Use food distributor credentials to sign in and connect for Rebates") and Otter reads qualifying spend from the distributor, producing per-distributor spend reports. No photo, PDF or email invoice ingestion appears anywhere, the corpus has zero hits for OCR or invoice scanning, and the only invoice objects in the product are Otter's own subscription invoices. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
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
Inventory Savings offers "find the same product for less" sourcing suggestions, not per-item purchase price history with contracted-price variance alerting. https://tryotter.com/products/inventory-savings · retrieved 2026-08-01
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
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. The only purchasing suggestion Otter documents is the Rebate Opportunity, and it is rebate-driven rather than par-driven: "personalized suggestions based on your past purchasing history, highlighting items that offer better pricing and higher rebate potential", actioned by downloading a product list as CSV and sending it to your distributor. There is no par level, no reorder point, no on-hand-versus-par calculation and no purchase order object; the corpus has zero hits for par level or purchase order. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
Provides a structured waste/spoilage logging workflow with reason codes that debits inventory and reports waste cost separately from usage variance.
inventory-waste-logging
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. There is no waste or spoilage workflow, no reason-code set and no waste-cost report. The closest object in the entire product is the shipment receiving field unsellableQuantity, defined as inventory "that is damaged, expired or otherwise unsellable" - a receiving-time bucket on inbound goods, with no reason codes, no operator-facing logging screen, no debit against usage and no separate cost reporting. The corpus has zero hits for spoilage and no waste-logging article. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
Supports inter-location inventory transfers as a two-sided transaction crediting the sending location and debiting the receiving location, with an in-transit or approval state.
inventory-transfers
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. No inter-location stock movement exists. All eleven occurrences of "transfer" in the 292-article corpus are account ownership transfers, bank or wire transfers of money, or transferring an in-progress order to another device. The API inventory domain has no transfer operation, and its only movement primitive - the shipment (deliveryInfo, lineItems, stateChanges SCHEDULED/ARRIVED/STOCKING/CLOSED/CANCELED) - is inbound to a single facility with no sending party, so there is no two-sided credit and debit and no in-transit state between two of the operator's own locations. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
Supports a commissary/central kitchen model where one location produces prep items and issues or sells them to other locations at a computed transfer cost.
inventory-commissary
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. No central production model exists. The corpus has zero hits for commissary, central kitchen production, prep item or transfer cost, and there is no production or assembly object anywhere in the API - only finished products, inbound shipments and menu SKUs. Otter's multi-location constructs are the organization/brand/store hierarchy and Location Tagging for reporting, neither of which carries production or issue-at-cost, and with no recipe layer there is no prep item to produce. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
Captures lot/batch numbers at receiving and links them through production to sales or transfers, enabling a backward and forward recall trace.
inventory-lot-traceability
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. No lot or batch identity is captured anywhere. Product identity in the API is id, gtin, name, slug and externalId; a shipment line item is id/slug/externalId plus manifestQuantity, receivedSellableQuantity and receivedUnsellableQuantity. There is no lot, batch or serial field at receiving - the only point at which one could enter the system - and therefore nothing to carry forward into production or sales. The corpus has zero hits for lot number, batch number or recall. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
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
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. No date is ever attached to stock. Expiry appears in Otter's inventory model exactly once, as prose inside the definition of unsellableQuantity ("damaged, expired or otherwise unsellable"), which records that expired goods exist but stores no use-by date, no received date and no shelf life. There is consequently no expiring-soon report or alert; the corpus has zero hits for shelf life and its three expiration hits are payment-card and subscription expiry. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
Supports partial-bottle liquid inventory by weight (scale integration) or by bottle fraction for bar and beverage counting.
inventory-bar-partial-bottle
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. Partial-bottle counting is not representable, let alone documented. Every quantity in Otter's inventory model is typed integer (sellableQuantity, unsellableQuantity, inboundQuantity, manifestQuantity, receivedSellableQuantity, receivedUnsellableQuantity), so a fraction of a bottle has no representation; there is no unit-of-measure or conversion concept; the hardware catalogue in Otter Plan Packages & Hardware enumerates tablets, POS terminals, kiosks, KDS, printers, card readers and accessories with no scale; and the only peripheral scanning support documented is for gift cards. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
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
Otter collects a Cost of Goods field per menu item (default price or per-location values, with a filter to find locations missing values) and then says explicitly: 'The reporting on Cost of Goods Sold isn't available just yet - coming soon! But entering this field now gives you a start on capturing your data.' With no COGS report there is no period COGS to export. Separately, the 292-article help centre contains zero occurrences of QuickBooks, Xero, Sage, NetSuite, 'general ledger' or 'GL account', and no accounts-payable or supplier-invoice capture exists - the entire Inventory section is one article, a Foodbuy GPO rebate program (art. 44752885984147). Financial exports are CSV/XLSX payout, tax and transaction tables (Merchant Statement, Payouts, Sales Summary) with no accounting-package import format and no per-category GL mapping. https://helpdesk.tryotter.com/hc/en-us/articles/37951635152659-Adding-Menu-Items · retrieved 2026-08-08
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
Directory leg withdrawn: tryotter.com/integrations is a vendor marketing page that says Otter "connects with dozens of integrations" and solicits new partners, so its Inventory category (Marketman, Restaurant365, PDI) cannot enumerate anything. Replaced with Otter's own product documentation. The one article filed under Inventory in the 292-article helpdesk corpus is "Otter Inventory Savings", and Apps > Inventory in the Otter Dashboard opens a Foodbuy GPO rebate program: connect a distributor account, browse Rebate Opportunities, read monthly spend reports, receive 1-3% cash-back. It holds no on-hand quantity, no count, no recipe and no unit cost. The public OpenAPI at developer-guides.tryotter.com/api-reference does carry an Inventory domain, but it is exactly three operations - GET /inventories/v1/summaries, GET and POST /inventories/v1/shipments - over packaged retail products (GTIN, example "Coca-Cola Classic Coke Soft Drink 12 oz. can") with integer sellableQuantity / unsellableQuantity / inboundQuantity, and the developer portal ships no Inventory guide at all. The conjunctive claim fails on its recipe-costing half regardless of how the stock half is read: no recipe or bill-of-materials layer exists anywhere in Otter's item model (SKU Library carries descriptive attributes only; MenuItem_POS has no component or cost field), so no item-level food cost can be produced natively. On the stock half, what Otter ships first-party is a purchasing-rebate program plus an API-level packaged-product quantity ledger - not a restaurant inventory and costing system. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings · retrieved 2026-08-09
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
Analytics dashboard plus the Otter Go mobile app give real-time sales visibility off-premise on iOS and Android. https://tryotter.com/products/app · retrieved 2026-08-01
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
The Otter POS End of Day Report (the sunset icon on the POS home screen) prints one document with three tabs: 'Sales: a breakdown of POS order sales, discounts, Loyalty, refunds & adjustments, tips, deposit details, and more', 'Payments: a breakdown of sales by payment method' (tender types) and 'Channel Sales'. The Otter Go article states it shows 'total orders, gross sales, discounts, loyalty, POS payments, and expected deposit reporting' (art. 46992929408915). The Close of Day Workflow (art. 39261231574803) gates the close on four tasks - close checks, collect tips, end cash drawers, clock out staff - and offers [Print report] at the end; drawer expected-vs-counted variance is reported in the Cash Management Report. Named shortfall: tax is not among the End of Day Report's documented lines - tax lives in a separate Tax Reports page in Analytics - and net sales appears on the Dashboard Sales Summary rather than the printed POS report, so the single-document reconciliation is not quite complete as worded. https://helpdesk.tryotter.com/hc/en-us/articles/27241942607635-End-of-Day-Reporting · retrieved 2026-08-08
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
Identifies best and worst performing menu items across channels and locations. Modifier-level PMIX and revenue-center filtering are not documented. https://tryotter.com/products/analytics · retrieved 2026-08-01
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
The void half is complete: the Voided Transactions report in Analytics shows 'Voids by Day, Reason, and Created by Staff Member', a Void Order Detail table with Order ID, Total Void Amount and voided date/time stamp, filters for date/brand/location, CSV export, and it is immutable ('No - You cannot make edits to the voided orders log'); the cashier 'is always prompted to select a reason for the void, which will appear in the end-of-day report and in other reporting'. It is limited to first-party Otter POS orders and requires an Otter POS subscription. Named shortfalls: discounts can be gated on manager approval ('Require Manager's Approval ... must be approved by an Otter user with the Supervisor, Brand and Location Manager, or Admin role', art. 27238748303763) but no report attributes an applied discount to the applying employee, the approving manager or a reason code - discount reporting is redemption counts, sales and ROI; price override and comp are not concepts in the documented Otter POS at all, so nothing reconciles all four categories in one audit log. https://helpdesk.tryotter.com/hc/en-us/articles/44155119549843-Voided-POS-Transactions · retrieved 2026-08-08
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
The Cash Management Report (Analytics > Loss Management) reconciles 'all cash activity for each drawer, making it easy for you to reconcile your cash at the end of every shift or business day'. Its per-drawer columns are Open Date, Drawer ID, Drawer Name, Start, Sales (including tips), Refunds, Paid In, Paid Out, 'Expected Balance: the expected amount that should be in the register ... calculated based on starting cash, cash sales, paid-ins, paid-outs, and cash refunds', 'Ending Balance: balance entered when closing the drawer' and 'Difference: the amount left over when subtracting the ending balance from the expected balance'. Drilling into a drawer lists Cash Event Transactions with Location, POS Terminal, Drawer Name, Staff Name, Transaction Type ('Cash_Sale' or 'Open', the latter being the drawer opened without a sale) and Subtotal. Filters are date, brand, location and drawer name; the table exports. Named shortfall: over/short is computed per drawer session (which is how a shift is bounded) but never per employee - Staff Name appears only on individual cash events, there is no employee-level variance figure, and no variance alerting is documented. https://helpdesk.tryotter.com/hc/en-us/articles/41030431592979-Cash-Management-Report · retrieved 2026-08-08
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
OVERTURNED from `no`. Both halves of the prior rationale -- "No native time clock or labor data source, so sales-per-labor-hour cannot be produced from Otter's own records" -- are false. Otter POS ships a native Time Card app: "It enables employees to clock in or out directly from your Otter POS terminal and integrates employee time reporting into your Otter Dashboard", with "Reporting on employee work hours in the Otter Dashboard" through a Staff app whose Time Card table publishes Staff member / Role / Clocked in / Clocked out / "Total hours : total number of hours the user was clocked in for", exportable to .xls under "Universal filters for: Date, Location, Role, and User". And a labor-against-sales report exists: "The Labor Cost Report provides an aggregated view of employees' hours worked, wages, and labor costs compared to sales." `partial`, not `yes`, on three specific shortfalls. First, that report is not fed by the POS time clock -- "In order for data to populate in the Labor Cost Report, you must have an active Homebase integration connected to your Otter POS store", so the labor-cost-versus-sales view requires a third-party labor platform. Second, its documented aggregation is "the aggregated hours data & aggregated wage data by employee" plus an hourly breakdown export; no department or job-code dimension is documented anywhere. Third, the claim's headline metric is not published: `sales per labor hour` occurs ZERO times across the corpus, and labor cost as a percentage of sales is never named as a column. Grade B: the vendor's own help documentation. https://helpdesk.tryotter.com/hc/en-us/articles/38681141651987-Labor-Cost-Report-Homebase-Integration · retrieved 2026-09-09
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
AUDIT RE-GROUND (2026-08-05): the prior premise 'Otter has no native labor data or time-clock' is false, but the no survives on enumeration: the Otter Analytics guide enumerates the per-staff metric set as a closed list — Orders/hour, Average Prep Time, Average Star Rating, Order Issues Rate — and none of the scorecard metrics this claim names (average check, items per check, category attachment rate, tips as a percentage of sales) appears per-server there or anywhere in the enumerated report suite (Sales Summary filters are channel/date/location/brand only). Per-staff tips exist only as dollar amounts in the Hourly Tip Report, never as a percentage of that server's sales. https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147 · retrieved 2026-08-05 adversarially verified
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
Sales Summary documentation: "shows daily transaction data across all channels", viewable per channel, date, location and brand, and intended so "managers or accountants" can "do daily reconciliation of sales". The Sales Breakdown pivots sales, discounts, tips, taxes, commission and refunds by dimension, with Group by channel / brand / payment method, column customization and download. The Analytics guide adds that Advanced Reports show "restaurant performance, commissions, and payouts by date and channel" and that Order Details carries fulfillment channel, delivery fees, tips and net fees per order; the Reconciliation report supplies per-platform Commission, Delivery Commission and Processing Fee. So gross and commission-netted revenue are reportable per fulfillment channel and per marketplace. Margin in the food-cost sense is not part of this report set. Advanced Analytics is $20/month/location unless included in a bundle. https://helpdesk.tryotter.com/hc/en-us/articles/41042129066259-Sales-Summary · retrieved 2026-08-06
Provides a consolidated multi-location report with side-by-side location comparison and drill-down from group total to a single location and then to an individual transaction. differentiator
reporting-multiloc-drilldown
The cited Analytics page carries no multi-location comparison language in its retrievable content — the multi-location claims live on the POS and Loyalty pages as generic "multi-location and multi-brand management". Roll-up-then-drill-down to a single store is not documented. https://tryotter.com/products/analytics · retrieved 2026-08-01 adversarially verified
Includes a self-service report builder letting a non-developer choose dimensions, measures, and filters and save the result, rather than only fixed canned reports. differentiator
reporting-custom-report-builder
Self-service shaping is documented: in Sales Summary, 'Sales Breakdown: Pivot different sales metrics (e.g., sales, discounts, tips, taxes, commission, refunds) by specific dimensions' with 'Group by: Group the data by either channel, brand, or payment method', location filters, search, download and 'Customize: Ability to reorder or hide columns', plus a Comparison Tool overlaying two periods. Business Performance adds View (Default, Channel, Location, Brands, Order Ratings), Graph type, Data Set (7-day rolling / raw trend), Granularity (hour, day) and comparison selectors (art. 12558297776147). Named shortfalls: the dimensions and measures on offer are those of a fixed report, not an arbitrary field picker; nothing documents saving a shaped view for reuse - the Scheduled Reports builder saves a report only by choosing one of five pre-built report types (Business Performance, Operational Excellence, Availability, Marketing, Ratings & Reviews) and its metric set is fixed per type; and the deeper columns require paid Advanced Reports. https://helpdesk.tryotter.com/hc/en-us/articles/41042129066259-Sales-Summary · retrieved 2026-08-08
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
'Scheduled Reports allows restaurant operators to send pre-built or custom reports to themselves and specified recipients.' Configuration: report name, 'Checkbox to include CSV file in email', brands and locations, 'Frequency: choose between daily, weekly, monthly, quarterly, or yearly', send time in 30-minute intervals, report time range, and 'Recipients: enter email addresses and choose to exclude yourself'. Reports are created from Business Manager > Settings > Reports or by clicking the settings gear on a report ('Just head to Analytics or any of the apps you have, click on the settings, and schedule a report'), can be edited or deleted, and 'All Otter customers, CloudKitchens customers, and FutureFoods customers can create their reports' with no stated limit ('You can create as many reports as you need'). Send time follows the creator's timezone. The metric set available inside a scheduled report depends on plan - Ratings & Reviews requires Advanced Analytics and AlwaysOn impact requires AlwaysOn - but the scheduling capability itself is not gated. https://helpdesk.tryotter.com/hc/en-us/articles/22964276979987-Scheduled-Reports · retrieved 2026-08-08
Offers automated recurring bulk export of transaction-level raw data to a customer-controlled destination (S3, SFTP, Snowflake, BigQuery, or equivalent), not just manual CSV download. differentiator
reporting-raw-warehouse-export
Automated recurring export is documented: Scheduled Reports emails a chosen report daily, weekly, monthly, quarterly or yearly to a recipient list with a 'Checkbox to include CSV file in email'. Transaction-level raw data exists to export - the Order Details report carries date, fulfillment channel, delivery fees, tips, net fees, payment method, order issues, ratings and prep time, and Loyalty Order Detail carries individual loyalty transactions - and Otter advertises 'Detailed reporting at transaction - or in-store - levels' with 'One-click downloads' (art. 12558297776147). Named shortfalls: the only automated destination is email, so there is no push to a customer-controlled S3 bucket, SFTP endpoint, Snowflake or BigQuery target - the 292-article corpus has zero hits for S3, SFTP, Snowflake, BigQuery or 'data warehouse'; the scheduled payload is the report's metric set rather than an arbitrary raw extract; and reaching the fullest transaction detail requires paid Advanced Reports. https://helpdesk.tryotter.com/hc/en-us/articles/22964276979987-Scheduled-Reports · retrieved 2026-08-08
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
Re-verified 2026-08-10; value and grade unchanged, note corrected. DOCS REBUILD 2026-08-10: Otter replaced its developer documentation between 2026-08-08 and 2026-08-10 - the MkDocs guide set and Redoc reference at developer-guides.tryotter.com are now a Docusaurus site at connect.tryotter.com (59 guides indexed by /docs/llms.txt, with /docs/llms-full.txt, /docs/agent-search.json and an MCP endpoint alongside), the OpenAPI document went from 75 paths to 70 and from 27 x-webhooks to 23, and every guide-tier quotation in this record was re-worded at the source. Re-measured against the live spec and the 59-guide corpus on 2026-08-10. Otter's reference is still anonymously readable with no login, NDA or sales call, now at connect.tryotter.com/docs/api-reference/reference/otter-api/ - Docusaurus over an OpenAPI 3.0.1 document titled 'Otter API' with 70 paths and 23 x-webhooks (was 'Public API', 75 and 27), indexed for machine readers at /docs/llms.txt. Coverage against the claim's four domains is otherwise as recorded: orders yes (POST /v1/orders, PUT /v1/orders/{orderId}, GET /manager/order/v1/orders feed, prep-time, cancel, confirm, fulfil); menu yes (POST /v1/menus upsert, publish, publish-targets, entity availability suspend/unsuspend, menu-sync, /v1/menus/jobs); payments yes at order and payout level (PUT /v1/orders/{orderId}/payments, POST /finance/v1/financial-transactions, POST /finance/v1/financial-invoices, and the PAYOUT_TRANSACTIONS report type); labor NO - there is no timecard, shift, employee or labor endpoint among the 70, so the fourth domain is unmet. Credentials are still not self-service, though the previous note's quotation is gone with the old guide set and is withdrawn; the current wording is 'Your Account Representative registers an application and gives you: Client ID (Application ID / Partner ID in older materials - same value), Client secret', and the merchant-facing route is still the six-step Integrated Partner Process (helpdesk art. 22695702216979). Published reference plus gated credentials and no labor data is a partial. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-10
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
Re-verified 2026-08-10; value and grade unchanged, counts and quotations corrected. DOCS REBUILD 2026-08-10: Otter replaced its developer documentation between 2026-08-08 and 2026-08-10 - the MkDocs guide set and Redoc reference at developer-guides.tryotter.com are now a Docusaurus site at connect.tryotter.com (59 guides indexed by /docs/llms.txt, with /docs/llms-full.txt, /docs/agent-search.json and an MCP endpoint alongside), the OpenAPI document went from 75 paths to 70 and from 27 x-webhooks to 23, and every guide-tier quotation in this record was re-worded at the source. Re-measured against the live spec and the 59-guide corpus on 2026-08-10. The spec declares 23 x-webhooks (was 27). Order lifecycle coverage is unchanged: orderCreate, orderConfirm, orderStatusUpdate, orderUpdate, orderReady, orderHandedOff, orderFulfilled, intentToCancelOrder, deliveryStatusUpdate, posInjectionStateUpdate, plus ping. Signature verification is still documented, though the previous note's quotation came from the retired guide and is withdrawn; the current authentication guide states the direction plainly - 'Inbound - Otter to your app | Receive webhooks | Validate X-HMAC-SHA256 on every request' - and points to a dedicated 'Keep webhooks secure' guide for the HMAC code samples. Named shortfalls, unchanged: none of the 23 webhooks is a payment lifecycle event - there is no authorization, capture, refund or payout webhook, and finance data moves the other way, the partner posting it to POST /finance/v1/financial-transactions; retry behaviour is only implied, the menu error-code enum saying the listed codes 'will be considered fatal and will fail the operation without retrying' while no retry count, interval, backoff or delivery guarantee is published in the 59-guide corpus - and the contract-status page now puts webhook 'end-to-end replay limits, global ordering, exhaustion handling, and retention outside one sender execution' explicitly under 'Behavior that is not yet a public guarantee'; and webhook endpoints are configured from an application an Otter account representative registers, not by a merchant. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-10 adversarially verified
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
Both halves of the claim fail against vendor documentation. API access is not included in any subscription at any price: keys are issued through the Integrated Partner Process (art. 22695702216979) after a partnerships-team call and a certification call, and the audience is technology partners, not merchants - a merchant cannot obtain credentials by paying more. Raw-data access is explicitly upcharged per location: the Analytics guide's FAQ answers 'How much does Advanced Analytics cost?' with 'You can get Advanced Analytics starting from $20/month per location if you have not signed up for an Otter package. Advanced Analytics is included in our Pro bundle', and Advanced Reports is the tier that adds commissions, payouts, tips, prep times and the expanded Order Details columns. Basic reporting is included - Scheduled Reports is open to 'All Otter customers' and Customer Reports is 'included for all Direct Orders customers in the US and Canada region' at no additional cost - but the claim as worded is about API and raw-data access not being fee-gated, and both are. https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147-Otter-Analytics-Your-Guide-to-Reports-and-Insights · retrieved 2026-08-08
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
Analytics starts at $0/mo, but Financials, Live Alerts ($15/mo/loc) and Disputes & Refunds are separately-priced add-ons, so reconciliation and alerting sit outside the base plan. https://tryotter.com/products/analytics · retrieved 2026-08-01
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
No 24-month transaction-detail retention window is documented anywhere; the one retention figure Otter publishes is a cap - 'The Orders History Dashboard will only show data from orders within the last 180 days' - with users pointed to the Analytics app for older data without any stated window. The claim requires a documented >=24-month window with no silent truncation; what Otter documents is the truncation. https://helpdesk.tryotter.com/hc/en-us/articles/50523313004179-Order-History-Dashboard · retrieved 2026-08-03
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
Live Alerts pushes real-time notifications on store status, offline hours and item availability issues. Operator-configured metric thresholds and historical-deviation detection are not documented. https://tryotter.com/products/live-alerts · retrieved 2026-08-01
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
'The AI Insights feature is in the Sales Performance tab of the Otter Go App and gives operators key performance analysis for one or more locations. These insights analyze 8 weeks of data, emphasizing 2 most recent weeks.' The operator taps a [Beta] badge, taps Generate AI Analysis, and receives What Went Well, What Did Not Go Well, Business Overview & Trends and Suggestions for Improving Metrics, re-generated against location and date filters; stores with limited order history may get nothing. Named shortfalls: there is no free-text input - the operator cannot ask an ad-hoc question and get a figure or chart back, only re-run a fixed analysis over a filtered slice; the insights cover sales performance only, not labor; and the one conversational surface in the product, the 'Otter AI chatbot, Otter Assistant' in the Dashboard, is a support chatbot for resolving questions and issues, which is exactly the generic help-article response the claim excludes. https://helpdesk.tryotter.com/hc/en-us/articles/46992929408915-Otter-Go-App · retrieved 2026-08-08
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
Loyalty reports top guests, loyalty-attributed sales and average spend, and Analytics references customer retention patterns. New-vs-returning counts and LTV cohorts are not documented. https://tryotter.com/products/loyalty · retrieved 2026-08-01
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
Every Otter report is retrospective. The Analytics article's comparison controls are 'Compare to the previous period, Compare to the previous year' and its granularity controls are 'Hour, Day' over a '7-day rolling, Raw trend' data set; the Otter Go app's AI Insights analyse 'the last 8 weeks of data with focus on the most recent 2 weeks'. No forward projection is exposed anywhere, and nothing feeds scheduling or par ordering. `forecast` occurs 0 times in the 287-article help centre, 0 in the developer guides and 0 in the OpenAPI spec, and `predict`, `projection`, `expected sales`, `labor forecast` and `par level` are all 0 across all four corpora. The 5 www occurrences of `forecast` are the poison and none is an Otter feature: they are a Deloitte forecast about agentic-AI pilots, a glossary entry defining a predictive model, a cited market-size report, and two sentences in a thought-leadership guide arguing that 'Statistical trend analysis based on historical sales is not AI' and that 'Demand forecast as a feature and demand forecast as a trained model are two different products'. https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147-Otter-Analytics-Your-Guide-to-Reports-and-Insights · retrieved 2026-09-10
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
Read 2026-08-04 via the help centre's public Zendesk API. Present: the Hourly Tip Report breaks down tips by hour, staff member (PIN-login dependent) and device, filterable by date, brand, location, staff member and channel, 'to help you manage payroll'; charged tips added on receipts post-payment are booked to the order ('Tipping Guide for Otter POS', art. 36524231987603); 'Tax Reports' (art. 8959034298899) exposes Tax Collected / Tax Remitted / Tax Withheld columns with CSV export. Shortfalls: no declared-cash-tip capture or declared-versus-charged comparison anywhere; no tip pooling feature exists in the help centre, so there is no pool distribution detail; tax data is per-transaction columns with no liability summary by jurisdiction; third-party platform tips carry no staff or device attribution. https://helpdesk.tryotter.com/hc/en-us/articles/39344200685971-Tip-Reporting · retrieved 2026-08-04
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
Otter's Public API exposes a three-level hierarchy as first-class objects: GET /organization/v1/organization, GET /organization/v1/organization/brands, GET /organization/v1/organization/brands/{brandId}/stores and .../stores/{storeId}. The help centre's User Management article (art. 44753081545619) gives every role an explicit Access Level of Organization, Brand, or Location - Analyst and Manager are scopable to specific brands and locations, Cashier/Cook/Shift Supervisor are Location - and Location Tagging (art. 23271075696915) lets an admin define an extra grouping dimension over locations (the guide's worked example is a tag named Regions with options northwest, central, southeast) which then filters every Analytics and Live Monitoring report. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-08
Corporate menu items expose per-field override rules so a location can change some attributes (e.g. price, availability) while corporate locks others (e.g. name, image, recipe), and locked fields are not editable at store level. differentiator
multi-location-local-override-policy
Corporate & Franchisee Permissions documents a real corporate/local split: one Brand owner (Corporate) account can view and manage menus for all stores in the brand 'regardless of ownership', and sets Franchisee menu Edit permissions from Menus > Settings > Franchisee permissions. Some fields are locked by default and cannot be unlocked - 'only Corporate users are able to create new or delete menu items' - while publishing a menu, setting menu hours, item availability, payment methods and viewing analytics are permanently enabled for franchisees; managing promotions and adding or editing menu photos are limited by default, and anything switched off requires the franchisee to 'reach out to Corporate to request a change/edit'. SHORTFALL: the rules are not per field and not per location - 'For Edit permissions listed, there is only the opinion [option] to turn all listed ON or OFF for all Franchisees. Currently, you're not able to select these permissions or locations individually to turn them ON or OFF.' A franchisee also cannot be given price-only rights: the toggle is all-or-nothing. https://helpdesk.tryotter.com/hc/en-us/articles/38552114382739-Corporate-Franchisee-Permissions · retrieved 2026-08-08
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
Menu Pricing Rules creates an increase or decrease rule 'for all or a group of menu items', configurable per channel, per location, per fulfillment option and per menu, by percent or fixed amount, with round-up, price-band exclusions, a per-location/channel/platform preview, an active/inactive toggle and conflict detection against other rules. Menu Item Pricing (art. 36253606306195) adds per-item Advanced Pricing across location x delivery partner/channel x fulfillment mode, editable in bulk by filtering, all against one item record. SHORTFALL: daypart is not a pricing dimension - time-of-day variation requires building a second menu with its own hours under Multi-Menus (art. 5183228694803) and applying a rule 'per menu', which duplicates the item into another menu rather than pricing one item by daypart; and there is no named price zone or tier object, a rule simply applies to a hand-picked set of locations. https://helpdesk.tryotter.com/hc/en-us/articles/40116707746067-Menu-Pricing-Rules · retrieved 2026-08-08
Menu, price, and promo changes can be scheduled to activate at a future date/time interpreted in each target location's own timezone, and can be rolled back after activation. differentiator
multi-location-scheduled-publish
Rollback is documented and scheduling is only partly: Menu Version History (art. 35314976325907) lists every publish with date, time and publishing user, keeps autosaved snapshots on significant changes, and restores a chosen previous version - including the menu's location assignment - which is then republished. Promotions carry a Duration with a start and optional end date ('If you want the promotion to go live immediately, select today as a start date', art. 21535784428435), so promo changes can be future-dated. SHORTFALL: menu and price changes cannot be. The Publishing a Menu flow offers exactly three choices - locations, channels and an optional note - and takes effect immediately; the only time control after that is [Cancel publish], available 30 minutes into an in-progress publish and only for all locations and channels at once. No embargo window, no future effective date for a menu publish, and no statement that any scheduled change is interpreted in each location's own timezone. https://helpdesk.tryotter.com/hc/en-us/articles/38618622139923-Publishing-a-Menu · retrieved 2026-08-08
A new location can be provisioned by cloning a documented configuration template (menu, taxes, roles, printers, modifiers, tenders) rather than being configured from scratch, and the vendor publishes the expected time-to-open. differentiator
multi-location-new-store-template
Store Management provides configuration templates for new stores: Station Profiles define device, printer and menu-item routing behaviour and 'can be applied to selected or all locations in bulk'; Station Groups 'let users define and manage a consistent configuration for one or more locations that share a similar operational setup', and 'when a new organization or store is created, Station Groups will be created by default and all locations will be assigned to the default station group'; Device Defaults & Overrides applies organization-wide tablet, terminal and printer settings 'automatically across all new devices before hardware setup' with per-location overrides, so a device inherits its configuration when paired. Menus replicate too - POS Linking for Multi Locations (art. 14643798880403) copies a base location's menu and its POS item links to every other location in one action. SHORTFALL: no single clone-a-location action exists, and taxes, user roles/permissions and tenders are not part of any documented template; the vendor publishes no expected time-to-open; and Store Management 'is currently not available to all customers'. https://helpdesk.tryotter.com/hc/en-us/articles/48829384644499-Store-Management · retrieved 2026-08-08
The permission model distinguishes a franchisor/corporate tenant from an independently-owned franchisee tenant, so corporate can see franchisee sales and enforce config while the franchisee owns its own employees, banking, and labor data. differentiator
multi-location-corp-vs-franchisee-roles
AUDIT OVERTURN (2026-08-05): the prior no ('no franchisee role... is documented anywhere in the product') is contradicted by the vendor's 'Corporate & Franchisee Permissions' doc: the permission model explicitly distinguishes a Brand owner (Corporate) tenant from Brand user (Franchisee) accounts — Corporate Admins 'view and manage menus for all stores within your brand — regardless of ownership', while a Franchisee 'separately manage[s] their business' with location-scoped billing ownership ('Corporate users only view billing & subscription information for Otter products and stores for which they are the billing owner'), payment methods and analytics. Shortfalls: corporate visibility into franchisee sales data is not explicitly documented (the doc's scope is menu governance and dashboard visibility), employee/labor-data ownership is unaddressed, and franchisee permission toggles apply brand-wide uniformly, not per location. https://helpdesk.tryotter.com/hc/en-us/articles/38552114382739 · retrieved 2026-08-05 adversarially verified
Calculates franchise royalty, ad-fund, and marketing-fee amounts automatically from POS net sales on a defined schedule, with a configurable royalty basis (gross vs net of discounts/comps/third-party). differentiator
multi-location-royalty-calculation
AUDIT RE-GROUND (2026-08-05): the prior premise 'Otter has no franchising product or franchisee-role capability' is false — Corporate & Franchisee Permissions documents a real franchisor/franchisee account model. The no survives on enumeration: that doc's franchise feature set is menu governance plus location-scoped billing and analytics, with no royalty, ad-fund or fee construct; the Otter Analytics guide (art. 12558297776147) enumerates the full report suite — sales, operations, menu, marketing, staff, ratings, advanced financial reports — with no royalty report; and 'royalty' returns zero results across the entire help centre. https://helpdesk.tryotter.com/hc/en-us/articles/38552114382739 · retrieved 2026-08-05 adversarially verified
Supports automated ACH/debit collection of calculated royalties and fees from franchisee accounts, with a franchisee-visible statement of what was charged.
multi-location-royalty-collection
AUDIT RE-GROUND (2026-08-05): prior premise false as with royalty calculation — a franchisor/franchisee account model exists. The no survives on enumeration: the documented corporate/franchisee split covers menu permissions and per-location billing ownership only; Otter's documented money movement is its own merchant SaaS subscription billing and payment payouts, with no ACH pull from franchisee accounts, no franchisee-visible royalty statement, and zero 'royalty' hits corpus-wide. https://helpdesk.tryotter.com/hc/en-us/articles/38552114382739 · retrieved 2026-08-05 adversarially verified
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
Same evidentiary gap: aggregation across locations is asserted at marketing level on the POS page, but the Analytics page I fetched does not document a consolidated cross-location reporting view. https://tryotter.com/products/analytics · retrieved 2026-08-01 adversarially verified
Item-level sales roll up across locations under a shared corporate item ID even when stores have renamed or locally priced the item. differentiator
multi-location-normalized-item-rollup
The SKU Library is exactly the shared corporate item identity this claim asks for: 'a centralized place within the Otter Dashboard to manage reusable item SKUs at the organization level. Instead of duplicating the same product across menus and brands - You can create, search, filter, and edit SKUs once, then link menu and modifier items to those SKUs.' Item-level fields 'like name, description, price, and photo pre-fill from the SKU but can be edited per menu item', and the library shows 'SKU usage across menu items, modifier items, brands, and locations' - so a locally renamed and locally priced item still resolves to one org-level SKU, with a SKU auto-created for every new or imported menu item. SHORTFALL: no report is documented as aggregating sales by SKU - the Product Mix Report (art. 33505325547539) breaks down by menu category, item and modifier and merely filters by brand and location - duplicate SKUs cannot be merged, third-party POS imports do not get SKUs, and the feature is 'NOT currently available for all Otter customers'. https://helpdesk.tryotter.com/hc/en-us/articles/53271161201555-SKU-Library · retrieved 2026-08-08
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
Otter Gift Cards (Otter POS customers only, $30/month, physical cards ordered from eCard Systems at $1.01 each) are self-branded brand-level cards: 'Customers eating at your restaurant locations will then be able to use this gift card in store on the Otter POS system to redeem as a payment method for their order.' Cashiers and Supervisors create and reload cards from POS checkout Options (max $2,000), the card is a payment method on Otter POS and on the Direct Orders website - enabled per location under Direct Orders > Locations > Location Settings > Payments - balances are checked from Options > Gift card or by barcode scan, refunds return the amount to the card balance, and there is a documented cash-out procedure. SHORTFALL: no outstanding-liability balance report exists anywhere in the 292-article help centre, and no inter-store settlement or redemption reconciliation between owners is documented; the article's only balance view is a link out to the eCard Systems site, and gift cards are unavailable to non-Otter-POS customers. https://helpdesk.tryotter.com/hc/en-us/articles/37358535943187-Otter-Gift-Cards · retrieved 2026-08-08
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
Loyalty Customer Profiles states the scope directly: 'Guest profiles and points are stored at the Brand Level', and on Otter POS the Customer Profile Search 'will populate here, with a list of all customers that have been registered at any Otter store within the organization' - 'If an eater has been registered as a customer at any Otter-using store within your organization, you'll be able to search to pull up their information.' Once saved, 'that profile can be added to any future transaction in the system to earn points and redeem rewards', the balance shows on the check at any store, points can be adjusted centrally from the Dashboard Guest Directory, and order history for the same profile is reported in the Guest Directory Report (art. 40222270130963). Separate brands keep separate loyalty pools by design, and Multi-Store Ordering does not support Loyalty - neither of which is a per-location split. https://helpdesk.tryotter.com/hc/en-us/articles/40644257640083-Loyalty-Customer-Profiles · retrieved 2026-08-08
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
Shortfall: multi-brand ordering on shared hardware is documented only for the guest-facing digital channels, not the POS terminal. Multi-Store Ordering "allows eaters to order from multiple restaurants while ordering from a food hall or multi-brand kitchens" with a single cart and a unified receipt, and its stated compatibility list is Direct Online Orders, QR Code Ordering, Otter Kiosk and Otter Mini Kiosk - the Otter POS terminal is not among them. Kiosk Brand Selection documents an admin Store Filter that picks which brands display on one kiosk for operators who "own multiple brands that share a kitchen". Per-brand separation of revenue IS documented: "Each restaurant will only receive, manage, and get reporting for their portion of the Multi-Store Order", and Sales Summary, Reconciliation and Live Alerts all filter or group by Brand. Additional third-party virtual brands cost $20/month each and standard Order Aggregation plans include one. What is not documented anywhere in the 292-article help centre: selecting a brand when ringing an order on the Otter POS terminal, per-brand receipt branding on POS tickets, or a shared cash drawer reporting separately by brand. https://helpdesk.tryotter.com/hc/en-us/articles/43082678032019-Multi-Store-Ordering · retrieved 2026-08-06
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
Financials provides transaction-level tax visibility and "ensure taxes tally per location". Multiple simultaneous rates, inclusive/exclusive rules and per-location exemptions are not documented. https://tryotter.com/products/financials · retrieved 2026-08-01
Supports locations operating in different currencies and languages within one enterprise account, with consolidated reporting converted to a reporting currency.
multi-location-multi-currency-locale
One Otter organization can hold locations trading in different currencies: the pre-publish checks raise a currency-mismatch error, and the resolution is 'If the menu you're trying to publish does actually apply to stores with different currencies, you will need to create a menu for each currency and assign it to the location accordingly. Currently, you can only have one currency per menu.' Otter contracts through local entities in the US, Canada, UK, Spain, France, Portugal, UAE and Saudi Arabia, and the Public API's order and report schemas carry a per-order ISO currencyCode. SHORTFALL: one currency per menu forces a duplicated menu per currency rather than a locale property on the location; no consolidated reporting converted to a single reporting currency is documented (reports return each order's own currencyCode with no conversion or group total), and per-location language/locale is documented only for report language on the API report request, not for the operator UI or menus. https://helpdesk.tryotter.com/hc/en-us/articles/21721287896083-Menu-Publish-Errors · retrieved 2026-08-08
Produces an immutable audit log of who changed which configuration object (price, tax, permission, discount) at which location and when, exportable or queryable by corporate. differentiator
multi-location-config-audit-log
Menu Edit History 'gives you a complete view of all historical updates made to your menus within Otter', in two views: Menu Entity view for changes to menu group, categories, items and modifiers 'across all locations in Organization', and Location-Specific view for changes to menu hours, prices, availability and taxes 'at a specific location'. Each event expands to property-level before/after values ('Price change from $9 to $10.50 or item availability from all day to dinner menu only'), records who made the change and when, filters by date range, brand, changed field, entity type and location, and has a persistent copy-link per event for use 'in support tickets, training materials, or audits'. Menus Activity Logs (art. 27321592256147) separately log publishes, hours publishes and 86-ing with user, timestamp, location and status, and flag changes made by 'Otter Team'. SHORTFALL: coverage is the menu domain only - permission changes, discount configuration and other settings are not covered - no export or API access to the log is documented, and neither article asserts immutability. https://helpdesk.tryotter.com/hc/en-us/articles/49262889664275-Menu-Edit-History · retrieved 2026-08-08
Supports SSO via SAML or OIDC against the customer's identity provider for back-office/above-store users, with SCIM or equivalent for automated deprovisioning. differentiator
multi-location-enterprise-sso
User Management (updated 2026-07-16) enumerates every role Otter has and states a Login Type for each one, and the enumeration is closed in exactly the direction this claim needs. Admin, Accountant, Analyst and Manager are 'Login Type : Username & Password'; Shift Supervisor is 'Username & Password and Pin Code'; Cashier is 'Pin Code'; Cook and Cook (Restricted) are 'Email & Password'; Courier and Dispatcher are 'Username & Password'. No role offers a federated login, and custom roles are built by editing an existing role's permissions, not its login type. `SAML`, `OIDC` and `SCIM` each occur 0 times across the help centre, guides, spec and 414 www pages; the phrase `single sign on` occurs 3 times and all 3 are the Uber Eats poison below. The poison is instructive: an untokenised search for SSO returns 40 help-centre lines, which collapses to 3 when word-bounded - the rest were `associated` - and all 3 survivors are consumer social login on the merchant's Uber Eats account, which the Uber Eats Integration Guide tells operators to REMOVE ('try removing the SSO (single sign on or social sign on) for your Uber Eats account'). Deprovisioning is manual per user in the Otter Dashboard. https://helpdesk.tryotter.com/hc/en-us/articles/44753081545619-User-Management · retrieved 2026-09-10
Publishes a documented multi-location API (or data warehouse/BI export) that returns transaction-level data across all locations in one authenticated call, without per-location credentials. differentiator
multi-location-enterprise-api
RE-SCORED 2026-08-10, yes -> partial. DOCS REBUILD 2026-08-10: Otter replaced its developer documentation between 2026-08-08 and 2026-08-10 - the MkDocs guide set and Redoc reference at developer-guides.tryotter.com are now a Docusaurus site at connect.tryotter.com (59 guides indexed by /docs/llms.txt, with /docs/llms-full.txt, /docs/agent-search.json and an MCP endpoint alongside), the OpenAPI document went from 75 paths to 70 and from 27 x-webhooks to 23, and every guide-tier quotation in this record was re-worded at the source. Re-measured against the live spec and the 59-guide corpus on 2026-08-10. The endpoint this cell rested on is no longer published as a path: POST /v1/reports/generate and GET /v1/reports/{jobId} are both absent from the 70-path spec and the quoted summary 'Request a business report for multiple stores' appears nowhere in the current corpus. THAT IS A DEPRECATION, NOT A WITHDRAWAL, AND THE VENDOR SAYS SO IN WRITING: connect.tryotter.com/docs/guides-contract-status/ lists Reports among its PRODUCTION CONTRACTS as 'Deprecated. Date boundaries are inclusive UTC calendar dates. Downloads are comma-delimited UTF-8 CSV. Each generate request creates a new job, and polling by jobId is the reconciliation path when a best-effort webhook is missed. Otter returns EXPIRED two days after workflow completion. Contact your Otter representative for migration options.' The OAuth scope 'reports.generate_report: Request reports for one or more stores' is still declared in the spec's security scheme, and GenerateReportMultiRequest survives as a component with reportType (ORDER_STORES, ORDER_ITEMS, PAYOUT_TRANSACTIONS, RATINGS_AND_REVIEWS), a start/end date range and externalStoreIds - 'List of external store IDs to filter the orders with. At least one value is required. Max is 5000'. So the capability exists and is contracted; what no longer exists is the DOCUMENTATION the claim asks for - no method, path or URL is published, so a developer cannot construct the call from anything Otter publishes. What remains fully documented is estate ENUMERATION, not estate-wide transaction extraction: GET /organization/v1/organization/brands/{brandId}/stores ('Get the list of stores of a given brand'), /brands and /organization, all reached with one OAuth2 application client credential rather than per-location credentials, and the guide set states plainly that most other calls are store-scoped through X-Store-Id. Partial: no per-location credentials and a real multi-store report contract, against a documented surface that no longer tells you how to call it. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-10
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
RE-GROUNDED 2026-08-08: the prior rationale, 'No labor module exists to hold or enforce policy', is false and withdrawn - Otter POS ships a native Time Card app. The no now rests on that module's own enumeration of what it does at the terminal. The Time Card article lists its features as the app on the Otter home screen, clock in/out from the POS terminal and reporting in the Dashboard, documents the single enforcement rule it has - 'If an employee has not clocked in when they attempt to use the terminal, they will be prompted to clock in first before they can proceed with using the terminal' - and lists the report fields as Staff member, Role, Clocked in, Clocked out and Total hours. No overtime rule, break rule or predictive-scheduling rule is configurable at any level, per-location or otherwise; the only threshold in the product is cosmetic, total hours rendering red below 2 or above 12. Policy is documented as living outside Otter: 'All timecard data is automatically sent to Homebase, where you can view and edit timesheets, as well as log breaks' (art. 43081257316243), and shift schedules are imported from Deputy, Homebase, 7shifts or WhenIWork (art. 12558297776147). 'Overtime' returns no article in the 292-article English corpus. https://helpdesk.tryotter.com/hc/en-us/articles/26645285153555-Time-Card-App-Clocking-In-Out · retrieved 2026-08-08 adversarially verified
Integrations, API & extensibility
Public, self-serve API reference documentation is readable without a signed partner agreement, NDA, or sales call.
extensibility-public-api-docs
Re-verified 2026-08-10; value and grade unchanged, note corrected. DOCS REBUILD 2026-08-10: Otter replaced its developer documentation between 2026-08-08 and 2026-08-10 - the MkDocs guide set and Redoc reference at developer-guides.tryotter.com are now a Docusaurus site at connect.tryotter.com (59 guides indexed by /docs/llms.txt, with /docs/llms-full.txt, /docs/agent-search.json and an MCP endpoint alongside), the OpenAPI document went from 75 paths to 70 and from 27 x-webhooks to 23, and every guide-tier quotation in this record was re-worded at the source. Re-measured against the live spec and the 59-guide corpus on 2026-08-10. The previous note's route into the docs still holds in shape and no longer in detail: developer.tryotter.com is a Vite SPA whose bundle computes doc targets from the hostname (baseUrl(z){return window.location.origin.replace('developer',z)}), and developer-guides.tryotter.com now answers 308 on every path onto connect.tryotter.com/docs/. That destination returns 200 to an anonymous request with no login, NDA or sales call, and is materially better documentation than what it replaced: 59 guides (authentication, rate limits, webhook security, contract status, and integration flows for orders, menus, delivery, finance, reviews, storefront, organization, store and direct order, plus three end-to-end scenario roadmaps for POS, OFO and 3PL applications), a Docusaurus API reference over an OpenAPI 3.0.1 document titled 'Otter API' with 70 paths, 23 webhooks, an OAuth2 security scheme with named scopes and full request/response schemas, and a machine-reader tier the old site had none of - /docs/llms.txt, /docs/llms-full.txt, /docs/agent-index.json, /docs/agent-search.json, per-guide Markdown at /docs/agent-guides/<slug>.md and an MCP endpoint at /docs/mcp. The spec is unambiguously Otter's. Registering an application still needs an account representative; reading the reference does not. https://developer-guides.tryotter.com/docs/ · retrieved 2026-08-10
API access is included in the base subscription at no additional per-location fee, surcharge, or upgraded plan requirement. differentiator
extensibility-api-access-cost
Otter's API is a partner programme, not a subscription entitlement, so it is not included in any base plan at any price. Registration is gated on an Otter employee: the Quickstart states 'External partners need a registered **application** before calling the Otter API. Registration is manual.' (the asterisks are the source's own markdown emphasis) and step one is 'Contact your Account Representative and ask them to register your application.' Store pairing and webhook registration run through the same person, and capability is granted centrally - the OpenAPI spec's security scheme says 'Scopes must be configured by our internal team to be enabled for an app.' The help centre frames the audience the same way, telling operators only that 'With our open API, we enable effortless connections between our clients and yours' (art. 22694653065107). No published bundle lists API access: the Advanced Bundle's contents are POS Dual Screen Terminal Bundle, Order Manager / Delivery App Aggregation, Online Ordering, QR Code Ordering, Website Builder and Inventory. No fee for API access is published either way - `revenue share`, `partner fee` and `developer account` are 0 across all four corpora - but the approval gate alone falsifies the claim's requirement that access be included in the base subscription. https://connect.tryotter.com/docs/guides-quickstart/ · retrieved 2026-09-10
A free sandbox or test environment with seeded data is available to developers without owning a paid production account. differentiator
extensibility-free-sandbox
A staging environment exists and is not tied to a paid production account: 'Step 2. Get your API key and staging environment - After your initial contact with our partnerships team, our technical team will provide you access to our developer portal where you will have access to your API key and staging environment', and developer-guides.tryotter.com/docs/onboard-application/ confirms an Application ID and Client Secret are issued 'for each environment (production and staging)'. The API overview repeats 'For testing purposes, we offer a staging environment', and GET /v1/ping plus the ping webhook exist to 'validate the integration without side effects'. SHORTFALL: it is not self-serve or free-to-try - access is gated behind a partner sign-up form, an exploratory call with the partnerships team, and for production a certification call against an event-log checklist - and no seeded test data or sample store is documented anywhere in the guides or the spec. https://helpdesk.tryotter.com/hc/en-us/articles/22695702216979-Integrated-Partner-Process · retrieved 2026-08-08
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
CORRECTION, the previous basis is withdrawn: 'No OAuth 2.0 grant flow, operator-facing consent screen, scoping or per-app revocation appears anywhere' was drawn from developer.tryotter.com, which serves an empty Vite shell on every path. The real reference at developer-guides.tryotter.com documents exactly this model. Security scheme OAuth2.0: 'The Authorization API is based on the OAuth2.0 protocol, supporting the (Client Credentials) and the (Authorization Code) flows. Resources expect a valid token sent as a Bearer token in the HTTP Authorization header.' The authorize call is GET /v1/auth/oauth2/authorize with client_id, redirect_uri, response_type=code, scope and state, and 'If the user approves the application, we will redirect to configured URI passing the authorization code in the query parameter code'; tokens come from POST /v1/auth/token and are 'valid for a pre-determined time or until it is manually revoked'. Scopes are per-endpoint and printed on each operation in the spec - orders.create, orders.update, menus.upsert, manager.orders, manager.storefront, organization.read, reports.generate_report, reviews.reply, store.read among ~75 endpoints. Operator grant and per-application revocation are documented in the Organization onboarding flow: 'The user responsible for the store must allow your application to act on behalf of them, therefore, the onboarding flow requires an access token generated with the OAuth Authorization Code Flow', with POST creating and DELETE removing the connection at /organization/v1/organization/brands/{brandId}/stores/{storeId}/connection - one application against one store, revocable individually. Two administrative gates worth recording that do not defeat the claim: 'Scopes must be configured by our internal team to be enabled for an app' before they can be switched on in the Developer Portal, and the Authorization Code flow itself 'must be enabled in the Application Settings Page'; and the merchant-facing help centre still describes onboarding as an API key issued after a partnerships screen (art. 22695702216979), which is the Client Credentials half of the same scheme rather than a separate static-key model. RE-VERIFIED 2026-08-10 after the docs rebuild: /v1/auth/oauth2/authorize and /v1/auth/token are both still published paths, and the scope-enablement quotations were re-matched against the live spec and stand. Value and grade unchanged. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-10
The platform pushes real-time webhooks for order lifecycle events (created, modified, paid, voided, refunded) rather than requiring polling.
extensibility-webhooks-push
Re-verified 2026-08-10; value and grade unchanged, counts corrected. DOCS REBUILD 2026-08-10: Otter replaced its developer documentation between 2026-08-08 and 2026-08-10 - the MkDocs guide set and Redoc reference at developer-guides.tryotter.com are now a Docusaurus site at connect.tryotter.com (59 guides indexed by /docs/llms.txt, with /docs/llms-full.txt, /docs/agent-search.json and an MCP endpoint alongside), the OpenAPI document went from 75 paths to 70 and from 27 x-webhooks to 23, and every guide-tier quotation in this record was re-worded at the source. Re-measured against the live spec and the 59-guide corpus on 2026-08-10. The spec declares 23 webhooks under x-webhooks (was 27), delivered as HTTP POST to the partner's URL with an eventId/eventTime/eventType/metadata envelope - push, not polling. THE ORDER LIFECYCLE SET IS UNTOUCHED by the rebuild: orderCreate ('Notifies a merchant-side integration (POS/BI) that a new order has been created for the store'), orderUpdate, orderConfirm, orderReady, orderHandedOff, orderFulfilled, orderStatusUpdate, intentToCancelOrder and posInjectionStateUpdate all survive, as do the menus, storefront and delivery webhooks. The four that were dropped are reportGenerated, fetchCredentials, removeStore and upsertStore, so the previous note's 'reports and store-onboarding webhooks exist alongside' is withdrawn. Note there are still no dedicated paid/void/refund event types - payment and total changes arrive on orderUpdate, and cancellation arrives via intentToCancelOrder and the status history. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-10
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
Signing is fully documented: 'Every webhook is signed using HMAC-SHA256 that is present in the header X-HMAC-SHA256', each webhook endpoint has its own secret and a selectable Authentication Type (HMAC-SHA256, legacy HMAC-SHA1, Basic Auth, Bearer Token or None), and the guide gives hash computation and validation samples in Python, Java, JavaScript, C# and PHP. Retry exists in the contract - the RequestAction schema carries retryAttempt ('The current retry attempt', example 2) and the spec designates a set of status codes (INVALID_ARGUMENT, FAILED_PRECONDITION, NOT_FOUND, PERMISSION_DENIED, ALREADY_EXISTS, UNIMPLEMENTED, DATA_LOSS, UNAUTHENTICATED) that 'will be considered fatal and will fail the operation without retrying', implying the rest are retried. SHORTFALL: no retry schedule, backoff interval or maximum attempt count is published, and there is no replay, redelivery or queryable event log for missed deliveries - the words backoff, replay and redeliver appear nowhere in the ~40 guide pages or the 75-endpoint spec. QUOTATION CORRECTED 2026-08-10: Otter rebuilt its developer docs between 2026-08-08 and 2026-08-10 (MkDocs at developer-guides.tryotter.com -> Docusaurus at connect.tryotter.com, 59 guides, 70 spec paths, 23 x-webhooks) and the sentence quoted here - 'Every webhook is signed using HMAC-SHA256 that is present in the header X-HMAC-SHA256' - no longer appears at the source; it is withdrawn. The fact it evidenced survives in the rebuilt authentication guide, which states the requirement as a table row: 'Inbound - Otter to your app | Receive webhooks | Validate X-HMAC-SHA256 on every request', with a dedicated 'Keep webhooks secure' guide for the code samples. The retry-attempt header and the fatal-error-code enum quoted above were re-verified in the live spec and stand. Value and grade unchanged. https://developer-guides.tryotter.com/docs/guides-webhook-authentication/ · retrieved 2026-08-10
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
POST /v1/orders (documented rate limit 32 per minute) 'Pushes a new order into Otter for the store identified by the X-Store-Id header. Used by ordering marketplaces and other order sources when a customer places an order', taking line items, fulfillment information, customer payments and one financial breakdown (orderTotal V1 or orderTotalV2) and returning Otter's id, friendlyId and storeId 'you can use to correlate and update the order later'. The injected order is first-class: it can be amended with PUT /v1/orders/{orderId}, .../payments and .../delivery; its items carry stationId and internalCategoryId for kitchen routing; it drives the merchant-side orderCreate/orderConfirm/orderReady/orderFulfilled webhooks so a POS or KDS integration reacts to it; posInjectionStateUpdate reports whether it was successfully injected into the store's POS; and it appears in the ORDER_STORES and ORDER_ITEMS reports with its channel, totals and payout fields. RE-VERIFIED 2026-08-10 after the docs rebuild: the POST /v1/orders description quoted here - 'Pushes a new order into Otter for the store identified by the X-Store-Id header. Used by ordering marketplaces and other order sources when a customer places an order.' - was re-matched verbatim against the live 70-path spec and stands. Value and grade unchanged. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-10
Every core object the API can read (orders, menu, customers, employees, inventory) can also be written or updated via the same API. differentiator
extensibility-data-symmetry
Re-verified 2026-08-10; value and grade unchanged, note corrected. DOCS REBUILD 2026-08-10: Otter replaced its developer documentation between 2026-08-08 and 2026-08-10 - the MkDocs guide set and Redoc reference at developer-guides.tryotter.com are now a Docusaurus site at connect.tryotter.com (59 guides indexed by /docs/llms.txt, with /docs/llms-full.txt, /docs/agent-search.json and an MCP endpoint alongside), the OpenAPI document went from 75 paths to 70 and from 27 x-webhooks to 23, and every guide-tier quotation in this record was re-worded at the source. Re-measured against the live spec and the 59-guide corpus on 2026-08-10. Still symmetric for the main objects: orders (POST /v1/orders, PUT /v1/orders/{orderId} and .../payments, .../delivery, read via GET /manager/order/v1/orders and .../sources/{source}/orders/{orderId}), menus (GET and POST upsert /v1/menus, with a new /v1/menus/jobs added in the rebuild), loyalty guests (GET and POST /manager/loyalty/v1/{source}/user plus /user/search) and inventory shipments (GET and POST /inventories/v1/shipments). CORRECTION: the previous note cited stores as a symmetric object on POST /v1/stores and PUT /v1/stores/status; BOTH PATHS WERE REMOVED in the rebuild, so store creation and status are now write-surfaces with no published endpoint and the asymmetry is wider than recorded, not narrower. SHORTFALL, unchanged otherwise: the organization tree is read-only (GET /organization/v1/organization, /brands, /brands/{brandId}/stores, with only the store connection object writable), GET /inventories/v1/summaries has no count or adjustment write, reviews are reply-only (POST /v1/reviews/reply, no review read), and reports are generate-and-fetch on a contract the vendor now marks Deprecated. Employees and staff remain absent from the spec entirely - no employee, timecard or labor resource exists among the 70 endpoints - so payroll-relevant data is neither readable nor writable. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-10
API rate limits are published as specific numeric quotas with documented throttling behavior and headers.
extensibility-published-rate-limits
Re-verified 2026-08-10; value and grade unchanged, quotations replaced. DOCS REBUILD 2026-08-10: Otter replaced its developer documentation between 2026-08-08 and 2026-08-10 - the MkDocs guide set and Redoc reference at developer-guides.tryotter.com are now a Docusaurus site at connect.tryotter.com (59 guides indexed by /docs/llms.txt, with /docs/llms-full.txt, /docs/agent-search.json and an MCP endpoint alongside), the OpenAPI document went from 75 paths to 70 and from 27 x-webhooks to 23, and every guide-tier quotation in this record was re-worded at the source. Re-measured against the live spec and the 59-guide corpus on 2026-08-10. IP quotas are still published numerically and unchanged in substance, now as a table: 'Authenticated | 20 requests per second per IP (all endpoints combined)' and 'Unauthenticated | 3 requests per minute per IP'. Throttling behaviour is still stated: 'The API responds with HTTP 429 until usage drops below the threshold. Back off and retry with jitter. Do not tight-loop on 429.' EVIDENCE LOST, and it is the specific half: the per-endpoint numeric quotas the previous note quoted (POST /v1/orders 'RATE LIMIT: 32 per minute', POST /v1/menus 2 per minute, GET /v1/menus 8 per minute, GET /inventories/v1/summaries 32 per minute, GET /v1/reports/{jobId} 2 per minute) no longer exist - the string 'RATE LIMIT' occurs zero times in the 70-path spec, and the guide now says only that 'Authenticated endpoints are rate limited individually at the store level for your application... Exact quotas depend on the endpoint', pointing readers to 'usage quotas in the Rate limiting section of the API reference' via a link that resolves back to /docs/guides-rate-limiting - the page itself. SHORTFALL, unchanged: no rate-limit headers are documented; the spec defines no X-RateLimit-* or Retry-After response header on any operation, so a client cannot read remaining quota or how long to wait. Partial holds - one published numeric tier at the IP level, a circular pointer at the endpoint level. https://developer-guides.tryotter.com/docs/guides-rate-limiting/ · retrieved 2026-08-10
The vendor is a named DoorDash Preferred Integration Partner (DPIP) under the 2026 program requirements. differentiator
extensibility-doordash-preferred
DoorDash publishes its own complete provider registry at https://merchants.doordash.com/api/partner-integrations — 64 providers, each carrying a `qualityStatus` of PREFERRED (12), CERTIFIED (47) or AT_RISK_OF_SUSPENSION (5), plus a features-completed count against the eight high-quality features the program requires. It is served anonymously and merchants.doordash.com/robots.txt permits it (Allow: / with only /cdn-cgi/ and /monitoring barred). This is the instrument the program page points to when it says the roster is tracked in real time, and it supersedes the 2026 announcement post most of this corpus cited — that post introduces its ten names with the word `include`, which makes it a floor, not a ceiling. In that registry this vendor is the entry `otter_production`, rendered as 'Otter', with qualityStatus PREFERRED and 8 of the 8 high-quality features built. GRADE HARMONISED TO B, 2026-09-11: this URL was first written at grade A. The adversarial pass ruled E on the principle that the rubric grades by the publisher's relationship to the SCORED vendor, and DoorDash is not that vendor. B is the settlement, for two reasons that are not preference: 39 rows already graded a DoorDash-published document B on this claim before today, and one URL on one claim cannot carry two grades; and E is unworkable, because nine of the 47 rows are `yes` on a differentiator-weight claim, which the grade floor refuses below B. B reads as the product documentation of the programme's own publisher, which is what this registry is. The dissent is recorded in verification.jsonl. https://merchants.doordash.com/api/partner-integrations · retrieved 2026-09-11
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
Re-evidenced 2026-08-09; citation moved off the marketing directory onto product documentation. Otter is itself the certified integrator and the help centre documents each connection first-party: separate Integration Guides for DoorDash (art. 4403016409619), Uber Eats (art. 28883991347731) and Grubhub (art. 4403016352787), plus Skip the Dishes, ChowNow and Order with Google, and an enterprise article "Authorize Otter on Delivery Platforms" whose stated scope is granting Otter access "to each store in the delivery platform merchant portals ... across DoorDash, Uber Eats, and Grubhub" so it can monitor business performance and submit disputes on the operator's behalf. Integrations Introduction adds that "most Delivery Partner integrations can be easily self-onboarded." No middleware sits beneath Otter on these three. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/53466996694419-Authorize-Otter-on-Delivery-Platforms · retrieved 2026-08-09
The POS is a supported endpoint for at least two major aggregation middleware platforms (Deliverect, Chowly, Otter, Checkmate, ItsaCheckmate).
extensibility-middleware-compatibility
Otter POS is not a documented endpoint of two aggregation middleware platforms. Measured at the middleware vendors' own publishers, not Otter's. DELIVERECT: its 1,000-article English help corpus contains `Otter` zero times, against Lightspeed 269, Revel 144, Square 70, Epos Now 35, Clover 28 and Toast 26 as controls, and its POS Systems integration page names no Otter. CHOWLY: its sitemap enumerates exactly six per-POS pages - chowly-for-toast, -square, -spoton, -clover, -revel, -lightspeed - and Otter is not among them. Otter's own Order Manager, which the claim's parenthetical names as a qualifying platform, does inject into Otter POS, but that is the same vendor integrating with itself and is one platform in any case. RESIDUAL GAP, stated rather than hidden: Checkmate / ItsaCheckmate's POS partner list is behind a client-rendered control (the rendered text reads 'Point of Sale Available for brands with 10+ locations See the full partner list'), whose only href is /partner-with-us, so that one publisher is unmeasured and a single entry there would change the count. Otter's own corpus cannot settle this either way: its 33 mentions of Chowly, Deliverect and ItsaCheckmate are all one boilerplate paragraph telling a switching operator to 'Reach out to the Prior POS integration Provider to remove integrations from all delivery partners.' https://www.deliverect.com/en/integrations/pos-systems · retrieved 2026-09-10
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
Re-evidenced 2026-08-09; the marketing-directory enumeration is withdrawn. Otter's own help-centre Integrations Introduction enumerates the integration types the product supports - "Point of Sale (POS), Delivery Partners, Direct to Customer, Couriers, Staff Management, Virtual Brands" - and accounting or GL is not among them. The positive evidence for the CSV-only shape is Otter's reporting documentation itself: "Export report for accounting purposes", "Export the report for your accounting system as needed" (twice) and "Export a CSV of the payouts to your accounting software." The API's finance domain is a data pull - /finance/v1/financial-transactions and /finance/v1/financial-invoices - not a mapped journal-entry connector, and there is no chart-of-accounts or GL-mapping object anywhere in the published spec. The 292-article corpus returns zero hits for QuickBooks, Xero, general ledger and journal entry. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/12558333053587-Integrations-Introduction · retrieved 2026-08-09
Labor hours export natively to at least two named payroll providers (e.g. Gusto, ADP, Paychex, Paylocity) without manual re-keying.
extensibility-payroll-export
CORRECTION: the previous note's 'Otter holds no labor hours to export' was false and is withdrawn. Otter POS ships a Time Card app - 'It enables employees to clock in or out directly from your Otter POS terminal and integrates employee time reporting into your Otter Dashboard', with admins able to correct clock-in history - and a Labor Cost Report giving 'an aggregated view of employees' hours worked, wages, and labor costs compared to sales'. Those hours do leave the system natively, for one named partner: 'The Homebase x Otter integration lets your team clock in and out directly from Otter's Timecard applet on your tablet. All timecard data is automatically sent to Homebase, where you can view and edit timesheets, as well as log breaks' (Homebase Integration Guide, art. 43081257316243). Shortfalls that keep this off yes: (1) one destination, not the two the claim requires, and Homebase is a workforce-management platform rather than one of the payroll bureaus named in the claim - no Gusto, ADP, Paychex or Paylocity integration is documented anywhere; (2) it is a paid add-on, 'The Homebase X Otter integration is $20 per month', requires an 'Active Homebase subscription' on a paid plan plus a Homebase API key, and is finished 'on your behalf' by an Otter Account Manager rather than self-serve; (3) the documented route to an actual payroll run is a file hand-off, not a connector - the Labor Cost Report lets an Otter POS customer with the Homebase integration 'view and export the aggregated hours data & aggregated wage data by employee and directly import the spreadsheet into the 3rd party payroll provider' (art. 38681141651987). tryotter.com/integrations lists a Labor category of 7shifts, Homebase, WhenIWork and Deputy, but only Homebase's timecard sync is documented in the 292-article English help centre. https://helpdesk.tryotter.com/hc/en-us/articles/43081257316243-Homebase-Integration-Guide · retrieved 2026-08-08
Raw transaction-level data can be exported on a schedule to a customer-controlled destination (S3/SFTP/warehouse/Snowflake share), not only viewed in the vendor's reporting UI. differentiator
extensibility-bi-data-warehouse
Re-verified 2026-08-10; value and grade unchanged, note corrected. DOCS REBUILD 2026-08-10: Otter replaced its developer documentation between 2026-08-08 and 2026-08-10 - the MkDocs guide set and Redoc reference at developer-guides.tryotter.com are now a Docusaurus site at connect.tryotter.com (59 guides indexed by /docs/llms.txt, with /docs/llms-full.txt, /docs/agent-search.json and an MCP endpoint alongside), the OpenAPI document went from 75 paths to 70 and from 27 x-webhooks to 23, and every guide-tier quotation in this record was re-worded at the source. Re-measured against the live spec and the 59-guide corpus on 2026-08-10. The reports endpoints POST /v1/reports/generate and GET /v1/reports/{jobId} are no longer published as paths, and the reportGenerated webhook is one of four dropped from x-webhooks - but this is a DEPRECATION the vendor documents, not a withdrawal. connect.tryotter.com/docs/guides-contract-status/ carries Reports among its production contracts: 'Deprecated. Date boundaries are inclusive UTC calendar dates. Downloads are comma-delimited UTF-8 CSV. Each generate request creates a new job, and polling by jobId is the reconciliation path when a best-effort webhook is missed. Otter returns EXPIRED two days after workflow completion. Contact your Otter representative for migration options.' The scope 'reports.generate_report: Request reports for one or more stores' is still declared, and GenerateReportMultiRequest still offers ORDER_STORES, ORDER_ITEMS, PAYOUT_TRANSACTIONS and RATINGS_AND_REVIEWS over up to 5,000 external store IDs, with the generated-report event schema retaining 'Job id as returned by /v1/reports call' and 'Public URL to download generated report'. The per-column Order Report breakdown the previous note quoted (estimatedCommission, estimatedNetPayout, payoutId, isReconciled and the rest) is no longer published anywhere in the corpus and those quotations are withdrawn. In-product, Scheduled Reports (helpdesk art. 22964276979987, re-fetched live 2026-08-10 through the Zendesk Help Center API against a fabricated-id control) still emails a report daily, weekly, monthly, quarterly or yearly to chosen recipients across selected brands and locations with a 'Checkbox to include CSV file in email'. SHORTFALL, unchanged and now deeper: nothing is delivered to a customer-controlled destination - no S3, SFTP, Snowflake share, BigQuery or warehouse connector appears in the 59-guide corpus or the 70-path spec. The export is a CSV the partner application downloads within two days on a deprecated contract, and the scheduled email carries the report's summary metrics rather than a raw transaction dump. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-10
The vendor operates a public integrations marketplace listing named third-party apps that operators can browse and self-install.
extensibility-app-marketplace
Re-evidenced and upgraded 2026-08-09. The marketing directory remains the public browse surface, but the claim's self-install half is now documented first-party. Integrations Introduction: "You can browse Integrations compatible with Otter from the Otter Website [and] the Otter Dashboard"; in the dashboard, "Settings > Integrations tab to browse or connect integrations. Scroll through the list of supported integrations, select the integration type, or use the search to find a specific integration"; "The integrations listed on the Otter Dashboard are integrations you can connect yourself"; and the connect procedure is given step by step - "Go to Settings > Integrations > Explore, Find the integration you'd like to add, Click [Connect], Follow the prompts to connect integration and Otter accounts." Named third-party apps are listed per type (Square, Clover, Toast; DoorDash, Grubhub, Uber Eats; Flipdish, Delivery.com, Wix; DoorDash Drive, Relay, Shipday; Homebase, Deputy; Future Foods, SideDoor). Residual caveat, short of a shortfall: the vendor hedges that only "most" dashboard-listed integrations connect in place and anything not listed requires contacting Otter Support, and there is no third-party developer submission programme - but the claim asks for browse and self-install, and both are documented. Corpus-scope note: this is the 2026-08-08 helpdesk dump (292 articles) plus the live OpenAPI, not everything Otter publishes. https://helpdesk.tryotter.com/hc/en-us/articles/12558333053587-Integrations-Introduction · retrieved 2026-08-09
Operators can define custom fields or run vendor-hosted custom logic/scripts against POS objects without a vendor engineering engagement.
extensibility-custom-fields-scripting
Operators can define their own fields on one object without vendor involvement: Location Tagging gives an admin 'the ability to create custom tags for any of your locations' from Settings > Location Tags - 'A tag name: This is the filter group by which you want to categorize your locations by; eg. Regions' with operator-defined 'Options: These are the dimensions or how you want to filter; eg. northwest, central, southeast' - applied to one or many locations from Settings > Locations, and then usable 'in any of your reports in Analytics or Live Monitoring'. Internal Menu Names (art. 40229821311379) similarly let an operator set a private searchable alias on a menu, category, item or modifier group. SHORTFALL: that is the whole surface. No custom fields on orders, guest profiles or transactions are documented; the SKU Library's extra attributes are a fixed vendor-defined set (product tag, barcode, dietary, nutrition, packaging, sourcing); and no vendor-hosted scripting, rules engine or automation exists in the help centre or in the Public API, whose only free-form structure is additionalData on POS injection events, which the integrating partner supplies. https://helpdesk.tryotter.com/hc/en-us/articles/23271075696915-Location-Tagging · retrieved 2026-08-08
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
The published Public API is an aggregation plane, not a transaction engine exposed to third-party UIs. Its 75 endpoints contain no cart, item-pricing, tax-calculation, discount-evaluation, payment-authorization or checkout operation; POST /v1/orders instead requires the caller to submit the finished transaction - line items, fulfillment, 'customer payments, and exactly one financial breakdown - orderTotal (V1) or orderTotalV2 (V2)' - i.e. the pricing, tax and payment work is done in the calling system before Otter sees the order, and PUT /v1/orders/{orderId}/payments only merges an updated breakdown the caller computes. Where Otter does expose an engine behind someone else's UI it says so explicitly and narrowly: the manager loyalty endpoints (/manager/loyalty/v1/{source}/rewards/evaluate, /simulate, /redeem-and-accumulate, /refund) let a third-party POS drive Otter Loyalty. No equivalent exists for the POS check itself, and neither the ~40 integration guides nor the help centre documents a white-label, embedded-checkout or headless POS mode. RE-VERIFIED 2026-08-10 after the docs rebuild: the POST /v1/orders description still requires line items, fulfillment information, customer payments and at least one financial breakdown (orderTotal V1 or orderTotalV2), and no guest-facing or embeddable surface appears in the 59-guide corpus or the 70-path spec. Value and grade unchanged. https://connect.tryotter.com/docs/api-reference/reference/otter-api/ · retrieved 2026-08-10
The vendor publishes an API changelog and a stated deprecation/notice policy for breaking changes.
extensibility-api-versioning-deprecation
RE-SCORED 2026-08-10, partial -> no, and the new evidence is the vendor's own disclaimer rather than an absence. DOCS REBUILD 2026-08-10: Otter replaced its developer documentation between 2026-08-08 and 2026-08-10 - the MkDocs guide set and Redoc reference at developer-guides.tryotter.com are now a Docusaurus site at connect.tryotter.com (59 guides indexed by /docs/llms.txt, with /docs/llms-full.txt, /docs/agent-search.json and an MCP endpoint alongside), the OpenAPI document went from 75 paths to 70 and from 27 x-webhooks to 23, and every guide-tier quotation in this record was re-worded at the source. Re-measured against the live spec and the 59-guide corpus on 2026-08-10. The versioning policy this cell quoted verbatim ('Each API is versioned individually, but we follow these rules...') is gone: the current spec contains zero occurrences of 'breaking' and has no Versioning section, and no changelog or release-notes page exists in the 59-guide corpus or the 70-path spec. What replaced it is stronger evidence in the same direction. connect.tryotter.com/docs/guides-contract-status/ splits Otter's API surface into 'Production contracts' and 'Preview behavior', the latter headed 'Behavior that is not yet a public guarantee', and the API lifecycle row sits on the PREVIEW side: 'Support targets, certification policy, incident communication, credential-rotation procedure, PII retention, versioning, and deprecation notice periods'. The vendor is now stating in published documentation that its versioning and deprecation notice periods are not a public guarantee, and the page's instruction for anything on that side is to 'Ask your Otter representative to confirm the behavior for your application'. The practice that survives is not a policy: individual fields and scopes carry 'deprecated' annotations in the spec (Item.categoryId, Item.categoryName, Address.linesOfAddress 'Deprecated: use addressLines', menus.pos_publish, orders.status_update), the Reports area is marked Deprecated on the contract-status page, and one migration guide exists ('Migrate to Order Total v2' - 'Move from deprecated orderTotal to orderTotalV2'). Marking a deprecated field is not publishing a changelog, and 'contact your representative' is not a stated notice period. Neither conjunct of the claim is met. https://connect.tryotter.com/docs/guides-contract-status/ · retrieved 2026-08-10
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
On-demand machine-readable export is broad: every Analytics report table has an export control ('there is an export button above the data table'), and CSV or Excel export is documented for Sales Summary, Order History, Product Mix, Voided Transactions, Cash Management, Taxes, Payouts, KDS reporting, Guest Directory, Staff timecards ('.xls format') and promotions history; via the Public API, ORDER_STORES, ORDER_ITEMS and PAYOUT_TRANSACTIONS reports return transaction-level rows for up to 5,000 stores. SHORTFALL: exports are bounded and piecemeal - 'You will be able to view or export up to 365 days of data' per pull and 'up to three years in the past' - there is no single complete-account export bundling orders, customers, menu and payments metadata, menu export is only the Excel template used for import, and no post-termination retrieval window is published: cancelling is a request form submitted by a Billing Admin that support actions within 48 hours (Enterprise, Partner and Annual customers must go through their CSM), with nothing stated about access to data afterwards. https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147-Otter-Analytics-Your-Guide-to-Reports-and-Insights · retrieved 2026-08-08
Reliability, offline & operations
Order entry, ticket routing, and check printing continue on-terminal when the internet connection is lost.
reliability-offline-order-entry
"POS terminal offline mode" is asserted in Otter's own comparison table against Clover, Square, Revel and Toast, with no supporting documentation of scope. https://tryotter.com/products/otterpos · 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
'Otter POS Using Offline Mode' (art. 26865574404883), quotation re-verified live via the help centre article API on 2026-08-08: offline mode lets an operator 'effortlessly process credit card and cash transactions in areas with no or unstable network connection'. It 'is automatically enabled for all Otter POS customers'; when the terminal 'is unable to detect a network connection, it will begin storing orders in offline mode' behind a warning banner, each queued order carries a cloud icon, and 'Orders will be automatically processed when you connect to a network again' - store-and-forward for card, not a cash-only fallback. Already-paired Bluetooth or USB card readers keep working (new readers cannot be paired offline). The Handheld 'supports offline mode in both card reader mode and mobile POS mode' (art. 35667642715283); Kiosk Mode is the documented exception - 'Currently, Kiosk Mode does not support offline mode' (art. 39076552467987), where the cashier-facing POS must take the order instead. https://helpdesk.tryotter.com/hc/en-us/articles/26865574404883-Otter-POS-Using-Offline-Mode · retrieved 2026-08-08
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
CORRECTED ATTRIBUTION. The 'Payment Responsibility' clause previously quoted here is not in the general Tech Services Terms of Use - it is section 8(g) of the ONLINE ORDERING AND DIGITAL DINE IN ADDENDUM, and section 8(a) of that Addendum scopes it: 'The Payment Processing Services are provided as part of the Online Ordering and Digital Dine In Services.' The published agreement carries no POS product addendum (its addenda are Online Ordering & Digital Dine In, Boost, Hardware, Financial Reconciliation, Handoffs, Reputation Management and the DPA), so that clause cannot be read as the rule for a card-present store-and-forward decline on Otter POS. What does carry the cell is general and platform-wide. Warranties and Disclaimers b: 'You agree that we are not liable to you or to any third party for any interruption, modification, suspension, or discontinuance of the Tech Services... You acknowledge and agree that the Tech Services are provided as-is.' Indemnity and Limits of Liability b: 'YOU AGREE THAT OUR TOTAL LIABILITY ARISING OUT OF OR RELATING TO THE AGREEMENT, THE ADDENDUM(S), THESE TERMS AND/OR YOUR USE OF THE TECH SERVICES, IN THE AGGREGATE, IS LIMITED TO THE LESSER OF (i) US$1,000 OR (ii) THE FEES THAT YOU PAID TO USE THE TECH SERVICES IN THE 12 MONTHS BEFORE THE EVENT GIVING RISE TO THE LIABILITY.' A merchant reading the published contract does therefore get an answer to who bears the loss: they do, and Otter's exposure is capped at the lesser of $1,000 or twelve months of fees. SHORTFALL: no per-transaction or cumulative offline cap is published anywhere, and no decline-on-reconnect scenario is described. 'Otter POS Using Offline Mode' (art. 26865574404883, updated 2025-06-03) enumerates the limitations - 'Online orders cannot be accepted on Otter when a device is disconnected from the internet', 'You will not be able to pair new printers or card readers in Offline Mode', 'Printers that are connected using a wifi or ethernet connection will not print orders during an internet outage' - and sets no ceiling on offline value, offline order count or offline duration. It states only that 'Orders will be automatically processed when you connect to a network again', with no failed-payment path, recovery process or offline-decline insurance. https://www.tryotter.com/legal/tech-services · retrieved 2026-08-09 adversarially verified
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
'Otter POS Using Offline Mode' (art. 26865574404883) is Otter's complete statement of degraded-network behaviour and it describes per-device islands, not shared LAN state. Its limitations section says the local network stops carrying Otter traffic the moment the internet goes: 'Printers that are connected using a wifi or ethernet connection will not print orders during an internet outage' and 'Station tickets do not print when the device is in offline mode' - only Bluetooth and USB peripherals already paired to that one device keep working. A printer sitting on the same LAN as the terminal is unreachable, so there is no local transport for two terminals to share a check over either. Consistently, offline orders are held on the device that took them and carry a cloud icon 'until they have been uploaded and processed online', and online orders 'cannot be accepted on Otter when a device is disconnected from the internet'. No local server, master terminal, table-state sync or shared-check behaviour appears anywhere in the 292-article helpdesk.tryotter.com corpus. https://helpdesk.tryotter.com/hc/en-us/articles/26865574404883-Otter-POS-Using-Offline-Mode · retrieved 2026-08-08
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
Device-local, not on-premise. 'Otter POS Using Offline Mode' (art. 26865574404883) documents that the terminal itself takes and completes credit card and cash transactions with no cloud round-trip while disconnected, storing them on the device until reconnect, so the ordering path is not purely cloud-hosted request/response. The local store is real enough that Otter warns about it: 'Do NOT clear the cache/storage of the Otter app if the Otter POS is working in Offline Mode. Clearing the cache/storage of the app while in offline mode will erase data from the Otter app that has not been sent to the server yet. For example, order history.' SHORTFALL: the local component is the individual terminal's own queue - no local/edge server, back-office appliance or on-premise database is documented anywhere in the 292-article help centre, and the rest of the ordering path stays cloud-dependent: online orders cannot be accepted offline, menus are published from the Otter Dashboard, wifi/ethernet printers do not print during an outage, and Cloud Printers run direct from Otter's servers, 'completely separate from the Otter tablet and Otter app' (art. 13776113141907). https://helpdesk.tryotter.com/hc/en-us/articles/26865574404883-Otter-POS-Using-Offline-Mode · retrieved 2026-08-08
Kitchen display and/or kitchen printer routing continues to function while offline.
reliability-offline-kds-printing
Upheld partial on re-fetch 2026-08-02. The only evidence remains a competitor-comparison table on Otter own POS marketing page (vs Clover, Square, Revel, Toast) listing "KDS offline mode" and "Printer offline mode" as checkmarks. Shortfall: the KDS product page, fetched in full again today, does not contain the word "offline" anywhere, and no scope documentation states what survives an outage. A checkmark in a self-authored competitive matrix does not carry a yes. https://tryotter.com/products/kds · retrieved 2026-08-02 adversarially verified
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
The alert half is documented: 'When a Bluetooth or Front of House printer has connectivity issues, an alert will let you know an issue has been detected and prompt you to run diagnostics.' Shortfall: no automatic failover to a backup printer or KDS appears anywhere in the printer docs - the documented recovery is manual diagnostics and reprint - and in offline mode wifi/ethernet printers 'will not print orders' and 'station tickets do not print' at all (art. 26865574404883). https://helpdesk.tryotter.com/hc/en-us/articles/13778392924819-Bluetooth-Front-of-House-Printer-Troubleshooting · retrieved 2026-08-03
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
Nothing Otter publishes describes what happens when two devices edit the same object during a partition. The Offline Mode article describes a single device's local store and its replay - orders 'will be fully processed when the network connection is restored' - and warns only that clearing the cache while offline destroys unsent data. `last write wins` occurs 0 times across the help centre, the developer guides, the OpenAPI spec and 414 www pages, and `partition` occurs 0/0/0/1 - the one www hit is a wiki page on Vietnamese cuisine describing 'the partition of Vietnam in 1954'; `two devices` returns exactly 1 tokenised help-centre hit and it concerns Bluetooth printer pairing range. The 31 help-centre occurrences of `conflict` are the poison and none is a device partition: 'Resolve POS Menu Conflicts' (art. 25819030909587) compares a third-party POS menu against the Otter menu on a six-hour poll and resolves item-by-item ('Otter checks the POS menu every 6 hours'), a menu-import location flagged Conflict means it already has a different menu assigned, and Menu Pricing Rules flags two rules whose scopes overlap. Two systems disagreeing about a catalogue is a different problem from two terminals disagreeing about a check. https://helpdesk.tryotter.com/hc/en-us/articles/26865574404883-Otter-POS-Using-Offline-Mode · retrieved 2026-09-10
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
Otter lists three offline modes as feature bullets but publishes no list of what is unavailable offline — the inverse of what this criterion asks for. https://tryotter.com/products/otterpos · retrieved 2026-08-01
A public, per-component status page exists showing current and historical incident state without a login.
reliability-public-status-page
Re-confirmed 2026-08-02: 11 named components (Analytics & Financials, Business Manager, Delivery/Partner Integration, Direct Order, Future Foods, Marketing, Menu Management, Order Manager, POS Integration, Tablet Software, Virtual Brand), all Operational, no uptime percentage published, and a 2026 archive of 22 incidents Feb-Jul including DoorDash order-injection failures, Uber Eats 86ing failures and menu-publishing errors. Most recent: Order Manager stuck on loading screen, 30 July 2026, MITIGATED. https://status.tryotter.com/ · retrieved 2026-08-02 adversarially verified
A contractual uptime SLA with a stated percentage AND a service credit remedy is published or available in the standard agreement. differentiator
reliability-contractual-uptime-sla
Re-grounded: the earlier note's 'The merchant MSA is not public' is withdrawn - the Otter Tech Services Terms of Use, the agreement governing the paid Tech Services, are publicly readable. Read in full, they carry no uptime percentage, no availability commitment and no service-credit or other remedy for downtime; a search of the whole document for 'uptime', 'service level', 'SLA', 'service credit' and '99.' returns nothing but an unrelated network-load-balancing sentence. They point the other way: 'Your access and use of the Tech Services may be interrupted from time to time for any of several reasons... You agree that we are not liable to you or to any third party for any interruption, modification, suspension, or discontinuance of the Tech Services... the Tech Services are provided "as-is." We do not not warrant that the Tech Services shall be uninterrupted, virus free, or shall meet any of your specific needs or requirements'. The same disclaimer is repeated verbatim for Beta Services and for Hardware, and 'The Hardware Warranty is the only express warranty provided by us'. Aggregate liability is capped at the lesser of US$1,000 or fees paid. That is an enumerated absence in the governing agreement, not silence. https://www.tryotter.com/legal/tech-services · retrieved 2026-08-08 adversarially verified
The vendor publishes written post-incident reports or root-cause summaries for major outages.
reliability-incident-postmortems
Incident archive records date, affected component and lifecycle state (Investigating/Mitigated/Recovered/Resolved). No written root-cause postmortems. https://status.tryotter.com/ · retrieved 2026-08-01
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
Upheld partial on re-fetch 2026-08-02. Confirmed on the support page: "Available 24/7/365", "Average response time: 2 minutes", phone +1 (888) 681-8837, live chat in dashboard and Otter Go app. Shortfall: the page never states support is included in every plan at no extra cost - the pricing FAQ poses "Does Otter include support in its plans?" and renders no answer - and independent operator reports contradict the reachability claim. https://tryotter.com/support · retrieved 2026-08-02 adversarially verified
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
First-party on-site installation exists, for kiosks only. 'Kiosk (27" & 21") Setup Guide' (art. 39076370297875): 'Otter offers professional Kiosk Installation service for the Kiosk Pro (27") and Kiosk (21") with no additional fee for restaurants in the United States and Canada. We will send a technician to the restaurant site to unbox, build, and install the hardware to ensure the kiosk is assembled and functioning properly.' Otter adds a go-live step in person - 'Before the installation technician leaves, we strongly recommend running a test order on the kiosk (using your own credit card)... If the test order is not successful, the technician will be there to help troubleshoot' - taking about an hour per kiosk with a manager present. SHORTFALL: no on-site option is documented for Otter POS terminals, handhelds, tablets, printers, cash drawers or KDS; the Otter POS path is self-install hardware guides plus a remotely scheduled 'Go-Live call with an Otter Onboarding Specialist' (art. 33964789386259), and the kiosk service is US and Canada only. No certified dealer or reseller installation network is documented. https://helpdesk.tryotter.com/hc/en-us/articles/39076370297875-Kiosk-27-21-Setup-Guide · retrieved 2026-08-08
A hardware replacement/advance-exchange program with a stated turnaround time is included or purchasable.
reliability-hardware-replacement-sla
The programme exists; the clock does not. Tech Services Terms of Use, Hardware Addendum (www.tryotter.com/legal/tech-services): 'we warrant that, during the Warranty Period, all components of the Hardware shall be free from faulty workmanship and defective materials under normal use and service for a period of 1 year', covering both leased and purchased hardware, with the remedy 'at its sole option: (1) repair the Hardware... (2) replace the Hardware with comparable Hardware, or (3) refund the amount paid'; a Return Merchandise Authorization number must be obtained from support first and 'You assume the risk of damage to or loss of returned Hardware in transit.' Operationally it behaves as an advance exchange - 'Otter Printer Options' (art. 13776113141907): 'Our team usually attempts to first troubleshoot the device with you. If we can't get it to work, we'll be happy to send a replacement', and for a replacement device 'A pre-printed return label will be included in the box of the new equipment', i.e. the new unit ships before the old one goes back. 'How Do I Get A Tablet Replacement?' (art. 360053294413) describes the same troubleshoot-then-replace path. SHORTFALL: no turnaround time, next-business-day option, depot-vs-onsite mode or SLA is stated in the contract or the help centre; the remedy is expressly at Otter's sole option; '*Please note: replacement fees may apply'; and 'For countries outside the US&C, Otter does not offer replacements for hardware.' https://helpdesk.tryotter.com/hc/en-us/articles/13776113141907-Otter-Printer-Options · retrieved 2026-08-08
Operators can trigger and retrieve their own data backup/restore, or the vendor publishes RPO/RTO figures for data recovery.
reliability-backup-restore
Restore exists for menus, retrieval for reports, nothing for the account. 'Menu Version History' (art. 35314976325907) lets an operator 'View recent menu publishes', 'See what user published a menu version' and 'Revert to a previous menu version', with an autosaved snapshot and a Menu Activity log of individual edits - an operator-triggered restore of menu state. Data retrieval is real too: analytics and POS report tables carry an [Export] control to CSV/xlsx, and the reporting docs state 'You will be able to view or export up to 365 days of data' at a time and 'up to three years in the past'. SHORTFALL: no account-level backup, no restore of orders, guests, loyalty or settings, no operator-triggered full-account export, and no RPO, RTO or disaster-recovery figure appears on tryotter.com (the 2,521-URL sitemap has no security, trust or status-commitment page beyond status.tryotter.com) or in the 292-article help centre. The Tech Services Terms go the other way: the services are provided 'as-is', Otter does 'not warrant that the Tech Services shall be uninterrupted' and 'shall have no liability for any errors to Your Data'. https://helpdesk.tryotter.com/hc/en-us/articles/35314976325907-Menu-Version-History · retrieved 2026-08-08
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
Otter publishes no attestation of any kind, and the enumerations are complete ones. Its /legal index is the vendor's own list of every legal document it publishes - 12 terms-of-use documents, 6 privacy documents and 2 promotions - and none is an AOC, a P2PE listing or a security statement. www.tryotter.com/security, /trust and /dpa return 404; trust.tryotter.com, security.tryotter.com and compliance.tryotter.com do not resolve; the full sitemap-0.xml (2,521 URLs, retrieved 2026-08-08) has no security, trust, compliance or PCI page in any of its seven locales. The published Data Processing Addendum requires only 'appropriate technical and organizational measures' and names no standard. The Tech Services Terms run the obligation the opposite way: 'You represent and warrant that you shall comply with all data security standards (including any standard related to the physical compliance requirements of using any Hardware) adopted by the PCI Security Standards Council, LLC and any amendments thereto, the EMV standards, and the security rules of each payment card association', and the merchant indemnifies Otter for 'breach of any PCI obligations'. Card processing is Stripe's - 'all payments and monetary transactions are handled by Stripe' - so any validated listing covering the payment path would be Stripe's, and Otter neither publishes nor points to one. https://www.tryotter.com/legal · retrieved 2026-08-08
Multi-factor authentication is enforceable on back-office and POS administrative logins, with role-based permissions.
reliability-mfa-role-based-access
Role-based access yes, MFA no. 'User Management' (art. 44753081545619) documents ten system roles - Admin, Accountant, Analyst, Manager, Shift Supervisor, Cashier, Cook, Cook (Restricted), Courier, Dispatcher - each with an explicit Access Level (organization, brand or location), Otter Dashboard access flag and device (POS/tablet/kiosk) access flag, plus operator-built Custom Roles that start from a base role and toggle permissions per app and per feature, brand- and location-scoped assignment, and a Deactivated status where the 'user is disabled and cannot log in'. Access to User Management is itself restricted to Admins, and Billing is gated behind a separate Billing Admin role. SHORTFALL: the same article states a Login Type for every role and the entire enumerated set is 'Username & Password', 'Email & Password' or 'Pin Code' - there is no second factor on any role. 'Otter Account Logins' (art. 42099611842195) walks the whole Dashboard sign-in and account-settings surface (enter email and password, edit email address, change password, forgot-password email) with no TOTP, SMS step-up, push approval, SSO or enforcement toggle. The only two-factor authentication in the 292-article corpus belongs to the delivery platforms Otter connects to, not to Otter (Repairing Disconnected Integrations, art. 4417582578323). https://helpdesk.tryotter.com/hc/en-us/articles/44753081545619-User-Management · retrieved 2026-08-08
A public, free training library (video/LMS) and a practice/training mode on the terminal exist for staff onboarding.
reliability-self-serve-training
Public help center at helpdesk.tryotter.com plus "resources and live guidance to get your team confident". No terminal training mode documented. https://tryotter.com/support · retrieved 2026-08-01
Any terminal can assume the master/server role automatically if the designated primary terminal or local server fails. differentiator
reliability-failover-terminal-role
There is no master or server role for a terminal to assume, because Otter POS has no local server: each device caches its own work and replays it to the cloud. The Offline Mode article's limitations show the isolation directly - during an outage 'You will not be able to pair new printers or card readers', and 'Printers that are connected using a wifi or ethernet connection will not print orders during an internet outage. Station tickets do not print when the device is in offline mode.' A surviving terminal cannot take over printing for the store, let alone act as its server. `failover`, `primary terminal` and `master` occur 0 times across the 287-article help centre, the 53 developer guides and the OpenAPI spec (`master` returns 5 www hits, all of them unrelated marketing prose). The one device-to-device dependency Otter does document runs the wrong way for this claim: the Otter Handheld 'connects directly to your Otter POS terminal', and cash payments on it 'should be completed on the main terminal to trigger the opening of the cash drawer'. https://helpdesk.tryotter.com/hc/en-us/articles/26865574404883-Otter-POS-Using-Offline-Mode · retrieved 2026-09-10
Terminals support an automatic cellular/LTE failover for connectivity, first-party or documented.
reliability-cellular-backup
Cellular is a first-party primary connectivity option, not a documented automatic failover. 'Otter Plan Packages & Hardware' (art. 18739528029715) lists five tablet SKUs and one of them is cellular: 'Samsung LTE A7 Lite - US ONLY - 8.7" LTE tablet, 32GB Memory, 3GB RAM, Offered with data plan for access to Wifi', at $80/month lease and 'NOT AVAILABLE TO BUY', alongside the Wi-Fi-only Lenovo P11, Samsung A7 Lite and Samsung A8. SHORTFALL: it is an Order Manager tablet SKU, US-only and lease-only at roughly triple the price of the Wi-Fi models; no LTE variant is listed for the Otter POS terminals, kiosks, handhelds or KDS; and no automatic Wi-Fi-to-cellular failover behaviour, dual-WAN handoff or connectivity-priority setting is documented for any device. Otter's documented answer to a dropped connection is Offline Mode (art. 26865574404883), and its connectivity troubleshooting recommends the opposite of cellular - 'Use a wired connection: If available, connect an Ethernet cable directly from the router to the POS system', while the KDS install guide says 'Avoid using non-business-grade internet connections like cellular hotspots or phone tethering' (art. 34209922356499). https://helpdesk.tryotter.com/hc/en-us/articles/18739528029715-Otter-Plan-Packages-Hardware · retrieved 2026-08-08
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
Published in the governing merchant contract, not just implied by monthly pricing. Tech Services Terms of Use (www.tryotter.com/legal/tech-services, retrieved 2026-08-08): 'If you did not enter into an Order Form (or your Order Form does not state a subscription period), or if the time period in your Order Form expires, your use of the Tech Services is authorized on an ongoing month to month basis.' Monthly Plans are billed 'from the first day of each calendar month ("Monthly Pay Date")' and 'The term will auto renew and we continue to charge you on a monthly basis on the Monthly Pay Date unless you provide us with written notice at https://tryotter.com/customer-support to cancel' - no minimum term, no multi-year commitment, with Term Plans as the explicit alternative rather than the default. The help centre says the same thing in plain language for the Uber Otter Benefits subscription: 'Month to Month Renewal: $149/month + $20 POS Integration (if applicable)' and 'No - There is no contract period. You can cancel at any time' (art. 45522337604499). In-product cancellation is self-serve for standard customers via Billing > Subscriptions > Submit a request (art. 20690423360403). Worth recording alongside: cancellation notice must reach Otter by the 15th to end service the following month; Enterprise, Partner and Annual Billing customers must go through a Customer Success Manager; and leased hardware must be returned or an Unreturned Equipment Fee applies. https://www.tryotter.com/legal/tech-services · retrieved 2026-08-08
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
The published Tech Services Terms of Use impose an early-termination charge in substance on one of the three billing structures they define. Section 4(a) enumerates them as a Monthly Plan, a prepaid Term Plan (1 year or 9 month term), and a 'Term Plan with Monthly Payment'. For the last, section 4(d) states: 'If you cancel during the subscription term, you will not be issued any refunds for or credits of any prepaid and unused fees for the remainder of the subscription term, and you will be required to pay any and all unpaid fees related to the subscription term. If you fail to make timely payments, any and all unpaid fees that are outstanding under the applicable service order may become immediately due and payable at our discretion.' That is acceleration of the full unbilled balance of the term - the merchant on a monthly-billed annual plan owes the rest of the year on cancelling. The labels 'early termination fee' and 'liquidated damages' do not appear, but the obligation does, so the claim - which asks for terms stating no ETF - fails. The other two structures are milder rather than exculpatory: a prepaid Term Plan forfeits prepaid unused fees ('All Fees are non-refundable'), and a Monthly Plan simply ends the following month on written notice by the 15th, with nothing to accelerate. Exit costs also exist on the hardware side: leased Hardware must be returned within 60 days of termination or Otter charges an 'Unreturned Equipment Fee' equal to 'the current Hardware price actually offered for sale (without any discounts or promotions) ... plus a 10% administrative fee', secured by a purchase-money security interest in the rented equipment, and Otter 'may continue to charge you for the Paid Services until all leased Hardware is returned'. Which structure a given merchant is on is set by a private Order Form that is not published. https://www.tryotter.com/legal/tech-services · retrieved 2026-08-08
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
Both halves are in publicly accessible contract terms. Tech Services Terms of Use (www.tryotter.com/legal/tech-services, retrieved 2026-08-08) - Monthly Plans: 'we will initially charge you a pro-rated monthly amount and then charge you a monthly amount starting from the first day of each calendar month ("Monthly Pay Date"). The term will auto renew and we continue to charge you on a monthly basis on the Monthly Pay Date unless you provide us with written notice at https://tryotter.com/customer-support to cancel. Notification of cancellation must be received by the 15th of the month in order to cancel services the following month. If notice is received after the 15th then service will be terminated the month following.' Term Plans: 'The term will auto renew and we will continue to charge you on the same basis unless you provide written notice to https://tryotter.com/customer-support at least 30 days prior to the expiration of the then current subscription term.' The renewal term itself is also defined in the public document ('the time period specified in the Order Form', defaulting to 'an ongoing month to month basis' where none is stated). Caveat recorded rather than deducted: the length of a given customer's Term Plan sits in the private Order Form, and Enterprise, Partner and Annual Billing customers cancel through a Customer Success Manager rather than the self-serve form (art. 20690423360403). https://www.tryotter.com/legal/tech-services · retrieved 2026-08-08
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
Positive evidence of absence, in Otter's own words. 'Otter POS Cash Discounts' (art. 27244902024723, updated 2025-06-02; re-fetched 2026-08-09 through the Zendesk Help Center API because the rendered /hc pages 403 to bots) closes with the payments FAQ: 'Do we have other payment processor options available? No, we do not offer other payment processors at this time.' The same FAQ fixes one blended rate for everybody - 'Regardless of the bank or credit card, the cc processing fees will always be 2.3% + $0.10 w/ card present and 2.9% +$0.30 without card present.' The published contract puts the choice on Otter rather than the operator: Tech Services Terms of Use, Online Ordering and Digital Dine In Addendum s.8(a) - 'The Payment Processing Services are provided by our third party payment processing partner, Stripe... We reserve the right to change the third party's payment processor at any time and you will provide us with any information required to set up a payment account with any such alternate payment processor.' It is enforced in product: 'Stripe must be added as a payout method in Otter Dashboard before the card reader is connected and credit card transactions can be processed' ('Accepting Payments on Otter POS', art. 33725692118931), and every card reader Otter sells is a Stripe or Stripe-partner unit (Stripe M2 $99, Stripe S700 $450, Wisepad $99 CAD). Recorded for accuracy: the processing is not in-house - it is Stripe, a third party - but the claim asks for a processor of the OPERATOR'S choice, and the operator has none. This replaces the earlier partial, which read Stripe's appearance in the /integrations Payments category as implying external processing was possible. https://helpdesk.tryotter.com/hc/en-us/articles/27244902024723-Otter-POS-Cash-Discounts · retrieved 2026-08-09 adversarially verified
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
CORRECTION: the prior note's 'no rate structure of any kind is published' was false. Otter publishes a rate, and what it publishes is the opposite of interchange-plus. 'Otter POS Cash Discounts' (art. 27244902024723, payments FAQ, re-fetched 2026-08-09 via the Zendesk article API): 'Are there different credit card fees depending on the bank? No. Regardless of the bank or credit card, the cc processing fees will always be 2.3% + $0.10 w/ card present and 2.9% +$0.30 without card present.' A rate expressly invariant to the issuing bank and the card product is a blended flat rate by definition - interchange-plus is the structure in which it varies. No cost-plus option, no markup expressed as bps + per-transaction over interchange, and no interchange pass-through schedule appears in the 292-article help centre, in the 20-document /legal set or on tryotter.com/pricing, whose bundles carry only an unquantified '+ per order transaction fee'. Recorded because it is inconsistent: 'Otter POS Introduction' (art. 26596326146707, updated 2025-07-15) advertises 'industry-leading low processing fees: just 2.39% + 15c', a third figure Otter never reconciles with the two above. https://helpdesk.tryotter.com/hc/en-us/articles/27244902024723-Otter-POS-Cash-Discounts · retrieved 2026-08-09 adversarially verified
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
An exit right on a price change exists, but no cap does and the exit is not stated to be penalty-free. Tech Services Terms of Use (retrieved 2026-08-08), TERM AND TERMINATION b: 'You may terminate these Terms upon written notice to us in the event that we modify the Terms or Fees and you do not agree to such modifications.' 'Fees' expressly includes card costs - 'all other Fees including Payment Processing fees shall automatically be deducted from your payments from the third party payment processor. We reserve the right to change the Fees upon 7 days prior written notice to you' - and Stripe surcharges are 'communicated to you during the enrollment process and as may be updated by us from time to time'. SHORTFALL, three parts. (1) No cap or carve-out: 'We reserve the right to increase pricing for our Monthly Plans at any time as we may determine in our sole and absolute discretion', same for Term Plans, with no ceiling, no indexation and no limit to pass-through interchange or network cost. (2) The termination right is not stated to be penalty-free and does not disapply the fee consequences: 'All Fees are non-refundable', increases 'take effect on the next Monthly Pay Date following notice to you', and for Term Plans with Monthly Payment 'If you cancel during the subscription term, you will not be issued any refunds for or credits of any prepaid and unused fees for the remainder of the subscription term, and you will be required to pay any and all unpaid fees related to the subscription term.' (3) Otter has exercised the increase right without grandfathering - 'Otter Price Adjustments for Mexico' (art. 41391990649875): 'Plan prices apply to all restaurants and food businesses once a price update or adjustment is announced.' https://www.tryotter.com/legal/tech-services · retrieved 2026-08-08
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
Re-evidenced 2026-08-09 from the help centre rather than the pricing page, and two prior statements withdrawn. WITHDRAWN: 'no card processing rate of any kind is published' - Otter publishes 2.3% + $0.10 card present and 2.9% + $0.30 card not present, 'regardless of the bank or credit card' (art. 27244902024723), with an unreconciled 2.39% + 15c in art. 26596326146707. WITHDRAWN 2026-08-14, AND THE DOCUMENT WITHDREW IT: 'Otter Plan Packages & Hardware' (art. 18739528029715) was a complete per-device price table giving lease and outright-purchase figures for every SKU. Otter rewrote that article on 2026-08-13T23:45:51Z (its own edited_at; raw body 101,365 -> 96,083 bytes, visible text 10,177 -> 8,084) and REMOVED the table entirely - re-read 2026-08-14 in both the rendered page and the Zendesk article API, which agree. Exactly one dollar amount survives on it ('each additional virtual brand is $20/location'), and pricing enquiries are now directed to sales: 'reach out to our otter team at success@tryotter.com to learn more about the new bundles/pricing options'. Every per-SKU lease and buy figure previously recited here is withdrawn, as is the $100 one-time setup fee for Digital Dine-In, Online Ordering and the Direct Orders Full Suite, which sat in the same article. Per-location software figures are published in scattered articles: Advanced Analytics 'starting from $20/month per location', Gift Cards $30/month, the Homebase integration $20/month, each additional Virtual Brand $20/location, Uber Otter Benefits renewal $149/month or $1,499/year, and a $100 one-time setup fee for Digital Dine-In, Online Ordering and the Direct Orders Full Suite. Marketing bundles remain on tryotter.com/pricing and were re-read 2026-08-14: Advanced $314/mo list, $198/mo promotional; Advanced + Kiosk $657/mo list, $541/mo promotional - these four figures are still published and are what now carries the `partial`. The previously cited 'Order Manager $149/month' was NOT found on that page as retrieved 2026-08-14; recorded as not-found rather than withdrawn, since only 3,915 of 284,470 bytes are visible text there and a single absent figure on a partly client-rendered page is not evidence of removal. SHORTFALL: the base Point of Sale plan tiers (Starter, Main) and Order Aggregation tiers (Lite, Standard) are named in the help centre but their prices appear only inside embedded images, not in text; the per-order transaction fee attached to every bundle is never quantified; no per-additional-terminal SOFTWARE price is published anywhere; and the plan-level activation fee is described without an amount. https://helpdesk.tryotter.com/hc/en-us/articles/18739528029715-Otter-Plan-Packages-Hardware · retrieved 2026-08-14 adversarially verified
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
Shortfall: per-module purchase and cancellation exist, but neither is self-serve and modules sit on a required tiered base plan. Documentation: the Subscriptions page lists "associated bundle(s) and product(s)" per location and lets a Billing Admin "shop for and request to add products to your subscription"; Plan Packages describes two package types (Order Aggregation - Lite, Standard; Point of Sale - Starter, Main) where "as you move up in tiers, you unlock additional features", with add-ons on top. Cancelling one module is a request form - "Downgrade Plan: Cancel a feature or product" then "select which products to downgrade" - after which "our Support team will be in contact within 48 hours to complete your request"; only Billing Admins may submit it, and "Enterprise, Partner, and Annual Billing customers do not have access to this request form" and must contact their CSM. Otter Digital Solutions add-ons (Direct Orders, Promotions, Loyalty, Reputation Management) can only be cancelled by contacting support. Modules can also depend on other modules: Catering is "a software add-on to the Online Ordering: Direct Orders Product", and Multi-Store Ordering requires an Otter Lite or Standard base subscription. https://helpdesk.tryotter.com/hc/en-us/articles/20690423360403-Downgrade-or-Cancel-an-Account · retrieved 2026-08-06
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
THE VERDICT STANDS AND THE PRICE EVIDENCE DOES NOT. 'Otter Plan Packages & Hardware' (art. 18739528029715) used to publish a lease price AND an outright purchase price for every required device class; on 2026-08-13T23:45:51Z (its own edited_at) Otter rewrote the article and removed the whole table. Re-read 2026-08-14 through both the rendered page and the Zendesk article API: the eleven lease/buy pairs this note quoted - iMin Dual Screen '$60/month lease or $749 buy', HD15 Canada '$29 CAD/month lease or $399 CAD buy', Kiosk Pro 27in '$289/month lease or $5,500 buy', Kiosk Mini 15in '$100/month lease or $1,200 buy', Flytech K739 'Hardware: $75/month or $1,000 buy', Stripe M2 '$10/month lease or $99 buy', Stripe S700 '$39/month lease or $450 buy', Wisepad '$10CAD/month lease or $99CAD buy', Rongta RP328 '$20/month lease or $149 buy', Rongta RP310 '$25/month lease or $250 buy' and the Epson printers at '$20/month lease or $299 buy' - are absent from both, and are WITHDRAWN. So are the bundle pairs. What the verdict actually rests on is untouched and was re-read on the same fetch: the article still states the choice plainly, 'Hardware is available for one-time purchase or via lease.', and still marks the Epson TM-M30ii BT 'Compatible for Otter POS operations'. No lease is multi-year - the Hardware Addendum's TERM AND PAYMENT sets it as 'the duration stated in the Order Form, or if there is no duration stated in the Order Form, the Hardware shall be offered on a Monthly Plan' - and on purchase 'Title to purchased Hardware shall transfer to you once we have received payment in full.' Limits recorded rather than deducted, none affecting a required device: buying forgoes a discount, since the same article says hardware is available 'for one-time purchase or via lease for a lower processing fee'; the standing Kiosk Pro is still sold 'ONLY AVAILABLE IN BUNDLE' (re-read 2026-08-14), while the Samsung LTE A7 Lite's 'NOT AVAILABLE TO BUY' marking went with the price table on 2026-08-13 and is withdrawn along with it - it lived in a column of that table, so its absence is the rewrite and not a change of policy; the general Terms s.2(b) default absent agreement is rental - 'Unless otherwise agreed in writing by us, you agree that Hardware... is rented to you, not sold'; and Otter supplies no hardware at all outside the US and Canada, where BYOD is compulsory. https://helpdesk.tryotter.com/hc/en-us/articles/18739528029715-Otter-Plan-Packages-Hardware · retrieved 2026-08-14 adversarially verified
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
'Otter Printer Options' (art. 13776113141907, updated 2026-07-20) documents a named Bring Your Own Device programme: 'You have the option to bring your own printer or tablet instead of purchasing one from Otter. However, we do have a specific list of compatible BYOD printers that will work with the Otter software.' The supported list is published - 'If you have an Otter tablet or have downloaded the Otter app on your own Android tablet, you can bring one of the following printers supported by our app: Epson TM-m30, Epson TM-m30i, Epson TM-m30ii, Epson TM-m30iii, Rongta RP328, Rongta RP310, Rongta 410' - i.e. standard third-party ESC/POS thermal printers on operator-owned hardware. Outside North America it is not merely allowed but required: 'All other countries must bring their own printer and Android tablet in order to use Otter software.' Documented limits, recorded but not disqualifying against a claim that asks for at least one third-party option: cloud/hardwired printers 'must be preconfigured and provided by Otter in order to print your store's orders, thus you cannot bring your own non-Otter Cloud Printer'; printers connect only through the Otter Android app, not the browser Order Manager; BYOD tablets are Android only, with no iPad option documented; and Otter POS terminals, kiosks, handhelds, card readers (Stripe M2/S700) and KDS units remain Otter-supplied. https://helpdesk.tryotter.com/hc/en-us/articles/13776113141907-Otter-Printer-Options · retrieved 2026-08-08
One-time implementation, menu-build, onboarding, and training fees are published as specific amounts or explicitly stated as $0.
commercial-implementation-fee-published
Some one-time fees are published as specific amounts, others are named without one. WITHDRAWN 2026-08-14: 'Otter Plan Packages & Hardware' (art. 18739528029715) published 'Digital Dine-in, Online Ordering, and the Direct Orders Full Suite all have a one-time setup fee of $100.' Otter rewrote that article on 2026-08-13T23:45:51Z and removed it together with the hardware price table; re-read 2026-08-14 in both the rendered page and the article API, which agree that no fee amount remains on it. Published as $0, and this is what now carries the `partial`: 'Otter Kiosks Introduction Guide' (art. 39076742954771), re-read 2026-08-14 - 'Otter offers professional Kiosk Installation service for the Kiosk Pros with no additional fee (available for restaurants in the United States and Canada). We will send a technician to the restaurant site to unbox, build, and install the hardware to ensure the Kiosk is assembled and functioning properly.' RE-TRANSCRIBED, not re-pointed: the same article says the same thing in reworded form (it now says 'the Kiosk Pros' where it said 'the Kiosk Pro (27in) and Kiosk (21in)', and parenthesises the territory), so the substance is unchanged and the prior transcription was stale. Marketing adds 'Free, personalized onboarding' on tryotter.com/products/otterpos. SHORTFALL, and it is now a harder one: the general activation fee used to be described without an amount - 'The activation fee covers the onboarding assistance required to deliver a ready-to-use product and allows us to offer a lower price point for our customers. *The one-time activation fee is charged per location' - and the 2026-08-13 rewrite removed even that description; the word 'activation' does not appear in the article as re-read 2026-08-14. The fee is no longer described at all in the help centre, let alone quantified. No menu-build fee is published in either direction: the help centre documents manual menu creation, Excel-template import and import from a delivery platform or direct-order site as self-serve options (art. 39374883174291) and never prices a build service. No training fee is published or declared $0. https://helpdesk.tryotter.com/hc/en-us/articles/18739528029715-Otter-Plan-Packages-Hardware · retrieved 2026-08-14 adversarially verified
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
Re-evidenced 2026-08-09 off the help centre and developer portal instead of tryotter.com/products/financials. Self-serve export is real and broad: 'Otter Dashboard Guide' (art. 27245439440147) walks Financials > Sales Summary ('Export the report for bookkeeping or operational insights'), Financials > Payouts and the Taxes report, each ending in an export step; 'Otter Analytics: Your Guide to Reports and Insights' (art. 12558297776147) puts an [Export] control on the report tables and states 'The date range that can be viewed or exported is up to 365 days and you will be able to view or export data up to 3 years in the past'; the Product Mix report exports to CSV via a download arrow; Loyalty Reporting exports both Overview and Order Detail, the latter carrying 'Data for individual Loyalty order transactions'. A documented API exists too - developer-guides.tryotter.com publishes a Reports domain with an Orders Report (per-order fields including channel, order id, status, fulfilment mode, subtotal, tax, discounts, tips, fees, total, estimated commission, estimated net payout, payout id and payment type), an Order Items Report, a Payout Transactions Report and a Ratings & Reviews Report, delivered by notification or pull. SHORTFALL, four parts, and together they are why this is not yes. (1) It is not free: 'The Financials app is available to customers on Advanced Insights or Pro subscriptions', and the Guest Directory appears only for Otter POS, Direct Orders or Loyalty subscribers. (2) Labor is not self-serve: the Labor Cost Report exists but 'you must have an active Homebase integration connected to your Otter POS store', and connecting it means obtaining a Homebase API key and handing it to 'your Otter account manager'. (3) The API is not self-serve either - the developer portal's only support route is 'Talk to your Account Representative to get support for building and operating the integration', with application, webhook and store onboarding steps before any call. (4) History is bounded: 365 days per export against a three-year horizon, and the Guest Directory - the home of customer contact records and loyalty point balances - documents view, filter, search and edit with no export control at all. https://helpdesk.tryotter.com/hc/en-us/articles/27245439440147-Otter-Dashboard-Guide · retrieved 2026-08-09 adversarially verified
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
Partly exportable. 'Loyalty Reporting' (art. 40183256731155) documents CSV export of loyalty data including transaction-level rows: 'Click on the arrow icon to export the data as a CSV file. The export feature is available on both tabs, Overview and Order Detail', where Order Detail carries 'Data for individual Loyalty order transactions'. Analytics and POS report tables carry the same [Export] control to CSV/xlsx, over a 365-day window reaching three years back. SHORTFALL: the 'Guest Directory Report' (art. 40222270130963) - the only documented home of customer contact information, loyalty status and available point totals, reward history and per-guest order history - documents viewing, filtering (all guests / loyalty members / recent / lapsed / active), searching by name, phone or email, and per-guest editing, with no export or download control anywhere in the article, unlike every other report article in the help centre. No gift-card liability, outstanding-balance or breakage report or export is documented either: gift card balances are checked one card at a time at the POS or online checkout (art. 37358535943187). The Tech Services Terms compound it - the operator grants Otter 'a nonexclusive, perpetual right to use Your Data' and 'We will own all intellectual property rights in such de-identified or aggregated data'. https://helpdesk.tryotter.com/hc/en-us/articles/40222270130963-Guest-Directory-Report · retrieved 2026-08-08
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
Otter's two governing documents both reach termination and neither defines a data-retrieval window. The published Data Processing Addendum (www.tryotter.com/legal/dpa, retrieved 2026-08-08) addresses exactly this point and declines to put a number on it: 'Vendor will destroy (or return, if mandated by Data Protection Laws) the Customer Personal Data upon termination or expiration of the Services within a reasonable period', with 'Vendor will Process Personal Data for the duration of the Agreement' and 'Vendor will retain Personal Data as long as required under law, unless otherwise agreed to in writing.' The Tech Services Terms describe what survives cancellation purely in fee terms - 'you will not be issued any refunds or credits of any prepaid and unused fees for the remainder of the subscription term and you will continue to have access to the paid Tech Services until the following Term Pay Date' - and contain no data-export, data-return or retrieval-window clause. The help centre's cancellation article (art. 20690423360403) walks the entire twelve-step downgrade/cancel request and a 48-hour support callback with no mention of retrieving data, and reporting access is in any case bounded by the product's own 365-day-per-export, three-year horizon while the subscription is live. https://www.tryotter.com/legal/dpa · retrieved 2026-08-08
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
Re-grounded onto the merchant agreement: the earlier citation (tryotter.com/terms) now resolves to the WEBSITE terms, and its 'solely owned by Otter and may be used by Otter for any lawful business purpose' quote is from that website document, not from the agreement a merchant signs. The Otter Tech Services Terms of Use are public and were read in full. Half the claim is met and half is affirmatively refused. MET (use/resale constraint): the Data Processing Addendum states 'Vendor will not (a) sell Customer Personal Data; (b) retain, use or disclose any Customer Personal Data for any purpose other than for the specific purpose of providing the Tech Services...; (c) retain, use or disclose the Customer Personal Data outside of the direct business relationship between Vendor and Customer, (d) combine any Personal Data that Vendor receives from, or on behalf of, another source', and the Confidentiality section provides that 'Confidential Information of Customer includes customer data', that 'each party retains all ownership rights in and to its Confidential Information', and that the Receiving Party will 'not use any Confidential Information of the Disclosing Party for any purpose outside the scope of this Agreement'. NOT MET (ownership): the agreement defines 'Your Data' but never states that the merchant owns it; instead 'You hereby grant us and our affiliates a nonexclusive, perpetual right to use Your Data', Otter 'will own all intellectual property rights in such de-identified or aggregated data and any data derived therefrom', and for online ordering and kiosk the addendum says 'Any and all Order Data made through the Online Ordering and Digital Dine In Services shall be owned separately by both parties' - i.e. Otter co-owns end-customer order information including personal data. Shortfall: no merchant-ownership statement for transaction data anywhere, joint ownership of Order Data, and a perpetual licence on top. https://www.tryotter.com/legal/tech-services · retrieved 2026-08-09
The POS is source-available or open source with a documented self-hosting option (source published under an OSI or source-available license, not merely an open API).
commercial-source-available-selfhost
Positive contractual evidence replaces the earlier bare inference. Tech Services Terms of Use (retrieved 2026-08-09), TECH SERVICES a: 'Your right to use the Tech Services is non-exclusive, personal to you or your company and its employees, and is not assignable, sublicensable or transferable. Otter is and remains the exclusive owner of all its intellectual property relating to its Tech Services... These Terms do not give you any right, title, or interest in or to the Tech Services.' Self-hosting is foreclosed by TECH SERVICES b: 'You may only access the Tech Services through the tablet device we provide, our website, or our application.' Source access is prohibited outright - OTHER RIGHTS AND RESTRICTIONS a bars you from '(i) modify, copy, or create derivative works of any part of the Tech Services, (ii) sell, resell, license, sublicense, distribute, rent or lease any part of the Tech Services', and the Online Ordering and Digital Dine In Addendum's Privacy section bars allowing any third party to 'reverse engineer, or otherwise attempt to gain access to the source code of the Kiosk Services or Online Ordering'. No repository, licence grant, source-available release or on-premise deployment option appears on tryotter.com, in the 292-article help centre or on developer-guides.tryotter.com, which documents a hosted Public API only. https://www.tryotter.com/legal/tech-services · retrieved 2026-08-09 adversarially verified
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
Otter names no SAQ and claims no scope reduction; it assigns the obligation to the merchant. Tech Services Terms of Use: 'You represent and warrant that you shall comply with all data security standards (including any standard related to the physical compliance requirements of using any Hardware) adopted by the PCI Security Standards Council, LLC and any amendments thereto, the EMV standards, and the security rules of each payment card association, including, without limitation, American Express, the Visa Cardholder Information Security Program, the MasterCard Site Data Protection Program and Discover Network's Information and Security Compliance', and the merchant indemnifies Otter for 'breach of any PCI obligations, any card holder association rules, or payment processor terms'. The Hardware Addendum repeats it - it is the merchant's responsibility to 'ensure compliance with physical PCI or other payment processing requirements'. No P2PE validation number, no tokenization or encryption architecture statement, and no SAQ level (A, A-EP, C-VT, P2PE-HW) appears in the /legal set of 20 documents, in the 2,521-URL sitemap, or in the 292-article help centre - whose only security sentence is a generic wiki line, 'POS systems are designed to encrypt and protect sensitive credit card information'. Card entry runs on Stripe hardware (Stripe M2 reader, S700 terminal) and the Terms confirm 'all payments and monetary transactions are handled by Stripe', so any validated P2PE listing on that path would be Stripe's; Otter neither asserts it nor states the resulting merchant scope. https://www.tryotter.com/legal/tech-services · retrieved 2026-08-08
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
Otter documents none of the future-dated v4.0.1 controls, and on the headline one its own configuration surface shows the control absent rather than merely unmentioned. 'User Management' (art. 44753081545619) publishes a Login Type for every one of its ten roles and the complete enumerated set is 'Username & Password', 'Email & Password' or 'Pin Code'; 'Otter Account Logins' (art. 42099611842195) walks the entire Otter Dashboard sign-in and credential-management surface - sign in with email and password, edit email, change password, forgot-password reset - with no second factor, TOTP, push, SMS step-up, SSO or enforcement toggle. So MFA for back-office and POS administrative access is not offered, let alone enforced. For hosted ordering pages, no payment-page script-integrity or change-detection statement (Req 6.4.3 / 11.6.1) exists for Otter's Direct Orders, QR ordering or kiosk checkout surfaces. More broadly there is nothing to document against: www.tryotter.com/security and /trust return 404, trust./security./compliance.tryotter.com do not resolve, the complete sitemap-0.xml (2,521 URLs across seven locales) contains no security, trust, compliance or PCI page, the /legal index's 20 documents include no security statement, and the published DPA names no standard. The Tech Services Terms instead place PCI compliance on the merchant. https://helpdesk.tryotter.com/hc/en-us/articles/44753081545619-User-Management · retrieved 2026-08-08
Vendor states it holds a current SOC 2 Type II (or ISO 27001) attestation and will provide the report under NDA via a trust center or on request.
commercial-soc2-attestation
Otter makes no such statement, and its own content is the clearest evidence. The blog post 'Why SOC II Compliance Is Important' (www.tryotter.com/blog/restaurant-tips/why-soc-ii-compliance-is-important, retrieved 2026-08-08) argues that restaurant chains should demand SOC 2 from their technology vendors and never claims the attestation for Otter; its closest self-description is 'We've built our entire platform with the understanding that you can't afford vendors who cut corners on security or reliability.' There is no trust centre to hold a report: trust.tryotter.com, security.tryotter.com and compliance.tryotter.com do not resolve; www.tryotter.com/security and /trust return 404; the complete sitemap-0.xml (2,521 URLs across the US, CA, en-au, en-gb, es-es, es-mx and fr-fr locales) contains no security, trust or compliance page; the /legal index's 20 published documents contain no attestation; and the published Data Processing Addendum requires only 'appropriate technical and organizational measures' while naming no ISO 27001, SOC 2 or PCI standard - the natural place for a processor to cite one. No offer to provide a report under NDA or on request appears anywhere on tryotter.com or in the 292-article help centre. https://www.tryotter.com/blog/restaurant-tips/why-soc-ii-compliance-is-important · retrieved 2026-08-08
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
The DPA half is satisfied; the in-app tooling half is not. Otter publishes a Data Processing Addendum at www.tryotter.com/legal/dpa (with ca-dpa and en-au/dpa variants), and the Tech Services Terms make it self-executing rather than something to negotiate: 'Our Data Processing Addendum is incorporated by this reference into, and made a part of, these Terms.' It binds sub-processors to obligations 'substantially similar or more stringent than those set out in this DPA'. SHORTFALL: the DPA puts data-subject-request fulfilment on the operator - 'Vendor shall promptly notify Customer if it receives a request from a Data Subject to exercise any of the Data Subject's rights', with Otter providing only 'commercially reasonable cooperation and assistance' - and no in-product tooling is documented to act on one. The Guest Directory (art. 40222270130963) can locate an individual guest by name, phone number or email and edit their profile and reward balance, so the 'locating' element exists, but the 292-article help centre documents no per-guest export, no delete, erase or right-to-be-forgotten action, no consent or privacy-request queue, and no CCPA/CPRA opt-out surface beyond a marketing-subscribed flag; deletion on termination is committed only to 'within a reasonable period'. https://www.tryotter.com/legal/dpa · retrieved 2026-08-08
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
A non-visual access mode is documented; a conformance report is not. 'Kiosk (27" & 21") Setup Guide' (art. 39076370297875) lists among the kiosks' key features 'Accessibility-First Design - Self-service terminals typically present information via a touchscreen display. With an accessible keypad ensures that customers who cannot interact with a touchscreen have equal access to all self-ordering services' - a documented tactile alternative to the touchscreen. The 'Otter Kiosks Introduction Guide' (art. 39076742954771) asserts the kiosks are 'ADA-compliant to ensure accessibility for all customers', alongside powder-coated steel construction, contactless reader and tamper-resistant mounting. SHORTFALL: no accessibility conformance report exists - the strings VPAT, ACR, WCAG and Section 508 appear nowhere in the 292-article help centre nor anywhere in the 2,521-URL www.tryotter.com sitemap, and there is no accessibility statement page in any of its seven locales; the ADA assertion is a bare marketing-grade claim with no standard, version or audit named. The accessible keypad is described only for the Kiosk Pro 27" and Kiosk 21", not the Kiosk Mini 15" or POS Kiosk Mode; and nothing addresses the consumer web-ordering, QR-ordering or Direct Orders surfaces the claim also covers. https://helpdesk.tryotter.com/hc/en-us/articles/39076370297875-Kiosk-27-21-Setup-Guide · retrieved 2026-08-08
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
Half the claim is documented, the compliance half is not. 'Otter POS Cash Discounts' (art. 27244902024723, updated 2025-06-02) documents a real configurable feature: 'You can set up cash discounts in the Otter dashboard to reward eaters who pay with cash! Once the customer decides to pay by cash, the cash discount will be auto-applied to the order in the Otter POS terminals.' It is configured under [POS] > [Cash Management], 'By default, a 3% discount will apply to all your locations', with a per-location percentage override and a location search once past five locations; the POS settings article confirms the toggle - 'Enable cash discounts: Toggle on [Enable cash discounts] to set a discount amount for cash transactions' (art. 27245439440147). At the terminal 'the cashier will be able to see the cash discount percentage indicator' and 'the diner will be able to view the cash discount on the diner-facing screen'. SHORTFALL, three parts. (1) It is a cash discount only - no card surcharging, dual-pricing menu or non-cash adjustment feature is documented anywhere in the 292-article help centre, so the automatic debit-and-prepaid exclusion the claim requires has no surcharge to exclude them from, and nothing addresses the network surcharge cap or state-level surcharge bans. (2) No receipt or menu-board disclosure is documented: the discount is shown on the cashier screen and the diner-facing display, and the article says nothing about printing the differential on the receipt or about menu-board signage, which is the disclosure the card networks require. (3) A documented functional gap - 'Cash discount only applies to the orders that paid fully by cash without split payment. If customer select split payment, cash discount will not apply to each payment even if the payment is by cash.' The nearest adjacent feature, a configurable percentage Service Fee added as a line item at checkout and shown on the receipt (art. 27245439440147), applies to every order in a fulfilment mode regardless of tender, so it is not a card-conditional charge either. https://helpdesk.tryotter.com/hc/en-us/articles/27244902024723-Otter-POS-Cash-Discounts · retrieved 2026-08-09 adversarially verified
Adversarial verification
An independent pass was instructed to refute this record, defaulting to downgrade when uncertain. It challenged 156 values — 106 upheld, 30 downgraded, 20 upgraded. It separately resolved 159 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.
Pricing and identity
| Field | Verdict | What the verifier found |
|---|---|---|
| pricing.software | upheld | Verified verbatim on the pricing page ($314→$198, $657→$657/$541, both "+ per order transaction fee"), on the Order Manager page ($149/mo base) and in the site nav ("Point of Sale: Starting at $19/mo"). source |
| pricing.software | downgrade-to-unknown | These two figures do not survive checking and appear transposed. The Online Ordering product page contains no $40 figure and no standalone per-location price at all — only the $198/$541 bundles. The site nav lists "QR Ordering: Starting at $30/mo" while the QR product page (digital-dine-in) states "$40/mo per location" for QR Ordering. Otter's own pages disagree; neither module price should be reported as established. source |
| pricing.software | downgrade-to-unknown | No price of any kind appears on the Analytics product page. A $0 entry is a strong claim (it underwrites the "legible modular pricing" best-at bullet) and I could not source it. source |
| pricing.hardware | upgrade-to-yes | Partially wrong: the KDS page publishes KDS pricing explicitly — $15/mo software plus $75/mo hardware rental or $1,000 purchase for the 21" kitchen-grade Android display. Only the terminal, reader and printer are unpriced. The researcher's hardware transparency picture is more complete than reported. source |
| pricing.contract_length | upheld | Confirmed: the pricing page surfaces the question "Is there a cancellation fee?" but renders no answer, and /terms is a website ToS, not the merchant agreement. Correctly unknown. |
| api_posture.public_api | resolve-to-yes | The premise named the wrong host. developer-guides.tryotter.com 301s every path to connect.tryotter.com/docs/, which serves a 465 KB OpenAPI 3.0.1 document (70 paths, 98 operations, 357 schemas), 53 guides in llms-full.txt, an llms.txt discovery manifest, an agent-index.json, a 2.2 MB BM25 agent-search.json and an MCP endpoint. OAuth 2.0 client-credentials and authorization-code flows against https://partners.tryotter.com, X-Store-Id store scoping, per-operation rate limits. The field is recorded as partner-gated, not open: registration is manual through an Account Representative and scopes are configured by Otter internal team. developer.tryotter.com itself is still a soft-200 SPA shell (1,139 bytes, 199 characters of stripped text for /robots.txt and for a fabricated filename alike), which is what the earlier pass measured. source |
| api_posture.webhooks | resolve-to-yes | The Quickstart documents registration, signature validation and acknowledgement: receivers must "Validate X-HMAC-SHA256 on every request" and "Return 2xx quickly; do heavy work asynchronously", and endpoint registration runs through an Account Representative. The OpenAPI document carries the event catalogue (orderCreate, orderUpdate, intentToCancelOrder, orderStatusUpdate, plus delivery, menu, storefront, loyalty and review events). source |
| pricing.contract_length | resolve-to-partial | The premise was false. tryotter.com/legal carries 42 documents, and the Otter Tech Services Terms are the merchant agreement. They publish the auto-renewal and the notice period: "We will continue to charge you on a monthly basis throughout the duration of your subscription term and any subsequent renewal terms, unless you decide to cancel at least 30 days prior to the end of your current subscription term by written notice". The LENGTH of the initial term is still deferred to a non-public Order Form, so the field moves from unknown to partly published rather than fully settled. source |
| pricing.early_termination_fee | resolve-to-no | No separate early-termination fee exists, but early exit is not free: "If you cancel during the subscription term, you will not be issued any refunds for or credits of any prepaid and unused fees for the remainder of the subscription term, and you will be required to pay any and all unpaid fees related to the subscription term." Leased hardware carries a separate, refundable Unreturned Equipment Fee — list price plus a 10% administrative fee if not returned within 60 days after termination. source |
Capability claims
| Claim | As first scored | Verdict | What the verifier found |
|---|---|---|---|
| reporting-custom-report-builder | yes (claimed) — "Custom report builder with scheduled email delivery and data export options" | downgrade-to-unknown | I re-fetched the cited page twice with a verbatim-quote prompt. The Analytics page contains no phrase resembling "custom report builder". Its only feature bullets are four generic benefit statements (drive more sales / see everything in one place / identify what's working / enhance delivery-app ads) and its FAQ list is: how do I navigate Analytics, is my data secure, what information does Otter look at, how long to receive personalized insights, "Can I export insights to a CSV?". The quoted sentence in the dossier is not on the page. source |
| reporting-scheduled-delivery | yes (claimed) — scheduled email delivery of reports | downgrade-to-unknown | Same fetch: no occurrence of "scheduled", "email delivery", or report subscription anywhere on the Analytics page. This score and the report-builder score appear to derive from the same unsourced sentence. source |
| payments-published-rates | no (documented) | upheld | Verified: both bundles read "+ per order transaction fee" with no figure, and no card rate appears on the pricing page. Cash-discounting is mentioned only on Build Your Own. source |
| commercial-interchange-plus-published | no (documented) | upheld | Confirmed — no rate structure of any kind published. source |
| extensibility-doordash-preferred | yes (documented) — 2026 DPIP cohort, announced 18 May 2026 | upheld | Verified independently and the dossier gave no URL for it. DoorDash newsroom post dated 18 May 2026 names the 2026 cohort: Checkmate, Chowly, Deliverect, Otter, PAR, Qu, Square, Stream, Toast, UrbanPiper. Note Otter was also in the 2025 inaugural cohort (PRNewswire), so this is a renewal, not a new certification. source |
| delivery-daas-dispatch | yes (documented) — "Native courier handoff to DoorDash Drive, Uber Direct, Relay, Shipday, Nash and ChowCall" | downgrade-to-partial | The word "native" is not supportable. Every courier named sits in Otter's third-party integrations directory under a "Couriers" category alongside POS and inventory partners — i.e. partner-delivered, requiring the operator to hold a separate Relay/Shipday/Nash/Drive account. No dispatch surface, quote/compare logic, or handoff configuration is documented in any Otter product page. Uber Direct and DoorDash Drive are named on the online-ordering page as "your preferred delivery partners", which is the language of an integration, not a first-party dispatcher. source |
| delivery-driver-roster | no (documented) — "No in-house driver module exists" | downgrade-to-unknown | The cited integrations page actually says the opposite of what was scored: the Couriers category reads "Connect your delivery operations to Otter to unify fulfillment and dispatch with your own drivers." The online-ordering page says operators can "handle deliveries in-house or work with your preferred delivery partners", the catering page lists "third-party or in-house delivery options", and there is a /products/couriers page. None of this documents a driver roster with rates or shift assignment — but it removes the basis for an affirmative "no". Not documented publicly either way. source |
| delivery-dispatch-board | no (documented) | downgrade-to-unknown | Same defect. Otter markets "dispatch with your own drivers" and an Otter product page for Couriers exists (I could not retrieve readable content from it — the fetch returned generic site chrome). Whether the dispatch UI is Otter's or handed to Shipday/Nash is undetermined. An affirmative "no" requires a source stating the absence; there is none. source |
| delivery-route-map | no (inferred) | downgrade-to-unknown | Inferred from the now-unsafe premise that no in-house driver capability exists. No source addresses route maps either way. |
| delivery-driver-tracking | no (inferred) — "No first-party driver app exists to source GPS from" | downgrade-to-unknown | Same broken premise. Separately, the catering page references "real-time delivery tracking", which is unexplained and cuts against a confident no. source |
| delivery-cash-reconcile | no (inferred) | downgrade-to-unknown | Chained inference off the in-house-driver premise; no source. |
| delivery-driver-comp | no (inferred) | downgrade-to-unknown | Chained inference off the in-house-driver premise; no source. (The absence of a labor module is separately documented, but that does not affirmatively establish absence of driver pay lines.) |
| guest-loyalty-accrual-models | yes (documented) — earn by amount spent AND earn by specific items purchased | downgrade-to-partial | A verbatim re-fetch of the Loyalty page surfaces only a points-per-purchase model with customizable reward naming (points/stars/bucks). Item-specific accrual is not in the retrievable text. One documented model, not two. source |
| guest-loyalty-wallet-pass | yes (claimed) — digital wallet pass listed as a loyalty feature | downgrade-to-unknown | No mention of Apple/Google Wallet or a digital pass appears in the retrievable Loyalty page content — enrollment and redemption are described as mobile QR code plus POS. This is a yes resting on text I could not find on the cited page. source |
| guest-loyalty-native-email-sms | partial (claimed) — Loyalty page references SMS/email capability | downgrade-to-unknown | No SMS or email marketing/messaging reference is retrievable on the Loyalty page. The dossier itself notes the paid Marketing product is delivery-app advertising, not CRM messaging, so nothing supports even a partial. source |
| reliability-offline-kds-printing | yes (claimed) | downgrade-to-partial | The sole evidence is a competitor-comparison feature table on Otter's own POS marketing page (vs Clover/Square/Revel/Toast) — the weakest possible class of vendor claim, and self-serving by construction. The KDS product page itself, which I fetched in full, never mentions offline mode. A checkmark in a competitive matrix with zero scope documentation should not carry a "yes". source |
| digital-fulfillment-modes | partial — "Curbside with arrival check-in is not documented" | upgrade-to-yes | Curbside pickup IS listed as a supported fulfillment mode on the Online Ordering page, alongside pickup, delivery (in-house or partner) and QR dine-in. Arrival check-in specifically remains undocumented, but the mode set is complete enough that partial understates it. source |
| digital-account-saved-payment | unknown | resolve-to-yes | Researcher missed it: the Online Ordering page documents guest accounts where customers "save their information for repeat orders". Card-on-file specifically is not stated, so treat as partial-to-yes on guest accounts only — I would accept partial, but it should not remain blank unknown. source |
| reporting-multiloc-drilldown | yes (documented) — "Multi-location comparison in Analytics" | downgrade-to-partial | The cited Analytics page carries no multi-location comparison language in its retrievable content — the multi-location claims live on the POS and Loyalty pages as generic "multi-location and multi-brand management". Roll-up-then-drill-down to a single store is not documented. source |
| multi-location-consolidated-reporting | yes (documented) | downgrade-to-partial | Same evidentiary gap: aggregation across locations is asserted at marketing level on the POS page, but the Analytics page I fetched does not document a consolidated cross-location reporting view. source |
| extensibility-public-api-docs | unknown | upheld | Independently confirmed. developer.tryotter.com returns nothing but a "Developer Portal" heading; no reference, auth model, sandbox or webhook documentation is retrievable. The researcher was right to refuse to score this. source |
| reporting-public-api | unknown | upheld | Same — no public API surface is documented. Correctly withheld. |
| menu-pricing-fractional-placement | unknown (inferred) | upheld | Verified the pizzeria landing page directly: it contains no reference to halves, quarters, fractional toppings, crusts, size matrices or included-topping allowances — only "Personalize every order with easy-to-use modifiers." Correctly left unknown rather than scored no, since Otter never affirmatively denies it. source |
| reliability-public-status-page | yes (documented) — 11 components, 2026 archive of 22 incidents, no uptime % | upheld | Verified exactly: 11 named components all Operational, no uptime percentages, 2026 archive showing 22 incidents Feb–Jul including "DoorDash orders not injecting" and Uber Eats sync failures. source |
| digital-first-party-web | yes (documented) — 0% commission | upheld | Verified verbatim: "0% commission fees… No hidden fees, no commissions." Caveat worth carrying: the per-order transaction fee attached to every bundle is never quantified, so "0% commission" is a channel-commission claim, not an all-in cost claim. source |
| delivery-3p-injection | yes (documented) | upheld | Verified on the Order Manager page: consolidated chronological queue across channels, auto-accept and auto-print, bidirectional POS sync, prep-time updates and item removal from online menus. source |
| reliability-247-live-support | yes (claimed) — presented as included, not a premium tier | downgrade-to-partial | "Available 24/7/365", the +1 888-681-8837 number and the "average response time: 2 minutes" metric are all on the support page as claimed. But the page does not state that support is included in every plan — the pricing FAQ separately asks "Does Otter include support in its plans?" and the answer is not retrievable. The inclusion half of the score is unsourced. source |
| menu-pricing-modifier-price-by-parent-size | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-no | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Positive-absence basis: Help-centre modifier docs give a modifier item one Default Price plus Advanced Pricing per fulfillment option, delivery partner, channel and location (Menu Item Pricing, art. 36253606306195) - parent item and parent size are not pricing dimensions anywhere. The modifiers article's own guidance for size-dependent options is to duplicate items per size ('Small fries / Medium fries / Small curly frie source |
| menu-pricing-topping-quantity-tiers | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-no | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Positive-absence basis: Modifier-group configuration is fully enumerated: name, required/optional, 'Set Modifier Limit Type - select the number of times that a modifier can be selected on an item', min/max total selections, eight group-type cards, default modifiers and negative modifiers. Quantity is handled by selecting the same modifier multiple times - the add-it-twice model the claim distinguishes - and no light/regu source |
| menu-pricing-included-allowance | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-no | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Positive-absence basis: The documented modifier-group fields stop at min/max selection counts, default modifiers and negative modifiers; no included-allowance construct charges only for overage. Negative modifiers (a negatively priced modifier item) are the only documented credit mechanism and are 'currently not supported on Otter POS'. The pizzeria landing page likewise offers only 'easy-to-use modifiers'. source |
| menu-pricing-countdown-auto-86 | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-no | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Positive-absence basis: The Item Availability doc enumerates exactly three states - Available, Unavailable Today (auto-restores at midnight) and Unavailable Indefinitely - all set manually from Dashboard, POS, Order Manager or the Otter Go app. No per-item countdown/par count exists, nothing decrements on sale, and the only auto-restore is the fixed midnight reset. Otter also ships no stock ledger that could drive one. source |
| payments-surcharge-guardrails | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-no | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Positive-absence basis: Otter's documented card-fee offset is a cash-discount program (default 3%, per-location percentage, auto-applied only when an order is paid fully in cash), on fixed processing of 2.3% + $0.10 card-present with 'no other payment processors'. 'Surcharge' returns zero results across the entire help centre; no surcharging engine, BIN-based debit/prepaid exclusion or network-cap enforcement exists to d source |
| payments-refund-void-controls | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-partial | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Named-shortfall basis: Role gating is documented: per-employee PINs with a manager-override screen, refunds reserved to Supervisors on POS and to the Billing Admin role in the Dashboard, any discount lockable behind Supervisor/Manager/Admin approval, drawer opening permission-gated; the Voided Transactions report is immutable ('you cannot make edits to the voided orders log') with staff attribution, void reason and time source |
| delivery-zone-pricing | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-partial | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Named-shortfall basis: Direct-order delivery supports distance-banded fees ('For deliveries within 0-2 miles, the delivery fee is $2.00 and deliveries within 2-4 miles have a delivery fee of $4.00'), driving-distance or straight-line area definition, and delivery-fee-specific tax. source |
| digital-subscriptions | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-no | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Positive-absence basis: Otter's guest-retention stack is enumerated across the help centre's Loyalty, Marketing and Online Ordering sections: a free points program supporting only amount-based and purchase-based earning with four discount redemption types, plus SMS campaigns, discounts/promotions and gift cards. No recurring guest billing, paid tier, fee-waiver membership or per-period entitlement appears in any of them, source |
| guest-loyalty-consent-management | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-partial | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Named-shortfall basis: A per-guest 'Marketing subscribed status' is stored and filterable (a 'Marketing Opt-in' filter also exists in Customer Reports, art. 25246908493587); loyalty enrollment is opt-in-prompted at POS and kiosk, and eaters can change notification preferences in their own profile. source |
| guest-loyalty-redemption-fraud-controls | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-no | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Positive-absence basis: The vendor's own doc states the opposite of guardrails: 'Currently, there is no minimum amount of earned points needed to redeem' and 'no maximum limit on the amount of points that can be redeemed at one time'. Manual balance adjustment is a two-click Guest Directory action with no approval step documented, and no employee-self-redemption flagging exists anywhere in the loyalty docs. A per-guest r source |
| labor-granular-rbac | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-partial | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Named-shortfall basis: Beyond ten fixed system roles, Admins can build custom roles per app feature with brand- and location-scoped assignment, and the Cash app documents genuinely discrete grants (Open Drawer, Pay in/Payout, Edit Drawer, End Drawer, Manage Drawer, Remote Finish Drawer, View Only - art. 26562624877459) plus per-discount manager-approval locks. source |
| labor-manager-override-audit | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-partial | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Named-shortfall basis: Individual PIN identity underpins auditing ('this feature also ensures you can monitor actions for auditing and reporting purposes' - art. 26844590516755); the Voided Transactions report is per-staff-member, timestamped, reason-coded and immutable, and cash-drawer edits display the editing user's name beside the changed value. source |
| labor-tip-distribution-audit-trail | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-partial | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Named-shortfall basis: The Hourly Tip Report breaks tips down by hour, staff member (via PIN login) and device, filterable by date, brand, location, staff member and channel, and is positioned for payroll use. source |
| reporting-history-retention | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-no | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Positive-absence basis: No 24-month transaction-detail retention window is documented anywhere; the one retention figure Otter publishes is a cap - 'The Orders History Dashboard will only show data from orders within the last 180 days' - with users pointed to the Analytics app for older data without any stated window. The claim requires a documented >=24-month window with no silent truncation; what Otter documents is the source |
| extensibility-oauth-partner-apps | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-no | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Positive-absence basis: The documented partner auth model is an API key: after a partnerships-team screen, 'our technical team will provide you access to our developer portal where you will have access to your API key and staging environment', followed by manual certification calls and phased onboarding. No OAuth 2.0 grant flow, operator-facing consent screen, scoping or per-app revocation appears anywhere, and the publi source |
| reliability-printer-fallback | unknown (F) - placeholder rationale 'No public documentation located during the 2026-08-01 research pass', i.e. the cell was never examined | resolve-to-partial | Resolved from the vendor help centre (helpdesk.tryotter.com), which the earlier passes missed entirely - the HTML front-end 403s automated clients but article bodies are readable via the site's public Zendesk API. Named-shortfall basis: The alert half is documented: 'When a Bluetooth or Front of House printer has connectivity issues, an alert will let you know an issue has been detected and prompt you to run diagnostics.' source |
| digital-google-order | unknown (placeholder — never examined) | resolve-to-yes | The help centre both earlier passes missed carries a full 'Order with Google Integration Guide': customers 'order directly from Google maps, Google pay, Assistant and more', pickup and delivery, 'sending customers directly to you, without any commissions or fees'. Setup is form-based (Google Business Profile link, Stripe API keys, delivery config) and Google Food Ordering supports only a single menu per location, both noted in the cell. Grade B admin-guide evidence satisfies the differentiator floor. source |
| guest-loyalty-referral-program | unknown (placeholder — never examined) | resolve-to-no | Positive evidence of absence by enumeration: 'Creating a Loyalty Program' lists everything a program can be built from — 'Amount-based Loyalty Program, Purchase-based Loyalty Program, Reward Redemption Options' — and the Loyalty section's five articles (Introduction, Creating, Points, Customer Profiles, Insights & Reporting) contain no referral mechanic. 'refer a friend' returns zero results across all 292 help-centre articles; 'referral' matches only reseller partner-program pages. Per-guest codes, referred-order attribution and two-sided rewards are outside the enumerated earning models. source |
| reporting-tip-tax-compliance | unknown (placeholder — never examined) | resolve-to-partial | Named-shortfall basis: the Hourly Tip Report gives tips by hour, staff member and device 'to help you manage payroll', tip-on-receipt books charged tips post-payment, and Tax Reports expose Tax Collected/Remitted/Withheld with CSV export — but there is no declared-versus-charged tip comparison, no tip pooling feature anywhere in the help centre (hence no distribution detail), no by-jurisdiction tax liability summary (the vendor's own steps have you sum columns in a spreadsheet), and third-party tips carry no staff attribution. source |
| menu-pricing-franchise-hierarchy | unknown (F) | resolve-to-no | Otter's product.yaml states no table-service or franchise ICP is addressed. Menu management supports per-location items but explicitly does not document franchise hierarchy, franchisee roles or royalty-driven pricing. Integrations directory contains no franchise-governance tools. source |
| payments-tip-pooling | unknown (F) | resolve-to-no | Otter has no labor module (confirmed: integrations directory lists 7shifts, Homebase, WhenIWork, Deputy as alternatives). Tip pooling presupposes employee records and labor allocation. The Hourly Tip Report breaks tips by individual staff member; no pool, redistribution feature or pool-member assignment is documented. source |
| digital-voice-ai-phone | unknown (F) | resolve-to-no | Checked all Otter product pages and integrations: no AI phone ordering, voice-to-order or PSTN/RCS messaging product is documented. Otter's AI references are limited to delivery-app ad optimization. No phone integration appears anywhere in the product catalog. source |
| digital-drivethru-ai | unknown (F) | resolve-to-no | Checked all Otter product pages: Otter documents kiosk, online ordering, QR dine-in and POS, but no drive-thru ordering, speaker integration or order-recognition product is documented. No drive-thru flow appears in the product matrix. source |
| digital-sms-ordering | unknown (F) | resolve-to-no | Checked all Otter product pages and integrations: no SMS ordering, WhatsApp commerce or text-to-order product is documented. Otter Marketing pushes SMS campaigns (promotions only), not order capture. Online ordering channels are web, kiosk and QR only. source |
| labor-clock-in-at-pos | unknown (F) | resolve-to-no | Otter has no labor/timekeeping module. Integrations directory (verified 2026-08-04) delegates labor to 7shifts, Homebase, WhenIWork and Deputy. No native employee records, punch functionality or time-tracking capability exists. source |
| labor-photo-punch-verification | unknown (F) | resolve-to-no | Otter has no labor/timekeeping module. Integrations directory (verified 2026-08-04) delegates labor to 7shifts, Homebase, WhenIWork and Deputy. No native punch, photo verification or mobile clock capability exists. source |
| labor-geofenced-mobile-punch | unknown (F) | resolve-to-no | Otter has no labor/timekeeping module. Integrations directory (verified 2026-08-04) delegates labor to 7shifts, Homebase, WhenIWork and Deputy. No native geofencing, mobile punch or location-based timekeeping exists. source |
| labor-offline-time-punch | unknown (F) | resolve-to-no | Otter has no labor/timekeeping module. Integrations directory (verified 2026-08-04) delegates labor to 7shifts, Homebase, WhenIWork and Deputy. No native timekeeping, offline punch queueing or local time-entry capability exists. source |
| labor-realtime-labor-percent | unknown (F) | resolve-to-no | Otter has no native labor hours, payroll or cost data. Integrations directory (verified 2026-08-04) delegates labor to 7shifts, Homebase, WhenIWork and Deputy. Real-time labor-cost percentage requires native timekeeping Otter does not provide. source |
| labor-tip-pooling-rules | unknown (F) | resolve-to-no | Otter has no labor module. Tip pooling presupposes employee records and labor allocation. The Hourly Tip Report breaks tips per staff member via PIN but no pool, redistribution rules or pool-member assignment exists. Integrations directory delegates labor to 7shifts, Homebase, WhenIWork and Deputy. source |
| labor-qualified-tips-w2-reporting | unknown (F) | resolve-to-no | Otter has no labor/payroll module. Integrations directory (verified 2026-08-04) lists no payroll provider. W-2 reporting, tip allocation and payroll compliance require native employee records and accounting export Otter does not provide. source |
| labor-server-performance-metrics | unknown (F) | resolve-to-no | Otter has no native labor data or time clock. Integrations directory (verified 2026-08-04) delegates labor to 7shifts, Homebase, WhenIWork and Deputy. Server performance scorecards require employee time records Otter does not maintain. source |
| reporting-server-scorecards | unknown (F) | resolve-to-no | Otter has no native labor data or time-clock. Analytics reports best/worst items and sales by channel/location. Server-by-server metrics require employee records and labor association Otter does not maintain. source |
| multi-location-corp-vs-franchisee-roles | unknown (F) | resolve-to-no | Otter's product.yaml states no franchise ICP is addressed. The enterprise page sells reporting and alerting, not franchising governance. No franchisee role, corporate-approval workflow or franchise-hierarchy management is documented. source |
| multi-location-royalty-calculation | unknown (F) | resolve-to-no | Otter has no franchising product or franchisee-role capability. Integrations directory (verified 2026-08-04) lists no royalty-calculation or franchise-accounting tools. Royalty calculation presupposes a franchise model Otter does not support. source |
| multi-location-royalty-collection | unknown (F) | resolve-to-no | Otter has no franchising product or franchisee-role capability. Integrations directory (verified 2026-08-04) lists no royalty-calculation or franchise-accounting tools. Royalty collection presupposes a franchise model Otter does not support. source |
| labor-clock-in-at-pos | no (F) — Otter has no labor/timekeeping module. Integrations directory delegates labor to 7shifts, Home | upgrade-to-yes | The premise was false. The help centre (public Zendesk API; the HTML front-end 403s automated clients) documents a native Time Card app on the POS: staff open it from the device home screen and 'enter your employee pin code' to clock in and out; Staff Timecard Reporting (art. 26845973817491) exposes clocked hours with Time/Location/Role/User filters and XLS export, and handhelds run the same app (art. 35667642715283). PIN punch at the POS terminal with no separate time-clock hardware is the claim verbatim. The prior pass checked only tryotter.com marketing pages and read the integrations directory's Labor category as proof no native timekeeping exists. source |
| labor-offline-time-punch | no (F) — Otter has no labor/timekeeping module. No native timekeeping, offline punch queueing or local | downgrade-to-unknown | The premise was false — the Time Card app documents native PIN punching, and the handheld POS devices that run it list offline-mode support among their features. Whether punches record while offline and reconcile on reconnect is documented nowhere: the offline-mode article's scope covers orders, payments, pairing and printers without mentioning timecards. That is absence of documentation on hardware that plausibly supports it, not positive absence, so unknown. source |
| labor-realtime-labor-percent | no (F) — Otter has no native labor hours, payroll or cost data. Real-time labor-cost percentage requir | upgrade-to-partial | False premise twice over: timecards are native, and a labor-vs-sales view is documented. The Labor Cost Report 'provides an aggregated view of employees' hours worked, wages, and labor costs compared to sales', and the Analytics Staff section carries 'Labor as percent of Sales', Labor Hours and 'Orders per labor hour' (art. 12558297776147). Partial rather than yes: wage data populates only with an active Homebase integration, the view is in the Dashboard Analytics app rather than a POS or in-service manager surface, and freshness is undocumented — Otter's own FAQ warns sales reports can lag 24-36 hours (art. 360052674054). source |
| labor-server-performance-metrics | no (F) — Otter has no native labor data, time clock or sales-per-labor-hour calculation. Server perfor | upgrade-to-partial | The Analytics guide documents Staff Performance with clickable Individual Staff Member Performance (Orders/hour, Average Prep Time, Average Star Rating, Order Issues Rate); the Voided Transactions report attributes voids per staff member and the Hourly Tip Report breaks tips per staff member. Per-employee performance reporting therefore exists; what is missing is the sales half the claim names — no per-employee average check, attachment rate, comp rate or revenue figure. Partial with that named shortfall. source |
| menu-pricing-franchise-hierarchy | no (F) — Otter's product.yaml states no table-service or enterprise franchising ICP is addressed. Menu | upgrade-to-partial | The 'Corporate & Franchisee Permissions' article the prior passes never found documents the shape this claim asks about: Corporate keeps 'menu cohesion' across all stores regardless of ownership, only Corporate users can create or delete menu items, and a Franchisee permissions tab toggles what franchisees may edit (publishing menus, menu hours, item availability). Partial rather than yes: governance is feature-level and applies brand-wide uniformly ('you're not able to select these permissions or locations individually to turn them ON or OFF'), with no field-level or per-location override control documented. source |
| multi-location-corp-vs-franchisee-roles | no (F) — Otter's product.yaml states no franchise ICP is addressed. The enterprise page sells reportin | upgrade-to-partial | Directly contradicted by the vendor's 'Corporate & Franchisee Permissions' doc: a Brand owner (Corporate) tenant is distinguished from Brand user (Franchisee) accounts, Corporate Admins manage menus for all stores regardless of ownership, and franchisees separately manage their location including their own billing ('Corporate users only view billing & subscription information for... stores for which they are the billing owner'), payment methods and analytics. Partial: corporate visibility into franchisee sales is not explicit — the doc's scope is menu governance and dashboard visibility — and employee/labor-data ownership is unaddressed. source |
| labor-demand-labor-forecast | no (F) — No labor module exists to forecast into. | upgrade-to-partial | The premise is dead and it hid a real feature: the Analytics Staff section's 'Staff hours Optimization' chart 'takes your order volumes for a given period and calculates an optimal staffing rate to meet demand', compares optimal against actual staffing and 'calls out days where the kitchen may have been overstaffed'; 'Orders per labor hour' renders in 15-minute buckets. Partial, not yes: it is retrospective day-level Dashboard analysis rather than a forward-looking daypart forecast, and there is no native scheduling surface to apply it to — shift schedules come from LMS integrations (Deputy, Homebase, 7shifts, WhenIWork). source |
| labor-overtime-prevention | no (F) — No native timekeeping to enforce against. | upheld | The rationale was false — the Time Card app is native timekeeping — but the conclusion survives on positive evidence: the clock-in flow is documented end to end (PIN entry, Clock in / Clock out prompt, confirmation) with no threshold warning or block in it; the only overtime-adjacent signal is retrospective, report totals under 2 or over 12 hours 'displayed in red' in the Dashboard Staff app; wages and policies live in the LMS integrations, and a help-centre search for 'overtime' returns only the unrelated Check Options article. Re-grounded at grade B on the Time Card doc. source |
| labor-shift-swap-workflow | no (F) — Delegated to scheduling partners. | upheld | Premise re-examined against the actual labor docs: the native labor surface is the terminal-bound Time Card applet (clock in/out) plus Dashboard reporting; there is no employee self-service app and no schedule or shift entity to swap or claim. The Staff analytics guide sources 'shift schedules' from supported LMS 'like Deputy, Homebase, 7shifts, and WhenIWork', and the integrations directory re-retrieved today lists exactly those four under Labor. Re-grounded at grade B; delegation to scheduling partners is now vendor-documented rather than inferred. source |
| labor-break-compliance-by-state | no (B) — RE-GROUNDED (2026-08-02 re-score). Previously a "no" whose stated rationale was "Migrated | upheld | The note's premise ('Otter publishes no labor, timekeeping... product') is disproved, but the strongest evidence for this cell was never the integrations directory: Otter's own Homebase Integration Guide states 'All timecard data is automatically sent to Homebase, where you can view and edit timesheets, as well as log breaks' — break logging happens in the partner portal, not Otter. The native Time Card flow documents clock in/out only, with no break punch, attestation prompt, jurisdiction rules or missed-break premium flag anywhere in the help centre. Note rewritten onto the Homebase guide. source |
| labor-fair-workweek-support | no (B) — RE-GROUNDED (2026-08-02 re-score). Previously a "no" whose stated rationale was "Migrated | upheld | The inherited premise (no labor product at all) is disproved, but fair-workweek support presupposes native schedule publishing, and that specific absence is documented: the Staff analytics guide sources 'shift schedules' from LMS integrations and its Labor Hours chart falls back to scheduled hours only 'if no timepunches are available' — schedules are imported, not authored. No advance-notice deadline tracking or predictability-pay calculation appears in the help centre; 'forecast' returns zero articles. Note rewritten off the integrations-directory argument onto the analytics doc. source |
| labor-minor-labor-rules | no (B) — RE-GROUNDED (2026-08-02 re-score). Previously a "no" whose stated rationale was "Migrated | upheld | The inherited premise (no employee record at all) is disproved — but the actual employee record, documented step by step in the add-user flow, holds first/last name, role, a 4-digit PIN and optional email/phone. No date of birth means age-based hour and time-window rules have nothing to key on; the Time Card clock-in flow enforces nothing beyond PIN entry; and schedule-side enforcement is impossible because Otter has no scheduling module. Re-grounded at grade B on the PIN Codes doc. source |
| labor-digital-onboarding-i9 | no (B) — RE-GROUNDED (2026-08-02 re-score). Previously a "no" whose stated rationale was "Migrated | upheld | The inherited premise (no employee record at all) is disproved — but new-hire intake in Otter is exactly the documented add-user flow: name, role, PIN, optional email/phone, then an email invitation to set a password. No W-4, I-9, E-Verify or document-capture step appears anywhere in the help centre ('onboarding' hits are all merchant onboarding), and the integrations directory re-retrieved today still lists no payroll or HR provider among its eight categories. Re-grounded at grade B on the User Management doc. source |
| menu-pricing-86-propagation | partial, grade B - 86 propagates across POS, KDS, kiosk, online ordering and co | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| menu-pricing-dayparting | partial, grade B - Grade raised D->B on documentation quotes retrieved 2026-08- | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| menu-pricing-3p-menu-push | yes, grade B - Re-confirmed verbatim 2026-08-02: "Make menu changes once an | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| payments-published-rates | no, grade B - Re-confirmed 2026-08-02: both bundles read "+ per order tran | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| payments-emv-nfc | yes, grade B - Re-confirmed 2026-08-02 on the POS page: the bundled card re | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| payments-qr-guest-pay | partial, grade B - QR ordering accepts card, cash, Apple Pay and Google Pay wit | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| payments-chargeback-tooling | partial, grade B - Disputes & Refunds automates dispute handling with weekly re | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| delivery-3p-injection | yes, grade B - Re-confirmed 2026-08-02 on the Order Manager page: "Consolid | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| delivery-menu-push | yes, grade B - One menu edit publishes to all delivery apps, kiosk and POS | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| delivery-86-sync | yes, grade B - Items marked 86'd reflect immediately across ordering channe | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| delivery-store-pause | partial, grade B - Store pause available from Order Manager and the Otter Go mo | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| digital-first-party-web | yes, grade B - Re-confirmed verbatim 2026-08-02: "No hidden fees, no commis | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| digital-menu-single-source | yes, grade B - Re-confirmed verbatim 2026-08-02: "Make menu changes once an | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| digital-native-app | no, grade B - Digital surface is a website builder plus web ordering; the | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| digital-account-saved-payment | partial, grade B - DOWNGRADE (2026-08-02 re-score). The 2026-08-01 verifier mov | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| digital-scheduled-pacing | partial, grade B - Scheduled orders exist (catering up to 6 months; KDS schedul | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| digital-fulfillment-modes | yes, grade B - Re-confirmed 2026-08-02: the Online Ordering page lists pick | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| digital-qr-table | yes, grade B - QR Ordering product from $30/mo: scan to order, table number | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| digital-kiosk | partial, grade B - Re-confirmed 2026-08-02 with full pricing: Kiosk Pro 27" ($2 | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| guest-loyalty-accrual-models | yes, grade B - UPGRADE (2026-08-02 re-score). The 2026-08-01 verifier downg | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| inventory-recipe-bom-costing | no, grade B - Re-confirmed 2026-08-02. Inventory Savings is a distributor | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| inventory-86-auto-sync | no, grade B - 86 propagation is excellent but is a manual/menu-level actio | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| inventory-vendor-catalogs-edi | no, grade B - Inventory Savings links to existing distributors for discoun | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| inventory-price-change-alerts | no, grade B - Inventory Savings offers "find the same product for less" so | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| reporting-realtime-dashboard | yes, grade B - Analytics dashboard plus the Otter Go mobile app give real-t | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| reporting-multiloc-drilldown | partial, grade B - The cited Analytics page carries no multi-location compariso | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| reporting-tier-paywall | partial, grade B - Analytics starts at $0/mo, but Financials, Live Alerts ($15/ | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| reporting-anomaly-alerts | partial, grade B - Live Alerts pushes real-time notifications on store status, | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| multi-location-central-menu-publish | partial, grade B - One menu edit publishes across locations and channels — a cu | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| multi-location-consolidated-reporting | partial, grade B - Same evidentiary gap: aggregation across locations is assert | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| reliability-offline-kds-printing | partial, grade B - Upheld partial on re-fetch 2026-08-02. The only evidence rem | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| reliability-offline-feature-matrix | no, grade B - Otter lists three offline modes as feature bullets but publi | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| commercial-interchange-plus-published | no, grade B - Re-confirmed 2026-08-02 - no rate structure of any kind is p | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| commercial-pricing-published | partial, grade B - Re-verified 2026-08-02 and NARROWED. Established: Advanced B | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| commercial-hardware-purchase-outright | partial, grade B - Re-confirmed and expanded 2026-08-02. Outright purchase pric | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| commercial-data-export-self-serve | partial, grade B - Financials allows "download your payout details by transacti | upheld | Grade only, value untouched. Corpus-wide mechanical pass (workflows/regrade-marketing-pages.mjs): the cited page is a first-party pricing/feature/product page, which atlas-evidence-rules grades C ("vendor pricing page or feature page - first-party, but written to sell"), not B ("vendor product documentation - the manual, the help centre, the admin guide"). No claim was re-researched in this pass and no evidence was re-read; only the grade was brought into line with the source type. source |
| delivery-3p-reconciliation | yes / B - "Financials consolidates and breaks down delivery-partner payouts with transaction-level t" | upheld | The cited evidence was tryotter.com/products/financials, a first-party product page (grade C), which cannot carry a yes on a differentiator. Searching the Otter Zendesk help centre (292 articles enumerated via /api/v2/help_center/en-us/articles.json) produced 'Financials: Reconciliation', which describes the mechanism rather than selling it: calculated-vs-actual payment per order, unpaid/partially-paid/pending counts, and a transaction-level fee breakdown naming Commission, Delivery Commission, Processing Fee, Error Charges and Adjustments. The claim survives on that documentation at grade B. source |
| delivery-injection-error-visibility | yes / B - "Live Alerts (from $15/mo/loc) alerts in real time on store status and item availability iss" | upheld | The cited evidence was the tryotter.com/products/analytics marketing page (grade C), and the note leaned on a DoorDash programme requirement rather than on Otter's own documentation. The help-centre Live Alerts article names the failure events directly - third-party POS injection failure, delivery-app integration disconnection, and 3+ consecutive cancelled or missed orders - and Repairing Disconnected Integrations documents per-channel connection status and error types in the dashboard. That is documentation of the mechanism, not a feature list, so the yes stands at grade B. source |
| digital-catering-portal | yes / B - "Catering $35/mo/loc: dedicated catering menu, size restrictions, lead-time scheduling, onli" | upheld | The cited evidence was tryotter.com/products/catering, a first-party product page (grade C). The help-centre Otter Catering article documents the same capability as configuration: named Lead Time, Advance Ordering, Basket Size Minimum and Guest Count fields, a deposit rule expressed as percentage plus dollar floor plus due-by days, and Invoice Due Date and Invoice Reminders in days before the event, all settable at org, brand or location level. The only element of the claim not documented is house-account or ACH terms - payment methods are online card wallets or in person - which is a narrower gap than the claim's "invoice ... or ACH" disjunction requires, so the yes survives at grade B. source |
| reporting-channel-profitability | yes / B - "Analytics reports performance across every ordering channel; Financials adds transaction-le" | upheld | The cited evidence was tryotter.com/products/financials, a first-party product page (grade C). The Sales Summary help article documents the actual report: a Sales Breakdown that pivots sales, discounts, tips, taxes, commission and refunds with Group by channel, brand or payment method, across all channels; the Analytics guide independently states Advanced Reports show performance, commissions and payouts by date and channel, and the Reconciliation report itemizes commission per marketplace. Commission netting per channel is documented rather than asserted, so the yes stands at grade B; note that margin here means net of marketplace fees, not food cost. source |
| multi-location-multi-brand | yes / B - "POS page lists multi-brand management; the Virtual Brands product runs a delivery-only bran" | downgrade-to-partial | The cited evidence was tryotter.com/products/virtual-brands, a first-party product page (grade C), and its own note conceded the virtual-brand product is delivery-only, which does not reach the claim's requirement of two brands on one terminal and drawer. Enumerating all 292 help-centre articles and reading Multi-Store Ordering, Kiosk Brand Selection, Adding a Third-Party Virtual Brand, Location Tagging and the POS articles: multi-brand on shared hardware is documented for kiosk, QR and direct online ordering, and per-brand reporting is documented throughout, but the Multi-Store Ordering compatibility list omits the Otter POS terminal and no article describes brand selection, per-brand receipt branding or brand-separated drawer handling on the terminal. Partial, with the terminal-side gap as the named shortfall. source |
| commercial-module-unbundling | yes / B - "\"Build Your Own\" tier plus per-module published monthly prices across POS, catering, marke" | downgrade-to-partial | The cited evidence was tryotter.com/pricing, a first-party pricing page (grade C), which cannot carry a yes on a differentiator. The help centre does document the underlying commercial mechanics, and they fall short of the claim in two named ways: modules attach to a tiered base package rather than being purely a la carte (Catering requires Direct Orders; Multi-Store Ordering requires Lite or Standard), and independent cancellation is a support-mediated request form - Billing Admin only, 48-hour turnaround, add-ons via support only, and unavailable entirely to enterprise, partner and annual-billing customers. Partial with those shortfalls named. source |
| menu-pricing-nested-modifiers | unknown / F - 'Modifiers exist; nesting depth and min/max/forced-selection semantics are undocumented.' | resolve-to-yes | The help-centre modifier article documents all three elements the claim asks for: per-group Required/Optional, per-group min/max total selections, and a published nesting-depth table topping out at 6 levels on Otter POS and Direct Orders. source |
| menu-pricing-fractional-placement | unknown / F, verified - pizzeria landing page contains no reference to halves, quarters or fractional toppings | resolve-to-no | The earlier pass only had the marketing page. The help-centre modifier article enumerates the entire modifier-group and modifier-item configuration surface, and it has no placement dimension and no per-section price; this is the same enumeration already used for the record's no on menu-pricing-modifier-price-by-parent-size and menu-pricing-topping-quantity-tiers. source |
| menu-pricing-half-and-half-rule | unknown / F - 'No half-and-half pricing rule of any kind appears in Otter documentation, including the pizzeria vertical page.' | resolve-to-no | Read the help-centre Menu Pricing Rules article, which enumerates every configurable pricing rule Otter offers; none is a half-and-half rule, and the modifier model has no section concept to price. source |
| menu-pricing-size-style-matrix | unknown / F - checked tryotter.com/products/menu-management, no size-style matrix documented | resolve-to-no | The marketing page was the wrong source. The help-centre pricing article enumerates all four pricing dimensions and none is a variant axis, and the integration guides confirm imported variants are flattened into separately named items. source |
| menu-pricing-combos | unknown / F - 'no combo or meal construction with component swapping is documented' | resolve-to-partial | The help-centre modifier article documents combo construction with per-option price deltas via negative modifiers, using a combo as its worked example; the shortfalls are that negative modifiers are unsupported on Otter POS and that no cart-level combo detection exists. source |
| menu-pricing-channel-price-books | unknown / F - 'Pricing can be adjusted across all channels from one place; per-channel price books and percentage-markup rules are not documented.' | resolve-to-yes | Both halves are documented in the help centre: per-channel/per-partner/per-fulfillment item prices in Menu Item Pricing, and percentage or fixed-amount markup rules scoped per channel, location, fulfillment and menu in Menu Pricing Rules. source |
| menu-pricing-versioning-effective-dates | unknown / F - 'No staged versioning with effective dates, preview-before-publish, or rollback-to-prior-version capability is documented.' | resolve-to-partial | The help centre documents both preview-before-publish and restore-to-a-prior-published-version; only the effective-dated staging half is missing, which is the named shortfall. source |
| menu-pricing-dynamic-pricing | unknown / F - 'Time-of-day pricing, demand-based pricing, inventory-triggered repricing, or algorithmic margin-optimization are not documented.' | resolve-to-partial | Menu Pricing Rules is a genuine rule engine that varies price automatically by channel, one of the three axes the claim names; it lacks time and demand triggers and true floor/ceiling guardrails, so the claim is partly met. source |
| payments-pay-at-table | unknown / F - 'No handheld appears in the published hardware catalog, so a server-carried EMV device is not evidenced; guest-side QR pay exists instead.' | resolve-to-yes | The help centre has a whole Handhelds section the earlier pass never reached: a shipped 5.5-inch handheld POS priced as an Otter POS add-on, explicitly for tableside ordering and payments, taking card payments on-device and running the terminal's Orders app payment flow. source |
| payments-tip-adjust | unknown / F - 'QR FAQ references How do I enable tips?; pre-auth-then-adjust flows, batch window, and an unadjusted-tips manager screen are undocumented.' | resolve-to-yes | The Otter POS tipping guide documents both flows, a 24-hour post-transaction adjust window with a one-business-day payout delay, the Stripe cap expressed against the pre-authorized amount, and the Tip Pending order status used to find and settle unadjusted tips. source |
| payments-offline-store-and-forward | unknown / F - "'POS terminal offline mode' is claimed but says nothing about card capture offline." | resolve-to-partial | The help-centre offline article states card transactions continue offline and upload on reconnect, which is store-and-forward; the configurable per-transaction and cumulative limits the claim also requires do not exist, since offline mode is automatic and unconfigurable. source |
| payments-split-tender | unknown / F - 'No documentation of POS-level split-tender capability... on a single transaction.' | resolve-to-yes | The Otter POS payments article documents split by item, split evenly, split by specific amount and mixed tender on one check with a per-part payment method; the earlier pass had only found the guest-side QR split feature. source |
| payments-payout-timing | unknown / F - "Otter's own deposit schedule and any instant-funding option are not published." | resolve-to-partial | Otter Payouts Schedule publishes the deposit schedule down to a day-by-day settlement table and holiday calendar, so the first half is met; the accelerated-funding half is not offered, which is the named shortfall. source |
| payments-multi-entity-routing | unknown / F - 'no settlement entity mapping, inter-company transfer rules or multi-corporate-account routing are documented' | resolve-to-yes | The help centre documents a Stripe account, and thus a bank account and legal entity, connected per store in Payout settings, one daily payout per store, and per-store entity replacement on ownership change - all under one Otter organization and dashboard. source |
| delivery-driver-roster | unknown / F, verified - 'Connect your delivery operations to Otter to unify fulfillment and dispatch with your own drivers'; not documented publicly either way | resolve-to-no | The help-centre Couriers article the earlier pass could not retrieve resolves the ambiguity: managing your own drivers is done in Shipday or Nash, and Otter's own representation of an in-house delivery is a self-deliver flag on the order, not a driver record. source |
| delivery-dispatch-board | unknown / F, verified - 'Whether the dispatch UI is Otter's or handed to Shipday/Nash is undetermined.' | resolve-to-partial | The Couriers help-centre article settles it: Otter itself provides courier-needed tagging, automatic/manual assignment and a per-order courier tab inside Order Manager, but no driver-availability view and no run batching. source |
| delivery-zones-polygon | unknown / F - 'polygon drawing or custom boundary definition is not documented' | resolve-to-no | The Direct Orders delivery settings screen is documented field by field and offers exactly two delivery-area types, both radii, with a distance allowance - the entire configurable surface, and it admits no polygon or isochrone. source |
| delivery-address-validation | unknown / F - 'no address validation, geocoding, or delivery-zone-rejection for out-of-zone addresses is documented' | resolve-to-partial | The Direct Orders delivery area is enforced by driving or straight-line distance from the entered address, which is geocoding-based out-of-zone gating for online orders; POS-entered delivery orders get no check, which is the named shortfall. source |
| delivery-daas-fallback | unknown / F - 'Rules-based overflow between in-house and DaaS is moot without in-house drivers; overflow between couriers is undocumented.' | resolve-to-no | The Couriers article enumerates the whole assignment-rule surface as Automatic or Manual and documents the failure path as an operator-driven Retry or Self-deliver, so no automatic overflow rule exists in either direction. source |
| delivery-tracking-page | unknown / F - 'no guest-facing tracking page URL, order status timeline, or driver-location display is documented' | resolve-to-partial | The Couriers FAQ documents a shareable real-time order-progress URL and Catering documents tracking links inside guest email and SMS notifications; what is missing is any statement that the page is on the restaurant's domain or branded, and the driver state comes from the 3PL. source |
| delivery-promise-time | unknown / F - 'Prep times are operator-set per Order Manager configuration; dynamic adjustment from kitchen load is not documented.' | resolve-to-no | The two inputs to the quote are documented as operator-entered constants - an estimated delivery time range per store and a prep time per delivery platform - with only a fixed 2-5 minute ASAP buffer applied by the system, so the promise time is a per-store constant by construction. source |
| delivery-offline-behavior | unknown / F - 'delivery-order acceptance behavior offline is not documented' | resolve-to-partial | The offline-mode article does document delivery-relevant offline behaviour - online and delivery-platform orders cannot be accepted, with storefront-pause consequences, while POS cash and card transactions continue - but is silent on courier assignment and settlement, which is the named shortfall. source |
| digital-apple-business-connect | unknown / F - 'Searched the vendor help centre for Apple Business Connect and Apple Maps: no article exists.' | resolve-to-yes | The search behind the original rationale missed the article. Article 38446541679379 contains an 'Apple Maps' heading, a nine-step Apple Business Connect location-creation walkthrough, and an explicit 'Adding an Order button to Apple Maps & inputting an Otter Online Ordering website link' procedure that selects the Order action from the ABC Action menu. source |
| digital-promo-parity | unknown / F - 'Digital coupons are referenced on the online ordering page but define-once cross-channel honoring and channel eligibility controls are not documented.' | resolve-to-partial | The help centre documents both halves: channel eligibility controls exist, and Otter states directly that Direct Orders discounts apply only to direct online orders while delivery-platform promotions are authored separately. Loyalty rewards are the one define-once cross-channel offer type. source |
| digital-checkout-pci-sca | unknown / F - online checkout accepts credit card, Apple Pay and Google Pay; no SCA, PCI DSS 4.0 or attestation documentation appears. | resolve-to-partial | The hosted-checkout half is now documented: Otter hosts the ordering site and Stripe is the mandatory processor for every Otter-processed order. The compliance half remains unpublished - a full-text search of the 292-article helpdesk dump returns zero hits for PCI, 3DS or 3D Secure. source |
| guest-loyalty-thirdparty-identity-attach | unknown / F - 'Notable gap given Otter's marketplace position - nothing published about attaching DoorDash/Uber Eats orders to a native guest profile.' | resolve-to-partial | The bare assertion was wrong: the loyalty points article names the delivery-partner receipt as one of the QR surfaces an eater can scan to claim points retroactively on that order. It is a guest-initiated attach, not an automatic identity handoff, so the claim is met only in part. source |
| guest-loyalty-tiers | unknown / F - 'The Loyalty page documents a single points/stars/bucks currency ... Not affirmatively denied either, so unknown rather than no.' | resolve-to-no | The earlier pass scored off the marketing page. The help centre publishes the full creation wizard, which is the entire configuration surface for a loyalty program, and it offers exactly two earning types and four reward types with no tier construct. source |
| guest-loyalty-offline-behavior | unknown / F - 'Offline POS behavior during network outage and local loyalty-accrual queuing are not documented' (checked against the tryotter.com marketing page only). | resolve-to-no | Checked the vendor's own offline-mode article, which carries an explicit limitations enumeration, plus all six loyalty articles. The claim is about explicit documentation of queue-and-reconcile vs blocked behaviour, and that documentation demonstrably does not exist in the help centre. source |
| guest-loyalty-offer-stacking-rules | unknown / F - 'Offer stacking rules, cumulative discount limits, or exclusivity between simultaneous promotions are not documented' (checked against marketing pages). | resolve-to-no | The help centre supplies the positive statement the marketing pages lacked: one discount code per order at checkout, hard-coded, plus two complete discount-builder settings enumerations with no precedence or combinability field. source |
| guest-loyalty-targeted-offers | unknown / F - 'Segmented offer targeting, audience rules, or behavioral-trigger personalization in loyalty are not documented.' | resolve-to-partial | First Party SMS Marketing (art. 52488273009427, updated 2026-06-12) is a shipped audience-targeted offer engine that the earlier marketing-page pass never saw; the same article states custom segments cannot be built, which is the shortfall. source |
| guest-loyalty-rfm-segmentation | unknown / F - 'Recency/Frequency/Monetary segmentation, cohort scoring or RFM-derived audience lists are not documented.' | resolve-to-partial | Three help-centre articles document automatically computed recency and frequency lifecycle segments that are directly usable as marketing audiences; only the monetary dimension and operator-defined cohorts are absent. source |
| guest-loyalty-lifecycle-automation | unknown / F - 'Lifecycle automation (win-back campaigns, churn-risk scoring, new-guest onboarding flows) and triggered messaging are not documented.' | resolve-to-partial | The SMS Marketing article documents a recurring win-back campaign against an auto-computed Lapsed Guests audience, which is a configurable standing campaign; it stops short of event-triggered automations such as birthday or first-visit. source |
| guest-loyalty-native-email-sms | unknown / F (verified) - 'No SMS or email marketing capability appears on the Loyalty page ... The paid Marketing product is delivery-app advertising, not CRM messaging.' | resolve-to-partial | That verification was correct about the marketing site but the help centre publishes a First Party SMS Marketing product (art. 52488273009427, updated 2026-06-12) separate from Delivery App Marketing. It is SMS-only, so the claim's both-channels requirement fails on email. source |
| guest-loyalty-cdp-event-api | unknown / F - 'developer portal renders only a heading with no documentation. No customer event streaming, webhooks, CDP integration or real-time event API ... is documented.' | resolve-to-partial | The portal's client bundle (index-zibGwtWX.js, 5.3MB) exposes the webhook configuration model, its authentication strategies and the complete PublishableEvent enum. An order event stream with HMAC-SHA1 signing exists; a guest/loyalty event stream does not, and nothing is publicly documented. source |
| inventory-cogs-gl-export | unknown / F - 'Financials exports payout/tax/commission detail by transaction, but no named accounting import format or GL account mapping is documented, and there is no COGS source.' | resolve-to-no | The help centre supplies the positive statement: COGS reporting is explicitly not yet available, so the period COGS half of the claim is denied by the vendor itself, and no named accounting import format or GL mapping exists anywhere in the corpus. source |
| reporting-eod-closeout | unknown / F - 'No end-of-day closeout report, drawer reconciliation, or daily settlement log is documented.' | resolve-to-partial | Two dedicated help-centre articles document a printed EOD report and a close-of-day workflow including drawer settlement; the marketing-page pass missed both. Tax and net sales are the gaps against the claim's enumerated list. source |
| reporting-comps-voids-audit | unknown / F - void report immutable with staff attribution; 'No unified audit log or report reconciling all three (comps, voids, discount adjustments) is documented.' | resolve-to-partial | Confirmed the void report's contents from the help centre article itself rather than the marketing page, and confirmed by full-text search that the corpus has no comp or price-override construct and no employee/manager attribution on discount application. source |
| reporting-cash-over-short | unknown / F - 'No cash-reconciliation report, over/short variance report or automated variance alerting is documented.' | resolve-to-partial | A dedicated Cash Management Report exists in the help centre with an explicit expected-versus-counted Difference column per drawer; only the per-employee breakdown and alerting are missing. source |
| reporting-custom-report-builder | unknown / F (verified) - 'The Analytics page contains no phrase resembling custom report builder ... The quoted sentence in the dossier is not on the page.' | resolve-to-partial | That verification correctly killed a fabricated marketing quote, but the help centre documents real pivot/group-by/column-customization controls inside Sales Summary and Business Performance. What is missing is arbitrary dimension selection and saving a custom view, so partial rather than yes. source |
| reporting-scheduled-delivery | unknown / F (verified) - 'no occurrence of scheduled, email delivery, or report subscription anywhere on the Analytics page.' | resolve-to-yes | The marketing page indeed says nothing, but the help centre has a dedicated Scheduled Reports article documenting cadence, recipient list, send time and CSV attachment. Grade B primary documentation, which satisfies a table-stakes yes. source |
| reporting-raw-warehouse-export | unknown / F - 'Manual/CSV-style export documented; recurring automated push to S3/SFTP/Snowflake is not.' | resolve-to-partial | Scheduled Reports supplies the recurring-automation half the earlier note treated as absent, delivered by email with a CSV attachment; the customer-controlled warehouse destination remains absent from the whole corpus. source |
| reporting-public-api | unknown / F (verified) - 'no public API surface is documented. Correctly withheld.' | resolve-to-no | The help centre positively documents the credential path, and it is a certified-partner process with a partnerships-team gate; independently, the developer portal's own routes serve an empty SPA shell to the public. Both legs of the claim - published documentation and self-service credentials - fail on evidence rather than on absence. source |
| reporting-webhooks | unknown / F - 'developer portal renders only a heading. No webhook contract, event types, payload schema, delivery guarantees or retry logic is documented.' | resolve-to-partial | Probing the portal's /assets/index-*.js bundle rather than its HTML shell exposes the webhook configuration model, the HMAC-SHA1 signing strategy and the full PublishableEvent enum. Order events and signature verification are established; payment events and retry semantics are not. source |
| reporting-api-not-upcharged | unknown / F - 'no public API is documented, no API pricing is stated, and no usage-based add-on is documented.' | resolve-to-no | The Analytics help-centre FAQ publishes a $20/month/location price for Advanced Analytics, which is the tier carrying transaction-level financial detail, and the partner process shows API credentials sit outside merchant subscriptions entirely. This is positive evidence of gating, not absence of evidence. source |
| reporting-nl-query | unknown / F - 'natural language query, conversational search, or ask-a-question interface is not documented. Analytics offers drill-down and filtering but no free-text NL input.' | resolve-to-partial | The help centre documents a shipped AI analysis feature over the operator's own sales data in the Otter Go app that the marketing-page pass did not see; it is generated rather than queried, so partial with the free-text shortfall named. source |
| multi-location-org-hierarchy | unknown (F) - 'an earlier automated read of the enterprise page appeared to assert hierarchy... a verbatim re-fetch showed the page contains none of that' | resolve-to-yes | The marketing page really does not assert it, but the documentation does: the OpenAPI spec at developer-guides.tryotter.com has organization, brand and store as addressable resources, and User Management assigns each role an Access Level of Organization, Brand or Location. source |
| multi-location-local-override-policy | unknown (F) - checked only tryotter.com/products/menu-management | resolve-to-partial | The capability is documented in the help centre rather than on the marketing page: corporate locks item creation/deletion and photos while franchisees keep hours, availability and publishing, with a documented request path - but the permission set is one global toggle, which is the named shortfall. source |
| multi-location-price-zones | unknown (F) - 'price tiers/zones as a first-class object are not documented' | resolve-to-partial | Pricing Rules and Advanced Pricing cover per-location-group and per-channel pricing without duplicating the item; the gap is per-daypart pricing and the absence of a persistent zone object. source |
| multi-location-scheduled-publish | unknown (F) - checked only tryotter.com/products/menu-management | resolve-to-partial | The help centre documents the publish dialog end to end (locations, channels, note, immediate) plus a genuine version-restore path, and promotions have start/end dates - so the claim is half met with a named gap rather than undetermined. source |
| multi-location-new-store-template | unknown (F) - checked only menu-management and onboarding marketing pages | resolve-to-partial | The Store Management and POS Linking articles document template-based provisioning that the marketing pages never mention; the shortfall is scope of the template and the missing published time-to-open. source |
| multi-location-normalized-item-rollup | unknown (F) - checked only tryotter.com/products/analytics | resolve-to-partial | SKU Library gives the normalized item definition the claim requires; what is missing is a report keyed to it, so this is a named-shortfall partial rather than unknown. source |
| multi-location-cross-location-giftcard | unknown (F) - 'Gift cards are a third-party eCard integration; cross-location redemption and liability reporting are Otter-undocumented' | resolve-to-partial | The Otter Gift Cards article shows Otter runs the balance and redemption in its own POS and online-ordering checkout (eCard supplies the plastic), and enablement is per location within one account; liability reporting and inter-owner settlement remain undocumented. source |
| multi-location-cross-location-loyalty | unknown (F, verified) - DOWNGRADE 2026-08-02 after the Loyalty marketing page's multi-location sentence could not be re-found | resolve-to-yes | The downgrade was right about the marketing page and wrong about the capability: two help-centre articles say points and profiles live at Brand level and that POS profile search spans every Otter store in the organization. source |
| multi-location-multi-currency-locale | unknown (F) - checked only tryotter.com/products/financials and pricing | resolve-to-partial | The Menu Publish Errors troubleshooting section is the direct evidence that one account spans currencies, and it also names the limitation; consolidated converted reporting is still undocumented. source |
| multi-location-config-audit-log | unknown (F) - 'no audit log documenting who changed what configuration and when is documented. Menu history/versioning is not documented.' | resolve-to-partial | Both premises were false: Menu Edit History and Menus Activity Logs are documented, with before/after field values, user attribution and location filters. What remains missing is non-menu configuration and export. source |
| multi-location-enterprise-sso | unknown (F) - checked otterpos and user-management marketing pages | resolve-to-no | The per-role Login Type table is an exhaustive enumeration of how back-office users authenticate - all password or PIN - and the login article documents no federated option, so absence here is evidenced rather than merely unfound. source |
| multi-location-enterprise-api | unknown (F) - 'developer portal renders only a heading with no API documentation' | resolve-to-yes | The developer portal is a client-rendered shell, but its own bundle points at developer-guides.tryotter.com, where the full Public API reference is served anonymously; it contains an explicit multi-store reporting endpoint and an organization/brand/store resource tree. source |
| extensibility-public-api-docs | unknown (F, verified) - 'developer.tryotter.com still renders nothing but a Developer Portal heading... the most conspicuous disclosure gap in the record' | resolve-to-yes | The gap was a retrieval failure, not a disclosure failure: the SPA never renders docs because it links out to developer-guides.tryotter.com, which serves the OpenAPI spec and guides anonymously. source |
| extensibility-free-sandbox | unknown (F) - 'developer portal renders only a heading... free self-serve sandbox is not documented' | resolve-to-partial | The Integrated Partner Process and the newly located onboard-application guide both document per-environment credentials including staging; what is absent is self-serve access and seeded data, which is a named shortfall rather than an unknown. source |
| extensibility-webhooks-push | unknown (F) - 'Whether certified partners receive push webhooks or must poll is decided entirely inside the private developer portal' | resolve-to-yes | It is not private: the event contract is published in the anonymous OpenAPI spec at developer-guides.tryotter.com, including the notification envelope, the expected 200 acknowledgement and nine order-lifecycle event types. source |
| extensibility-webhook-reliability | unknown (F) - 'developer portal renders only a heading. Webhook delivery, retry policy, idempotency guarantees and failure recovery are not documented.' | resolve-to-partial | The webhook authentication guide documents HMAC-SHA256 signing in detail and the spec exposes retryAttempt and a fatal-vs-retryable error taxonomy; what is genuinely missing is the backoff schedule and any replay mechanism. source |
| extensibility-order-injection-api | unknown (F) - 'whether Otter POS exposes an inbound public write API for externally-originated orders is not documented' | resolve-to-yes | It is documented, at developer-guides.tryotter.com: POST /v1/orders pushes an order into Otter for a store, with station routing on items, lifecycle webhooks to the merchant-side POS/KDS integration and presence in the order reports. source |
| extensibility-menu-write-api | unknown (F) - 'No public API documentation exists. Menu updates are done via the dashboard' | resolve-to-yes | The public OpenAPI spec has POST /v1/menus (upsert) plus publish, hours, sync and bulk availability endpoints, and the guide set walks the read-and-upsert flow. source |
| extensibility-data-symmetry | unknown (F) - 'No public API documentation. Data symmetry... is not documented.' | resolve-to-partial | With the spec in hand the parity can be checked object by object; most core objects are symmetric, the organization tree and inventory summaries are not, which is the named shortfall. source |
| extensibility-published-rate-limits | unknown (F) - 'No rate limits, throttling policy, quota or API usage documentation is available.' | resolve-to-partial | The Rate Limiting guide and the per-endpoint RATE LIMIT annotations supply exact numbers and 429 semantics; the only gap is documented response headers. source |
| extensibility-bi-data-warehouse | unknown (F) - 'Analytics offers CSV export... Direct push to Snowflake, BigQuery, Redshift or other BI warehouse is not documented.' | resolve-to-partial | The Reports API and its order/order-item/payout field lists give the transaction-level, multi-store, schedulable half of the claim; the destination half - S3/SFTP/warehouse - is still absent, which is the named shortfall. source |
| extensibility-custom-fields-scripting | unknown (F) - 'custom fields on orders, items or guests and field-level scripting/automation are not documented' | resolve-to-partial | Location Tagging is exactly an operator-defined custom field on a POS object, usable in reports without a vendor engagement; it is narrow, which is the named shortfall rather than an unknown. source |
| extensibility-headless-embedded | unknown (F) - 'developer portal is empty. Headless POS... or white-label capabilities are not documented.' | resolve-to-no | With the full OpenAPI spec available the enumeration is now possible: order creation demands a caller-computed total, and the only engine-behind-another-UI surface Otter publishes is loyalty reward evaluation, not checkout. source |
| extensibility-api-versioning-deprecation | unknown (F) - 'No public API documentation. API versioning strategy, deprecation policy or backward-compatibility guarantees are not documented.' | resolve-to-partial | The Public API overview publishes the versioning and deprecation rules and the schema flags deprecated fields; the missing halves are a changelog and a stated notice window. source |
| extensibility-data-portability-exit | unknown (F) - 'a full post-termination export window... is not documented' | resolve-to-partial | The export surface is far wider than the earlier note allowed (every report table, plus transaction-level report jobs via the API), so the honest reading is partial with the exit window named as the shortfall. source |
| reliability-offline-card-auth | unknown / F - 'Otter POS terminal supports offline mode; offline card orders are store-and-forward... No offline card authorization... documented.' | resolve-to-yes | The claim as worded asks only whether card payments can be accepted offline via store-and-forward rather than a cash-only fallback, and the help centre answers it directly: 'effortlessly process credit card and cash transactions in areas with no or unstable network connection', automatically enabled for all Otter POS customers, with queued orders processed on reconnect. The prior rationale withheld the yes for a stricter capability (offline card AUTHORIZATION and decline liability) that this claim does not ask about; that stricter question is reliability-offline-decline-liability. source |
| reliability-offline-decline-liability | unknown / F - 'no decline-on-reconnect scenario, liability statement, failed-payment recovery or offline-decline insurance is documented.' | resolve-to-partial | The prior pass searched only the help centre. The governing merchant contract is published at www.tryotter.com/legal/tech-services (reachable from the /legal index) and its Payment Responsibility clause allocates loss for 'transactions that were not processed due to a network communication error, or any other reason' to the merchant, with an affirmative duty to verify that each transaction settled. The liability half of the claim is therefore documented; the cap half is not, in either the contract or the offline-mode article's own limitations enumeration. source |
| reliability-lan-degraded-multi-terminal | unknown / F - 'multi-terminal LAN synchronization behavior during degraded network... is not documented.' | resolve-to-no | This is not an absence argument. The offline-mode article affirmatively states that wifi- and ethernet-connected printers - devices on the same local network as the terminal - do not receive orders during an internet outage, and that only Bluetooth/USB peripherals already paired to the individual device continue to work. Otter therefore does not use the LAN as a transport in a degraded state, which rules out multiple terminals sharing a single check over it. source |
| reliability-local-transaction-engine | unknown / F - 'A dedicated local transaction processing engine with card-auth capability (separate from cloud) is not documented.' | resolve-to-partial | Re-read the offline article in full from the API dump. It documents local capture and completion of card and cash transactions on the terminal, plus an app-local store of unsent orders that Otter warns can be destroyed by clearing the app cache - enough to say the ordering path is not purely cloud request/response. It stops short of the claim's stronger reading: there is no edge server or on-premise transaction engine, and every non-POS surface (online orders, menu publish, LAN printing) fails during an outage. source |
| reliability-onsite-install | unknown / F - '"Free, personalized onboarding" is advertised but the delivery mode (remote vs on-site) is not stated.' | resolve-to-partial | The prior pass worked from the marketing page. The help centre states the delivery mode directly for two SKUs: Otter dispatches its own technician to the restaurant to unbox, assemble and install the Kiosk Pro 27 inch and Kiosk 21 inch at no extra fee in the US and Canada, staying for a live test transaction. It equally clearly makes Otter POS remote - the go-live is a scheduled call with an Onboarding Specialist against self-install hardware guides. source |
| reliability-menu-build-service | unknown / F - 'Onboarding is free and personalized; whether Otter performs the initial menu build is not stated.' | resolve-to-no | It is stated, in the onboarding document itself. The Otter POS Onboarding Checklist enumerates every onboarding and go-live task and places menu setup on the operator with three self-serve routes and pointers to how-to articles, while the Onboarding Specialist's documented role is the go-live call and integration enablement. That is a positive statement about the scope of onboarding, not a failure to find one. source |
| reliability-hardware-replacement-sla | unknown / F - 'Hardware replacement timing, depot vs onsite service, and SLA turnaround times are not documented.' | resolve-to-partial | The prior pass checked only tryotter.com/support. The published Hardware Addendum carries a 1-year limited warranty with repair/replace/refund at Otter's option through an RMA, and the help centre documents a troubleshoot-then-ship-replacement flow in which the return label arrives in the box of the new equipment - an advance exchange in practice. The prior pass was right that no turnaround time exists, which is exactly the shortfall that keeps this off yes. source |
| reliability-backup-restore | unknown / F - 'no backup strategy, data retention policy, disaster recovery procedure or restore capability is documented.' | resolve-to-partial | One restore capability is documented and the prior pass missed it: Menu Version History exposes autosaved snapshots and a one-click revert to a previous published menu version, and reporting data is self-retrievable to CSV/xlsx across a 365-day window up to three years back. The prior pass was right that nothing account-wide exists and that no RPO/RTO is published - and the Terms disclaim liability for data errors outright - so this lands on partial, not yes. source |
| reliability-pci-dss-4-attestation | unknown / F - 'no security page, trust center, PCI DSS compliance statement, SOC 2 attestation or PCI DSS 4.0 conformance claim appears anywhere.' | resolve-to-no | Upgraded from an unresolved search to an enumeration. The claim is about what the vendor publishes, and Otter's own complete enumerations are now in hand: the /legal index of every legal document it publishes, sitemap-0.xml with all 2,521 site URLs across seven locales, three non-resolving trust-centre subdomains, and a published DPA that names no certification. The Tech Services Terms then affirmatively assign PCI compliance to the merchant rather than asserting Otter's own. source |
| reliability-mfa-role-based-access | unknown / F - 'per-employee PIN login and custom role-based access control are documented. Multi-factor authentication... is not documented.' | resolve-to-partial | The prior pass had both halves right but left the cell unknown. The RBAC half is documented to a level that carries a yes on its own - ten roles with per-role access level and surface flags, custom roles built by permission toggling, brand/location scoping, deactivation. The MFA half fails against an enumeration rather than a search: User Management publishes a Login Type for every role and the complete set is password or PIN, and the account-login article covers the entire sign-in and credential-management surface with no second factor. source |
| reliability-cellular-backup | unknown / F - 'no cellular modem, 4G/5G backup connection or automatic failover to cellular is documented. POS requires WiFi or ethernet network connectivity.' | resolve-to-partial | The prior rationale was wrong on the first half: Otter's hardware catalogue does list a cellular device - a Samsung LTE A7 Lite tablet offered with a bundled data plan, US-only, $80/month lease, not available to buy. It was right on the second half: no LTE option exists for the POS terminals, kiosks, handhelds or KDS, and no automatic failover behaviour is documented; Otter's documented outage answer is Offline Mode, and the KDS guide explicitly advises against cellular hotspots and tethering. source |
| commercial-month-to-month-contract | unknown / F - 'The pricing page still renders the question "Is there a cancellation fee?" with no answer text... The only public legal document is a website Terms of Service, not the merchant service agreement.' | resolve-to-yes | The premise of the prior rationale was false: the merchant service agreement IS published. www.tryotter.com/legal indexes 12 terms-of-use documents, among them the Tech Services Terms of Use - the merchant-facing agreement - which states that absent an Order Form term, use of the Tech Services 'is authorized on an ongoing month to month basis', auto-renewing monthly and cancellable on written notice. The help centre corroborates with 'There is no contract period. You can cancel at any time.' The prior pass only ever reached the website ToS and the client-rendered pricing FAQ. source |
| commercial-no-early-termination-fee | unknown / F - 'Same client-rendered FAQ gap; /terms is a website ToS with no ETF clause either way, and the merchant service agreement is not published.' | resolve-to-partial | The merchant service agreement is published - the /legal index links the Tech Services Terms of Use - and it was read in full on 2026-08-08. It has no ETF or liquidated-damages clause and defines the whole cost of cancelling mid-term as forfeiture of prepaid unused fees plus return of leased hardware (or an Unreturned Equipment Fee). It stops short of the claim's wording, which asks for terms that state no ETF: the document is silent rather than affirmative, and the Order Form it defers to is private. source |
| commercial-autorenew-terms-published | unknown / F - 'The public website ToS runs "until terminated as set forth herein" with no auto-renewal or notice-window clause, and the merchant agreement is not public.' | resolve-to-yes | The merchant agreement is public. The Tech Services Terms of Use, linked from www.tryotter.com/legal, publish the auto-renewal mechanic for both plan types and both notice windows - by the 15th of the month for monthly plans, at least 30 days before expiry for term plans - which is precisely what this claim asks to be published rather than buried in a signed quote. The prior pass had only located the website ToS. source |
| commercial-rate-increase-clause | unknown / F - 'the website Terms of Service do not address rate increases... The merchant service agreement (containing these terms) is not public.' | resolve-to-no | The merchant agreement is public and it addresses rate increases directly - reserving them 'at any time as we may determine in our sole and absolute discretion' for both Monthly and Term Plans, with effect on the next pay date after notice. Neither disjunct of the claim survives: there is no cap or interchange carve-out, and no penalty-free exit is granted on an increase, since cancellation runs on the ordinary notice clock and fees are non-refundable. The Mexico price-adjustment article shows the clause used, with prices applying to all customers once announced. source |
| commercial-hardware-not-locked | unknown / F - 'The FAQ asks "Can I use my existing hardware with Otter?" and "Can Otter POS run on iPads or tablets?" - both answers unretrievable.' | resolve-to-yes | The pricing-page FAQ accordions were never the right source. The help centre answers the question in full with a named BYOD programme and an explicit supported-model list of third-party Epson and Rongta printers running against the operator's own Android tablet, and states that BYOD is compulsory outside the US and Canada. The iPad half of the pricing FAQ is separately answered in the negative by omission - BYOD is Android-only - which is a limit on the option, not an absence of one. source |
| commercial-export-customer-and-loyalty | unknown / F - 'Loyalty reports export; Analytics offers CSV export; but no full guest-directory and loyalty-history export before termination is documented.' | resolve-to-partial | Confirmed and sharpened against the help centre articles rather than the product pages. Loyalty Reporting exports both tabs to CSV including individual loyalty order transactions, so machine-readable retrieval of loyalty ledger activity exists. The Guest Directory Report article - which is where guest contact records and point balances actually live - documents view, filter, search and edit with no export control at all, and there is no gift-card liability report; those two gaps are the named shortfall. source |
| commercial-post-termination-export-window | unknown / F - 'Checked https://tryotter.com/terms (2026-08-04): no post-termination data-retention window is documented.' | resolve-to-no | The right documents were not the website ToS. Otter publishes a Data Processing Addendum that squarely addresses post-termination handling of customer personal data and commits only to destroying or returning it 'within a reasonable period' - a standard rather than a defined number of days - and the Tech Services Terms, which govern the subscription, contain no data-export or retrieval clause at all. The cancellation help article covers the whole process and never mentions data retrieval. source |
| commercial-pci-p2pe-tokenization | unknown / F - 'no PCI DSS attestation, P2PE certification or tokenization statement appears anywhere.' | resolve-to-no | Moved from an unresolved search to an enumeration plus an affirmative contrary statement. The claim requires the vendor to document scope reduction and name the applicable SAQ; the published merchant agreement instead warrants the merchant's own PCI SSC, EMV and card-association compliance, including the physical requirements of the hardware, and makes the merchant indemnify Otter for PCI breaches. The /legal index, the complete 2,521-URL sitemap and the 292-article help centre contain no SAQ, P2PE or tokenization statement of any kind. source |
| commercial-pci-dss-4-controls | unknown / F - 'no security page, trust center or PCI DSS compliance documentation appears. PCI DSS 4.0-specific controls... are not documented.' | resolve-to-no | Two enumerations now carry this rather than a failed search. User Management publishes a Login Type for every role and the whole set is password or PIN, and the account-login article covers the complete Dashboard authentication surface with no second factor - so the v4.0.1 MFA requirement the claim names is absent from the configurable options, not just unmentioned. Otter's complete published surface - 20 legal documents, 2,521 sitemap URLs across seven locales, three non-resolving trust subdomains, a DPA naming no standard - contains no security or compliance documentation of any kind, and the merchant agreement pushes PCI compliance onto the operator. source |
| commercial-soc2-attestation | unknown / F - 'No trust center, security page, or SOC 2 / ISO 27001 statement was found on tryotter.com.' | resolve-to-no | The claim asks whether the vendor STATES it holds a current attestation, so absence of the statement across a complete enumeration is the fact itself. Otter's full sitemap (2,521 URLs, seven locales) has no security or compliance page, /security and /trust 404, three trust-centre subdomains do not resolve, the /legal index of 20 documents has none, and the published DPA names no standard where a processor would normally cite one. Decisively, Otter's own blog post urging restaurants to demand SOC 2 from vendors stops short of claiming it for Otter. source |
| commercial-privacy-dsar-tooling | unknown / F - 'no GDPR Data Subject Access Request (DSAR) tool, CCPA consumer-rights fulfillment, right-to-be-forgotten API or privacy-compliance dashboard is documented. No data-subject access process is published.' | resolve-to-partial | The second half of the prior rationale is wrong: a data-subject access process IS published. Otter's Data Processing Addendum is public and is incorporated by reference into the Tech Services Terms, so the operator does not have to negotiate one, and it sets out the notify-and-assist process for data-subject requests. The first half stands - fulfilment sits with the merchant on 'commercially reasonable' assistance, and the Guest Directory can find and edit a guest but no documented export or delete action exists. source |
| commercial-wcag-kiosk-accessibility | unknown / F - 'Re-checked 2026-08-02 across all three kiosk SKUs on the kiosk product page. No ADA, WCAG, Section 508 or VPAT/ACR statement appears.' | resolve-to-partial | The prior pass checked the marketing kiosk page; the help centre says more. The Kiosk 27/21 setup guide documents an accessible keypad specifically so 'customers who cannot interact with a touchscreen have equal access to all self-ordering services' - the tactile non-visual mode the claim asks about - and the Kiosks introduction guide asserts ADA compliance. No VPAT, ACR or WCAG conformance report exists anywhere on the site (2,521-URL sitemap) or in the help centre, and the keypad is documented only for the two large kiosks, so this is partial rather than yes. source |
| menu-pricing-size-style-matrix | no / B - 'Advanced Price Settings are enumerated as the complete set: an item has one Default Price plus a price per fulfil' | downgrade-to-unknown | The enumeration is not complete. The modifier article states that variant line items exist and are 'edited on the parent item', which contradicts the note's premise that variants are only an artifact of third-party POS imports; no article documents that variant editor, so the four documented price dimensions are not the entire item-level pricing surface and cannot establish the absence of a variant grid. source |
| delivery-driver-roster | no / B - 'Couriers & Logistics in Order Manager is Otter's entire first-party delivery surface and it delegates the fleet' | upgrade-to-partial | The Couriers article is not Otter's entire first-party delivery surface. User Management enumerates ten system roles, two of which are delivery roles Otter operates itself: Courier, which grants access to Otter's own Courier App (CAS) for delivering orders on behalf of the organization, and Dispatcher, which grants permission to manage couriers and send them to fulfill orders. That is a first-class driver entity with a native driver app, so the no is wrong; it stays partial because clock-in/out, assignment state and per-driver run history are nowhere documented. source |
| delivery-daas-fallback | no / B - 'The dispatch rule surface is enumerated and binary: Under the Assignment mode, select either Automatic courier' | downgrade-to-unknown | The Assignment mode setting is real, but it governs how Order Manager requests a third-party courier, and the note's supporting premise that Otter has no in-house driver pool is false - User Management documents a Courier App (CAS) and a Dispatcher role with permission to manage couriers and send them to fulfill orders. With the dispatcher surface undocumented, a two-option setting in an Order Manager how-to is not an exhaustive enumeration of Otter's dispatch rules. source |
| multi-location-enterprise-sso | no / B - 'User Management enumerates a Login Type for every role in the product: Admin, Accountant, Analyst, Manager' | downgrade-to-unknown | Re-read the article. Login Type is a per-role property recording which credential each role uses and on which surface (Dashboard vs device); the article documents roles and permissions and makes no statement about identity providers or federation, so it is not an enumeration of the authentication options a tenant can configure. No corpus article addresses SSO at all, which leaves this unresolved rather than denied. source |
| reliability-menu-build-service | no / B - 'Otter's onboarding documentation assigns the menu build to the operator. The Otter POS Onboarding Checklist' | downgrade-to-unknown | Re-read the checklist. It is a list of tasks to attempt before the Go-Live call, and it explicitly tells the operator the Onboarding Specialist will help with any step they get stuck on; it never states the scope of what Otter's onboarding team will or will not do, and other articles show specialists doing menu-adjacent work during integration onboarding. A task checklist is not an enumeration of the vendor's onboarding services, so the no does not meet the bar. source |
| commercial-rate-increase-clause | no / B - 'The published agreement grants the opposite of a cap. Tech Services Terms of U' | upgrade-to-partial | I re-read the whole Tech Services Terms of Use rather than only its pricing clauses. The no rested on the premise that cancellation runs solely on the ordinary clock (written notice by the 15th), but Section 7(b) Termination Rights separately grants: 'You may terminate these Terms upon written notice to us in the event that we modify the Terms or Fees and you do not agree to such modifications.' That is the claim's second disjunct, and 'Fees' is defined to include Payment Processing fees, which the same document lets Otter change on 7 days notice. It falls short of the claim only because the right is not stated to be penalty-free: fees stay non-refundable, and a Term Plan with Monthly Payment customer who cancels mid-term is 'required to pay any and all unpaid fees related to the subscription term'. Partial, with that shortfall named. source |
| commercial-no-early-termination-fee | partial / B - 'The published Tech Services Terms of Use contain no early-termination fee and no liquidat' | downgrade-to-no | I re-fetched the full Tech Services Terms and read section 4 (Payment) end to end. The partial rested on the document containing no acceleration clause; it does contain one. Section 4(d), Term Plans with Monthly Payment: 'If you cancel during the subscription term ... you will be required to pay any and all unpaid fees related to the subscription term', with unpaid fees becoming 'immediately due and payable at our discretion' on non-payment. The prior note read only 4(c) (prepaid Term Plans, forfeiture of prepaid fees) and generalised from it, and its keyword test - the strings 'early termination' and 'liquidated' are indeed absent - measured the vendor's drafting vocabulary rather than the obligation. The document therefore does not state that no ETF applies; it states the opposite for term merchants billed monthly. Value goes to no on that positive language, at grade B as a vendor legal page. source |
| reporting-public-api | no / B - 'The Integrated Partner Process is Otter's published path to the API and it is six gated steps' | upheld | Re-probed both developer hosts. developer-guides.tryotter.com/api-reference/ returns 3.6MB anonymously and /docs/ returns an MkDocs page, so the note's 'the reference is not public either' sentence was false and is withdrawn. What actually carries the no is the onboarding doc's manual-registration requirement via an Account Representative, corroborated by the help centre's partner-certification process, plus the fact that the complete 75-path spec has no labor or employee endpoint. Value unchanged; evidence and grade rebuilt on the primary spec. source |
| delivery-dispatch-board | partial / B - 'no driver-availability display exists, because the drivers belong to the connected provider rather than to Otter' | upheld | The causal clause in the note is false - User Management documents an in-house Courier App and a Dispatcher role - so it is withdrawn. The value is unaffected: re-reading the Couriers article end to end, the entire documented dispatch surface is a courier-needed tag on the order feed, a binary Automatic/Manual assignment mode, a per-order quote/request/cancel flow and a Courier tab, with nothing that lists driver availability and nothing that assigns two orders to one run. Partial with the same shortfalls, re-argued without the broken premise. source |
| delivery-driver-tracking | unknown / F - 'Otter publishes no driver-facing mobile app in the 292-article corpus: the Otter Go App...' | upheld | Grepped the corpus dump for CAS, Courier App and Dispatcher: all three occur only in User Management, which does document a courier-facing app - so the rationale's premise sentence was wrong and is withdrawn. Checked the live OpenAPI spec for a driver-position surface; the only lat/long schema is Location, attached to a provider-written delivery status update, i.e. 3PL telemetry rather than Otter driver-app GPS, and no dispatch-side map is documented. Value unchanged at unknown/F on rebuilt reasoning. source |
| delivery-driver-comp | unknown / F - 'Otter has no driver entity to attach compensation to (see delivery-driver-roster: fleet management is delegated...)' | upheld | The rationale's load-bearing first clause is refuted by User Management, so it is withdrawn. Re-tested the value independently: grepped the corpus for mileage and reimbursement (only delivery-platform order reimbursements, nothing driver-side) and read the published Order Report field list and the full 75-path spec, neither of which carries a driver, run or reimbursement dimension. That is still absence of mention, not a stated limitation, so unknown/F stands with new reasoning. source |
| delivery-cash-reconcile | unknown / F - 'Because Otter has no driver entity at all, no article addresses a driver bank... in either direction' | upheld | The premise clause is refuted and withdrawn. Re-checked the cash articles in the corpus dump: every cash object is a till or drawer assigned to a POS user session, with no per-person settle-up and no delivery run linkage, and searching the corpus for the Courier App returns exactly one sentence, which says nothing about cash. So the cell remains unresolved rather than a documented no, for a different and better-supported reason. source |
| delivery-daas-dispatch | partial / B - 'no first-party dispatch surface, no quote/compare logic and no handoff configuration is documented on any Otter product page' | upgrade-to-yes | The earlier pass searched product pages, not documentation. Couriers & Logistics in Order Manager (art. 27589269188499), read in full from the help-centre dump, is a step-by-step guide to the missing surface: an in-Otter assignment-mode setting, automatic quote request and courier request against the connected provider, a manual modal that returns multiple provider quotes for the operator to choose between, an order-level Courier tab holding the assigned courier, cancellation handling from both sides and a shareable tracking URL. That is a native handoff with quote and status returning into the order record, which is the whole claim. source |
| delivery-3p-direct-integration | yes / B - 'Otter IS the first-party integrator - direct certified connections to DoorDash (2026 DPIP), Uber Eats, Grubhub...' | upheld | The cited integrations directory is a first-party marketing page, grade C under atlas-evidence-rules, which cannot support a differentiator yes; and its note asserted DPIP certification the page does not state. Located the documentation instead: separate help-centre integration guides for DoorDash, Uber Eats and Grubhub, each describing a connection made inside the Otter Dashboard against the merchant's own marketplace account, with no third-party aggregator in the path. Value unchanged, evidence rebuilt at grade B and the unsupported certification wording dropped. source |
| delivery-3p-injection | yes / C - 'Re-confirmed 2026-08-02 on the Order Manager page: Consolidate orders across platforms, Automatically accept & print orders' | upheld | Grade-C marketing bullets were the entire basis. Read the help-centre articles instead: auto-accept is a documented per-channel setting in the Integrations tab, POS injection is a per-channel setting with its own order-level status flag, and Otter-supplied printers auto-print on connection. Same value, now on vendor documentation at grade B rather than a product page. source |
| delivery-menu-push | yes / C - 'One menu edit publishes to all delivery apps, kiosk and POS including pricing and photos.' | upheld | The note paraphrased a product page and offered nothing for the channel-markup clause. The help centre documents both halves: Otter as the single publishing source of truth to all connected platforms, and per-channel price changes as a bulk action ('Change price > By Channel'), corroborated by the Menu Item Pricing article's enumerated pricing dimensions including delivery partner and channel. Value unchanged, grade raised to B on documentation I retrieved. source |
| delivery-86-sync | yes / C - 'Items marked 86'd reflect immediately across ordering channels; real-time item 86ing... mandatory DPIP capabilities Otter is certified against' | upheld | Checked the cited KDS product page's claim and could not find any DPIP certification statement there, so that leg is withdrawn. The Item Availability article carries the cell on its own: availability changes 'automatically go live across all connected channels', settable from POS, Order Manager, Dashboard or the Go App, with an explicit restore-to-available path on all connected platforms. Same value, evidence moved to documentation. source |
| reporting-public-api | no / B - 'The Integrated Partner Process is Otter's published path to the API and it is six ga' | upgrade-to-partial | Re-probed both developer hosts. developer.tryotter.com is a decoy - a 1,139-byte Vite shell on every path - but developer-guides.tryotter.com returns a full public reference to an anonymous client: I read /api-reference/ (OpenAPI 3.0.1 'Public API', 75 paths, OAuth2.0 security scheme) and /docs/onboard-application/ directly. The 'not public' basis for the no is therefore gone. What survives is the credential leg, verbatim from /docs/onboard-application/ ('a one-time, manual registration... reach out to your Account Representative'), and the coverage leg - I enumerated all 75 operations and there is no labor, employee, timecard or shift endpoint. Public docs with partner-issued credentials and one missing domain is the corpus's partial pattern, not a no. source |
| delivery-store-pause | partial / C - 'Store pause available from Order Manager and the Otter Go mobile app. Timed auto-re' | upgrade-to-yes | The partial rested on a marketing page and on timed auto-reactivation being undocumented. Both fail. In the 292-article English help centre, Pause/Unpause a Storefront documents per-platform selection from Otter POS, tablet, Order Manager and the Go app with an explicit 'Select time range for pause' step, and the article's own overview offers to 'temporarily or schedule your storefront to appear unavailable'. Independently, the public OpenAPI spec's PauseRequest object has start and end datetimes with a documented default expiry of 4 AM store time. Both halves of the claim - per-marketplace pause from inside the POS, and a timer - are documented. source |
| delivery-tracking-page | partial / B - 'Guest-facing tracking exists... the underlying state is the connected courier platf' | upheld | Value untouched, reasoning corrected. I re-read User Management in full: Otter ships a Courier Role bound to a Courier App (CAS) 'allowing users to deliver orders on behalf of your organization' and a Dispatcher Role to 'manage couriers and send them to fulfill orders', so the note's claim that Otter holds no driver record was wrong. That leg is withdrawn. The partial survives on the other leg, which I checked independently: the shareable real-time tracking URL is documented, but no article anywhere in the English help centre puts that page on the merchant's domain or under its branding, and Otter's three branding articles all govern the ordering storefront instead. source |
| delivery-offline-behavior | partial / B - 'Part of the question is answered explicitly... there is no driver settlement to des' | upheld | Value untouched, reasoning corrected. The offline-mode article does document the delivery-relevant half I could verify - online and delivery-platform orders cannot be accepted offline, with storefront-pause consequences, while POS cash and card transactions continue - so the partial is right. The note's excuse for the missing half was wrong: User Management documents a Courier Role bound to the Courier App (CAS) and a Dispatcher Role, so Otter does hold courier records and the offline behaviour of courier assignment and settlement is simply not written down. Withdrawing that clause leaves the shortfall as an honest gap rather than a non-question. source |
| extensibility-partner-revshare | no / B - 'The partner page describes referral, technology and vendor tracks and a tiered incen' | upheld | Value right, evidence replaced. A no cannot rest on a marketing page failing to mention a number. Searching the partnership section of the help centre produced 'Getting paid', which documents the referral programme's qualification rule, $100 threshold, invoicing address and billing entities in detail and then locates the rate itself in a document Otter does not publish: 'The referral fee you are entitled to is what has been agreed on the Partner Agreement between you and Otter.' That is a stated limitation rather than an absence, which is the bar for a no. source |
| extensibility-oauth-partner-apps | no / B - 'The documented partner auth model is an API key... No OAuth 2.0 grant flow, operator' | upgrade-to-yes | The no's stated basis was that the public developer portal 'still renders only a heading'. That was the wrong host. developer-guides.tryotter.com serves the whole reference anonymously, and I read the OAuth2.0 security scheme and the Organization onboarding flow page live. Every element the claim asks for is documented: OAuth 2.0 (Authorization Code and Client Credentials), per-endpoint scopes enumerated in the spec, an operator approval - 'The user responsible for the store must allow your application to act on behalf of them' - and individual revocation via DELETE on the per-application, per-store connection resource plus manual token revocation. This is an OAuth model, not shared static keys. source |
| extensibility-payroll-export | no / B - 'Re-confirmed 2026-08-02: no payroll provider is named anywhere in the eight-category' | upgrade-to-partial | The no rested on an app directory plus the assertion that Otter has no labor hours. The second half is wrong: Time Card on Otter POS records clock-ins, the Labor Cost Report aggregates hours and wages, and the Homebase Integration Guide states timecard data is 'automatically sent to Homebase' with no re-keying. Grepping all 292 English articles for payroll returns only that Homebase pathway, and the Labor Cost Report article's own payroll instruction is to export a spreadsheet and import it into the payroll provider. So labor hours do export natively, but to one workforce platform rather than two payroll providers, behind a $20/month add-on and an account-manager setup. Partial with those shortfalls named. source |
| reporting-webhooks | partial / A - 'no retry, backoff or delivery-guarantee behaviour is published anywhere, the /docs and /api-r | upheld | The unreadable-docs leg is refuted: developer-guides.tryotter.com serves both the guide set and the spec anonymously. Re-tested the value against them - signature verification is now grade-A documented (X-HMAC-SHA256 on every request, five reference implementations), but I searched all 27 x-webhooks and found no payment event, and the only retry language in the whole spec is the menu error enum's fatal-codes sentence, with no schedule or guarantee. Partial stands, re-argued on the published reference rather than a JS bundle. source |
| guest-loyalty-cdp-event-api | partial / A - 'none of this is published documentation - the /docs and /api-reference routes render the em | upheld | The not-published leg is refuted; the spec and guides are anonymously readable. Re-tested the value on them: I enumerated the 27 x-webhooks and none carries a guest, eater or loyalty payload, and the Loyalty Manager operations list ('Get Enrollment Config, Create User, Search Users, Get User, Compute Applicable Rewards, Simulate Rewards, Redeem And Accumulate Rewards, Refund Rewards') is a partner-implemented request/response API, not a stream. Order events with HMAC-SHA256 signing carry the partial; the guest half is still absent. source |
| payments-softpos-tap-to-pay | unknown / F - 'developer.tryotter.com renders client-side and served no readable API surface' | upheld | The rationale's closing leg is refuted - the developer reference is public - so it is withdrawn. Re-tested the value there: a full-text search of the 3.6MB OpenAPI spec for 'tap to pay', 'tap-to-pay', 'softpos' and 'contactless' returns zero hits, and the spec exposes no payment-acceptance endpoint at all, so it can neither establish nor exclude the capability. The help-centre evidence (card reader a stated precondition; Handheld is Otter-supplied hardware) is unchanged and still short of positive absence. Unknown/F stands on re-tested reasoning. source |
| payments-offline-decline-liability | unknown / F - 'developer.tryotter.com resolves but is a client-rendered Vite shell with no readable data rout | upheld | Withdrew the unreadable-portal leg and re-tested. The public spec has no payment or decline surface (zero hits for offline/decline/chargeback across 75 paths). The public Tech Services Terms - which the record elsewhere called non-public - do contain a Payment Responsibility clause placing loss from transactions 'not processed due to a network communication error' on the merchant, but it is scoped to the Online Ordering and Digital Dine In addendum, not POS offline mode, and no post-reconnect failed-payment report is documented, so I declined to promote it to partial. Unknown/F on rebuilt reasoning. source |
| reliability-contractual-uptime-sla | no / B - 'the only public legal text is a website ToS... The merchant MSA is not public.' (retrieved 2026 | upheld | The stated basis was wrong: the merchant agreement IS public. I fetched tryotter.com/legal/tech-services anonymously (200, 464KB) and read it through. It has no uptime figure and no credit remedy anywhere, and affirmatively disclaims interruption liability three times over ('we are not liable... for any interruption, modification, suspension, or discontinuance'; 'provided "as-is"'; 'The Hardware Warranty is the only express warranty provided by us'). The no is right and now rests on the document that would have to contain the SLA. source |
| labor-native-scheduling | no / B - 'Otter ships no labor product, and the integrations directory enumerates the alternatives under | upheld | The stated premise is refuted (native Time Card app) and the cited source is a marketing directory, so both were replaced. Read the Analytics guide's Staff section in the corpus dump: the Staff tool consumes 'shift schedules' from Deputy, Homebase, 7shifts and WhenIWork and its Labor Hours chart falls back to scheduled hours only when timepunches are missing - imported, not authored. Read the Time Card article's feature enumeration end to end: clock in/out, dashboard reporting, admin edit of history, nothing that writes a schedule. Value unchanged, evidence rebuilt onto vendor documentation. source |
| labor-payroll-export-formats | no / B - 'the integrations directory... names no payroll provider. Otter also holds no labor hours to exp | upgrade-to-partial | Half the stated basis is refuted - Otter holds native timecards - and the other half was a marketing directory. Re-retrieved the Labor Cost Report from the corpus dump and it documents precisely the export the no denied: aggregated hours and wage data by employee, exported to 'directly import the spreadsheet into the 3rd party payroll provider'. So a no is wrong. It is not a yes either: the report is empty without the paid Homebase integration, no payroll provider or file format is named, and tips are excluded. Partial with those shortfalls. source |
| multi-location-central-labor-policy | no / F - 'No labor module exists to hold or enforce policy.' (no url) | upheld | The sole stated basis is refuted, and a no at grade F with no source could not stand as written. Re-read the Time Card article in full: it enumerates the module's features and its one terminal enforcement (clock-in gating before terminal use), with a five-column timecard report and no rule configuration of any kind; the Homebase guide places break logging in Homebase, and the Analytics guide imports schedules from LMS partners. That is an enumerated absence of enforceable labor policy rather than silence, so the value holds and the cell moves from F to a cited grade B. source |
| commercial-data-ownership-clause | no / B - 'The only public terms point the other way: Otter retains all right, title and interest in the | upgrade-to-partial | The cited tryotter.com/terms 301s to /legal/otter-website (200, 258,666 bytes), the website ToS, which is where the note's 'solely owned by Otter... any lawful business purpose' sentence lives - and the note dropped that clause's own proviso 'provided that the data and information is used only in an aggregated form'. The governing merchant agreement is separately public: I fetched /legal/tech-services anonymously (200, 464,223 bytes; a fabricated sibling path 404s, so this is not a soft hit) and read it through. It does contain the constraint limb the no denied - a DPA barring sale of Customer Personal Data, barring use for any purpose other than providing the Tech Services, and barring combination with data from other sources, plus a confidentiality section naming customer data as the merchant's Confidential Information with ownership retained. It does not contain the ownership limb: 'Your Data' is licensed to Otter perpetually and never assigned to the merchant, Otter owns aggregated and de-identified derivatives outright, and Order Data from online ordering and kiosks is 'owned separately by both parties'. Half present, half affirmatively the other way, so partial with the ownership shortfall named. source |
| reliability-offline-decline-liability | partial / B - "Half of this is published. Tech Services Terms of Use... Payment Responsibility: 'You are re" | upheld | Re-read the agreement dump section by section. The clause the note relied on sits inside the Online Ordering and Digital Dine In Addendum and is expressly scoped to the Payment Processing Services supplied as part of those services; the agreement contains no POS addendum, so quoting it as the general rule overstated it. The value survives on clauses that are general: the as-is interruption disclaimer and the aggregate liability cap at the lesser of US$1,000 or twelve months of fees, both in the main Terms. The cap half of the claim remains unmet - the offline-mode article's own limitations enumeration sets no ceiling on offline value, count or duration. source |
| commercial-processing-not-bundled | partial / B - "Re-confirmed 2026-08-02. Stripe is the single 'Preferred' entry in the Payments integration " | downgrade-to-no | The partial rested on an inference from a marketing integrations directory: because Stripe appeared under Payments, external processing was assumed possible. The help centre answers the question outright - 'Do we have other payment processor options available? No, we do not offer other payment processors at this time' - and the same article publishes a single blended rate applying regardless of bank or card. The Tech Services Terms reserve to Otter, not the merchant, the right to change the payment processor, and the POS payments article makes a linked Stripe payout account a precondition of taking any card. Positive evidence of absence, at grade B. source |
| commercial-interchange-plus-published | no, grade C - "Re-confirmed 2026-08-02 - no rate structure of any kind is published, interchange-plus or ot" | upheld | Value unchanged, reasoning replaced. The assertion that no rate structure of any kind is published does not survive: the help centre states 2.3% + $0.10 card present and 2.9% + $0.30 card not present, and states that the rate does not vary by bank or card. That is a stronger basis for no than the old absence argument, because a rate expressly invariant to the issuing bank is by construction not interchange-plus. Also noted a second, unreconciled published figure (2.39% + 15c) in the Otter POS Introduction article. Grade moves from the pricing page to the help centre. source |
| commercial-pricing-published | partial, grade C - "Re-verified 2026-08-02 and NARROWED... no card processing rate of any kind is published, per" | upheld | Value unchanged, evidence replaced and two assertions withdrawn. The record was scored against tryotter.com/pricing only. The help centre publishes a card rate and a complete per-device hardware price list with outright-purchase figures for every SKU, plus several per-location software prices; both of the prior note's absence statements about card rates and standalone hardware pricing are wrong. Partial survives on what is genuinely missing: the base POS plan tier prices sit only in images, the per-order transaction fee is unquantified, and no per-additional-terminal software figure exists. source |
| commercial-hardware-purchase-outright | partial, grade C - "Re-confirmed and expanded 2026-08-02... the POS terminal, card reader and 80mm printer arri" | upgrade-to-yes | The partial's sole shortfall was that the POS terminal, card reader and 80mm printer had no published standalone purchase price. The help centre's hardware article, updated 2026-06-30, publishes exactly those: iMin single-screen terminal $649, dual-screen $749, Epson TM-M30ii BT $299, Stripe M2 $99, Stripe S700 $450, plus KDS $1,000 and both kiosks. Leases are monthly under the Hardware Addendum, not multi-year, and title passes on payment in full for purchased units. The prior pass had only the marketing kiosk page. The lease-only SKUs that remain - an LTE tablet and a Canada-only second terminal - are optional alternatives, not required devices. source |
| commercial-implementation-fee-published | partial, grade D - "'Free, personalized onboarding' is stated. Menu build, training and installation are not sep" | upheld | Value unchanged; the evidence was a single marketing sentence and the note's 'installation not itemized' assertion is wrong. The help centre publishes a $100 one-time setup fee for Digital Dine-In, Online Ordering and the Direct Orders Full Suite, and states kiosk installation is performed on site 'with no additional fee' in the US and Canada. It also names a per-location activation fee whose amount is only inside an image, and prices no menu-build or training service, which is what keeps this at partial rather than yes. source |
| commercial-data-export-self-serve | partial, grade C - "Financials allows 'download your payout details by transaction' and Analytics offers data ex" | upheld | Value unchanged, evidence rebuilt. The cell was carried by a marketing product page. The help centre documents export steps on Sales Summary, Payouts, Taxes, Product Mix and Loyalty (including individual loyalty order transactions), and the developer portal documents an Orders Report, Order Items Report and Payout Transactions Report. It stays partial on four named shortfalls the marketing page could not show: the Financials app is a paid tier, labor export requires a Homebase integration an account manager must provision, the API is onboarded through an Account Representative, and exports are capped at 365 days per pull with no export control at all on the Guest Directory. source |
| commercial-source-available-selfhost | no / F - "Proprietary cloud SaaS; no source publication or self-hosting option exists." | upheld | The value was never in doubt but it was carried by an analyst inference with no source. The published merchant agreement states the position affirmatively: a non-exclusive, non-transferable licence with no title passing, access permitted only through Otter's own device, website or application, an express bar on modifying, copying or creating derivative works, and an express bar on attempting to reach the source code. Grade moves F to B on first-party legal text; value unchanged. source |
| commercial-dual-pricing-compliant | partial, grade D - "'Cash-discounting available for processing fees.' No documentation of debit/prepaid exclusio" | upheld | Value unchanged, evidence upgraded from a marketing fragment to the feature's own help-centre article, which documents the dashboard toggle, the 3% default, per-location percentages, auto-application at cash tender and the cashier and diner-facing displays. The compliance half still fails, and now fails for a stated reason rather than an absence: Otter offers no card surcharge at all, so there is nothing for a debit and prepaid exclusion to operate on, no receipt or menu-board disclosure is documented, and the discount is expressly disabled on split payments even where the tender is cash. source |
| menu-pricing-recipe-linkage | no / B, tryotter.com/integrations: "Otter ships no recipe/BOM product; Inventory Savings is a distri..." | upheld | Verdict stands, evidence replaced. I could not use the researcher's citation - it is a marketing directory that describes itself as "dozens" of partners. Instead I read Otter's own item model: the SKU Library article lists every SKU-level field (name, default price, SKU code, description, photo, dietary, nutrition, barcodes, tags) with no ingredient composition, and the published MenuItem_POS OpenAPI schema has no recipe, component or cost field. Zero corpus hits for bill of materials, on-hand or depletion. That is positive evidence of absence rather than absence of mention. source |
| payments-processor-choice | partial / B, tryotter.com/integrations: "the integrations directory has a Payments category whose sole entry is Stripe, marked Preferred..." | downgrade-to-no | The researcher's shortfall reasoning was right but rested on the wrong evidence. Re-fetched the Otter POS Cash Discounts article live through the Zendesk article API (the rendered /hc page 403s to bots) and its FAQ answers the claim verbatim: "Do we have other payment processor options available? No, we do not offer other payment processors at this time," alongside a fixed 2.3% + $0.10 card-present / 2.9% + $0.30 card-not-present schedule with no bank or card variation. The Stripe connection guide adds that Otter POS cannot connect a credit card processor at all until Stripe is connected. That is an explicit vendor statement of non-support, which is the bar for no rather than partial. source |
| payments-gift-cards | partial / B, tryotter.com/integrations: "gift cards appear only as a third-party integration category with a single named partner, eCard" | upheld | Value upheld, reasoning replaced wholesale because it was wrong. The helpdesk carries a dedicated Otter POS Add-Ons article, Otter Gift Cards, retrieved live today via the Zendesk article API (updated 2026-03-31): a first-party $30/month product with sell and reload at the POS, Gift card as a payment method on both Otter POS and the Direct Orders website, split tender, refunds back to card balance and a documented balance lookup. eCard Systems is only the printer of the physical cards. Partial survives on different shortfalls: paid add-on, Otter POS customers only, physical cards only, and per-location enablement with no documented group-wide balance. source |
| guest-loyalty-stored-value-gift | partial / B, tryotter.com/integrations: "gift cards exist only as the third-party eCard integration, not as native stored value..." | upheld | Value upheld, reasoning corrected. Otter Gift Cards (helpdesk art. 37358535943187, retrieved live today) is a first-party stored-value product, so the researcher's premise was wrong. I then checked the five Loyalty articles and the Loyalty Manager OpenAPI domain (enrollment-config, user, user/search, rewards evaluate/simulate/redeem-and-accumulate/refund) - all points and rewards, no balance or stored-value object. The gift balance is card-number-keyed with no documented tie to the loyalty profile, and redemption is toggled per location, so partial is still the right value on the claim as written. source |
| labor-native-payroll | no / B, tryotter.com/integrations: "no payroll product in the catalog, and the full integrations category list ... contains no payroll processor" | upheld | Verdict stands on better evidence. The Labor Cost Report: Homebase Integration article (retrieved live today) states its own purpose as exporting aggregated hours and wage data by employee for direct import "into the 3rd party payroll provider" - a vendor statement that payroll belongs to someone else, which meets the positive-absence bar. Corroborated by zero occurrences of wage tax filing, wage direct deposit or any payroll provider connector across the corpus, and by the subscription product catalogue, which sells POS, KDS, kiosk, gift cards and add-ons but no payroll. source |
| inventory-theoretical-vs-actual | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Otter ships no stock-ledger product at all..." | upheld | Verdict stands, evidence replaced. I read the Otter Inventory Savings article live (updated 2026-07-13) and it is a Foodbuy GPO rebate program end to end - distributor credential connection, Rebate Opportunities, spend reports, monthly cash-back - with no on-hand ledger. I then enumerated the Analytics and Reports sections of the helpdesk (18 report articles) and the OpenAPI reports and inventory domains: no theoretical-usage, variance or ideal-cost report exists, and no recipe layer exists to derive one from. source |
| inventory-realtime-depletion | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Real-time ingredient depletion requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, evidence replaced. Beyond the Inventory Savings article, I checked the published OpenAPI: the inventory domain exposes only a read of product summaries and shipment receiving, no webhook carries an inventory or stock-movement event, and MenuItem_POS has no component field. With no bill of materials anywhere, modifier-driven ingredient depletion has nothing to deplete. source |
| inventory-count-modes | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Physical count modes requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, evidence replaced. The OpenAPI inventory domain is exhaustively enumerable and I did it: listInventorySummaries, listInventoryShipments, createShipment. There is no count, adjustment, recount or variance operation and no count-session schema, and the helpdesk has zero hits for physical count, cycle count or count sheet. Combined with the merchant-facing Inventory app being a rebate program, that is positive evidence of absence rather than absence of mention. source |
| inventory-mobile-count-offline | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Mobile offline counting requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, evidence replaced. I looked for the counting app itself rather than for the ledger behind it. The corpus documents Otter's app set and none of them counts stock; the single documented barcode-scanner integration (Datalogic QD2590, Zebra DS2278, Magellan 1500i) is scoped in the vendor's own words to gift cards only; and the offline-capability articles cover card payments on the handheld, not inventory. source |
| inventory-invoice-ocr | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Supplier invoice OCR and AP capture requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, and the replacement evidence is stronger than the original. The Inventory Savings article documents how Otter actually gets purchase data - distributor account credential linking, with spend reports assembled per connected distributor - and explicitly not from invoices. The only invoice objects are Otter's own subscription billing (Billing & Subscriptions articles, /finance/v1/financial-invoices). Zero corpus hits for OCR, invoice scan or line-item extraction. source |
| inventory-par-auto-suggest | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Par-based reorder suggestion requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, evidence replaced. Otter does ship a purchasing suggestion engine, which is why this cell needed care - but I read it and it recommends cheaper or higher-rebate substitutes from past purchase history, not quantities to reorder, and its output is a CSV you send to your distributor rather than a purchase order. No par level exists to compare on-hand against, and no forecast-driven ordering mode is documented anywhere. source |
| inventory-waste-logging | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Waste and spoilage logging requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, evidence replaced, and I am naming the near miss rather than hiding it: the API does model unsellable goods, but only as a quantity captured when a shipment is received, with no reason taxonomy, no logging workflow and no waste cost report anywhere in the Analytics or Reports sections. source |
| inventory-transfers | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Inter-location stock transfers requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, evidence replaced. I enumerated every "transfer" string in the corpus and classified all of them - none is stock. The shipment object is one-sided receiving into a facility, so no two-sided transfer transaction or in-transit state exists between the operator's own locations. source |
| inventory-commissary | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Commissary and central production requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, evidence replaced. I checked Otter's actual multi-location model - the organization endpoints (organization, brands, brands/{brandId}/stores, store connection) and the Location Tagging report article - and it is an org hierarchy for menus, orders and reporting with no production, issue or transfer-cost concept. There is no prep-item or sub-recipe object to produce, which follows from there being no recipe layer at all. source |
| inventory-lot-traceability | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Lot and batch traceability requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, evidence replaced. This one is settled by the receiving schema, which is the only place a lot could be captured: CreateShipmentLineItem is id/slug/externalId plus three integer quantities. No lot, batch, serial or expiry field exists, so no backward or forward trace is constructible, and the helpdesk documents no recall workflow. source |
| inventory-shelf-life-expiry | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Shelf-life and expiry tracking requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, evidence replaced. I chased the one place expiry does appear and it is a quantity bucket, not a date: no date field exists on a product, a shipment or a shipment line item. Every other expiration string in the corpus is an expired payment method or subscription. With no date captured there can be no expiring-soon surface, and none is documented in Analytics or Reports. source |
| inventory-bar-partial-bottle | no / B, tryotter.com/integrations: "RE-GROUNDED (2026-08-02 re-score) ... Partial-bottle weighted liquor counting requires an ingredient-level on-hand ledger..." | upheld | Verdict stands, evidence replaced, and the API typing makes it unusually clean: every inventory quantity in the published schema is an integer, so fractional stock cannot be stored. Otter's own hardware catalogue lists no scale, and the sole documented peripheral scanning use is gift cards. source |
| inventory-native-not-partner | no / B, tryotter.com/integrations: "Re-confirmed 2026-08-02: explicitly partner-delivered. The integrations directory Inventory category names..." | upheld | Verdict stands but the reasoning needed replacing, and this is the cell the directory damaged most: "the directory names Marketman, Restaurant365 and PDI" is a marketing list, not proof of delegation. What actually carries it is that Otter's own Inventory product is a Foodbuy GPO rebate program, that no recipe or BOM layer exists in SKU Library or in the published menu schema, and that the API's inventory domain is three operations over packaged retail SKUs. Recipe costing is absent outright, so the claim as written cannot be met natively. I have recorded the first-party product-quantity API in the note rather than letting the blanket phrase "Otter maintains no on-hand ledger" stand, because that phrase is now known to be too strong. source |
| extensibility-first-party-delivery-integrations | yes / B, tryotter.com/integrations: "Otter is itself the certified integrator - direct connections to DoorDash, Uber Eats, Grubhub..." | upheld | Upheld on documentation I retrieved myself, which matters because a differentiator yes cannot rest on a grade-C marketing page. The helpdesk has per-platform integration guides for DoorDash, Uber Eats and Grubhub and an enterprise authorization article covering all three, describing merchant-portal access granted directly to Otter for order flow and dispute submission. Nothing indicates an intermediary aggregator beneath Otter. source |
| extensibility-accounting-connectors | no / B, tryotter.com/integrations: "the integrations directory enumerates eight categories and none is accounting; QuickBooks, Xero and Sage appear nowhere" | upheld | Verdict stands on first-party documentation instead of the marketing directory. The Integrations Introduction article lists the six integration types Otter supports and accounting is absent; more usefully, four separate report articles instruct the operator to export a CSV into their accounting system, which is the vendor stating the integration shape the claim explicitly excludes. The published finance API offers transaction and invoice reads with no journal-entry mapping or account codes. source |
| extensibility-app-marketplace | partial / B, tryotter.com/integrations: "a public browsable integrations directory exists ... Shortfall: whether an operator can self-install any of these..." | upgrade-to-yes | The researcher's only stated shortfall was that self-install is undocumented, and it is documented - in the help centre rather than on the marketing page they cited. Integrations Introduction describes an in-dashboard Explore catalogue with search and type filtering, states plainly that "the integrations listed on the Otter Dashboard are integrations you can connect yourself", and gives the four-step Connect procedure. Combined with the public browsable website directory and named partners per type, the claim as written is met. The vendor's hedge that unlisted integrations need a support request is a caveat on coverage, not on the marketplace's existence or its self-service. source |
| guest-loyalty-cdp-event-api | partial / A - 'no guest, customer, eater or loyalty event appears among the 27, so a CDP cannot subscri' | upheld | Overview-page premise does not apply here: /api-reference/ is a server-rendered Redoc page carrying the entire OpenAPI spec, and every one of the 75 paths and 27 x-webhooks appears literally in it. Re-enumerated the webhook list from the spec and the value survives, but one leg of the printed reasoning does not: the orderCreate webhook 'delivers the full order payload' and the Order schema includes customer -> Person (name, phone, email, personalIdentifiers), so guest identity does reach a subscriber, contrary to the note's 'cannot subscribe to guest events at all'. Partial still stands because there is no guest-lifecycle event type at all - a CDP sees a guest only as a side effect of an order - and the eater and loyalty surfaces are pull/inbound. Value unchanged; the note is corrected. source |
| multi-location-enterprise-api | yes / A, connect.tryotter.com/docs/api-reference/reference/otter-api/: "POST /v1/reports/generate is titled 'Request a business report for multiple stores' and its GenerateReportMultiRequest takes externalStoreIds ... Max is 5000" | downgrade-to-partial | The 2026-08-10 EVIDENCE CHANGE note left this at yes pending re-verification; re-measured and it does not hold. Otter rebuilt its developer docs between 2026-08-08 and 2026-08-10 (MkDocs+Redoc at developer-guides.tryotter.com -> Docusaurus at connect.tryotter.com; 75 spec paths -> 70; 27 x-webhooks -> 23) and both reports paths are gone. The instruction not to assume withdrawal was right and the vendor settles it: guides-contract-status lists Reports among PRODUCTION CONTRACTS as 'Deprecated ... Contact your Otter representative for migration options', and the scope reports.generate_report plus GenerateReportMultiRequest (max 5000 external store IDs) are still published. So the capability exists. What is gone is exactly what the claim asks for - a DOCUMENTED multi-location API: no method, path or URL is published, so the call cannot be constructed from anything Otter publishes. The organization API (GET /organization/v1/organization/brands/{brandId}/stores, one OAuth application credential, no per-location credentials) survives intact but returns store metadata, not transaction-level data, and every other surface is store-scoped through X-Store-Id. Partial, not no. source |
| extensibility-api-versioning-deprecation | partial / A, connect.tryotter.com/docs/api-reference/reference/otter-api/: "A deprecation policy is published verbatim in the spec overview: 'Each API is versioned individually, but we follow these rules...'" | downgrade-to-no | The verbatim versioning policy is gone from the rebuilt spec - zero occurrences of 'breaking', no Versioning section - and no changelog or release-notes page exists in the 59-guide corpus or the 70-path spec, so both conjuncts of the claim now fail. The decisive evidence is not that absence but a vendor statement that replaced the policy: guides-contract-status divides the API into 'Production contracts' and 'Preview behavior' ('Behavior that is not yet a public guarantee'), and puts API lifecycle on the preview side - 'Support targets, certification policy, incident communication, credential-rotation procedure, PII retention, versioning, and deprecation notice periods' - with the instruction to 'Ask your Otter representative to confirm the behavior for your application'. Otter now publishes, in documentation, that its versioning and deprecation notice periods are not a public guarantee. Per-field 'deprecated' annotations and one Order Total v2 migration guide survive; marking a deprecated field is not a changelog and 'contact your representative' is not a notice period. Grade A holds - this is vendor primary documentation, quoted verbatim from the live page. source |
| extensibility-bi-data-warehouse | partial / A, connect.tryotter.com/docs/api-reference/reference/otter-api/: "POST /v1/reports/generate ... SHORTFALL: nothing is delivered to a customer-controlled destination" | upheld | Value and grade survive the docs rebuild; the note did not. The reports paths and the reportGenerated webhook are gone from the spec, but guides-contract-status documents Reports as Deprecated rather than withdrawn, with its behaviour still contracted (inclusive UTC date boundaries, comma-delimited UTF-8 CSV downloads, jobId polling, EXPIRED after two days), and the reports.generate_report scope and GenerateReportMultiRequest survive. The Scheduled Reports article 22964276979987 was re-fetched live through the Zendesk Help Center API against a fabricated-id control (200 15,536b vs 404 52b). What is withdrawn from the note is the per-column Order Report breakdown - estimatedCommission, estimatedNetPayout, payoutId, isReconciled and the rest occur zero times in the current corpus. The shortfall the partial rests on is untouched and now deeper: no S3, SFTP, Snowflake share, BigQuery or warehouse connector anywhere in the 59 guides or 70 paths, and the only export is a CSV the partner application must download within two days on a deprecated contract. source |
| inventory-unit-conversion-yields | no (grade F), uncited: No inventory ledger exists to hold conversions. | upheld | Upheld on the vendor's own words rather than on an inference: "Does Otter POS support inventory management? Not yet. But we plan to offer this in the near future!" `recipe`, `yield` and `unit conversion` are each zero across 294 documents. The Otter Dashboard's "Inventory" app is a Foodbuy GPO cash-back rebate programme, not a stock ledger -- an artefact-versus-vocabulary trap that would have flipped this cell. source |
| inventory-menu-margin-linkage | no (grade F), uncited: Analytics reports best/worst performing items by sales, but with no recipe cost there is no contribution margin. | upheld | Upheld and cited to the report itself. The Product Mix Report is documented purely as a sales instrument ("valuable insights into sales performance", best-selling versus underperforming items, Menu Categories and Modifier Report tabs), and `margin`, `contribution margin`, `food cost` and `recipe` are each zero across 294 documents. No item cost is held anywhere in the product. source |
| reporting-labor-productivity | no (grade F), uncited: No native time clock or labor data source, so sales-per-labor-hour cannot be produced from Otter's own records. | upgrade-to-partial | Overturned; the premise was false on both counts. Otter POS ships a native Time Card app with clock in/out on the terminal and a Staff app publishing Staff member / Role / Clocked in / Clocked out / Total hours with .xls export and Date/Location/Role/User filters, and the Labor Cost Report gives "employees' hours worked, wages, and labor costs compared to sales". Held at `partial`: that report requires an active Homebase integration to populate rather than reading the POS clock, no department dimension is documented, and `sales per labor hour` is zero across the corpus. source |
| menu-pricing-size-style-matrix | unknown — no evidence had been located in the record. | resolve-to-no | Menu Item Pricing enumerates every pricing dimension Otter has, and neither size nor preparation style is one of them: an item carries one default price ('this price will be used if advanced pricing isn't set') plus Advanced Pricing, whose four axes the article lists as 'Fulfillment options Delivery partners Otter channel Fulfillment per channel' (rendered as a bullet list on the page). Menu Pricing Rules (art. 40116707746067, updated 2026-09-07) adds a bulk rule engine over the same four axes - channel, location, fulfillment option, menu - by percent or fixed amount. No variant grid exists: `price matrix` occurs 0 times across the 287-article help centre, the 53 developer guides, the 465 KB OpenAPI spec and 414 www pages, and `grid` occurs 0/0/0/1 - the single www hit is a Connecticut liquor-licensing wiki page recommending 'the downloadable Exclusion Grid', not a pricing feature. `size` occurs 53/3/27/84 as the control. This is the same finding that already sets menu-pricing-modifier-price-by-parent-size to `no`, where the vendor's own remedy for size-dependent options is to duplicate items per size. source |
| payments-softpos-tap-to-pay | unknown — no evidence had been located in the record. | resolve-to-no | Accepting Payments on Otter POS (updated 2026-05-14) makes a reader mandatory: 'For Credit Card Payments , make sure you connect your Stripe account and card reader first. The card reader gives customers the ability to tap, swipe, or scan their credit card'. The tap is on Otter's reader, not on a phone. Otter Handhelds Introduction does say 'credit card payments can be taken directly on the Otter Handheld device without additional hardware' - but the Handheld is a purpose-built 5.5-inch device Otter sells at $500 to buy or $39/month to lease plus $15/month per screen, not the operator's own phone. Bring Your Own Device (art. 31650150805139) is the only BYOD programme and it covers order management only: an Android tablet plus one of eleven named Bluetooth printers, with no payment path. `tap to pay`, `tap-to-pay` and `softpos` each occur 0 times across all four corpora; `contactless` occurs 2 times in the help centre and 9 on www, every one of them describing the card reader. source |
| payments-offline-decline-liability | unknown — no evidence had been located in the record. | resolve-to-no | Otter POS Using Offline Mode is the article that would carry this and it is silent on both halves. It documents the capture ('The ability to continue processing Credit Card and Cash Transactions') and the replay ('Orders will be automatically processed when you connect to a network again'), and it answers its own question 'What are the limitations of Offline Mode?' with exactly three: online orders cannot be accepted, new printers and card readers cannot be paired, and wifi or ethernet printers will not print. Decline-on-reconnect is not among them, and no post-reconnect report of failed offline payments is documented anywhere. The word `decline` never occurs within 600 characters of `offline` anywhere in the 287-article help centre. The nearest published liability statement is general rather than offline-specific - Chargebacks Guide (art. 40477996404883): 'Businesses are liable for all accepted payments and disputes they receive. Otter does not assume liability for accepted payments.' - and an offline transaction that declines on reconnect is precisely a payment that was never accepted, so that sentence does not reach this claim. source |
| payments-house-accounts | unknown — no evidence had been located in the record. | resolve-to-no | The Otter POS payment screen is enumerated exhaustively in five numbered sections - cash and credit card, tipping, split payments, mixed payments, and 'Other Payments (Manual Card Entry, Mark as Paid, and Void Check)' - and the 'Other' bucket is itself fully expanded in the same article. There is no on-account tender. The closest mechanism is an open tab, which the article describes as per-order and per-visit, not per-customer: 'Once an order is placed using the "Pay Later" it is sent to the kitchen and considered an open tab', settled from the order list when 'the customer is ready to pay'. `house account` and `credit limit` each occur 0 times across the help centre, guides, spec and www; `on account` occurs 4 times in the help centre and every one is Otter's own subscription billing, not a guest account. No periodic statement or invoice generation for a guest account is documented; Otter Catering's invoicing is per catering order. source |
| payments-card-on-file | unknown — no evidence had been located in the record. | resolve-to-no | Otter POS Guest Profile is the guest record on the POS and it holds delivery data only: a phone-number search returns name, address, and 'Delivery Instructions', and the article's whole subject is that the profile 'significantly expedites the process of populating customer delivery information'. No card is stored against it. Manual Card Entry (art. 30017138004243) is the phone-order path and it re-keys the card every time - 'Enter the customer's card information, including the card number, expiration date, and security code'. `save card`, `store card` and `card vault` occur 0 times across all four corpora. Two poisons were removed before publishing this: `card on file` does occur twice in the help centre, both in Otter's own subscription billing (Otter Subscriptions and Otter Invoice Management in Stripe) where the card on file is the operator's, not the guest's; and `token` occurs 39 times in the developer guides and 60 in the OpenAPI spec, every one an OAuth 2.0 access token at POST /v1/auth/token, not a payment token. source |
| payments-p2pe-pci4 | unknown — no evidence had been located in the record. | resolve-to-no | `P2PE`, `PCI DSS`, `AOC`, `Attestation` and `SOC 2` each occur 0 times across the 287-article help centre, the 53 developer guides, the OpenAPI spec and 414 www pages including all 42 legal documents; `PCI` itself occurs 6 times on www and `security` 12/1/106/150 as controls. Every one of those PCI mentions assigns the obligation to the operator rather than discharging it: the Otter Tech Services Terms say 'You represent and warrant that you shall comply with all data security standards (including any standard related to the physical compliance requirements of using any Hardware) adopted by the PCI Security Standards Council, LLC', and on leased hardware 'It is your responsibility to (i) regularly inspect your Hardware for any physical damage or any safety concerns, and if relevant, (ii) ensure compliance with physical PCI or other payment processing requirements.' trust.tryotter.com does not resolve, so there is no compliance registry either. Otter's processor is Stripe and its readers are Stripe devices, so an underlying P2PE listing may exist at Stripe; nothing Otter publishes says so, and no attestation is offered to merchants on request in any document. source |
| delivery-route-map | unknown — no evidence had been located in the record. | resolve-to-no | Couriers & Logistics in Order Manager (updated 2026-08-18) is Otter's whole dispatch surface and it has no map. Assignment is a two-value setting - 'Under the Assignment mode, select either "Automatic" courier or "Manual" courier' - and an assigned courier surfaces as a tab, not a pin: 'you can view more details in the order detail's "Courier" tab'. Geography enters only as a radius check: 'If the address is outside of the courier radius, a courier will not be assigned to that order.' `live map`, `multi-stop` and `optimize route` occur 0 times across all four corpora. The poison here is severe and worth publishing: `map` occurs 18 times in the help centre and every occurrence is either the analytics `heat map` or the verb (station profiles 'map to the new one', menu changes that 'map updates to their impact'), so an untokenised count would have read as 18 hits for a feature that does not exist. The only geographic coordinates in the 465 KB OpenAPI spec are a Location object of latitude and longitude attached to the delivery ADDRESS, not to a courier. source |
| delivery-driver-comp | unknown — no evidence had been located in the record. | resolve-to-no | Otter tracks no driver compensation input. `mileage` and `tip out` occur 0 times across the help centre, guides, spec and 414 www pages; `driver` occurs 12 times in the help centre as the control, and none concerns pay. Couriers & Logistics delegates the entire driver-labour problem to third parties - under the heading 'Driver management' it says 'Manage existing drivers, automate dispatch, and efficiently deploy your drivers with integrations like Shipday and Nash.' - and its FAQ answers 'How can Otter integrations help simplify my delivery operations?' by naming only DoorDash Drive, Relay, Shipday and Nash. Otter's own payroll export runs on store labour, not delivery: the Labor Cost Report (art. 38681141651987) exports 'the aggregated hours data & aggregated wage data by employee' from the Homebase integration, with no reimbursement line, and the Time Card export's columns are Staff member, Role, Clocked in, Clocked out, Total hours. source |
| delivery-cash-reconcile | unknown — no evidence had been located in the record. | resolve-to-no | Otter does reconcile cash and produces an over/short figure, but the unit is a drawer and never a driver. The Cash Management Report enumerates its reconciliation metrics exhaustively - Open Date, Drawer ID, Drawer Name, Start, Sales, Refunds, Paid In, Paid Out, Expected Balance, Ending Balance, and Difference, 'The amount left over when subtracting the ending balance from the expected balance' - and its transaction rows are keyed to Location, POS Terminal, Drawer Name and Staff Name. No courier, driver or run dimension appears in either table. `driver bank`, `settle up` and `cash on delivery` occur 0 times across all four corpora, and `cash` occurs 457 times in the help centre as the control while never once occurring within 400 characters of `driver`. Consistent with Otter having no in-house driver roster: delivery labour is delegated to 3PL and fleet partners. source |
| delivery-daas-fallback | unknown — no evidence had been located in the record. | resolve-to-no | Otter's dispatch runs the opposite way round from this claim and has no rule engine either way. DaaS is the default and self-delivery is the manual fallback: 'If (1) an order is a restaurant delivery order and (2) you have a 3PL connected with Otter, a “ courier needed ” label will be tagged to the order in the order feed. You will need to either deliver the order via self-delivery or choose a delivery service provider to deliver the order for you.' When the 3PL cannot serve the order, nothing overflows - the operator is shown a notification and must choose: 'If the request fails to find a courier, Otter pops a "Failed to find courier" notification. You can either "Retry" or choose to "Self-deliver" the order.' The automatic mode is timing-driven, not availability-driven - 'Otter will either automatically dispatch the order based on your cooking time, or you can manually request it' - and an out-of-zone address simply fails: 'If the address is outside of the courier radius, a courier will not be assigned to that order.' There is no in-house driver roster for a wait-threshold or no-driver-available rule to consult; `self-deliver` is an order status, not a fleet. source |
| digital-group-ordering | unknown — no evidence had been located in the record. | resolve-to-no | `group order` occurs 0 times across the 287-article help centre, the 53 developer guides, the OpenAPI spec and 414 www pages. The large-order product is Otter Catering, and its documented flow is single-orderer throughout, step by step: 'Guests browse the catering menu choose items and quantities, and see a clear price per attendee', 'They select pickup or delivery and schedule the order up to 6 months in advance', 'They pay the deposit online using Apple Pay, Google Pay, or any major credit card', 'A few days before the event, guests receive an invoice and pay the remaining balance'. One payer, one cart, a deposit and an invoice - there is no shareable link that lets multiple participants add their own items, and no per-person or total spend cap. Catering settings are enumerated (General, Payment, Scheduling, Ordering Restrictions, Tips, Fees, Delivery Area, Delivery Fees) and no participant or cap setting appears among them. source |
| digital-guest-data-ownership | unknown — no evidence had been located in the record. | resolve-to-no | Both halves of this claim fail, in different ways. Ownership is documented but is NOT the operator's alone: the Otter Tech Services Terms provide that 'Any and all Order Data made through the Online Ordering and Digital Dine In Services shall be owned separately by both parties', with Order Data defined to include 'Personal Data', and Otter separately reserves that 'We will own all intellectual property rights in such de-identified or aggregated forms of Order Data'. Bulk export is undocumented: the Guest Directory Report is a long, current article covering contact information, loyalty status, order history and marketing-subscribed status, with filters, five cohort views and a troubleshooting and FAQ section, and it documents no export or download of any kind. The contrast inside the same publisher is the instrument - where an export exists Otter says so plainly, as in Staff Timecard Reporting's 'Select [ Export ] to download the report in XLS format' and the Cash Management Report's 'Simply click the [Export] button at the top of the page.' `download` never occurs within 350 characters of `customer` anywhere in the help centre. source |
| guest-loyalty-10dlc-registration | unknown — no evidence had been located in the record. | resolve-to-no | Otter ships first-party SMS marketing and documents it in detail - First Party SMS Marketing (updated 2026-06-12) walks the whole campaign builder, lists seven pre-set audience types, and answers its own FAQ on custom segments and optional discounts - and it says nothing whatever about carrier registration. `10DLC`, `A2P`, `toll-free`, `short code` and `Twilio` each occur 0 times across the 287-article help centre, the 53 developer guides, the OpenAPI spec and 414 www pages, while `SMS` occurs 210 times in the help centre and `text message` 162 as controls, so the corpus is plainly not silent about SMS. Two poisons were cleared: `carrier` returns exactly 1 tokenised help-centre hit and it is a shipping carrier for returning a printer ('A Return Label will be provided to be used by a common mail carrier in your region'); and `brand registration` returns 4 www hits, all of them in a Kentucky liquor-licensing wiki page about the Kentucky PRO Product Registry Online, nothing to do with A2P. source |
| guest-loyalty-data-export-portability | unknown — no evidence had been located in the record. | resolve-to-no | The guest list is viewable and searchable but not exportable by any documented route. Guest Directory Report and Customer Reports (art. 25246908493587) are the two articles that hold the guest table - the latter enumerating its columns as Name, Email, Phone number, Marketing opt-in, Last order date, Total Orders, Total Spend, Discounted orders, Discount redeemed, Average basket size and Average Tip - and neither offers an export, a download or a CSV. Two hard constraints sit on top of that: PII is consent-gated in the table itself (the Email column is described as 'Shown only if marketing is allowed for customer', and the Phone number column identically), and the only documented guest-record mutation is a loyalty points adjustment. The API is not the alternative: the Reports API is marked `deprecated: true` in the OpenAPI spec with 'The Reports API is deprecated and may be removed in a future release', and the only guest-history endpoint, POST /v1/eater/order-history, is per-eater by construction - 'Provide an external eater ID to get a list of order related to that eater' - not a bulk list. `guest list` occurs 0 times corpus-wide; `export` occurs 57 times in the help centre and exactly one of those is within 400 ch source |
| guest-loyalty-wallet-pass | unknown — no evidence had been located in the record. | resolve-to-no | `Apple Wallet` and `Google Wallet` occur 0 times across the 287-article help centre, the 53 developer guides, the OpenAPI spec and 414 www pages; `Apple Pay` occurs 3 times in the help centre and 5 on www as the control, so Apple vocabulary is present in the corpus and it never once names a pass. Otter Loyalty Introduction (updated 2026-07-02) enumerates every way a guest reaches their balance and a wallet is not among them: 'Your customers can access the portal through: A direct link shared by the merchant Scanning a printed QR code Scanning QR code on order receipt Accessing their profile on your direct order website' (a bullet list on the page). Sign-up and redemption otherwise happen on the customer-facing POS screen or in the Kiosk checkout flow by phone number. The balance is push-updated nowhere; the guest scans a QR code to see it. source |
| guest-loyalty-privacy-rights-tooling | unknown — no evidence had been located in the record. | resolve-to-no | Otter's Data Processing Addendum assigns the duty to the operator and offers no tooling to discharge it. Otter is the processor - 'Customer is solely responsible for determining the purposes and means of the processing of Personal Data, and Vendor is Customer's processor' - and on guest requests its commitment stops at notification: 'To the extent legally required, Vendor shall promptly notify Customer if it receives a request from a Data Subject to exercise any of the Data Subject's rights', with the work landing on the operator, who 'shall use its best efforts to respond to and resolve promptly all requests from Data Subjects'. No admin control exists to do that: the Guest Directory Report documents exactly one mutation of a guest record, a loyalty points balance adjustment, and states plainly that 'there is no way to merge customer profiles'. The 81 `CCPA` occurrences on www are all in Otter's own consumer privacy policies, where the eater writes to Otter - that settles a guest's RIGHT, not an operator's tool, and no deletion propagation to loyalty or marketing records is documented anywhere. source |
| guest-loyalty-ai-offer-recommendation | unknown — no evidence had been located in the record. | resolve-to-partial | Shipped automation exists and is documented, but not for the three things this claim names. Delivery App Marketing (updated 2025-12-18) ships Boost Automation, which 'Offers automatic, seamless end-to-end management and optimization for ad campaigns and promotions across multiple storefronts and delivery platforms within parameters you set' - the operator picks a spend target band (1-3%, 3-7%, 7-12%) and Otter optimises inside it. Otter POS Introduction advertises 'AI-driven promotions on delivery apps', and the Otter Go App (art. 46992929408915) ships Weekly AI Insights behind a 'Beta' badge that analyse eight weeks of data and produce 'Suggestions for Improving Metrics' and 'automatic actionable recommendations' - but those are business-performance insights, not offers. Offer CONTENT is template-generated rather than model-generated on the first-party side: the SMS draft 'An SMS draft will auto-populate with: Restaurant name Discount details Discount code (if applicable) Coupon URL' (a bullet list on the page). TARGET AUDIENCE is explicitly not AI-selected - the same article's FAQ answers 'No — Currently, there isn't a feature to create your own audience type/customer segment to send an SMS Campaign to. The audien source |
| labor-offline-time-punch | unknown — no evidence had been located in the record. | resolve-to-no | This claim requires the behaviour to be documented and it is not, in either article that would carry it. Time Card App (Clocking In/Out) was updated 2026-08-10 and is thorough - the clock-in and clock-out flow, the Staff app report, the export, the edit path, and an FAQ that goes as far as 'Currently, the Time Card report in Otter Dashboard only shows shifts that have a clock in AND a clock out event.' and 'Clock in and clock out data are recorded with the same time as the device (the device's time zone)'. Offline behaviour is not mentioned. Otter POS Using Offline Mode names its three limitations and time cards are not among them, and it describes the offline store as order-scoped: clearing the app cache while offline 'will erase data from the Otter app that has not been sent to the server yet. For example, order history.' `time punch` occurs 0 times across all four corpora; `clock in` occurs 20 times in the help centre as the control and `offline` never once occurs within 500 characters of `clock` anywhere in it. source |
| reporting-sales-forecast | unknown — no evidence had been located in the record. | resolve-to-no | Every Otter report is retrospective. The Analytics article's comparison controls are 'Compare to the previous period, Compare to the previous year' and its granularity controls are 'Hour, Day' over a '7-day rolling, Raw trend' data set; the Otter Go app's AI Insights analyse 'the last 8 weeks of data with focus on the most recent 2 weeks'. No forward projection is exposed anywhere, and nothing feeds scheduling or par ordering. `forecast` occurs 0 times in the 287-article help centre, 0 in the developer guides and 0 in the OpenAPI spec, and `predict`, `projection`, `expected sales`, `labor forecast` and `par level` are all 0 across all four corpora. The 5 www occurrences of `forecast` are the poison and none is an Otter feature: they are a Deloitte forecast about agentic-AI pilots, a glossary entry defining a predictive model, a cited market-size report, and two sentences in a thought-leadership guide arguing that 'Statistical trend analysis based on historical sales is not AI' and that 'Demand forecast as a feature and demand forecast as a trained model are two different products'. source |
| multi-location-enterprise-sso | unknown — no evidence had been located in the record. | resolve-to-no | User Management (updated 2026-07-16) enumerates every role Otter has and states a Login Type for each one, and the enumeration is closed in exactly the direction this claim needs. Admin, Accountant, Analyst and Manager are 'Login Type : Username & Password'; Shift Supervisor is 'Username & Password and Pin Code'; Cashier is 'Pin Code'; Cook and Cook (Restricted) are 'Email & Password'; Courier and Dispatcher are 'Username & Password'. No role offers a federated login, and custom roles are built by editing an existing role's permissions, not its login type. `SAML`, `OIDC` and `SCIM` each occur 0 times across the help centre, guides, spec and 414 www pages; the phrase `single sign on` occurs 3 times and all 3 are the Uber Eats poison below. The poison is instructive: an untokenised search for SSO returns 40 help-centre lines, which collapses to 3 when word-bounded - the rest were `associated` - and all 3 survivors are consumer social login on the merchant's Uber Eats account, which the Uber Eats Integration Guide tells operators to REMOVE ('try removing the SSO (single sign on or social sign on) for your Uber Eats account'). Deprovisioning is manual per user in the Otter Dashboard. source |
| extensibility-api-access-cost | unknown — no evidence had been located in the record. | resolve-to-no | Otter's API is a partner programme, not a subscription entitlement, so it is not included in any base plan at any price. Registration is gated on an Otter employee: the Quickstart states 'External partners need a registered **application** before calling the Otter API. Registration is manual.' (the asterisks are the source's own markdown emphasis) and step one is 'Contact your Account Representative and ask them to register your application.' Store pairing and webhook registration run through the same person, and capability is granted centrally - the OpenAPI spec's security scheme says 'Scopes must be configured by our internal team to be enabled for an app.' The help centre frames the audience the same way, telling operators only that 'With our open API, we enable effortless connections between our clients and yours' (art. 22694653065107). No published bundle lists API access: the Advanced Bundle's contents are POS Dual Screen Terminal Bundle, Order Manager / Delivery App Aggregation, Online Ordering, QR Code Ordering, Website Builder and Inventory. No fee for API access is published either way - `revenue share`, `partner fee` and `developer account` are 0 across all four corpora - but the approval gate alone falsifies 'included in the ba source |
| extensibility-middleware-compatibility | unknown — no evidence had been located in the record. | resolve-to-no | Otter POS is not a documented endpoint of two aggregation middleware platforms. Measured at the middleware vendors' own publishers, not Otter's. DELIVERECT: its 1,000-article English help corpus contains `Otter` zero times, against Lightspeed 269, Revel 144, Square 70, Epos Now 35, Clover 28 and Toast 26 as controls, and its POS Systems integration page names no Otter. CHOWLY: its sitemap enumerates exactly six per-POS pages - chowly-for-toast, -square, -spoton, -clover, -revel, -lightspeed - and Otter is not among them. Otter's own Order Manager, which the claim's parenthetical names as a qualifying platform, does inject into Otter POS, but that is the same vendor integrating with itself and is one platform in any case. RESIDUAL GAP, stated rather than hidden: Checkmate / ItsaCheckmate's POS partner list is behind a client-rendered control (the rendered text reads 'Point of Sale Available for brands with 10+ locations See the full partner list'), whose only href is /partner-with-us, so that one publisher is unmeasured and a single entry there would change the count. Otter's own corpus cannot settle this either way: its 33 mentions of Chowly, Deliverect and ItsaCheckmate are all one boilerplate paragr source |
| reliability-sync-conflict-handling | unknown — no evidence had been located in the record. | resolve-to-no | Nothing Otter publishes describes what happens when two devices edit the same object during a partition. The Offline Mode article describes a single device's local store and its replay - orders 'will be fully processed when the network connection is restored' - and warns only that clearing the cache while offline destroys unsent data. `last write wins` occurs 0 times across the help centre, the developer guides, the OpenAPI spec and 414 www pages, and `partition` occurs 0/0/0/1 - the one www hit is a wiki page on Vietnamese cuisine describing 'the partition of Vietnam in 1954'; `two devices` returns exactly 1 tokenised help-centre hit and it concerns Bluetooth printer pairing range. The 31 help-centre occurrences of `conflict` are the poison and none is a device partition: 'Resolve POS Menu Conflicts' (art. 25819030909587) compares a third-party POS menu against the Otter menu on a six-hour poll and resolves item-by-item ('Otter checks the POS menu every 6 hours'), a menu-import location flagged Conflict means it already has a different menu assigned, and Menu Pricing Rules flags two rules whose scopes overlap. Two systems disagreeing about a catalogue is a different problem from two terminals disagreeing about a check. source |
| reliability-menu-build-service | unknown — no evidence had been located in the record. | resolve-to-no | The Otter POS Onboarding Checklist puts the menu build on the operator and offers articles rather than labour. Its Go-Live section opens 'Before you begin the Go-Live call with an Otter Onboarding Specialist, please attempt to complete the following tasks', and its Step 3 is headed 'Finalize Menu Setup' and reads 'Finalize your menu setup within the Otter Dashboard . There are multiple ways you can add a new menu to Otter: Import from delivery partner Upload a spreadsheet template Create the menu manually in Otter' (the three routes are a bullet list on the page), followed by 'If you need assistance setting up your menu, please review the following Otter Help Center articles'. The three named routes are all self-serve, and Import an Existing Menu (art. 38720104858515, updated 2026-08-18) documents them as operator-driven wizards, including an Uber Eats storefront-URL import whose caveat is that 'the menu hours will not be imported. You will need to set menu hours within the Otter Dashboard'. The Onboarding Specialist appears 45 times across the help centre, always to connect an integration, check a go-live, or 'double-check the menu adjustments' the operator made - never to build the menu. source |
| reliability-failover-terminal-role | unknown — no evidence had been located in the record. | resolve-to-no | There is no master or server role for a terminal to assume, because Otter POS has no local server: each device caches its own work and replays it to the cloud. The Offline Mode article's limitations show the isolation directly - during an outage 'You will not be able to pair new printers or card readers', and 'Printers that are connected using a wifi or ethernet connection will not print orders during an internet outage. Station tickets do not print when the device is in offline mode.' A surviving terminal cannot take over printing for the store, let alone act as its server. `failover`, `primary terminal` and `master` occur 0 times across the 287-article help centre, the 53 developer guides and the OpenAPI spec (`master` returns 5 www hits, all of them unrelated marketing prose). The one device-to-device dependency Otter does document runs the wrong way for this claim: the Otter Handheld 'connects directly to your Otter POS terminal', and cash payments on it 'should be completed on the main terminal to trigger the opening of the cash drawer'. source |
Sources
Every URL this record cites. 162 in total.
- https://tryotter.com/pricing
- https://tryotter.com/products/otterpos
- https://tryotter.com/products/kds
- https://tryotter.com/products/kiosk
- https://tryotter.com/products/digital-dine-in
- https://tryotter.com/products/online-ordering
- https://tryotter.com/products/order-management
- https://tryotter.com/products/menu-management
- https://tryotter.com/products/loyalty
- https://tryotter.com/integrations
- https://tryotter.com/products/couriers
- https://tryotter.com/support
- https://status.tryotter.com/
- https://developer.tryotter.com/
- https://www.tryotter.com/faq
- not refetchable
- not refetchable
- https://about.doordash.com/en-us/news/doordash-preferred-integrations-program-2026
- https://tryotter.com/terms
- https://tryotter.com/products/financials
- https://tryotter.com/products/analytics
- https://tryotter.com/products/inventory-savings
- https://tryotter.com/products/revenue-recapture
- https://tryotter.com/products/app
- https://tryotter.com/products/live-alerts
- https://tryotter.com/products/virtual-brands
- https://tryotter.com/products/catering
- https://tryotter.com/products/ratings-and-reviews
- https://tryotter.com/become-a-partner
- https://tryotter.com/pizzapos
- https://helpdesk.tryotter.com/hc/en-us
- https://helpdesk.tryotter.com/hc/en-us/articles/18439639099667-Menu-Item-Modifiers-Nested-Modifiers
- https://helpdesk.tryotter.com/hc/en-us/articles/36253606306195-Menu-Item-Pricing
- https://helpdesk.tryotter.com/hc/en-us/articles/5159002040083-Item-Availability-86-ing
- https://helpdesk.tryotter.com/hc/en-us/articles/27244902024723-Otter-POS-Cash-Discounts
- https://helpdesk.tryotter.com/hc/en-us/articles/27245218431763-Processing-Refunds-on-Otter-POS
- https://helpdesk.tryotter.com/hc/en-us/articles/44155119549843-Voided-POS-Transactions
- https://helpdesk.tryotter.com/hc/en-us/articles/26844590516755-Creating-Employee-PIN-Codes
- https://helpdesk.tryotter.com/hc/en-us/articles/44753081545619-User-Management
- https://helpdesk.tryotter.com/hc/en-us/articles/26562624877459-Cash-Management
- https://helpdesk.tryotter.com/hc/en-us/articles/21748907448467-Online-Ordering-Settings
- https://helpdesk.tryotter.com/hc/en-us/articles/40678275262611-Otter-Loyalty-Points
- https://helpdesk.tryotter.com/hc/en-us/articles/31727842220819-Otter-Loyalty-Introduction
- https://helpdesk.tryotter.com/hc/en-us/articles/40222270130963-Guest-Directory-Report
- https://helpdesk.tryotter.com/hc/en-us/articles/39344200685971-Tip-Reporting
- https://helpdesk.tryotter.com/hc/en-us/articles/50523313004179-Order-History-Dashboard
- https://helpdesk.tryotter.com/hc/en-us/articles/22695702216979-Integrated-Partner-Process
- https://helpdesk.tryotter.com/hc/en-us/articles/22694653065107-API-Documentation
- https://helpdesk.tryotter.com/hc/en-us/articles/13778392924819-Bluetooth-Front-of-House-Printer-Troubleshooting
- https://helpdesk.tryotter.com/hc/en-us/articles/26865574404883-Otter-POS-Using-Offline-Mode
- https://helpdesk.tryotter.com/hc/en-us/articles/4408288435603-Order-with-Google-Integration-Guide
- https://helpdesk.tryotter.com/hc/en-us/articles/36524231987603-Tipping-Guide-for-Otter-POS
- https://helpdesk.tryotter.com/hc/en-us/articles/8959034298899-Tax-Reports
- https://helpdesk.tryotter.com/hc/en-us/articles/42994188214931-Creating-a-Loyalty-Program
- https://helpdesk.tryotter.com/hc/en-us/articles/43082678032019-Multi-Store-Ordering
- https://helpdesk.tryotter.com/hc/en-us/articles/6626319293843-Online-Ordering-Introduction
- https://helpdesk.tryotter.com/hc/en-us/articles/33725692118931-Accepting-Payments-on-Otter-POS
- https://helpdesk.tryotter.com/hc/en-us/articles/25819030909587-Resolve-POS-Menu-Conflicts
- https://helpdesk.tryotter.com/hc/en-us/articles/26645285153555
- https://helpdesk.tryotter.com/hc/en-us/articles/26845973817491
- https://helpdesk.tryotter.com/hc/en-us/articles/35667642715283
- https://helpdesk.tryotter.com/hc/en-us/articles/38681141651987
- https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147
- https://helpdesk.tryotter.com/hc/en-us/articles/38552114382739
- https://helpdesk.tryotter.com/hc/en-us/articles/36524231987603
- https://helpdesk.tryotter.com/hc/en-us/articles/4402306062867
- https://helpdesk.tryotter.com/hc/en-us/articles/27241836874515
- https://helpdesk.tryotter.com/hc/en-us/articles/43081257316243
- https://www.tryotter.com/integrations
- https://helpdesk.tryotter.com/hc/en-us/articles/18163188728339-Financials-Reconciliation
- https://helpdesk.tryotter.com/hc/en-us/articles/7816159229715-Payouts-Overview
- https://helpdesk.tryotter.com/hc/en-us/articles/19456763447827-Live-Alerts
- https://helpdesk.tryotter.com/hc/en-us/articles/4417582578323-Repairing-Disconnected-Integrations
- https://helpdesk.tryotter.com/hc/en-us/articles/33983809245203-Otter-Catering
- https://helpdesk.tryotter.com/hc/en-us/articles/41042129066259-Sales-Summary
- https://helpdesk.tryotter.com/hc/en-us/articles/12558297776147-Otter-Analytics-Your-Guide-to-Reports-and-Insights
- https://helpdesk.tryotter.com/hc/en-us/articles/29657071763987-Kiosk-Brand-Selection
- https://helpdesk.tryotter.com/hc/en-us/articles/360052655553-Adding-a-Third-Party-Virtual-Brand
- https://helpdesk.tryotter.com/hc/en-us/articles/20690423360403-Downgrade-or-Cancel-an-Account
- https://helpdesk.tryotter.com/hc/en-us/articles/35768671669907-Otter-Subscriptions
- https://helpdesk.tryotter.com/hc/en-us/articles/18739528029715-Otter-Plan-Packages-Hardware
- https://helpdesk.tryotter.com/hc/en-us/articles/40116707746067-Menu-Pricing-Rules
- https://helpdesk.tryotter.com/hc/en-us/articles/35314976325907-Menu-Version-History
- https://helpdesk.tryotter.com/hc/en-us/articles/35667642715283-Otter-Handhelds-Introduction
- https://helpdesk.tryotter.com/hc/en-us/articles/35655034312851-Otter-Payouts-Schedule
- https://helpdesk.tryotter.com/hc/en-us/articles/26643285732243-Guide-to-Connecting-Stripe
- https://helpdesk.tryotter.com/hc/en-us/articles/27589269188499-Couriers-Logistics-in-Order-Manager
- https://helpdesk.tryotter.com/hc/en-us/articles/360052111214-How-do-I-update-my-prep-times
- https://helpdesk.tryotter.com/hc/en-us/articles/38446541679379-Using-your-Online-Ordering-URL
- https://helpdesk.tryotter.com/hc/en-us/articles/43019655616019-Online-Ordering-Discounts-Promotions
- https://helpdesk.tryotter.com/hc/en-us/articles/52488273009427-First-Party-SMS-Marketing
- https://developer.tryotter.com/assets/index-zibGwtWX.js
- https://helpdesk.tryotter.com/hc/en-us/articles/37951635152659-Adding-Menu-Items
- https://helpdesk.tryotter.com/hc/en-us/articles/27241942607635-End-of-Day-Reporting
- https://helpdesk.tryotter.com/hc/en-us/articles/41030431592979-Cash-Management-Report
- https://helpdesk.tryotter.com/hc/en-us/articles/22964276979987-Scheduled-Reports
- https://helpdesk.tryotter.com/hc/en-us/articles/46992929408915-Otter-Go-App
- https://helpdesk.tryotter.com/hc/en-us/articles/5183228694803-Multi-Menus
- https://helpdesk.tryotter.com/hc/en-us/articles/38618622139923-Publishing-a-Menu
- https://helpdesk.tryotter.com/hc/en-us/articles/48829384644499-Store-Management
- https://helpdesk.tryotter.com/hc/en-us/articles/14643798880403-POS-Linking-for-Multi-Locations
- https://helpdesk.tryotter.com/hc/en-us/articles/53271161201555-SKU-Library
- https://helpdesk.tryotter.com/hc/en-us/articles/37358535943187-Otter-Gift-Cards
- https://helpdesk.tryotter.com/hc/en-us/articles/40644257640083-Loyalty-Customer-Profiles
- https://helpdesk.tryotter.com/hc/en-us/articles/21721287896083-Menu-Publish-Errors
- https://helpdesk.tryotter.com/hc/en-us/articles/49262889664275-Menu-Edit-History
- https://helpdesk.tryotter.com/hc/en-us/articles/27321592256147-Menus-Activity-Logs
- https://helpdesk.tryotter.com/hc/en-us/articles/42099611842195-Otter-Account-Logins
- https://developer-guides.tryotter.com/docs/
- https://developer-guides.tryotter.com/api-reference/
- https://developer-guides.tryotter.com/docs/guides-rate-limiting/
- https://developer-guides.tryotter.com/docs/guides-webhook-authentication/
- https://developer-guides.tryotter.com/docs/onboard-application/
- https://developer-guides.tryotter.com/docs/reports-order-report/
- https://helpdesk.tryotter.com/hc/en-us/articles/23271075696915-Location-Tagging
- https://www.tryotter.com/legal
- https://www.tryotter.com/legal/tech-services
- https://helpdesk.tryotter.com/hc/en-us/articles/13776113141907-Otter-Printer-Options
- https://helpdesk.tryotter.com/hc/en-us/articles/39076370297875-Kiosk-27-21-Setup-Guide
- https://helpdesk.tryotter.com/hc/en-us/articles/33964789386259-Otter-POS-Onboarding-Checklist
- https://helpdesk.tryotter.com/hc/en-us/articles/39374883174291-Manually-Build-a-Menu
- https://helpdesk.tryotter.com/hc/en-us/articles/360053294413-How-Do-I-Get-A-Tablet-Replacement
- https://www.tryotter.com/sitemap-0.xml
- https://helpdesk.tryotter.com/hc/en-us/articles/34209922356499-Geekland-KDS-Hardware-Installation
- https://helpdesk.tryotter.com/hc/en-us/articles/45522337604499-Uber-Otter-Benefits-Guide
- https://helpdesk.tryotter.com/hc/en-us/articles/41391990649875-Otter-Price-Adjustments-for-Mexico
- https://helpdesk.tryotter.com/hc/en-us/articles/40183256731155-Loyalty-Reporting
- https://www.tryotter.com/legal/dpa
- https://www.tryotter.com/blog/restaurant-tips/why-soc-ii-compliance-is-important
- https://helpdesk.tryotter.com/hc/en-us/articles/39076742954771-Otter-Kiosks-Introduction-Guide
- https://helpdesk.tryotter.com/hc/en-us/articles/4403016409619-DoorDash-Integration-Guide
- https://helpdesk.tryotter.com/hc/en-us/articles/28883991347731-Uber-Eats-Integration-Guide
- https://helpdesk.tryotter.com/hc/en-us/articles/4403016352787-Grubhub-Integration-Guide
- https://helpdesk.tryotter.com/hc/en-us/articles/12158544475283-Web-Order-Management-Overview
- https://helpdesk.tryotter.com/hc/en-us/articles/28933440344979-Orders-Management
- https://helpdesk.tryotter.com/hc/en-us/articles/12157491203347-Menu-Management-Introduction
- https://helpdesk.tryotter.com/hc/en-us/articles/22205073836051-Pause-Unpause-a-Storefront
- https://helpdesk.tryotter.com/hc/en-us/articles/22694916113811-Getting-paid
- https://developer-guides.tryotter.com/docs/organization-integrations-onboarding-flow/
- https://helpdesk.tryotter.com/hc/en-us/articles/38681141651987-Labor-Cost-Report-Homebase-Integration
- https://developer-guides.tryotter.com/
- https://helpdesk.tryotter.com/hc/en-us/articles/44752885984147-Otter-Inventory-Savings
- https://helpdesk.tryotter.com/hc/en-us/articles/12558333053587-Integrations-Introduction
- https://helpdesk.tryotter.com/hc/en-us/articles/53466996694419-Authorize-Otter-on-Delivery-Platforms
- https://developer-guides.tryotter.com/api-reference
- https://connect.tryotter.com/docs/llms-full.txt
- https://helpdesk.tryotter.com/hc/en-us/articles/26644683397139-Featured-Menu-Items-for-Otter-POS
- https://helpdesk.tryotter.com/hc/en-us/articles/33505325547539-Otter-POS-Product-Mix-Report
- https://helpdesk.tryotter.com/hc/en-us/articles/38681141651987-Labor-Cost-Report-Homebase-Integration
- https://helpdesk.tryotter.com/hc/en-us/articles/26645285153555-Time-Card-App-Clocking-In-Out
- https://connect.tryotter.com/docs/openapi/public-api.yaml
- https://connect.tryotter.com/docs/llms-full.txt
- https://connect.tryotter.com/docs/guides-quickstart/
- https://developer-guides.tryotter.com/
- https://helpdesk.tryotter.com/api/v2/help_center/en-us/articles.json
- https://www.tryotter.com/sitemap.xml
- https://www.tryotter.com/legal/tech-services
- https://www.tryotter.com/legal/dpa
- https://api.tryotter.com/robots.txt
- https://connect.tryotter.com/robots.txt
- https://api.github.com/search/repositories?q=tryotter
- https://www.deliverect.com/en/integrations/pos-systems