---
title: "ERP"
slug: admin/finance-erp
url: https://projectri.com/docs/admin/finance-erp
section: admin
audience: admin
app_route: "/[slug]/admin/finance/erp"
permissions: [finance.erp.manage, report.financial]
mobile: "/erp"
updated: 2026-09-08
source: Projectri documentation
---

# ERP

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.

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

## What it is

Two tabs about the boundary between Projectri and your accounting system.
**Ownership** decides, per kind of record, whether data flows out to the ERP, in
from it, both, or not at all. **Billable** is the approved, unbilled,
rate-carrying work grouped the way an invoice is actually cut — the list the ERP
pulls from.

> [!NOTE]
> Where an ERP owns invoices, **it issues the invoice, not Projectri**. What
> Projectri does is decide *what should be billed* — approved time, marked-up
> expenses, milestone and scheduled fees, retainer draws — because that is the
> half no ERP can do: an ERP cannot see approved time, WIP, or a milestone
> reaching done. Invoices mirrored from an ERP are read-only in the app.

## How to get there

This screen has no row in the console rail. Reach it at
`/<workspace>/admin/finance/erp`, or from the **Close & ERP** tab of
[Finance setup](/docs/admin/finance), which is where connections are created.
The **ADMIN** role is needed to open the console.

- **Ownership** needs `finance.erp.manage`, the same key that creates a
  connection and runs a sync.
- **Billable** needs `report.financial`, because it is a list of money.

No plan gate.

## How to use it

### Decide who owns what

1. Open **Ownership**. Each connection gets a card listing six record types:
   **Invoices**, **Payments**, **Customers**, **Expenses**, **Exchange rates**
   and **Time off**.
2. Each has two checkboxes — send to the ERP, and take from the ERP — which
   resolve to one of four directions: *Not synced*, *To the ERP*, *From the
   ERP*, or *Both ways*. The direction is printed in words beside the label.
3. **Syncing** at the top of the card counts how many of the six are moving at
   all.
4. Press **Save**. Only what you changed is sent; **Discard** drops your edits.

A connection with every record type off is registered, tested, green — and
moving nothing. The card says so in words rather than leaving it to a status
badge.

### See what is waiting to be billed

1. Open **Billable**. The stats are the **Total** waiting, how many
   **Projects** and **Lines** it spans, and, when there is one, the gap that is
   **Not billable**.
2. Set **As of** to a past date to ask what was outstanding then.
3. **Left out** comes first: approved, unbilled entries that carry no rate and
   so will appear on no invoice and in none of the totals above. It is counted
   in entries, never in money, because the reason they are excluded is that they
   carry no amount to sum.
4. Below that, one card per project with its client, its total and its lines.
   A discounted line shows its standard amount struck through.

## What it affects

- **What the ERP is allowed to overwrite.** Switching invoices, expenses or
  customers to *from the ERP* makes those records **read-only in Projectri**.
  The form warns before you do it: an admin who flips invoices inbound has just
  taken the invoice editor away from their whole finance team.
- **What a billing run can do.** A connection that is active and owns invoices
  is the one a newly issued invoice is offered to on
  [Invoicing](/docs/admin/billing-runs).
- **WIP.** The billable list is the outbound door. The ERP pulls it, decides
  what to bill, and echoes the time-entry ids back on the invoice line it
  creates — that echo is what relieves the WIP on the next inbound run.
- **Legacy connections.** Any record type you have never set here still runs on
  the connection's coarse "this system is the source of truth for…" flags.
  Saving only what you changed is what keeps the untouched ones tracking those
  flags rather than pinning them silently.

## On mobile

The **ERP** screen in the phone app carries both tabs, including the write. The
reason is the failure it prevents: a connection that tests green and syncs
nothing because every record type resolved to off is discovered by somebody
noticing yesterday's invoices never arrived, and that noticing does not happen
at a desk. Every rule — direction, what only-what-changed means, the read-only
warning — comes from the same shared module the web uses.

## Limits and gotchas

> [!WARNING]
> There is no "generate invoice" button on the Billable tab, deliberately.
> Marking hours as billed before the ERP has agreed to bill them is how WIP goes
> missing.

- **Closed accounting periods reject writes, including from ERP sync.** An
  invoice dated into a closed month is rejected and reported, never silently
  imported.
- **No connector currently has a live outbound invoice client.** A workspace
  whose ERP owns invoices will see an issued invoice stand locally with no push
  happening; the proposal reports that rather than pretending it was delivered.
- **A mixed-currency billable list** totals in the workspace reporting currency
  and names the currencies involved underneath.
- Money on the wire is in minor units. Every figure on both surfaces goes
  through a formatter — a raw number here would read a hundred times over.

## Related

- [Finance setup](/docs/admin/finance) — where a connection is created, and the close calendar the sync respects.
- [Invoicing](/docs/admin/billing-runs) — what Projectri assembles before an ERP ever sees it.
- [Financials](/docs/admin/financials) — the WIP balance this list is the front of.
- [Receivables](/docs/admin/receivables) — what an ERP-sourced invoice can and cannot do there.

## Related

- [Finance setup](https://projectri.com/docs/admin/finance.md): 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.
- [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.
- [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.
- [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.
