Import format
Settings ▸ Import accepts Excel (.xlsx) or CSV. "Get the template" in the same screen gives a ready-made workbook with these sheets, example rows and a Notes sheet.
- Only the Grants sheet is required. Tranches, Windows and Orders are optional.
- A CSV holds one sheet; Vestpocket tells which from its columns.
- Column names aren't case-sensitive, can be in any order, and common broker spellings are recognized ("Grant Date", "Shares", "Strike", "Symbol", …).
- Dates:
YYYY-MM-DD(Excel date cells andM/D/YYYYalso work). - Re-importing a grant with the same
grant_idupdates it. Nothing is ever deleted by an import. - Rows with errors are listed and skipped; the rest can still be imported.
Grants (required)
| Column | Required | Example | Notes |
|---|---|---|---|
grant_id | no | RSU-2025-01 | Your broker's grant number. Links Tranches and Orders rows to the grant |
company | yes | Acme Bio | |
ticker | public companies | ACME | Leave empty for a private company |
private | no | yes | yes/no; an empty ticker means private |
award_type | yes | RSU | RSU, RSA, ISO, NSO, SAR, SHARES |
grant_date | yes | 2025-03-01 | |
quantity | yes | 1200 | Shares or options granted |
strike_price | ISO/NSO/SAR | 12.50 | |
vesting_start | no | 2025-03-01 | Defaults to grant_date |
cliff_months | no | 12 | Default 12 for options, 0 for RSUs |
vesting_months | no | 48 | Total length; default 48 |
frequency | no | quarterly | monthly, quarterly, semiannual, annual; default monthly for options, quarterly for RSUs |
expiration_date | no | 2035-03-01 | Options; default grant_date + 10 years |
price_per_share | no | 2.10 | Manual price, e.g. a private company's 409A |
price_as_of | no | 2026-06-30 | Date of that price |
notes | no |
Shares vest with the cumulative-floor rule most brokers use: whole shares per tranche, the remainder in the last one. If your broker rounds differently, list the exact tranches in the Tranches sheet.
Tranches (optional)
Replaces the schedule of the grant it names. Use it for irregular, back-loaded or performance (milestone) vesting.
| Column | Required | Example |
|---|---|---|
grant_id | yes | PSU-2025-01 |
vest_date | yes, unless a milestone | 2026-06-01 |
quantity | yes | 250 |
milestone | no | FDA approval of ACME-101 (leave vest_date empty) |
Windows (optional)
| Column | Required | Example |
|---|---|---|
company | no | Acme Bio (empty = all companies) |
start_date | yes | 2026-11-10 |
end_date | yes | 2026-12-15 |
type | yes | open (trading allowed) or blackout (no trading) |
preclearance | no | yes |
note | no | Q3 window |
Orders (optional)
| Column | Required | Values |
|---|---|---|
grant_id or company | one of them | grant_id is needed for exercises |
kind | yes | sell, buy, exercise_hold, exercise_sell, sell_to_cover |
quantity | yes | |
planned_date | yes | |
order_type | no | market (default), limit, stop, stop_limit |
limit_price, stop_price | no | |
time_in_force | no | day (default), gtc, gtd; good_until for gtd |
status | no | planned (default), placed, filled, partial, cancelled, expired |
filled_quantity, fill_price, fill_date, fees, broker | no | after the order fills |
proceeds | no | sales: total amount of the sale before taxes and fees |
taxes | no | sales: taxes withheld or paid; used for the after-tax estimate |
plan_10b5_1 | no | yes if the order is part of a 10b5-1 plan |
notes | no |
A sale you've already made is an order with status filled: give fill_date (or planned_date), proceeds and taxes. If fill_price is empty, it is worked out from proceeds.
Settings ▸ Export writes this same format, so an export is also a backup you can import on a new phone.