> ## Documentation Index
> Fetch the complete documentation index at: https://help.clinikehr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sell at the pharmacy counter

> Ring up an over-the-counter sale in the hospital pharmacy unit, take payment, and know what the till will refuse.

export const AuditNote = ({action = 'This action'}) => <div className="ck-callout ck-callout--info" role="note">
    <p className="ck-callout__body">
      {action} is written to your workspace's audit log with your name, the
      record touched and the time — a HIPAA requirement, and one you can review
      yourself under <strong>Audit Log</strong>. See{' '}
      <a href="/platform/security/audit-log">Audit log</a>.
    </p>
  </div>;

export const StillStuck = ({topic}) => <div className="ck-callout ck-callout--note" role="note">
    <p className="ck-callout__body">
      <strong>Still stuck{topic ? ` with ${topic}` : ''}?</strong>{' '}
      Check <a href="/platform/help/troubleshooting">Troubleshooting</a> first —
      it covers the failures we see most often. If that does not resolve it,{' '}
      <a href="/platform/help/contact-support">contact support</a> and include
      your workspace name and the time the problem happened, so we can find the
      matching entry in your audit log.
    </p>
  </div>;

export const TaskHeader = ({before, time, after}) => <div className="ck-task">
    {before ? <div className="ck-task__cell">
        <div className="ck-task__title">Before you start</div>
        <p className="ck-task__body">{before}</p>
      </div> : null}

    {time ? <div className="ck-task__cell">
        <div className="ck-task__title">Takes about</div>
        <p className="ck-task__body">{time}</p>
      </div> : null}

    {after ? <div className="ck-task__cell">
        <div className="ck-task__title">When you're done</div>
        <p className="ck-task__body">{after}</p>
      </div> : null}
  </div>;

export const Path = ({steps = []}) => <span className="ck-path">
    {steps.map((s, i) => <span key={i} className="ck-path__step">
        {i > 0 ? <span className="ck-path__sep" aria-hidden="true">
            ›
          </span> : null}
        {s}
      </span>)}
  </span>;

export const Availability = ({editions = ['all'], plans, roles, note}) => {
  const list = editions.includes('all') ? ['clinic', 'pharmacy', 'lims'] : editions;
  return <div className="ck-avail" role="note" aria-label="Feature availability">
      <span className="ck-avail__label">Available in</span>

      {list.map(e => <span key={e} className={`ck-pill ck-pill--${e}`}>
          {EDITION_LABELS[e] || e}
        </span>)}

      {plans ? <span className="ck-avail__label">Plan</span> : null}
      {plans ? <span className="ck-pill ck-pill--plan">{plans}</span> : null}

      {roles ? <span className="ck-avail__label">Who</span> : null}
      {roles ? <span className="ck-pill ck-pill--role">{roles}</span> : null}

      {note ? <span className="ck-avail__note">{note}</span> : null}
    </div>;
};

<Availability editions={['clinic']} plans="Enterprise" roles="Pharmacy counter staff" note="Needs the In-house pharmacy care area" />

**POS** is the hospital pharmacy unit's till. It sells from the same stock the wards and the dispensary draw on, takes payment at the counter, and prints a receipt. It is the same point of sale that ships as the standalone Pharmacy edition, so the deep detail lives on those pages and this one covers what a hospital needs on top.

<Path steps={['Sidebar', 'Pharmacy', 'POS']} />

<TaskHeader before="Stock received into inventory, and the In-house pharmacy care area switched on" time="Under a minute per sale" after="A completed sale, stock drawn down, and a receipt" />

## What you're looking at

The till is a two-part screen: a searchable product list on one side, the cart and payment on the other. A scanner works from anywhere on the page — you do not need to click into the search box first.

Above the cart you may see the **offline bar**. It appears when the till has lost its connection or is working from a cached catalogue, and it labels stock figures as stale rather than pretending they are live. Trust the label.

The buyer is whoever is at the counter, which is not always the patient on a script. An anonymous sale is recorded as **Walk-in Customer**.

## Ring up a sale

