Who pays for the shared warehouse? A practical guide to cost allocation
When one warehouse or one AI account serves many teams, someone still has to pay. Five ways to split the cost, the order to use them in, and how to keep totals honest.
By RootSpend Team. Updated
Shared resources are the hard part of cost allocation. One warehouse serves marketing, sales and a chatbot project. One OpenAI account serves five teams. The invoice is a single number. So who pays?
Five methods, in order
Use the most precise signal you have for each cost. Only fall back to the next method when it's missing.
| # | Method | How it works | Good for |
|---|---|---|---|
| 1 | Request label | The query or API call carries a tag, like project=chatbot | Projects that cut across teams |
| 2 | Person to team | Each person's usage goes to their team | Teams and departments |
| 3 | Dedicated resource | The whole warehouse, project or workspace belongs to one team | Anything with a single owner |
| 4 | Fixed split | Percentages you agree on, like 60 / 40 | Tools with no usage detail |
| 5 | Unassigned | Nothing matched | Showing what still needs an owner |
A worked example
One warehouse cost $3,000 this month. Here's how it splits.
| Usage | Method | Goes to | Cost |
|---|---|---|---|
| Sara's queries | Person to team | Marketing | $1,200 |
| Ali's queries | Person to team | Sales | $900 |
Queries tagged project=chatbot | Request label | Chatbot project | $400 |
| Idle time | Spread by usage | All three | $500 |
| Total | $3,000 |
The total at the bottom matches the bill. That's the point.
Three rules that keep finance's trust
Count every dollar once. Add up the teams and you get the bill. Add up the categories and you get the bill again.
Put dates on team membership. When someone switches teams, their old costs stay with their old team.
Never hide the unassigned. Show it, and make finding its owner somebody's job.
Doing this in RootSpend
RootSpend applies these methods out of the box. OpenAI and Claude costs are split by project, workspace and person. Snowflake compute is split per warehouse and per user, with idle time shared across each warehouse's teams. Cloud bills from AWS, Google Cloud and Azure go to teams by account, project or tag.
See your own numbers when we open
Join the waitlistFrequently asked questions
Showback means showing each team its costs without moving any money. Chargeback means actually billing those costs to each team's budget. Both need the same thing underneath, a split everyone trusts.
Either spread them across teams in proportion to their usage, or keep them as a visible shared line. Both are fine. Pick one and stick with it.