Bitta Retail POS guide
Card payments at the register
Taking card payments at the register: the integrated Stripe Terminal reader flow with its progress dialog, the Card (external terminal) fallback, cancel and retry, and card refunds through returns.
status: verified applies-to: 1.0.0.121rev: 4
Bitta Retail POS takes card payments two ways: through an integrated Stripe Terminal reader that the register commands directly, or through a plain "Card (external terminal)" tender where you key the amount into a standalone card machine yourself. This page covers the cashier flow for both, plus card refunds. Configuring the reader, keys, and providers is back-office work - see Stripe Terminal setup.
Integrated card payment (Stripe Terminal)
With Stripe Terminal configured, the register commands the reader for you: it starts the charge, watches it complete on the reader, and books a captured Card payment line automatically. Every attempt is tracked in an EFT transaction ledger, so a charge is auditable and recoverable even if the browser crashes mid-payment.
Taking the payment
- Build the cart and open the tender screen, then press Pay card. The tender overlay closes and the card payment dialog opens. (Pay card only appears when the terminal has a payment provider configured - otherwise use the external terminal tender below.)
- The customer taps or inserts their card on the reader. The dialog polls the reader in the background and shows live status - the register never freezes while the customer pays.
- On approval the dialog shows Approved - press Done to continue. Tap Done: the captured Card line is booked and the sale completes, or the tender screen reopens if a balance remains.
Pay card charges the remaining balance of the sale, so it works naturally in a split: take part in cash or on account first, then press Pay card for the rest. Payments the processor has already captured show as locked lines on the tender screen and cannot be removed there.
NOTE
The dialog never closes itself when the payment finishes - it lights up the Done button and waits for your tap. This is deliberate: it guarantees you see the final result before the register moves on.
While you wait, cancel, and retry
- The only in-flight action is Cancel Payment, which cancels the reader action. Use it if the customer changes their mind or the card will not read.
- If you close the dialog while the payment is still processing, the reader action is cancelled on a best-effort basis and the attempt is left for automatic reconciliation - it is never double-charged.
- After a decline or cancel, simply press Pay card again to retry, or take another tender.
If the register crashes mid-payment
When the register opens, any card payment left in flight by a crash or closed browser tab is resolved with the processor before the till opens: a charge the reader took while the register was down is captured and booked, an abandoned one is voided, and anything unresolvable is flagged for a supervisor. You see the outcome as a brief toast - no action needed. Details are on Stripe Terminal setup.
Card (external terminal) - the fallback that always works
No integration is required to accept cards. The seeded "Card (external card terminal)" tender method represents a standalone card machine:
- Key the amount into your card machine and process the payment on it as usual.
- On the register's tender screen, tap the Card button and record the same amount.
- Complete the sale.
Bitta Retail POS records the tender for totals, receipts, shift reconciliation, and settlement, but does not talk to the machine - you are responsible for keying the right amount. This tender works on any terminal with no setup beyond the tender method itself (see Tender screen and split payments).
TIP
Want to try the integrated flow without hardware or a Stripe account? The Simulated provider approves payments in-process - ideal for demos and training. See Stripe Terminal setup.
Card refunds
Refunds go through the returns flow, never by editing a completed sale:
- A sale paid by integrated card cannot be "reopened" at the register to undo it - deleting a payment line does not un-charge a card. Use Return from Receipt, which refunds properly through the processor.
- An integrated card refund goes back through the same provider and the same original charge that took the money. For a receipt with several card payments, each refund is matched to its originating charge, and the amount refundable per charge is enforced across partial and repeated returns.
- With no integration configured, a card refund is still recorded as a negative Card tender and the cashier is told to refund on the external terminal manually - so returns always work, integrated or not.
See Returns and refunds for the full return flow.
Related pages
- Stripe Terminal setup - readers, keys, simulated readers, PCI posture, crash recovery.
- Tender screen and split payments - the tender screen, split payments, and tender methods.
- Dual pricing and surcharges - how card-settled amounts pick up a surcharge or miss the cash discount.
- Payment acceptance labs - structured acceptance scenarios for payment, refund, and recovery.