<Steps>
  <Step title="Add the items">
    Scan the barcode or search by name. A scan confirms with **Scanned: \{item}**; an unrecognised code gives **No medication matches that barcode**.
  </Step>

  <Step title="Watch for stock warnings">
    Selling more than the recorded stock is allowed but flagged — "Beyond recorded stock — the sale will be logged for reconciliation in Inventory." A completely untracked item warns "has no recorded stock — the sale will be logged for reconciliation in Inventory."
  </Step>

  <Step title="Park a cart if you need the till">
    **Hold** parks the cart so you can serve the next person, and **Cart resumed** brings it back. Adding nothing first is refused with **Add items before holding the cart**.
  </Step>

  <Step title="Take payment and finish">
    Choose the tender, complete the sale and issue the receipt. Full detail — cash, card, split payments and change — is on [Taking payment](/pharmacy/pos/payments).
  </Step>
</Steps>

<AuditNote action="Completing a counter sale" />

## What is different inside a hospital

<Columns cols={2}>
  <Card title="Stock is shared" icon="https://mintcdn.com/clinikehr/gjlpJWWKqjyYNRzM/images/icons/boxes-stacked.svg?fit=max&auto=format&n=gjlpJWWKqjyYNRzM&q=85&s=a9cf085f0f1d4e59a1592ac620aa497e" width="24" height="24" data-path="images/icons/boxes-stacked.svg">
    The counter sells from the same inventory the wards and the dispensary draw on. A sale at the till moves the same on-hand figure a ward issue does.
  </Card>

  <Card title="Controlled items are refused" icon="https://mintcdn.com/clinikehr/nLyvBRumcl1Yk8z3/images/icons/shield-halved.svg?fit=max&auto=format&n=nLyvBRumcl1Yk8z3&q=85&s=3d3f5c53a33441091182992bba0efd7f" width="24" height="24" data-path="images/icons/shield-halved.svg">
    An item needing a witnessed dispense cannot be rung up — "requires a witnessed dispense — use the inventory Fill Rx flow instead of POS."
  </Card>

  <Card title="A sale is not an invoice" icon="https://mintcdn.com/clinikehr/nLyvBRumcl1Yk8z3/images/icons/receipt.svg?fit=max&auto=format&n=nLyvBRumcl1Yk8z3&q=85&s=137ef92882f826ea6d1a6d6b2cfd2b65" width="24" height="24" data-path="images/icons/receipt.svg">
    Counter sales appear under [Pharmacy sales](/hospital/pharmacy/sales). Patient billing — consultations, procedures, admissions — is separate and lives in [Billing](/hospital/revenue/billing).
  </Card>

  <Card title="Screening interrupts, rarely" icon="https://mintcdn.com/clinikehr/nLyvBRumcl1Yk8z3/images/icons/triangle-exclamation.svg?fit=max&auto=format&n=nLyvBRumcl1Yk8z3&q=85&s=36566b5e7f88d663d6a3e3aec917ddb0" width="24" height="24" data-path="images/icons/triangle-exclamation.svg">
    Drug-interaction screening blocks only on contraindicated and major findings, and then only once, with a reason recorded.
  </Card>
</Columns>

## Interaction screening at the till

Screening is tuned so that it means something when it fires:

| Severity        | What happens                                                         |
| --------------- | -------------------------------------------------------------------- |
| Contraindicated | Checkout is interrupted; you must acknowledge once and give a reason |
| Major           | The same interruption and acknowledgement                            |
| Moderate        | An inline badge on the item. Checkout is never blocked               |
| Minor           | Never shown                                                          |

Over-alerting is how staff learn to dismiss warnings without reading them, which is the outcome this design exists to avoid. Full detail: [Drug interaction screening](/pharmacy/dispensing/interaction-screening).

## Who can do this

**Role** decides whether the till opens. **POS** needs the **In-house pharmacy** care area, and on Enterprise an owner can hide the Pharmacy group from a role under **Settings → Role Navigation**.

**Permission** decides what you may do at the counter.

