Who it's for: SaaS finance teams who accrue, code and allocate cloud bills from providers such as AWS, Google Cloud or Microsoft Azure.
What you'll get: how to accrue a cloud bill that arrives after month-end, how to split hosting between cost of sales and operating costs, how to handle commitments and credits, worked examples with journals, and AI prompts to copy.
Reading time: about 11 minutes. Less time than it takes the cloud console to load.
Why cloud costs deserve their own process
Cloud hosting is often a SaaS company's second-biggest cost after people, and it's the one that moves most from month to month. The invoice usually arrives after the close starts, it's billed in dollars, and it mixes production servers with test environments and someone's forgotten experiment. Where it lands in the P&L changes gross margin, which is one of the first numbers investors look at. A clear, repeatable method makes the number trustworthy.
Key terms
- Cost of sales (COGS): costs of delivering the service to paying customers. Feeds into gross margin.
- Operating expenses (opex): other running costs, such as R&D, sales and marketing, and admin.
- Production environment: the live systems customers use.
- Non-production environments: development, testing and staging systems used by engineers.
- Tagging: labels on cloud resources (for example "env: production", "team: data") that let costs be grouped in the provider's billing reports.
- Committed spend or reserved capacity: a discount in exchange for agreeing to spend a set amount, or use set capacity, over one to three years. Sometimes paid upfront.
- Credits: free usage from the provider, often given to start-ups or as part of a deal.
Step 1: accrue the month's cost
Most cloud providers invoice early in the following month. Their billing dashboards, though, show costs to date almost in real time. That makes the dashboard the best basis for the accrual.
| Step | What "done" looks like | |
|---|---|---|
| ☐ | On Day 1, export month-to-date costs from each provider's billing console, by tag or account | Export saved, with run date and currency |
| ☐ | Check for charges billed separately: support plans, marketplace software, taxes | All parts of the bill included |
| ☐ | Deduct credits applied in the month | Net cost matches what will be invoiced |
| ☐ | Convert to sterling at the month-end rate per your FX policy | Rate and source noted |
| ☐ | Post the accrual as a reversing journal, net of VAT | Journal posted with the export attached |
| ☐ | When the invoice arrives, compare with the accrual | Difference noted; large differences investigated |
On VAT: check how your provider invoices UK customers. Some charge UK VAT on the invoice; others bill from abroad and the UK business accounts for VAT under the reverse charge (as at October 2026, HMRC's guidance is that for a fully recoverable business the reverse charge entries usually cancel out on the VAT return). The accrual is posted net either way.
AI shortcut: give an approved AI tool the billing export (service, account, tag, cost) and ask for a summary by environment tag, with a separate line for untagged costs and the top ten services by cost. That gives you the accrual and the allocation split in one go, and shows how much is untagged. Check that the summary total matches the export total.
Step 2: decide what's cost of sales
There isn't a single rule in IFRS or FRS 102 that says which hosting costs are cost of sales. It's a policy choice based on what the cost is for, applied consistently. A common approach in SaaS:
| Cloud cost | Common treatment | Why | Where AI helps |
|---|---|---|---|
| Production hosting for the customer-facing product | Cost of sales | Directly needed to deliver the service | Summarising costs tagged as production |
| Customer data storage, backups, monitoring of production | Cost of sales | Part of keeping the service running | Grouping by service type |
| Development, testing and staging environments | R&D opex (or capitalised, if part of a qualifying project) | Used to build, not deliver | Flagging non-production spend by team |
| Internal tools: BI, finance systems, internal analytics | G&A or relevant department opex | Not used to serve customers | Identifying accounts used for internal tooling |
| Free trial or demo environments | Sales and marketing opex | Used to win customers rather than serve them | Spotting resources tagged for demos |
| Untagged costs | Allocated by agreed method, then fixed at source | No direct evidence of use | Suggesting likely owners from resource names |
The most important thing isn't which policy is chosen, but that it's written down and applied the same way every month, so gross margin trends mean something.
Step 3: allocate and post
| Step | What "done" looks like | |
|---|---|---|
| ☐ | Split costs by environment tag into the policy categories | Every tagged pound in a category |
| ☐ | Allocate untagged costs using the agreed method (for example, in proportion to tagged costs) | Method documented and applied |
| ☐ | Post the allocation journal from the hosting account to each category | P&L shows hosting in the right lines |
| ☐ | Send the untagged list to engineering | Owner named for each large untagged item |
| ☐ | Track untagged share month by month | Trend shown in the working paper |
Worked example 1: accrual and allocation
MonthEndClub Co Ltd (fictional) runs on one cloud provider, billed in US dollars. On 1 November the billing console shows October costs of $26,000, after $1,000 of credits. Using a month-end rate of £0.75 per dollar (an illustrative rate), that's £19,500.
By environment tag:
| Tag | USD | GBP |
|---|---|---|
| Production | 18,200 | 13,650 |
| Non-production (dev, test, staging) | 4,800 | 3,600 |
| Internal tools | 1,400 | 1,050 |
| Untagged | 1,600 | 1,200 |
| Total | 26,000 | 19,500 |
The company's policy allocates untagged costs in proportion to tagged costs. Tagged costs are £18,300 (13,650 + 3,600 + 1,050), so:
| Category | Tagged (£) | Share of untagged (£) | Total (£) |
|---|---|---|---|
| Cost of sales: hosting | 13,650 | 895 | 14,545 |
| R&D: hosting | 3,600 | 236 | 3,836 |
| G&A: internal tools | 1,050 | 69 | 1,119 |
| Total | 18,300 | 1,200 | 19,500 |
Workings: 1,200 × 13,650 ÷ 18,300 = 895 (rounded); 1,200 × 3,600 ÷ 18,300 = 236; the G&A share takes the rounding, 1,200 − 895 − 236 = 69.
October: post the accrual, already split.
| Account | Dr | Cr |
|---|---|---|
| Hosting: cost of sales | £14,545 | |
| Hosting: R&D | £3,836 | |
| Hosting: G&A internal tools | £1,119 | |
| Accruals | £19,500 |
November: the accrual reverses. The invoice arrives at $26,150, and the real invoice is posted at the rate on its date, through the same split. The small difference against the accrual (from extra usage recorded after the export, and the rate change) lands in November. If differences are routinely large, a common fix is to run the export a day later, or add a small buffer based on past patterns.
Worked example 2: a prepaid commitment
On 1 October, MonthEndClub Co Ltd pays $36,000 upfront for one year of reserved capacity, which gives a discount on production servers. At the rate on the day of payment, £0.75, that's £27,000.
October: post to prepayments. (Here the provider bills from abroad and the reverse charge applies, so no VAT appears on the invoice; the reverse charge entries go on the VAT return.)
| Account | Dr | Cr |
|---|---|---|
| Prepayments | £27,000 | |
| Bank | £27,000 |
Each month: release one-twelfth to cost of sales. £27,000 ÷ 12 = £2,250.
| Account | Dr | Cr |
|---|---|---|
| Hosting: cost of sales | £2,250 | |
| Prepayments | £2,250 |
Prepayments are non-monetary items, so they stay at the rate on the day they were paid and aren't revalued each month. Make sure the billing console's month-to-date figure doesn't also include the amortised commitment, or it'll be accrued twice. Many consoles can show it either way, so check which view you're exporting.
AI shortcut: give an approved AI tool the cloud provider's invoice PDF and your accrual working, and ask it to list each charge type on the invoice, show which are prepaid commitments, and flag anything that appears in both. A person checks the flagged items before the invoice is posted.
If you report under US GAAP (ASC 606)
ASC 606 covers revenue, not costs, so it doesn't change the hosting treatment. Under US GAAP, as under IFRS and FRS 102, the split between cost of revenue and operating expenses is a matter of consistent presentation policy. US SaaS companies typically include production hosting in cost of revenue, which matches the common UK approach. If hosting costs are part of building internal-use software, they may be capitalised under ASC 350-40 rules instead.
Common mistakes and audit watch-outs
- Waiting for the invoice. The cloud bill arrives after the close. Use the billing console to accrue.
- Putting everything in cost of sales. Dev, test and internal tools in COGS makes gross margin look worse than it is.
- Putting nothing in cost of sales. Leaving production hosting in opex flatters gross margin, and investors will spot it.
- Changing the split without saying so. A policy change needs to be documented and flagged in the pack, or margin trends are meaningless.
- Ignoring untagged costs. They grow quietly. Track the share each month and give engineering a target.
- Double-counting commitments. If the console shows amortised commitment costs, they're already in the prepayment release.
- Forgetting credits expire. When start-up credits run out, costs jump. Flag the expiry date in the forecast.
- Taking AI summaries at face value. An AI summary of the billing export can drop rows or misread tags. Tie the total to the export before posting.
Tools that can help
Each major cloud provider has its own billing console and cost export, which is the main data source. Ledgers such as Xero, QuickBooks and NetSuite handle reversing accruals and departmental coding. Reporting tools such as Fathom or Syft can show gross margin trends once the split is consistent. Excel or Google Sheets is fine for the allocation. None of these replace the policy or the review; they just make the monthly split quicker.
AI prompts to try
Use only AI tools your company has approved for financial data. AI drafts and summarises; a person checks and signs off.
1. Accrual summary. Give it: the month-to-date billing export. Ask: "Summarise cost by environment tag and by service. Show untagged costs separately and confirm the total matches the export." Check: the total against the console.
2. Allocation journal. Give it: the tag summary, your allocation policy and the month-end rate. Ask: "Convert to sterling, allocate untagged costs in proportion to tagged costs, and draft a balanced journal by category." Check: it balances and the rounding is sensible.
3. Untagged owners. Give it: the untagged resources with names and accounts. Ask: "Suggest the most likely team or environment for each, with your reasoning." Check: send the list to engineering to confirm, never post on a guess.
4. Variance explanation. Give it: this month's and last month's summaries by service. Ask: "List the five biggest increases and decreases by service and tag." Check: confirm the business reason with engineering before it goes in the commentary.
Rates, thresholds and rules in this guide
Figures were checked against the pages below in October 2026. They change regularly (often each April or at Budget time), and we can't guarantee they're still current or right for your situation. Always check the official page before relying on them.
- Place of supply of services (VAT Notice 741A) (HMRC, GOV.UK): how the reverse charge works on services from overseas suppliers, and why it has no net cost for a fully recoverable business
Key takeaways
- Accrue cloud costs from the billing console on Day 1, net of credits and VAT.
- Production hosting usually goes in cost of sales; dev, test and internal tools usually don't.
- Write the split policy down and apply it the same way every month.
- Treat upfront commitments as prepayments and watch for double-counting.
- Track and reduce untagged costs; they make every allocation weaker.
- Let AI summarise and draft the split; a person ties it out and signs off.
FAQs
Is cloud hosting cost of sales or opex?
Both, usually. Hosting that delivers the live product to customers is commonly cost of sales. Hosting used to build the product or run internal tools is commonly opex. The split is a policy choice that needs to be applied consistently.
Which exchange rate should the accrual use?
Many teams use the month-end rate from the same source as their other FX revaluations, so the accrual is consistent with the rest of the balance sheet. The real invoice is posted at its own date's rate when it arrives.
How do we handle start-up credits?
Credits that reduce the bill reduce the cost. A common approach is to accrue the net amount actually payable and note the gross cost and credits used in the working paper, so the forecast shows what happens when the credits run out.
Can AI do the cloud allocation for us?
It's well suited to summarising billing exports, applying an agreed allocation and drafting the journal. It can't decide the policy or confirm what an untagged resource is for. Use approved tools only, tie its totals to the export, and keep sign-off with a person.
Related guides
- SaaS Gross Margin: What Belongs in Cost of Sales
- Accruals and Prepayments: A Practical Guide with Examples
- Month-End FX Revaluation, Step by Step
- Capitalising Software Development Costs: When and How
More in Costs and Accruals guides.
From the Club
For when the cloud bill lands on Day 3. The Washed Cap · The Dad Hat
Join the Club. New guides, early access and members-only batches. Join here.
This guide is general information about common practice. It isn't tailored to any business, and standards, tax rules and figures change. Check your own circumstances, the latest rules and, where needed, a qualified professional before acting.
Last reviewed: October 2026.