Annual spend and attribution
Annual spend is your total run-rate; the spend-by-domain view only counts spend that maps to a capability.
Last updated September 22, 2026
Annual spend looks like a single number, but it is built from clear rules. Understanding them tells you why a total and its breakdown can differ, and how to close that gap.
How a tool's annual spend resolves
Pytheus resolves each tool's annual spend in a defined order:
From the line items on the linked contract, if any exist.
Otherwise, from the linked contract's annual commitment, counting only active or expiring contracts.
This order means precise line-item data wins where you have it, with the annual commitment as a sensible fallback. Expired contracts do not contribute run-rate.
Annual spend versus spend by domain
Annual Spend is the total recorded run-rate across all your tools. The spend-by-domain composition is narrower: it only counts spend that maps through a capability to a domain. A tool with no capability mapping still sits in your total, but it lands in no domain. It is unattributed.
That difference is not a bug, it is a prompt. If your domain breakdown adds up to less than your total, the shortfall is unattributed spend waiting to be explained. Mapping the tool to the capabilities it delivers closes the gap and moves that money into the right domain.
Unattributed spend is money you cannot yet reason about by domain. The fix is a mapping, not a workaround. Map the tool and it joins the breakdown.
Accurate attribution depends on your tool-to-capability mappings in CANOPY and on contracts being linked to the right tools.