nz_kiwisaver_calculator
Project a NZ KiwiSaver balance from current age to retirement age.
Month-by-month compound interest projection matching the calculate.co.nz
methodology. Includes employee and employer contributions, voluntary top-ups
at your chosen cadence, the government contribution ($260.72/yr if eligible),
management fees, and PIR tax on investment gains. Returns both the nominal
final balance and the inflation-adjusted real (today's dollars) balance.
Use for ANY KiwiSaver retirement-planning question: 'how much will I have
at 65', 'is $X enough to retire on', 'what happens if I contribute more',
'how much does switching from Conservative to Growth help', 'what's the
impact of fees over 30 years'.
FUND TYPES and expected annual returns:
- Cash: 1.00% (very low risk, low return)
- Conservative: 2.50% (low risk, default)
- Balanced: 4.00% (moderate risk)
- Growth: 7.00% (higher risk, higher expected return)
- Custom: you specify via custom_return_pct
PIR (Prescribed Investor Rate) is the tax rate on your KiwiSaver
investment gains, NOT your income tax rate. Valid values:
- 10.5 (low incomes)
- 17.5 (middle incomes)
- 28 (higher incomes, default)
KEY RULES APPLIED (current as of April 2026):
- Government contribution: full $260.72/yr for eligible members
(halved from $521.43 on 1 July 2025)
- Not available if annual income exceeds $179,999.99
- Minimum contribution 3.5% from 1 April 2026 (rising to 4% in 2028)
Args:
current_balance: Starting KiwiSaver balance in NZD.
current_age: Current age in whole years.
retirement_age: Projection end age (default 65).
annual_income: Current gross annual salary (default 100000).
income_growth_pct: Annual salary increase % (default 1.0).
employee_rate_pct: 0, 3, 3.5, 4, 6, 8, or 10 (default 3.5).
employer_rate_pct: Employer contribution % (default 3.5, NZ minimum).
voluntary_amount: Extra contribution per period in NZD (default 0).
voluntary_frequency: 'week', 'fortnight', 'month', 'year' (default 'month').
fund_type: Cash, Conservative (default), Balanced, Growth, or Custom.
custom_return_pct: Required if fund_type='Custom'.
pir_rate_pct: PIR as percentage: 10.5, 17.5, or 28 (default 28).
annual_fee_pct: Management fee % annually (default 0.40).
inflation_pct: For real-value reporting (default 3.0).
switch_fund_at_age: Optional age to switch fund (e.g. derisk at 55).
switch_to_fund: Fund to switch to at that age.
switch_custom_return_pct: Required if switching to Custom fund.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fund_type | No | Conservative | |
| current_age | Yes | ||
| pir_rate_pct | No | ||
| annual_income | No | ||
| inflation_pct | No | ||
| annual_fee_pct | No | ||
| retirement_age | No | ||
| switch_to_fund | No | ||
| current_balance | Yes | ||
| voluntary_amount | No | ||
| custom_return_pct | No | ||
| employee_rate_pct | No | ||
| employer_rate_pct | No | ||
| income_growth_pct | No | ||
| switch_fund_at_age | No | ||
| voluntary_frequency | No | month | |
| switch_custom_return_pct | No |