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

# Set a person rate

> Set a billable or cost rate for one person in TimeTracker, schedule a future rate change, read the rate history, and remove a rate you entered by mistake.

Person rates live at **Settings** → **Rates**. Each change adds a new dated row – it never overwrites the old one.

## Before you start

You need the **Manage rates** capability (`rate.manage`). Without it the **Rates** entry does not appear in the settings sidebar.

To set a **cost** rate you also need `rate.viewCost` and the Pro `profitability` feature. See [/rates/cost-rates](/rates/cost-rates).

## The Rates page

Go to **Settings** → **Rates**, under the **Billing & rates** group. The page is titled **Rates** with the description *"What each person's time is billed at, and what it costs you."*

The **Person rates** table lists every member with the rate in force today.

| Column           | Shows                                                                   |
| ---------------- | ----------------------------------------------------------------------- |
| **Member**       | Avatar, name and role                                                   |
| **Billing rate** | The billable rate in force today, or **Not set**                        |
| **Cost rate**    | The cost rate in force today. Only rendered if you hold `rate.viewCost` |
| (row action)     | Opens the manage dialog for that person                                 |

If the workspace has no members yet you see *"No members yet – invite a teammate to set their rate."*

## How to set a rate

<Steps>
  <Step title="Open Settings → Rates">
    Click **Settings** in the sidebar, then **Rates**.
  </Step>

  <Step title="Open the person">
    Use the action at the end of their row. A dialog opens with their name as the title. The subtitle names their role, then reads *"each change appends a new effective-dated rate. Past rates are never rewritten."*
  </Step>

  <Step title="Pick the tab">
    **Billing** is the default. **Cost (internal)** appears only if you may see cost.
  </Step>

  <Step title="Read the rate in force">
    The tab leads with the current figure – for example **100.00 USD**, *"per hour, since 1 Jan 2026"*. A future change is shown below it with a **Scheduled** badge.
  </Step>

  <Step title="Fill in the new rate">
    **Rate / hour** takes a non-negative decimal. **Currency** defaults to the workspace base currency. **Effective from** defaults to today.
  </Step>

  <Step title="Click Add rate">
    You see **"Billing rate saved."** or **"Cost rate saved."** The new row appears in **Rate history**.
  </Step>
</Steps>

## Schedule a rate change in advance

Set **Effective from** to a future date. The row is saved immediately and badged **Scheduled**, but it does not price anything until its date arrives.

This is the safe way to handle an annual price rise. Enter it in December, effective 1 January, and nothing changes until the new year.

## Rate history

Below the editor, the **Rate history** card lists every rate the person has ever carried, newest first. Its description reads *"Every rate, newest first. Past rates are never rewritten – historic time keeps the rate it was billed at."*

| Column             | Shows                                                        |
| ------------------ | ------------------------------------------------------------ |
| **Rate / hour**    | The amount and currency                                      |
| **Effective from** | The start date, with a **Scheduled** badge on any future row |
| (row action)       | A remove button, if you may manage rates                     |

Billing history and cost history are shown as separate tables. The cost table is only rendered for someone who may see cost.

## Remove a rate

Use the remove button on the history row. A confirmation modal opens titled **"Remove this rate?"**.

The modal states exactly what will happen, for example:

> 125.00 USD per hour, effective 1 Apr 2026, will be removed and cannot be restored. Time already tracked keeps the rate it was recorded at. New work dated from 1 Apr 2026 will use 100.00 USD instead.

If there is no earlier rate, it says instead that the person will have no rate for that period until you add one.

Click **Remove rate**. You see **"Rate removed."**

<Note>
  Removing a rate is safe for history. Time entries keep the rate they were recorded at, so an invoice you already sent is never restated. What changes is which rate applies to work recorded in that window from now on.
</Note>

Removing a **cost** row additionally requires `rate.viewCost` and the Pro `profitability` feature – you cannot delete a figure you are not allowed to see.

## Set rates from the person's record

The same editor appears on a person's record: **Settings** → **Team Members** → the person → the **Rates** section. It is the same data seen from the other side, with a **Rates** card and a **Rate history** card below it.

Use whichever you prefer. The Rates page is better for setting several people at once; the member record is better when you are already looking at one person.

## Example

Maya Ellis onboards Jonas Bergman at Northwind Studio.

<Steps>
  <Step title="Billing">
    Rate / hour `120`, Currency `USD`, Effective from `1 Jan 2026`. She clicks **Add rate** and sees *"Billing rate saved."*
  </Step>

  <Step title="Cost">
    She switches to **Cost (internal)**, enters `60` USD from the same date, and clicks **Add rate**. She sees *"Cost rate saved."*
  </Step>

  <Step title="Check">
    The Rates table now shows Jonas at **120.00 USD** billing and **60.00 USD** cost.
  </Step>
</Steps>

