☀️☀️☀️ 20% off with SUMMER26 ☀️☀️☀️

Tracking RSUs and employee share plans

An RSU vest is three separate jobs: get the shares in at the right value, keep shares you cannot sell yet out of your sellable holdings, and make sure the eventual sale is taxed on the right cost basis. This guide covers all three, plus the neighbouring case of shares that simply arrive — gifts, broker promo stock, cashback-funded buys.

There is no grant object and no vesting schedule to fill in. You record each vest as it lands, which means the numbers are only as good as the price you enter on the day.

Recording each vest

Record one transaction per vest, dated to the vest date, priced at that day's market price — never at 0. The grant itself changes nothing in your portfolio; only delivered shares do. Entering the vest-date price gives every later gain or loss a sensible starting point and keeps the return rate from exploding.

  1. Open the account the shares landed in — or the dedicated lock-up account described in the next section — and click Add asset here. From anywhere else in the app, + Add in the main menu does the same job with a wider search.
  2. Search for your employer's ticker and pick the listing your plan actually holds. If several come up, see Choosing the right market symbol.
  3. Choose Buy as the transaction type and set the date to the vest date.
  4. Enter the number of shares that actually landed in the account as the Quantity.
  5. Set Price to the market price on the vest date — the figure your plan statement values the vest at. Not 0.
  6. Add a tag such as RSU, or a nested one like RSU/2024 grant. A tag on a transaction applies only to the units in that transaction, which is what makes a mixed account workable later — both for filtering and for tax rules.

If your plan administrator gives you a CSV, map the vest rows the same way: Type as Buy, Quantity as the shares delivered, Price as the vest-date price. The Transaction Properties Reference lists every column you can map.

Vests you expect but have not received

Transactions can be dated in the future, so you can enter the tranches still to vest and see what they will add. Record each expected vest as a Buy on its scheduled vest date, with the shares you expect and your best estimate of the price — the grant price, the current market price, or whatever your plan statement projects.

Future-dated transactions leave your present figures alone: they are not counted on Max, YTD, 1Y or any other period that ends today. To see them, switch the period to Hold, or type a forward range such as 2025 2030 in the period selector — the chart then runs out to the last date your data covers. Mark each one unconfirmed, so it stands out in the transaction list as something to revisit and correct to what really arrived on the day.

A forecast Buy debits forecast cash the same way a real one does, so the cash caveat above applies here too — use Don't track cash on the entry if you do not want the projection to show money leaving an account you never paid from.

Handling a lock-up or holding period

Keep shares you cannot sell yet in their own account, then move them across with a Convert / Move transaction dated to the day they became sellable. That keeps locked stock out of your tradeable position, and it makes FIFO close the right lots when you do sell.

  1. Create a separate account for employer shares under lock-up — "Employer RSU (locked)" or whatever you will recognise.
  2. Record each vest into that account as above, at the vest-date price.
  3. When the lock-up expires, add a Convert / Move transaction on the locked position, dated to the day the shares became available for sale. Set Target Account to your main account and leave Target Asset empty — with no target asset it is a move, not a conversion.
  4. Leave the Price field empty. That forwards the vest-date cost basis to the new position and realizes no gain or loss. Enter a price and Capitally computes a return from the difference against market value, which is never what a custody move should do.
  5. Keep the date honest. The move opens a lot on the availability date, and transactions are combined into position units in First-In-First-Out order — so a later Sell closes the shares you could actually have sold.

The simpler alternative

If a second account feels like overhead, change the account and the date on the original vest transaction to the day the shares became sellable. Tax calculations come out correct. The trade-off is your history chart: the position now opens later than it really did, so the earlier part of the holding disappears from it.

Getting the tax treatment right

Capitally taxes the disposal, not the vest. Transfer and Account Balance transactions are never taxable, a Convert / Move entered without a price realizes nothing, and a Buy records cost basis. When you sell, the preset computes Tax = Rate × (Revenue − Expense), where Expense is the cost basis you entered plus opening fees.

That default is what you want when the vest was already taxed as income at fair value: the vest-date price you entered is the basis, and the sale is taxed on the gain since vest.

It is wrong when your rules defer everything to the sale and treat shares you paid nothing for as having cost nothing. In that case the preset has to be told so:

  1. Go to Settings → Taxes and open the preset your account uses. Built-in presets are never edited in place — the save button reads Clone and Save and your version is stored separately, so name the copy something you will recognise, like "Capital Gains for RSUs". To make the copy up front instead, use Duplicate in the preset's menu.
  2. On the Program tab, add a Set statement that sets Expense to 0, placed before the Apply Tax statement.
  3. If the account also holds ordinary purchases, wrap that Set in an If condition on Asset, Asset Tags or Transaction Tags — the RSU tag from the vest transactions — so it only fires on the employer shares.
  4. Optionally add Select Tax Group with a name like Capital Gains/RSU so these sales report separately, and Add Note to record the vest-date value for whoever reads the report next.
  5. Use the tax report preview beside the editor: pick the account under Accounts and the year of the sale under Tax Year. Changes stay a draft until you save — Revert changes throws them away — so you can check the number before it touches your project.

See Tax Presets for how presets attach to accounts, and the Tax Preset Reference for every property and statement available.

Which return numbers to trust

Money-weighted return reacts to what you paid, so a position recorded at zero cost sends it somewhere absurd — rates in the tens of thousands of percent. Time-weighted return is built from end-of-day prices and your asset mix rather than your cost, so a free or discounted acquisition does not flatter it.

Two things worth knowing:

  • A distorted rate stays local. Each asset's return is calculated independently, so a 24,550% line on one holding does not spill over into the others.
  • For a discounted purchase plan, enter the price you actually paid. Money-weighted return and ROI will then show the discount as the real return it was — ROI is outflows / inflows − 1, so a low purchase price lifts it the same way. Read TWR alongside them for how the shares themselves performed.

Calculating returns explains how each method is computed; TWR vs MWR covers which one to read for which question.

Shares that arrive without a purchase

Use a Transfer with a positive quantity and a cost basis equal to the market price on the day the shares arrived. Leave the cost basis empty and Capitally fills it with that day's closing price, which comes to the same thing. This covers gifted shares, outright employer awards, broker promo stock, and cashback-funded buys.

What happens: the asset lands in the account and no cash leaves it. A broker's promotional share, a gift, an outright employer award, and a Saveback-style feature that invests a percentage of your card spending into an ETF all behave identically in the ledger — an asset in, no purchase.

How to record:

  • Transaction type Transfer, Quantity positive
  • Date set to the day the shares arrived
  • Cost basis (the Price field) set to the market price that day, or left empty so Capitally uses the closing price

This represents receiving the asset rather than buying it, sets a cost basis that return and tax calculations can use, and starts performance tracking from the day of receipt.

If you want the reward itself in the ledger

For cashback and similar rewards you can record the income explicitly instead, in two steps:

  1. A Transfer of cash into the account for the cashback amount.
  2. A Buy for the units at the market price.

That gives a full income audit trail, at the cost of two entries per event — which adds up quickly if the feature fires on every card transaction.

Shares that arrive through a corporate action — a spinoff, a stock-for-stock merger, a stock dividend — are a different case with their own entries. See Recording Corporate Events.

What Capitally does not do