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.
- 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.
- Search for your employer's ticker and pick the listing your plan actually holds. If several come up, see Choosing the right market symbol.
- Choose Buy as the transaction type and set the date to the vest date.
- Enter the number of shares that actually landed in the account as the Quantity.
- Set Price to the market price on the vest date — the figure your plan statement values the vest at. Not 0.
- Add a tag such as
RSU, or a nested one likeRSU/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.
Check what the vest does to your cash balance
A Buy debits cash for the whole purchase value wherever cash tracking is on, so a vest priced at its market value can show money leaving an account you never paid from. A Transfer doesn't: it moves the shares in and touches cash only for fees and withheld tax. You have three ways out — record the vest as a Transfer carrying the vest-date price as its cost basis, switch on Don't track cash at the bottom of the transaction form for that one entry, or add the matching cash inflow yourself. See Tracking Cash for how tracking is configured per account and per position.
Keeping tranches from one grant together
Each vest opens its own lot. If a grant vests over three or four years, select the vest transactions and use the Lot group button in the bottom panel to file them under a name like RSU/2024 grant. Groups can be nested with /, and each level gets its own aggregated metrics — so you can see how one grant did without unpicking it from the rest of the position. Grouped lots show up under the Lots tab. Lot groups are a Captain-plan feature.
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.
- Create a separate account for employer shares under lock-up — "Employer RSU (locked)" or whatever you will recognise.
- Record each vest into that account as above, at the vest-date price.
- When the lock-up expires, add a
Convert / Movetransaction 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. - 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.
- 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
Sellcloses 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:
- 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.
- On the Program tab, add a Set statement that sets
Expenseto 0, placed before the Apply Tax statement. - If the account also holds ordinary purchases, wrap that Set in an If condition on
Asset,Asset TagsorTransaction Tags— theRSUtag from the vest transactions — so it only fires on the employer shares. - Optionally add Select Tax Group with a name like
Capital Gains/RSUso these sales report separately, and Add Note to record the vest-date value for whoever reads the report next. - 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.
Open Date and Days — the number of days between opening and closing the position — as conditions.Which treatment applies is your call
Capitally computes what your rules say, and the built-in presets are written for ordinary purchases. Whether the vest was taxed as employment income on delivery, whether that value is deductible when you sell, and how a holding period changes the rate are questions for your own tax rules or your accountant. The output is an estimate and an aid, not a filing.
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:
- A
Transferof cash into the account for the cashback amount. - A
Buyfor 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.
Do not record these at zero
Two entries look tempting and both wreck your return rate:
- A
Buyat price 0. The position has no cost, so the money-weighted rate has nothing meaningful to work against. - A
Transferwith cost basis 0. Every gain from day one counts as return, which inflates the performance numbers indefinitely.
Zero is only right if you genuinely want the asset carried at no cost forever. For anything you intend to measure, use the market price on the day of receipt.
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.