Help centre · Projects
Intercompany
Open this screen in Saral/projects/reports/intercompany
The one home for how a sale from one of your companies to another is treated when a project report is read on the group basis — the treatment ladder, the transfer-pricing policies, what each company declares as its own cost, the legs the engine could not pair, works-package handoffs and the per-company matrix. An Accounts or finance desk sets it; every group-basis report reads it. Nothing here posts a journal.
You enter
- Treatment rules: per project × counterparty (rung ②) and per GL account (rung ③) — pass-through, attributed, value added, product transfer, fee or keep — each with a note.
- Pricing policies per selling entity and type: margin, basis (uplift on cost, margin of the price, fixed), whether it is recoverable from the client, and the dates it is in force.
- Own-cost declarations: the cost a company keeps as its own, by account or cost head, standing or for a period, with the reason.
- A decision on each unmatched leg: dismissed, confirmed with a treatment, or still open.
- Works packages: which main projects are packages, and each handoff to a site project — date, full or apportioned, cost closed, expected margin, invoiced amount.
- The per-company matrix (rung ④), allocation account labels and the uplift journal setup.
Saral fills in
- Which rung decided each pair, most specific first: a per-pair decision, project × counterparty, GL account, the company matrix, then derived from whether the underlying cost is project-coded, else keep.
- The exception queue, computed from the same elimination engine the reports run — never a second derivation that could disagree with them.
- Each works package's accumulated at-cost from the ledger, the amount transferred, and the match control's verdict against the invoiced amount and expected margin.
- The warnings: no treatment rules (every unnamed pair is kept, not eliminated), no pricing policy (margin cannot be split, so a kept leg stays at the charged amount), and a config table that could not be read.
It produces
- The elimination policy every group-basis report applies — the CVR, the Portfolio, Explore and the Live Project Report.
- The register on screen as CSV (treatments, policies, own cost or exceptions), saved or emailed — the transfer-pricing evidence for a year-end file or an auditor.
- The own-cost declarations that Company Recharge Coverage reads to take cost off its undeclared queue.
What this page is for
When one of your companies sells to another, the group has not earned anything — but each company's own books are right as they stand. This page decides, pair by pair, what a group-basis report does with that sale: drop both legs because the external cost is already on the project, keep the buyer's leg at cost because the recharge is the project's only attribution, revalue it to a package's accumulated cost, treat it as a fee, or keep it. The entity's own P&L is never altered and no journal is posted.
The ladder
A pair is resolved by the most specific rule that names it: ① a per-pair decision made on Exceptions, ② project × counterparty, ③ GL account, ④ the per-company matrix, ⑤ derived from whether the underlying cost carries a project code, ⑥ keep. An empty ladder is not 'no intercompany' — it means every pair resolves by derivation, and any counterparty the matrix does not name is kept, not eliminated. The page says so in amber until the first rule is written.
Treatments and what they do
Pass-through (priced at cost) and value added (own cost plus margin) drop both legs. Attributed — an allocated share of a cost pool such as untracked wages, vehicles or overhead — drops the sale leg and keeps the buyer's leg at cost, because the recharge is the only way that cost reaches the project. Product transfer revalues the buyer's leg to the package's accumulated at-cost. Fee is a policy amount and never a project cost. Keep leaves the pair alone. The type fixes both the pricing rule and the reporting treatment, so a report never has to guess.
Pricing policies are the transfer-pricing evidence
A policy says, for one selling entity and one type, what margin was charged and on what basis, and from when. The rate in force is the latest one starting on or before each transaction's date, so a new rate from a future date leaves reported periods untouched — use Change rate for that, and Edit only to correct a mistake. 'Recoverable by default' marks a cost-plus margin the client is billed, which lifts anticipated final value on the CVR instead of only leaving cost. Changing a policy restates the report; it never touches Xero.
Exceptions are the honest remainder
The queue is read off the same elimination run the reports produce, so it is exactly what the reports did not pair. A leg stays in the numbers until its partner is found; dropping half a pair is what once made project totals move unpredictably. Resolving one records a decision on that pair — dismissed (reviewed, leave it in), confirmed with a treatment, or still open.
Works packages
A manufactured item — a fabricated module, say — is its own cost object: cost accumulates on the package's project and enters site reporting only at the handoff recorded here. Mark the project as a package on Project kinds, then record each transfer — full or a percentage, and whether the package's cost is closed. The CVR reads a cost-closed transfer as the site's inherited at-cost on the group basis; the match control compares what was invoiced with that cost plus the expected margin and says ok, variance or unknown.
Who does what, and the single-company case
The page needs the Projects settings permission — an Accounts or finance desk, not a QS. An account with one company and one connected organisation has nothing to eliminate, so the four ladder tabs are hidden and the page shows Works packages and Company rules & allocations only. Where the ladder's tables have not been created yet the page says so plainly instead of showing empty registers nobody can save to.
Where next
Company Recharge Coverage reads the own-cost declarations; Explore and the CVR read the ladder on the group basis; the P&L Reconciliation is the coverage question that sits beside this one — whether every line carries a project code at all.
Next screen: /projects/reports/explore
Not what you needed? Inside Saral, ask Kuku (Alt+K) — if it cannot answer, “Ask a human” sends the question to Saral support with the chat attached.