| Action                            | Who by default                         | Governed by                                                      |
| --------------------------------- | -------------------------------------- | ---------------------------------------------------------------- |
| Open the till and complete a sale | Anyone the role navigation lets in     | Role → route                                                     |
| Sell a controlled item            | Nobody — refused at the till by design | The item's controlled status, not a permission                   |
| Dispense a controlled item        | Pharmacy staff, with a named witness   | The **Fill Rx** sheet in [Inventory](/hospital/supply/inventory) |
| Return or void a sale             | Owners, managers and pharmacy leads    | Role → route, on the [Sales](/hospital/pharmacy/sales) screen    |
| See cost and margin figures       | Owners and managers                    | The financial figures on Sales, not the till                     |

Enforcement is **opt-in per person**: someone never saved in the permissions sheet is unrestricted, and the sheet warns **"Saving starts enforcing"** before that changes. A **denied action is recorded**; an allowed one is not.

## Check it worked

* The sale appears under [Pharmacy sales](/hospital/pharmacy/sales) with its **Sale #** and status **Completed**.
* The items' on-hand figures in [Inventory](/hospital/supply/inventory) have dropped.
* The customer has a receipt, printed or downloaded.
* A sale rung up offline shows **Sale saved — will sync when back online** and appears in Sales once the connection returns.

## Common issues

<AccordionGroup>
  <Accordion title="The till refuses an item as needing a witnessed dispense">
    That is the controlled-substance rule. Take the script to the **Fill Rx** tab of Inventory and dispense it with a witness — see [the pharmacy station](/hospital/pharmacy/station).
  </Accordion>

  <Accordion title="An item shows as out of stock but it is on the shelf">
    The recorded figure is wrong, not the shelf. You can still sell it — the sale is logged for reconciliation — then correct the count in Inventory.
  </Accordion>

  <Accordion title="The scanner types into the wrong place, or does nothing">
    A wedge scanner works anywhere on the page, so nothing needs focus first. If it is typing into a field, check the scanner's own suffix setting — see [Barcode scanning](/pharmacy/pos/barcode).
  </Accordion>

  <Accordion title="A held cart came back with the wrong contents">
    Clearing a cart starts a new one, so the next **Hold** parks a fresh cart rather than overwriting the one you resumed. See [Held carts](/pharmacy/pos/held-carts).
  </Accordion>

  <Accordion title="Figures look wrong while the offline bar is showing">
    They are stale, and the bar says so. Stock levels and totals catch up once the till reconnects — see [Selling offline](/pharmacy/pos/offline).
  </Accordion>

  <Accordion title="POS is missing from the sidebar">
    Either the **In-house pharmacy** care area is off, or your role does not include the till. See [Care areas](/hospital/get-started/care-areas) and [Permissions](/platform/team/permissions).
  </Accordion>
</AccordionGroup>

## FAQ

<AccordionGroup>
  <Accordion title="Does a counter sale create an invoice?">
    No. A sale is settled on the spot and recorded in Sales. Invoices are for billed care and live in [Billing](/hospital/revenue/billing).
  </Accordion>

  <Accordion title="Can I sell against a prescription?">
    Ordinary items, yes. Anything needing a witnessed dispense must go through **Fill Rx** so the witness and the patient link are recorded.
  </Accordion>

  <Accordion title="Does the till keep working in a power cut?">
    It keeps selling on battery and replays the sales when the connection returns. Payment by card and any live figure are the parts that stop — see [Selling offline](/pharmacy/pos/offline).
  </Accordion>

  <Accordion title="Who does the sale belong to if the buyer is not a patient?">
    It is recorded as **Walk-in Customer**. Nothing is written to a patient's chart.
  </Accordion>

  <Accordion title="Where do I reprint a receipt?">
    From [Pharmacy sales](/hospital/pharmacy/sales) — **Print Receipt** or **Download PDF** on the row. See [Receipts](/pharmacy/pos/receipts).
  </Accordion>
</AccordionGroup>

<StillStuck topic="the pharmacy counter" />
