# NPV and Payback for the Worked Example — Estimating AI Automation ROI

Source: https://www.skillbyai.com/en/ai-automation-roi/m-npv

> Bring benefits and costs together.

## Monthly cash flows, discounted

Combine the pieces into monthly cash flows: realised labour savings plus error savings minus running, monitoring and maintenance costs, after a one-off investment. Accumulate to find the **payback month**, discount each month to compute **NPV**, and report a simple ROI for reference. Keep the model transparent (a few named inputs), so others can challenge each assumption.

## From point estimates to ranges

NPV and payback give the headline; sensitivity and simulation show how fragile it is.

![Three ideas: NPV and payback, sensitivity, Monte Carlo.](assets/figures/ai-automation-roi/section-5-map.svg) — Figure 5.1 — NPV, sensitivity and Monte Carlo.

## NPV and payback for the invoice automation, run

I ran this with plain Python 3. All figures belong to one worked example (an invoice-processing team) with invented but internally consistent numbers; prices are placeholders. With $13,716 of freed staff time at 60% realisation, $7,500 of error savings and $3,016 of monthly costs, the net benefit is $12,714 a month. The $53,000 investment pays back in month 5, and the three-year NPV at 10% is about $343,000.

```python
one_off = 53000
labour_saved = 12000 * 3.81 / 60 * 18.0      # $13,716 of staff time freed per month
realisation = 0.6                             # share of freed time that turns into money
error_saving = 12000 - 4500                   # error cost today minus with AI + review
monthly_cost = 3016                           # run + monitoring + maintenance
net = labour_saved * realisation + error_saving - monthly_cost
cum, npv, payback = -one_off, -one_off, None
for m in range(1, 37):
    cum += net
    npv += net / 1.10 ** (m / 12)              # 10% annual discount rate
    if payback is None and cum >= 0: payback = m
print(f"net benefit per month: ${net:,.0f}")
print(f"payback month: {payback}")
print(f"3-year NPV at 10%: ${npv:,.0f}")
print(f"3-year simple ROI: {(net * 36 - one_off) / one_off:.0%}")
```

Output:

```
net benefit per month: $12,714
payback month: 5
3-year NPV at 10%: $343,492
3-year simple ROI: 764%
```

## Keep inputs on one sheet

List every input with its source and owner at the top of the model; reviewers should be able to change one and see the result.

**Quiz:** In the example, which input converts freed hours into money?

- [ ] The token price
- [ ] The discount rate
- [ ] The payback month
- [x] The realisation rate

*Answer:* The realisation rate. Not all freed time is cash.
