OFFLINE MODE - Using Cached Menu. Card payments disabled. Cash & Room Charges will sync later.
Categories

Current Order

{{ cartItemCount }} item(s)
Cart is empty. Tap menu items to begin.
{{ c.name }} No Tax
${{ (c.price_cents / 100).toFixed(2) }} each
+ {{ add.name }} (+${{ (add.price_cents / 100).toFixed(2) }})
- {{ sub.name }}
* {{ note }}
{{ note }}
{{ c.quantity }}
${{ ((c.price_cents * c.quantity) / 100).toFixed(2) }}
Subtotal ${{ (subtotal / 100).toFixed(2) }}
Non-Taxable Amount ${{ (nonTaxableSubtotal / 100).toFixed(2) }}
Sales Tax (4.9%) ${{ (tax / 100).toFixed(2) }}
Total ${{ (total / 100).toFixed(2) }}

Customize Item

Select additions, subtractions & kitchen instructions

{{ customizeItem.name }}

Base: ${{ (customizeItem.base_price_cents / 100).toFixed(2) }} • {{ isTaxable(customizeItem) ? 'Taxable (4.9%)' : 'Non-Taxable (0%)' }}
Unit Price
${{ (customizeItem.price_cents / 100).toFixed(2) }}

Subtractions / Omissions (Kitchen Hold)

Tap to omit

Additions & Upgrades

Tap to add

Common Quick Modifiers

Tap quick options or enter custom instructions below.

Special Instructions / Allergies

{{ note }}

Checkout Register

Order Total: ${{ (total / 100).toFixed(2) }} • {{ cartItemCount }} item(s)
Subtotal ${{ (subtotal / 100).toFixed(2) }}
Tax (4.9%) ${{ (tax / 100).toFixed(2) }}
Total Due ${{ (total / 100).toFixed(2) }}
Paid So Far ${{ (totalPaidCents / 100).toFixed(2) }}
Remaining Balance: PAID IN FULL
${{ (remainingBalanceCents / 100).toFixed(2) }}
Payments Applied ({{ payments.length }}) Tap remove to void a payment
{{ p.method }} ${{ (p.amount_cents / 100).toFixed(2) }} ({{ p.details }})
Enter partial amount for split (e.g. $35 cash), or pay remaining
$
No Pennies Policy Applied: Cash rounded down to nearest multiple of 5 cents (-${{ (cashRoundingDiscountCents / 100).toFixed(2) }})
Net Cash Due ${{ (effectiveCashDueCents / 100).toFixed(2) }}
Smart Cash Quick Taps Tap bill received to calculate change
Change Due to Guest
${{ (Math.max(0, cashChangeDueCents) / 100).toFixed(2) }}
Amount to Charge on Card
${{ (currentTenderAmountCents / 100).toFixed(2) }}
Card payments accept exact amounts including pennies.
Amount to Charge to Room Tab ${{ (currentTenderAmountCents / 100).toFixed(2) }}
Order Fully Paid!
Total Change Due to Guest
${{ (totalChangeDueCents / 100).toFixed(2) }}
{{ processingMessage }}

Transaction History

{{ filteredTransactions.length }} order(s)
Search previous sales, reprint receipts, or process refunds
Status:
Loading orders...
No transactions found matching your criteria.
#{{ order.id.replace('pos_', '') }} {{ formatDate(order.created_at) }}
{{ order.status === 'PARTIALLY_REFUNDED' ? 'PARTIAL REFUND' : order.status }}
{{ p }} Cabin: {{ order.booking_id }}
${{ (order.total_cents / 100).toFixed(2) }}
-${{ (order.refunded_cents / 100).toFixed(2) }} ref
{{ (order.items || []).map(i => i.quantity + 'x ' + i.item_name).join(', ') || 'No items listed' }}
No order selected
Select an order from the list on the left to inspect, reprint, or refund.

Order #{{ selectedTxn.id.replace('pos_', '') }}

{{ selectedTxn.status === 'PARTIALLY_REFUNDED' ? 'PARTIALLY REFUNDED' : selectedTxn.status }}
Ordered: {{ formatDate(selectedTxn.created_at) }}
Total Refunded: ${{ (selectedTxn.refunded_cents / 100).toFixed(2) }} Remaining Balance: ${{ (((selectedTxn.total_cents || 0) - (selectedTxn.refunded_cents || 0)) / 100).toFixed(2) }}
Latest Note: {{ selectedTxn.refund_reason }}
Fully Refunded
{{ reprintSuccessMsg }}

Order Items

Item Qty Price Total
{{ it.item_name }}
{{ note }}
{{ it.quantity }} ${{ (it.price_cents / 100).toFixed(2) }} ${{ (it.total_cents / 100).toFixed(2) }}

Refund History ({{ selectedTxn.refunds.length }})

-${{ (rf.amount_cents / 100).toFixed(2) }} {{ rf.refund_method }}
Reason: {{ rf.reason || 'Customer request' }}
Items: {{ rf.items_refunded.map(i => i.quantity + 'x ' + i.name).join(', ') }}
{{ formatDate(rf.created_at) }}

Payments Tendered

{{ p.method }} ${{ ((p.amountCents || p.amount_cents) / 100).toFixed(2) }}
{{ p.details }}
Change Given: ${{ (((p.changeCents || p.change_cents) || 0) / 100).toFixed(2) }}
Method: {{ selectedTxn.payment_method }}

Order Totals

Subtotal ${{ ((selectedTxn.total_cents - selectedTxn.tax_cents) / 100).toFixed(2) }}
Sales Tax (4.9%) ${{ (selectedTxn.tax_cents / 100).toFixed(2) }}
Original Total ${{ (selectedTxn.total_cents / 100).toFixed(2) }}
Total Refunded -${{ (selectedTxn.refunded_cents / 100).toFixed(2) }}
Net Balance ${{ (((selectedTxn.total_cents || 0) - (selectedTxn.refunded_cents || 0)) / 100).toFixed(2) }}

Issue Order Refund

Order #{{ selectedTxn.id.replace('pos_', '') }} | Maximum Refundable: ${{ (maxRefundableCents / 100).toFixed(2) }}
Order Total ${{ (selectedTxn.total_cents / 100).toFixed(2) }}
Prior Refunds -${{ ((selectedTxn.refunded_cents || 0) / 100).toFixed(2) }}
Max Refundable Now ${{ (maxRefundableCents / 100).toFixed(2) }}
Select items to refund Tax is computed automatically for taxable items
{{ it.item_name }}
${{ (it.price_cents / 100).toFixed(2) }} each • Ordered: {{ it.quantity }}
{{ it.notes.join(', ') }}
{{ refundItemSelections[itIdx] || 0 }}
Total Calculated from Items: ${{ (itemizedRefundTotalCents / 100).toFixed(2) }}
$
{{ refundErrorMsg }}
Refund Due: ${{ (effectiveRefundAmountCents / 100).toFixed(2) }} (Full) (Partial)