# Map your accounts

**Goal:** create an `accounts.srf` that tags each account with its tax
treatment (and, optionally, its institution and maintenance cadence).
This unlocks the **By Tax Type** breakdown, an umbrella-insurance
exposure estimate, and broker reconciliation.

**You'll need:** a `portfolio.srf` whose lots use `account::` labels
([build one first](set-up-your-portfolio.md)). Full field list:
[`accounts.srf` reference](../reference/config/accounts-srf.md).

## 1. List your accounts with a tax type

One record per account. The `account::` name must match the
`account::` value on your lots **exactly**. The minimum is a tax type:

```srf
#!srfv1
account::Pat 401k,tax_type::traditional
account::Pat Roth,tax_type::roth
account::Joint taxable,tax_type::taxable
account::Family HSA,tax_type::hsa
```

The four recognized tax types are `taxable`, `roth`, `traditional`,
and `hsa`. Run analysis to see the breakdown:

```bash
ZFIN_HOME=~/finance zfin analysis
```

```
  By Tax Type
  Traditional (Pre-Tax)    █████████████████▋              58.9%  $815,290.06
  Taxable                  ██████▍                         21.6%  $299,010.60
  Roth (Post-Tax)          █████                           16.9%  $233,732.95
  HSA (Triple Tax-Free)    ▊                                2.5%  $35,104.20
```

Accounts you don't list show up as "Unknown."

## 2. Add institution and account number (for auditing)

If you plan to reconcile against brokerage exports
([audit guide](audit-against-brokerage.md)), add the institution and a
(placeholder) account number so zfin can match export files to
accounts:

```srf
account::Pat 401k,tax_type::traditional,institution::fidelity,account_number::P401
account::Joint taxable,tax_type::taxable,institution::schwab,account_number::JT01
```

Recognized institution keys include `fidelity`, `schwab`, `vanguard`,
and `wells_fargo`.

## 3. Tune the maintenance cadence

[`zfin audit`](../reference/cli/audit.md) (run with no flags) nags you
about accounts you haven't refreshed recently. The default cadence is
`weekly`; relax or silence it per account:

```srf
account::Family HSA,tax_type::hsa,update_cadence::quarterly
account::Old Rollover,tax_type::traditional,update_cadence::none
```

## 4. Advanced flags

Two flags change how analysis treats an account. Both are optional --
see the reference for details:

- **`shielded:bool:false`** -- mark a pre-tax account that is *not*
  judgment-protected (deferred comp, a weak-state IRA) so it counts
  toward your [umbrella-insurance exposure](read-your-portfolio.md#umbrella-exposure)
  -- the slice of net worth a personal umbrella liability policy is
  meant to cover.
- **`cash_is_contribution:bool:true`** -- treat cash increases on this
  account as real external contributions in
  [`zfin contributions`](track-contributions.md), instead of internal
  noise.

## Example (from `examples/pre-retirement-both`)

```srf
#!srfv1
account::Pat 401k,tax_type::traditional,institution::fidelity,account_number::P401
account::Pat Roth,tax_type::roth,institution::fidelity,account_number::PROTH
account::Sam 401k,tax_type::traditional,institution::vanguard,account_number::S401
account::Joint taxable,tax_type::taxable,institution::schwab,account_number::JT01
account::Family HSA,tax_type::hsa,institution::fidelity,account_number::HSA01
```

## Next steps

- [Read your portfolio](read-your-portfolio.md) -- the breakdowns this unlocks.
- [Audit against your brokerage](audit-against-brokerage.md) -- put `institution`/`account_number` to work.

---

[Previous: Classify your holdings](classify-holdings.md) | [Next: Read your portfolio](read-your-portfolio.md) | [Documentation home](../README.md)
