---
title: "Finance setup"
slug: admin/finance
url: https://projectri.com/docs/admin/finance
section: admin
audience: admin
app_route: "/[slug]/admin/finance"
permissions: [finance.rates.view, finance.rates.manage, calendar.view, calendar.manage, report.financial, report.cost, report.utilization, finance.fx.manage, finance.period.close, finance.erp.manage, finance.tax.view, finance.tax.manage, finance.dunning.manage, finance.payments.view, finance.payments.manage, finance.expense.policy.manage, finance.budget.manage, time.compliance.configure]
mobile: false
updated: 2026-09-08
source: Projectri documentation
---

# Finance setup

The configuration every financial number divides by — rate cards, working calendars, exchange rates, targets, leave, timesheet and expense policy, overtime, tax, dunning, payments, cost centres, budget alerts and the month-end close.

![Finance setup](https://projectri.com/docs-shots/admin-finance.png)

## What it is

Finance setup holds the inputs every financial figure in Projectri is computed
from. Nothing here breaks a screen when it is empty — it quietly changes a
number someone acts on. A workspace with no rate card still tracks time
perfectly; it just cannot answer what any of that time was worth.

Fourteen tabs, each with its own endpoint and its own permission key, so a
tab you may not read fails on its own rather than taking the page down.

## How to get there

**Money → Finance setup**. The **ADMIN** role is needed to open the console.

Each tab is gated separately. The ones this page is mostly used for:

| Tab | Read | Change |
|---|---|---|
| Rate cards | `finance.rates.view` | `finance.rates.manage` |
| Calendars | `calendar.view` | `calendar.manage` |
| Currency | `report.financial` | `finance.fx.manage` |
| Utilization targets | `report.utilization` | `finance.rates.manage` |
| Leave | `report.utilization` | `calendar.manage` |
| Timesheets | `time.compliance.configure` | `time.compliance.configure` |
| Expense policy | `finance.expense.policy.manage` | `finance.expense.policy.manage` |
| Overtime | `finance.rates.manage` | `finance.rates.manage` |
| Tax | `finance.tax.view` | `finance.tax.manage` |
| Dunning | `finance.dunning.manage` | `finance.dunning.manage` |
| Payments | `finance.payments.view` | `finance.payments.manage` |
| Cost centres | `report.financial` | `finance.rates.manage` |
| Budget alerts | `report.cost` | `finance.budget.manage` |
| Close & ERP | `report.financial` | `finance.period.close`, `finance.erp.manage` |

Cost rates are additionally gated: without `report.cost` the rate-card table
shows bill rates in full, hides the cost and margin columns, and says so.
Reading a card with cost rates on it is written to the audit log.

No plan gate on the page itself.

## How to use it

### Create a rate card

1. On **Rate cards**, press **New card**.
2. Name it after the agreement it encodes — "FY26 Standard", "ACME MSA 2026".
3. Choose the currency and an **Effective from** date. Work logged before that
   date is priced by whichever card was in force then.
4. Optionally make it the **company default**, used wherever no project,
   contract or client card applies.
5. Fill in bill and cost per hour against each job role. Rates are per hour, in
   the card's currency, and the form converts to the currency's own minor units.
6. Resolution is **most specific wins**: a person beats their role, which beats
   the blended fallback row.

Cost rates must be **fully loaded** — salary plus employer taxes and benefits —
or every margin figure in the product is overstated.

### Set up working calendars

1. On **Calendars**, press **New calendar** for a hand-built one: name, optional
   region, which weekdays are non-working, and holidays one per line as
   `YYYY-MM-DD, name, optional hours`. Give hours only for a part-day.
2. Or press **Fill from country** to generate a country's public holidays for up
   to five years at a time.
3. Mark one calendar the **default**. Members on no calendar fall back to it;
   with no default at all, they get no holidays deducted whatsoever.
4. The generation result says how many dates were **written**, how many
   hand-typed ones were **kept**, and how many fell on that calendar's own
   weekend and were dropped. Only generated rows are replaced, so the button is
   safe to press twice.

### Keep exchange rates current

1. On **Currency**, the first card names your reporting currency and, above the
   table, any currency you actually transact in that has **no rate**.
2. **Add rate** records how many units of the reporting currency one unit of the
   source currency buys, as at a date, of kind **Daily**, **Month end** or
   **Budget**.
3. Month-end is the kind a period close freezes against.

### Close a month

1. On **Close & ERP**, the calendar shows every month of the year as Open, Soft
   closed, Closed or Overdue.
2. Before the next month to close, the page lists advisory checks. They are
   warnings, never blockers — a close a system can veto is a close that gets
   worked around with a direct database update — and what you decided is
   recorded on the period.
3. **Close** locks every time entry and expense in the month.
4. **Reopen** demands a written reason, which is stored against the period and
   visible to anyone who looks at it afterwards.
5. Between the calendar and the ERP card sits **FX revaluation** for the period
   about to be closed, or the most recently closed one if nothing is
   outstanding — never the month in progress, whose balances are still moving.

### Connect a finance system

1. On **Close & ERP**, press **Connect ERP**.
2. Name it, pick the system, and tick what that system is the **source of
   truth** for: invoices and payments, expenses, bill and cost rates, exchange
   rates.
3. Credentials are configured separately and are never stored on the connection
   record.
4. Per-entity direction — "they own invoices, we own expenses" — is set on
   [ERP](/docs/admin/finance-erp), not here.

### The other tabs, briefly

- **Utilization targets** — the target every utilisation percentage is judged
  against, per job role rather than one firm-wide number, with a workspace
  fallback row. A seeded benchmark stays visibly a default until you edit it.
- **Leave** — time off, the third input to the same denominator as calendars and
  targets.
- **Timesheets** — the submission policy and its nudge ladder. This is the
  confidence figure behind every utilisation number.
- **Expense policy** — the rules an approver judges a claim against, plus the
  mileage and per-diem rate tables. Each rule says in words whether it flags for
  the approver or blocks the claim. Below it sits how accurate the receipt
  reader has actually been.
- **Overtime** — which hours are worth more than the rate card says.
- **Tax** — tax codes, the rules that pick between them, and your registrations.
  A rate change is a new version, never an edit.
- **Dunning** — the ladder an overdue invoice climbs on its own. A ladder is
  authored whole and replaces its steps outright, so you cannot end up with a
  60-day letter and no 7-day reminder.
- **Payments** — connecting your own payment account so clients can pay. Your
  money never touches ours; a restricted account is called out in words, because
  it will take the money and not pay it out.
- **Cost centres** — the buckets overhead divides into and the headcount in
  each. People left unassigned mean overhead divides by nothing and every
  project reads more profitable than it is.
- **Budget alerts** — the thresholds that decide when somebody is woken up. An
  empty threshold table produces no error and no alert, which reads exactly like
  a portfolio on track, so the tab says out loud whether anything will fire.

## What it affects

- **Every money figure in the product.** With no rate card, hours carry no bill
  or cost rate: utilisation still works, but margin, WIP and effective rate are
  unanswerable. [Financials](/docs/admin/financials) prints that caveat rather
  than a number.
- **Every utilisation percentage.** With no working calendar, capacity is a full
  contracted week with no holidays deducted, which overstates the denominator
  and understates everyone.
- **Invoices.** Tax determination runs once, at issue, from these codes and
  rules, and is frozen onto the document. A workspace with no tax rules charges
  0% and nothing on the invoice explains why.
- **Chasing.** The dunning ladder configured here is what runs against overdue
  invoices on [Receivables](/docs/admin/receivables).
- **A billing run.** Rate cards, exchange rates and the close calendar are all
  read by assembly on [Invoicing](/docs/admin/billing-runs) — period-locked time
  is excluded from a run, and a missing rate becomes an exclusion note.
- **Reporting totals.** Everything converts once, at the rate in force on the
  day, never at read time.

## On mobile

Finance setup is web only. Some of the things configured here have their own
read screens in the phone app — tax, overtime, payments and the working calendar
among them — but the configuration itself is not editable from a phone.

## Limits and gotchas

> [!WARNING]
> The reporting currency is frozen as soon as any money row exists. Time,
> expense and invoice amounts are stored in it without a tag of their own, so
> switching would reinterpret every historical figure rather than convert it.
> The refusal on [Workspace settings](/docs/admin/settings) is correct
> behaviour, not a bug — contact support to restate a ledger.

- **A currency with no rate is counted at 1:1**, and every affected report says
  so in its assumptions. That is why the Currency tab leads with which
  currencies are missing one rather than with the table of rates you do have.
- **Generating holidays for a country outside the published rule sets** produces
  New Year and Christmas and nothing else. That does not read as a failure — it
  reads as a country with two holidays — and it overstates the utilisation of
  everyone on that calendar for a year.
- **Lunar dates are tabulated to a horizon.** Generating past it silently drops
  Eid, which for a Gulf workspace is most of the holidays there are. The dialog
  warns before you press the button.
- **Closing a period is not a blocker either way.** The pre-close checks are
  advisory, and reopening is always possible with a reason.
- **An ERP connection with everything switched off is a real state.** It
  registers, tests green and moves nothing.
- Until an ERP connection exists, nothing is ever marked as billed by a sync, so
  WIP is the entire unbilled book.

## Related

- [Financials](/docs/admin/financials) — the reports that divide by everything on this page.
- [Invoicing](/docs/admin/billing-runs) — what a run reads from here.
- [Receivables](/docs/admin/receivables) — where the dunning ladder and payment connection show their work.
- [ERP](/docs/admin/finance-erp) — per-entity ownership and what is waiting to be billed.
- [Workspace settings](/docs/admin/settings) — country, locale and the reporting currency itself.

## Related

- [Financials](https://projectri.com/docs/admin/financials.md): The finance reports — a scorecard, utilisation, project profitability, WIP and ageing, the tax return, and the exceptions list that says what to do on Monday.
- [Invoicing](https://projectri.com/docs/admin/billing-runs.md): Assemble a period's billing from approved time, expenses, fixed fees, milestones and retainer draws, review what it proposes per client, then issue it as invoices.
- [Receivables](https://projectri.com/docs/admin/receivables.md): What your clients owe, how late it is, what the dunning ladder is doing about it, and the credit notes, write-offs and refunds that change the balance.
- [ERP](https://projectri.com/docs/admin/finance-erp.md): Which system owns each kind of finance record — yours or your accounting system's — and the approved, unbilled work waiting for the ERP to pick up.
- [Settings](https://projectri.com/docs/admin/settings.md): Branding, region, locale, the working week and storage policy — the tenant preferences that every other screen in Projectri reads.
