Till Sales

{#if showGiftCardInput}
£ { if (e.key === 'Enter') addGiftCard(); }} />
{#if giftCardAmountTooHigh}

Gift card amount exceeds maximum (£{GIFT_CARD_MAX_AMOUNT})

{/if}

Gift card limit £{GIFT_CARD_MAX_AMOUNT} per transaction

{:else} {/if}
Customer (saved card payments) {#if selectedCustomer}

{selectedCustomer.name}

{#if selectedCustomer.email}

{selectedCustomer.email}

{/if} {#if savedCardsError}

{savedCardsError}

{/if}
{#if loadingSavedCards} Loading cards... {:else if !savedCardsError} {validCards.length} valid card{validCards.length === 1 ? '' : 's'} {/if}
{:else}
{ if (e.key === 'Enter') { e.preventDefault(); searchCustomers(); } else if (e.key === 'Escape') { showCustomerResults = false; } }} onfocus={() => (showCustomerResults = true)} onblur={() => (showCustomerResults = false)} />
{#if showCustomerResults}
{#if loadingCustomers}
{:else if customerResults.length === 0}
{customerQuery.trim() ? 'No customers found.' : 'Type a name, email or phone to search.'}
{:else}
    {#each customerResults as user (user.id)}
  • {/each}
{/if}
{/if}
{/if}
{#if cart.length === 0}

Tap items above to add them to the sale.

{:else}
{#each cart as item (item.id)}
{item.label} {formatCurrency(item.price)} each
{item.qty} {formatCurrency(item.price * item.qty)}
{/each}
{itemCount} item{itemCount !== 1 ? 's' : ''} {formatCurrency(subtotal)}
Payment Method
{#each availablePaymentMethods as m (m.key)} {/each}
{#if paymentMethod === 'online_square'}
{#if isSquareConfigured()} (onlineSquareCardReady = r)} disabled={processing} /> {:else}

Online card entry is unavailable — Square is not configured.

{/if}
{/if} {#if paymentMethod === PAYMENT_METHOD_SAVED_CARD}
{#if loadingSavedCards}
{:else if savedCardsError}

{savedCardsError}

{:else} Select a Saved Card
{#each validCards as card (card.id)} {/each}

Your card issuer will ask you to approve this payment in your banking app.

{/if} { lastSCAOutcome = ''; paymentError = null; }} />
{/if} {#if hasRetailItems}

Retail items can't be charged yet — the till API currently supports gift card sales only. Remove retail items to complete this sale.

{/if} {#if paymentError}

{paymentError}

{/if} {#if awaitingSCA}

Waiting for customer to approve in their banking app…

The customer may need to approve this payment in their banking app

{:else} {/if}

Secure payment powered by Square

Gift card sales are processed through the till; retail items require manual recording for now.

{/if}