Offline Cash Desk — Selling Without Internet
What It Is
The offline cash desk is an autonomous ERPJS workstation: an application on the cash desk computer with its own local database. The desk sells even with no internet at all, and when connectivity appears it synchronizes with the server automatically: it receives reference data updates (items, contacts) and delivers receipts. The server immediately turns every delivered receipt into a full approved Invoice — with stock issue, postings and payment.
Features
- Selling while disconnected — receipts are made locally, no internet needed.
- Automatic synchronization — the terminal communicates on schedule by itself (typically every 20–60 seconds); nothing is sent manually.
- No number conflicts — every desk has its own document number ranges; the server and other desks never take them.
- No duplicates — re-sending a receipt after a connection loss does not create a second document.
- Full accounting on the server — every receipt becomes an approved invoice with the same number: ledger and cash are closed automatically, and stock too when the company's invoices write off stock (see step 6).
- Monitoring — a journal of communication sessions, a conversion status per receipt, instant blocking of a lost terminal.
Prerequisites
- The feature is enabled on the server. Offline exchange is enabled by the server environment parameter
OFFLINE_SYNC_ENABLED=1. If your system is hosted (SaaS) — request enabling from support. - Reference data is filled in: Items, Contacts, Locations, Payment Methods.
- An access right for terminal registration. The one-time registration of each desk is performed under an account with the edit right for the "Offline Terminals" register.
Step 1. Create the Terminal
Open Modules → Offline → Offline Terminals and create a record:
| Field | What to enter |
|---|---|
| Terminal Code | A unique desk code, e.g. SHOP3-KASSA1. The same code goes into the desk application configuration. |
| Description | "Cash desk, Store #3" — for convenience. |
| Status | 1 (active). |
| Location | The outlet's stock location — sold goods are issued from it. Required: without it the desk's receipts are not turned into invoices, even if the desk sells services only. |
On the "Sync Registers" tab configure the exchange scope. A typical POS desk configuration:
| Register | Direction | Meaning |
|---|---|---|
Items |
ToClient | Items flow to the desk. |
Contacts |
ToClient | Contacts flow to the desk. |
OfflineSales |
Full | Receipts flow to the server, and the result of their processing comes back: Status, Invoice No., Conversion Error. The desk receives only its own receipts and writes the result into the same receipt it created; receipts of the company's other desks do not reach it. ToServer works too, but then the processing result is visible only on the server. |
Step 2. Allocate Number Ranges
Open Modules → Offline → Offline Number Series and create a record for the terminal:
- Terminal Code — the same as in Step 1.
- In the "Number Ranges" matrix add a row: Register =
OfflineSales, No. From / No. To — a range with a reserve (e.g. 5001–5999), "Last Used" = 0.
Rules:
- Ranges of different desks must not overlap.
- When a range runs out — add a new row with a new range (do not widen the old one): the desk picks it up automatically on the next synchronization.
- The invoice created from a receipt inherits the receipt's number, so the range is also reserved in invoice numbering. If no number series are set up for invoices, online documents skip these numbers automatically. If series are set up, there is no skipping: make sure their ranges do not overlap the desks' ranges, otherwise a receipt whose number is already taken will not become an invoice.
Step 3. Fill In the Synchronization Settings
Open Modules → Offline → Offline Sync Settings:
| Field | What to enter |
|---|---|
| Default Customer | The retail customer code from Contacts — substituted into receipts with no customer specified. |
| Default Payment Deal | A Cash-type term code from Payment Terms — the invoice is closed by payment the moment it is created. |
Without the "Default Customer" and "Default Payment Deal", receipts without a customer cannot be converted into invoices. The till does not read the endpoint, interval and timeout of this setting at present — the server address and the exchange interval are set in the desk application's configuration (Step 4).
Step 4. Install and Register the Desk Application
Installation is performed by an IT specialist or the system vendor.
- The ERPJS offline client (an application with an embedded local database) is installed on the desk computer.
- The application configuration specifies: the server address, the terminal code from Step 1 and the synchronization interval.
- A one-time registration of the desk on the server is performed — under an account with the "Offline Terminals" right (see Prerequisites). The account password is not stored on the desk: the desk receives its own long-term access key bound to the terminal code.
- On first start the desk automatically downloads reference data and number ranges — ready to work.
Step 5. The Cashier's Work
- The cashier signs into the desk application (a local account issued at installation).
- A sale is made in the Offline Sales register: a new record, rows with items (code, qty, price), the payment method, the "Cash Received" / "Cash Change" amounts. The till fills in the receipt number and the terminal code itself on save: the number is the next one in its range, the code is this terminal's code. Leave the "Serial Nr" field empty: a number typed by hand is refused ("The receipt number is assigned by the till"). If the range is used up or not received yet, the save is refused: allocate a new range in "Offline Number Series" on the server and wait for synchronization.
- Nothing else is needed: the receipt reaches the server at the next communication session.
Step 6. What Happens on the Server
- Accepted receipts appear in Modules → Offline → Offline Sales.
- Every receipt is automatically converted into an approved invoice with the same number: ledger postings, POS cash payment and the stock issue from the desk's location. Stock is written off by the same rule as for any invoice: only when "Write off warehouse by invoice" is ticked in the Invoice Setting. Without that flag the invoice is posted, but the goods sold stay in stock. The receipt status becomes 1, the "Invoice Nr" field holds the created invoice number.
- If conversion fails — the receipt gets Status 2 and the reason in the "Conversion Error" field. The receipt itself is never lost.
Monitoring and Troubleshooting
Communication journal
Modules → Offline → Offline Sync Log — who transferred what and when; rejected records; round errors. Empty polls (no data) are not journaled. The desk's last session is also visible in its terminal card ("Last Sync Date/Time").
Receipts with errors (Status = 2)
Filter Offline Sales by Status = 2 and check the "Conversion Error":
| Cause | Solution |
|---|---|
| Unknown payment method | Add the code in Payment Methods or fix the desk configuration. |
| Customer could not be resolved | Fill in the "Default Customer" (Step 3). |
| No payment terms | Fill in the "Default Payment Deal" (Step 3) or the payment terms in the customer's card. |
| Terminal has no location | Fill in "Location" in the terminal card (Step 1). |
| Not enough stock at the location | Receive goods into the desk's location. Does not apply to services. |
There is no automatic re-conversion: after fixing the cause, the administrator opens the receipt and clicks "Convert again" in the window menu — the server repeats the processing, and a successful receipt gets Status 1 with the invoice number (Offline Sales).
Blocking a desk
The desk is lost or stolen → set Status = 2 (blocked) in the terminal card. Server access is revoked instantly, at the very next communication attempt.
Current Version Limits
- One desk belongs to one company (in a multi-company system).
- The "Filter" and "After Sync" fields in the terminal matrix are reserved and not yet active.
- No automatic re-conversion of Status 2 receipts — manual investigation.
- The desk application is installed and configured by an IT specialist (no setup wizard yet).