# Registers

The block that ties a POS workflow to a physical register and cash drawer. Loads the user's register and location from the subsidiary settings, drives Payments' available tender list, and manages cash drawer open/close with opening and closing balance flows.

The block also blocks new drawer sessions if a previous-day drawer is still open — enforcing close-out before new business.

## Available in

* Order Form modules **only**

## When to use

* Every cashier register workflow.
* POS pages where cash handling needs to be tracked at the register level.
* Anywhere multiple cashiers share a single physical register and the system needs to know who's using it.

## What it depends on

Registers reads the employee's register assignment and location from the **subsidiary settings** — configuration managed by your **NetSuite Admin** in NetSuite, not in the Client Admin Portal.

| What your NetSuite Admin must set up                         | Effect on Registers                                              |
| ------------------------------------------------------------ | ---------------------------------------------------------------- |
| Register records created and linked to locations in NetSuite | Registers can find the employee's register at login              |
| Each employee record linked to a register / location         | The block maps the logged-in user to the correct register        |
| Payment methods configured on the register                   | The **Payments** block's tender list reflects these methods      |
| Currency set on the subsidiary                               | Registers and Payments both read currency from subsidiary config |

If a cashier sees "no register found" or can't open a session, the most likely cause is that their NetSuite employee record isn't linked to a register. Ask your NetSuite Admin to verify the register and location assignment on the employee record.

## Settings

| Setting       | Description                                                               |
| ------------- | ------------------------------------------------------------------------- |
| **Configure** | Opens the configuration modal — payment methods and cash drawer settings. |

The configuration modal supports:

* **Payment Methods** — which methods the register accepts.
* **Enable Cash Drawer** — whether this register has a physical cash drawer. Default: Yes.
* **Cash Drawer settings:**
  * **Enable Auto Open** — auto-open the drawer at the start of cash transactions. Default: Yes.
  * **Require Opening Balance** — prompt for opening cash balance at drawer-open. Default: Yes.
  * **Require Closing Balance** — prompt for closing cash balance at drawer-close. Default: Yes.
  * **Allow Discrepancy** — permit closing without resolving variance between expected and counted cash. Default: No.

## How it works

1. Loads register and location settings from the subsidiary settings API.
2. Maps the current user to a register/location using employee ID matching.
3. Stores location, register, and currency settings in session state — Payments and Order Lines read from there.
4. At workflow start, checks for an existing open cash drawer:
   * If today's drawer is open, use it.
   * If a previous-day drawer is still open, block the new session and require close-out.
5. **Drawer-open modal** — collects opening balance (if required).
6. **Drawer-close modal** — collects closing balance, computes expected vs counted variance, requires confirmation if discrepancy isn't allowed.
7. Dispatches `cashDrawerOpened` / `cashDrawerClosed` events for navigation integration (e.g. update the sidebar status indicator).

{% hint style="warning" %}
**Allow Discrepancy = No** is the safe default — cashiers must reconcile the till before closing. Set to Yes only for low-cash environments where forcing reconciliation is more friction than value.
{% endhint %}

## Examples

**Standard cashier shift.** Registers with default settings. Cashier opens drawer with starting balance, takes transactions, closes drawer with counted cash; system computes variance and requires confirmation.

**No-cash register.** Registers with Enable Cash Drawer = No. Card-only terminal — register association is tracked but no drawer flow.

**Tight reconciliation policy.** Allow Discrepancy = No. Cashier can't close without resolving any variance between expected and counted cash.

## Related

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Payments</strong></td><td>The payment-collection block that uses the register's configured methods.</td><td><a href="/pages/9UpRZRjM7iTVfilhHOmR">/pages/9UpRZRjM7iTVfilhHOmR</a></td></tr><tr><td><strong>EOD Reports</strong></td><td>The end-of-day reconciliation report that summarises drawer activity.</td><td><a href="/pages/LZAnfStRJiSQelmBVkhF">/pages/LZAnfStRJiSQelmBVkhF</a></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.in8sync.com/client-admin-guide/active-workflows/getting-started/transaction-components/registers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
