Manual Cash Registers
The Cash Registers (POS) module drives your points of sale. A cashier opens a session on their register via the Swifto POS mobile app, collects payments for sales (cash, card, voucher), handles returns, then closes their day — all synchronized in real time with the back office.
Overview
A cash register (point of sale / POS) is a physical sales terminal operated by a cashier. In Swifto, you declare each register from the back office (label, password, print type, authorized sellers); the cashier then logs in from the Swifto POS mobile app using a register code and a numeric password. They open a session, collect payments for sales, handle returns, then close their day.
Independent module. Cash register management (POS, in-store counter sales) is distinct from field sales (field sellers / Swifto Seller routes). A POS is attached to a fixed point of sale and to its own register stock.
Business goal
- Collect payments for counter sales
- Track session opening / closing
- Decrement POS stock in real time
- Print register receipts and invoices
Target audience
- Cashiers — collect payments from the mobile app
- Point-of-sale manager — declares and configures registers
- Accounting — reconciles payments
Position in the cycle
The back office declares the registers; the Swifto POS mobile app operates them. Invoices, delivery notes and return slips entered on the terminal automatically flow through to the Sales and Stock modules.
Access and navigation
Left-hand side menu: Point of Sale → Cash Registers. The page lists all the registers declared for your company.
Access to registers is governed by the GCaissePVT privilege (POS register management) — see the matrix in section 10.
POS register (sales terminal)
The Cash Registers page displays the declared terminals (IMEI, label, date, description). From the toolbar you can create a register, reset the password, reset the IMEI (free up the device), or delete a register.
| IMEI⇅ | Label⇅ | Date⇅ | Description | Detail | |
|---|---|---|---|---|---|
| 355128094772610 | CAISSE-MENZAH1 | 03/02/2026 | Main counter — Menzah 1 | ||
| 000000000000000000 | CAISSE-LACGD | 11/01/2026 | Free register (not paired) | ||
| 867430051298764 | CAISSE-SOUSSE | 20/12/2025 | Sousse Corniche shop |
Fields of a register (creation / editing)
| Field | Description |
|---|---|
| Label * | Unique code for the register. No spaces (used as the register code for mobile login). E.g. CAISSE-MENZAH1. |
| Password * | Numeric, 8 digits maximum (default 1234). Entered by the cashier on the app. |
| Print type | Receipt format: A4, Receipt, Large-format receipt, Bixolon or Goojprt. |
| Sellers | List of sellers (register users) authorized on this terminal — selected via pick-list. Each seller automatically becomes a "Register Seller" customer. |
| Description | Free-form note (location, specifics). |
| IMEI | Identifier of the paired device. 000000000000000000 = free register, ready to be paired on first login. |
Reset password
Assigns a new numeric code (≥ 4 digits) to the selected register.
Reset (IMEI)
Frees the paired device (IMEI → 000000…) to reconnect the register on a new terminal.
IMEI reset delay
Device reset is only possible after an 8-hour delay since the last reset (anti-fraud device security).
Register sessions
A register session covers one working day: the cashier opens it by logging in (entering the starting cash float), makes their sales, then closes it at the end of the shift. On opening, the device is paired to the register (the IMEI is stored); on closing, the register's Z report summarizes the totals collected by payment method.
Opening
Login with register code + password, entering the initial cash float, device pairing.
In progress
Sales, payments and returns accumulate; the POS stock is decremented with each sale.
Closing
Final count, Z report (totals by method), sync to the back office.
Dedicated register stock
When created, each register automatically generates its own POS stock (type register), pre-populated with the catalog items managed in stock (quantities at zero). Sales from the terminal decrement this stock; returns increment it back.
Register payments
With each sale, the cashier collects the amount using one or more payment methods. A receipt (or an A4 invoice depending on the register's print type) is issued immediately. Payments flow through to the Register Payments screen in the back office.
Cash
Change calculated automatically.
Bank card
Card terminal / electronic payment.
Cheque / Voucher
Cheque, meal voucher, gift voucher.
Payment — Receipt No. TKT-001284
The payment methods (cash, card, cheque…) and receipts are configured in the back office and synchronized to the register on login.
Register return slips
A customer can return a purchased item. The cashier creates a return slip from the terminal: they select the items and quantities to take back, choose the reason, then validate. The return increments the POS stock back and triggers the refund.
| Article | Unit price incl. tax | Return qty | Total |
|---|---|---|---|
| 1024 - MINERAL WATER 1.5L (pack) | 11.500 | 2.000 | 23.000 |
Statuses & reasons
| Field | Values |
|---|---|
| Slip status | In progress Validated Rejected |
| Item condition | Intact (put back into sellable stock) or Defective (written off / not put back). |
| Reason | Configurable list (defective item, entry error, change of mind…). |
Stock impact — returning an intact item increments the POS stock back and makes it sellable again. A defective item is not put back up for sale.
Link with the Swifto POS mobile app
The register terminal works with the Swifto POS mobile app, synchronized with the back office through a dedicated web service. The cashier identifies themselves with the register code (= label) and the password; the device is then paired (the IMEI is linked to the register, preventing its use on another phone until it is reset).
The back office sends (downstream sync)
- Catalog: categories, items, prices, taxes
- Point-of-sale stock
- Customers, sale types, payment methods, receipts
- Numbering prefixes (invoices, delivery notes, return slips)
The register sends up (upstream sync)
- Invoices & delivery notes for the day
- Return slips
- POS stock takes
- New customers created at the counter
Offline mode & real-time sync
The register keeps collecting payments even without network access; sales are queued then synchronized as soon as the connection is restored. When the connection is available, the export happens in real time with every operation.
Register day (workflow)
flowchart LR A([Register login
code + password]):::s --> B[Open session
cash float]:::p B --> C[Sales & payments
cash / card / voucher]:::p C --> D[(POS stock decremented)]:::st C -->|customer return| R([Return slip]):::ok R --> D2[(Stock re-incremented)]:::st C --> Z[Closing / Z report]:::p Z --> S([Back-office sync
Sales + Stock]):::ok classDef p fill:#ECFDF5,stroke:#10B981,color:#065F46; classDef s fill:#F5F3FF,stroke:#8B5CF6,color:#5B21B6; classDef st fill:#FEF3C7,stroke:#F59E0B,color:#92400E; classDef ok fill:#D1FAE5,stroke:#10B981,color:#065F46; classDef ko fill:#FEE2E2,stroke:#EF4444,color:#991B1B;
Business rules
No spaces & unique label — the register code cannot contain spaces and must be unique within the company (it serves as the mobile login identifier).
IMEI pairing — a paired register can only log in from its own device. Changing devices requires an IMEI reset (minimum 8-hour delay).
Automatic POS stock — each register has its own register-type stock, created upon declaration and fed by transfers / replenishment.
Sellers = register customers — each attached seller is created as a "Register Seller" customer for sales traceability by operator.
Controlled deletion — a register with sellers attached cannot be deleted directly; deletion is logical (the register is hidden, never physically erased).
Subscription cap — the number of registers you can create may be limited by your Swifto subscription plan; a message blocks creation once the quota is exceeded.
Roles & permissions
Action (GCaissePVT privilege) | Cashier | POS manager | Accountant | Admin |
|---|---|---|---|---|
| View registers | — | ✅ | ✅ | ✅ |
| Create a register | — | ✅ | — | ✅ |
| Reset password | — | ✅ | — | ✅ |
| Reset IMEI | — | ✅ | — | ✅ |
| Collect payments (mobile) | ✅ | ✅ | — | ✅ |
| Delete a register | — | — | — | ✅ |
Indicative matrix — depends on the profiles defined in your company.
FAQ & Real scenario
Scenario: a day at the register at the "Menzah 1" counter
- 8:30 AM — Opening. Salah opens the Swifto POS app, enters the code
CAISSE-MENZAH1+ his password, declares a cash float of 100.000 TND. The device pairs. - During the day — Sales. He serves a customer: a pack of water and two packs of coffee → 47.500 TND in cash, change of 2.500 TND, receipt printed. The POS stock updates.
- 2:00 PM — Return. A customer brings back 2 intact packs of water → return slip for 23.000 TND, refunded in cash, stock incremented back.
- 7:00 PM — Closing. Salah closes the session: the Z report shows the cash/card total, any variance against the physical count, then everything is synchronized to the back office.
The cashier can no longer log in?
The device is probably paired to another phone. Do an IMEI reset on the register (8-hour delay), then reconnect.
"This field must not contain spaces"?
The register's label contains a space. Use a hyphen or an underscore (e.g. CAISSE-MENZAH1).
Tip — print type
Choose Receipt for a counter thermal printer, or A4 if your customers require a standard-format invoice. Bixolon / Goojprt target specific printer models.