> ## 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.

# Track expenses and your net position

> Record fuel, rent, salaries and other running costs so the bottom line your pharmacy reports is the real one.

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={['pharmacy']} plans="All plans" roles="Needs 'View the net position'" />

Takings are not profit. **Expenses** is where you record what running the pharmacy actually costs, so the net position figure everyone quotes is worth quoting.

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

<TaskHeader before="The 'View the net position' permission" time="20 seconds per expense" after="A running cost on the books, and a net position that accounts for it" />

## The arithmetic, plainly

The header reads **Expenses** — "Net position and running costs" — and the first card is **Net position · \{range}**, with a range select of **Today**, **7 days**, **1 month**, **3 months**, **6 months** and **All time**.

Four lines make one number:

```text theme={"system"}
Revenue − Cost of goods − Expenses − Loss (expired/damaged) = Net position
```

| Line                       | Where it comes from                                                                           |
| -------------------------- | --------------------------------------------------------------------------------------------- |
| **Revenue**                | Sales taken over the range                                                                    |
| **Cost of goods**          | What the stock you sold cost, from what you paid at receiving                                 |
| **Expenses**               | What you record on this page                                                                  |
| **Loss (expired/damaged)** | Stock written off, at cost — see [Batches and expiry](/pharmacy/inventory/batches-and-expiry) |

Three of those four fill themselves in from work you are already doing. **Expenses is the only line that exists because someone typed it.** A pharmacy that records no expenses will see a net position that looks like a gross margin and read it as profit.

Below the card sit **Expenses by category · this month** and **Recent expenses**.

## Record an expense

<Steps>
  <Step title="Select Add Expense">
    The **Add expense** sheet opens — "A running cost — fuel, rent, salaries. It reduces the net position for its date."
  </Step>

  <Step title="Pick a Category">
    **Fuel**, **Transport**, **Rent**, **Salaries**, **Utilities**, **Supplies**, **Capital** or **Other**. The categories are fixed, which is what makes the **Expenses by category** breakdown comparable month to month — so pick the nearest one rather than defaulting everything to **Other**.
  </Step>

  <Step title="Enter the Amount">
    It must be greater than zero: **"Enter an amount greater than zero."**
  </Step>

  <Step title="Set the Date">
    Defaults to today. Change it to the date the cost actually falls on — an expense reduces the net position **for its own date**, so back-dating a delivery charge to last week moves it into last week's figures.
  </Step>

  <Step title="Add a Description">
    **Description (optional)** — "e.g. Generator diesel for the week". Optional, and worth filling every time: in three months the amount alone will not tell you what it was.
  </Step>

  <Step title="Save it">
    The toast reads **"Expense recorded"**.
  </Step>
</Steps>

## Check it worked

* The expense heads the **Recent expenses** list with its category badge, description and date.
* The **Expenses** figure on the **Net position** card rises by the amount, and the net falls by the same.
* **Expenses by category · this month** picks it up if the date falls in this month.

## Delete an expense

Use the delete action on the row. You get **"Expense deleted"** and the net position recovers by that amount.

## Where expenses show up elsewhere

* [**The sales dashboard**](/pharmacy/money/sales) carries the same **Net position** card, so takings and costs are read side by side.
* [**The executive dashboard**](/pharmacy/money/analytics) shows **Today's net (revenue − cost − expenses)** as its headline figure.
* **Analytics** has an **Expenses** report — operating spend by day and by category, with an export. That report exists only in the Pharmacy edition, because this is the only edition with a screen that feeds it.

## Who can see this

The whole page needs the **View the net position** permission. Without it, the sidebar entry is not yours and the net position card does not appear anywhere else either — it is hidden rather than shown as zero, on purpose. A card reading "0" would be read as a bad month rather than as a permission boundary.

Owners and managers have it. For anyone else it is granted per person — see [Staff permissions](/platform/team/permissions).

## If something goes wrong

<AccordionGroup>
  <Accordion title="'Enter an amount greater than zero.'">
    The amount is blank, zero or not a number. Expenses are always positive — the subtraction is done for you.
  </Accordion>

  <Accordion title="'Net position is hidden — needs authorisation from your clinic owner.'">
    You do not have **View the net position**. The rest of the screen still works; the figures do not appear until an owner or manager grants it.
  </Accordion>

  <Accordion title="The net position looks far too healthy">
    Almost always missing expenses. Check that rent, salaries, fuel and utilities are recorded for the range you are looking at. Stock written off also has to be recorded as waste in Inventory to appear in the **Loss** line — see [Batches and expiry](/pharmacy/inventory/batches-and-expiry).
  </Accordion>

  <Accordion title="Cost of goods looks lower than it should">
    Cost of goods can only count stock whose cost you recorded when you received it. Items received with no cost contribute nothing, so the figure understates rather than guesses. Record costs at receiving — see [Purchase orders](/pharmacy/inventory/purchase-orders).
  </Accordion>

  <Accordion title="An expense landed in the wrong month">
    It uses the **Date** on the sheet, not the day you typed it. Delete it and re-add it with the right date.
  </Accordion>
</AccordionGroup>

<StillStuck topic="expenses" />