Jonas then tracks 8 hours on Harbor Logistics – Mobile App: `8 × $120 = $960` billable, `8 × $60 = $480` cost, margin `$480`.

## Options and settings

| Field              | Required | Rules                                                                                                      |
| ------------------ | -------- | ---------------------------------------------------------------------------------------------------------- |
| **Rate / hour**    | Yes      | A non-negative decimal, such as `120` or `85.50`. Negative values and text are rejected.                   |
| **Currency**       | Yes      | A supported three-letter code. The picker defaults to your workspace base currency and always includes it. |
| **Effective from** | Yes      | A date, chosen with the date picker. Defaults to today. Treated as a whole day.                            |

## Permissions

| Action                 | Capability                      | Default roles                 |
| ---------------------- | ------------------------------- | ----------------------------- |
| Open the Rates page    | `rate.manage`                   | Owner, Admin, Project Manager |
| See billable rates     | `rate.viewBilling`              | Owner, Admin, Project Manager |
| See and set cost rates | `rate.viewCost` + `rate.manage` | Owner, Admin                  |

If you can see the page but not the person, you see *"You don't have access to manage rates in this workspace. Ask an owner or admin for access."*

See [/rates/rate-permissions](/rates/rate-permissions).

## What happens next

1. Time recorded from the effective date onward is priced at the new rate.
2. Time already recorded keeps its old figure – see [/rates/rate-snapshots](/rates/rate-snapshots).
3. Project budgets and profitability pick up the new figures for new work.
4. The change is recorded in the workspace audit log. The rate **amount** is never written to the log, so the trail does not leak a cost figure.

## Common questions

<AccordionGroup>
  <Accordion title="Can I edit an existing rate row?">
    No, and that is deliberate. Add a new row with a new effective date, or remove the wrong row and add a correct one.
  </Accordion>

  <Accordion title="Can I backdate a rate?">
    You can set an effective date in the past. It changes which rate applies to work recorded from that date onward, but it does not re-price entries that are already saved.
  </Accordion>

  <Accordion title="Can a person see their own rate here?">
    Not on this page. It needs `rate.viewBilling`, which Members and Contractors do not hold.
  </Accordion>

  <Accordion title="Can I set rates when adding a new member?">
    Yes. The add-member form has **Billing rate / hour** and, for a cost viewer, **Cost rate / hour** fields in your workspace base currency.
  </Accordion>

  <Accordion title="What if someone works in a different currency?">
    Pick their currency in the rate form. It stays with that rate. See [/rates/currencies-and-exchange-rates](/rates/currencies-and-exchange-rates).
  </Accordion>

  <Accordion title="Do I need to set a rate for every person?">
    Only for people whose time you price. Someone who never tracks billable time does not need one.
  </Accordion>
</AccordionGroup>

## Troubleshooting

| Message or symptom                                                               | Meaning                         | Fix                                                              |
| -------------------------------------------------------------------------------- | ------------------------------- | ---------------------------------------------------------------- |
| "That rate won't work. Enter an amount that isn't negative, like 120 or 120.50." | The amount is invalid           | Enter a plain non-negative decimal                               |
| "That isn't a currency code we recognise."                                       | Unsupported currency            | Pick one from the list                                           |
| "Pick a valid effective date."                                                   | The date is empty or malformed  | Choose a date with the picker                                    |
| "Couldn't save that rate. Check the amount and your permissions."                | The save was refused            | Confirm the amount, then confirm you hold `rate.manage`          |
| "Couldn't remove that rate. Please try again."                                   | The removal was refused         | Reload and retry. For a cost row, check you hold `rate.viewCost` |
| **Rates** is missing from settings                                               | You lack `rate.manage`          | Ask an Owner or Admin                                            |
| The **Cost (internal)** tab is missing                                           | You lack `rate.viewCost`        | Ask an Owner or Admin                                            |
| A Pro prompt appears when saving cost                                            | Your plan lacks `profitability` | Upgrade, or set the billing rate only                            |

## Related guides

<CardGroup cols={2}>
  <Card title="Billable rates" icon="dollar-sign" href="/rates/billable-rates">
    What you charge.
  </Card>

  <Card title="Cost rates" icon="wallet" href="/rates/cost-rates">
    What an hour costs you.
  </Card>

  <Card title="How rates are chosen" icon="list-ordered" href="/rates/how-rates-are-chosen">
    Which level wins.
  </Card>

  <Card title="Project and client rates" icon="folder-open" href="/rates/project-and-client-rates">
    Overrides above the person rate.
  </Card>

  <Card title="Rate snapshots" icon="camera" href="/rates/rate-snapshots">
    Why changing a rate is safe.
  </Card>

  <Card title="Rate permissions" icon="lock" href="/rates/rate-permissions">
    Who can do what.
  </Card>
</CardGroup>
