Use this article when a value disagrees with your broker: your portfolio total, a single position's value, or the cash balance in an account. If a return or a percentage is what disagrees, see Returns and charts look wrong - and the Portfolio metrics reference defines what each column actually contains. A value that is wrong because the price behind it is wrong belongs in Prices, symbols and market data, and a portfolio that went wrong the moment you imported belongs in Import problems.
Why doesn't my portfolio value match my broker?
Small differences of a few dollars or euros between Capitally and your broker are expected, not a bug. Three things produce them: exchange-rate timing, because Capitally uses end-of-day rates where your broker may use real-time ones; a different price source or exchange; and rounding, which the two platforms apply at different points in the calculation.
- Exchange rate timing: Capitally uses end-of-day rates, while your broker might use real-time or different closing rates
- Price source differences: Your broker might use a different exchange or pricing source. When the price itself is wrong rather than merely different, see Prices, symbols and market data
- Rounding: brokers typically round at every transaction, while Capitally carries high precision through the whole calculation chain and works to keep rounding errors from compounding. The two arrive at slightly different totals by design, not by error
Because Capitally's own arithmetic is internally consistent, it cannot detect or flag a rounding difference against your broker - from its side nothing is wrong. Calculations run to 9 decimal places with constant rounding to keep the error down (see How returns are calculated), and quantities carry up to 6 decimal places for fractional shares and crypto. Narrow screens may display fewer decimals than that; displayed rounding is a profile setting.
What should match exactly?
The number of shares for each position should always match your broker. If share counts match but values differ slightly, your data is correct.
Why is my cash balance off by a few cents?
Accumulated rounding is the cause. Brokers perform many small currency conversions and round each one, and those fractions of a cent add up - sometimes far enough to push the balance slightly negative in Capitally. It is normal and does not affect your investment returns. Reconcile it with an Account Balance transaction.
- Add an Account Balance transaction for your cash position
- Enter the exact balance from your broker statement
- The small difference will be recorded as a reconciliation
My cash shows negative but I have money in my account
The size of the gap tells you which problem it is. A small negative balance - under $10 - is usually just accumulated rounding, and an Account Balance transaction carrying your actual balance clears it. A large one almost always means transactions are missing: deposit and withdrawal history, currency conversions, or dividend payments that never made it in.
For a large negative balance, check the transactions list for each of these:
- Whether you imported all of your deposit and withdrawal history
- Whether currency conversions were imported
- Whether dividend payments are recorded - if they are not showing up at all, see Dividends missing or wrong
If the history is long, Which transaction broke my balance? narrows it down to a single row.
"Negative balance detected on X"
This error means a transaction in your history sold or transferred more quantity than the position held at that date. The usual causes are an incomplete import, missing transfers from another account, or rows the importer skipped because their transaction type is not supported. It appears under the warning about positions that could not be evaluated.
The umbrella warning it sits under is covered in Troubleshooting the app; skipped rows are covered in rows with a transaction type that is not supported.
Here's how you can resolve it:
- Verify transactions: Click
Verify transactionsin the error - it sets the Portfolio up to assist you. You will see the transaction causing the negative balance on top, and you can scroll down to check that all the preceding transactions and the balance are correct. - Check the account: Verify if the transaction's account is correct, you can click ↗ on top to show positions on all accounts of that asset - if you have multiple accounts for the same asset you will see them there.
- Check for missing splits: If there was a split/merge event that we don't have (or the other way round), try changing the source market symbol by editing the asset and selecting another one in the
Source prices using this market symbol. If it doesn't help - please let us know. Splits, ticker changes and other corporate actions are covered in Prices, symbols and market data. - Add an account balance: If you can't find the culprit and you don't need full accuracy, you can always fix this by adding an account balance to your history.
Which transaction broke my balance?
Open the Transactions tab, sort by date, and read the running Balance column for the currency in question. The transaction where the balance stops matching your expectation is the one at fault. Add the Account column alongside it if you hold the same currency in several accounts.
Two repair routes once you have found it: click Verify transactions on a negative-balance error, which sets the Portfolio up to show you the run-up, or use Undo in the top-right menu to reverse a recent change.
If a transaction amount itself looks wrong - 841 where you expect 1925.75 - check whether you are inside a filtered or grouped view. When you have navigated into a specific region, category or sub-portfolio, transaction values are proportionally allocated to the current filter, so the number shown is a slice of the transaction, not the transaction. Clear the filter, or open the asset directly, to see the full amount. Regions describes the same mechanism applied to returns.
If the balance only went wrong at the moment you imported, Import problems lists the five causes worth ruling out first.
If you cannot find it, send us the original broker report that rebuilds the account from the start, the balance you expect, and the date where the divergence begins. See Getting help.
Extra cash appeared after an option expired
The option's close was probably recorded twice - once by Capitally's automatic expiry or exercise transaction, and once by the expiry or assignment row in your broker import. That is the usual explanation when your cash is higher than your broker's and the gap appeared around an option's expiry date.
- Open the transaction list for the underlying and the account.
- Filter by status
Unconfirmedto isolate transactions Capitally generated for you. - Look for an exercise or expiry transaction on or around the contract's expiry date that duplicates one from your broker file.
- Delete the auto-generated one and keep the broker's - that is the record your statement and tax report reconcile to.
The same check applies whenever an option position closes on both sides. Tracking Options covers how the automatic transactions are produced.
My UK stocks look 100 times too high or too low (GBX vs GBP)
Data providers usually quote UK-listed stocks in GBX (pence), and Capitally reflects that. Nothing is lost either way: 1 GBP = 100 GBX, the same currency at a different scale. You can set your viewing currency to GBP, enter transactions in GBP, and change the asset's own currency to GBP if you prefer.
If an import produced values 100x too high or too low, prices arrived in GBP while the asset is priced in GBX, or the reverse:
- You do not necessarily need to change anything. As long as each transaction's stated currency matches its values - transaction currency GBP with genuinely GBP values - the calculations are correct even when the asset itself is denominated in GBX.
- Transaction currency cannot currently be changed in bulk.
- If the data really is wrong, fix the source CSV so values and currency agree, delete the affected position, and import again. Do not import over the top: importing the same data twice after edits can create duplicates or skip rows.
When it is the price or the dividend that arrives in the wrong unit rather than the transaction, the fix is on the pricing side - see Prices, symbols and market data and Dividends missing or wrong.
A bond or deposit differs slightly from its official valuation
A bond or deposit valued from its own interest schedule differs from the official figure only by small amounts, well inside normal rounding tolerance. Two causes. Interpolation: full valuations are computed only on monthly boundaries for performance reasons, and values on dates in between are linearly interpolated, which the specific rules for interest periods turn into small discrepancies. Rounding: valuations are rounded consistently, and rounding applies to intermediate valuations as well as to payment amounts.
To check your own figures, compare the value on the nearest payment or accrual date. There the value is computed precisely according to the applicable day-count convention and should match the official one. Differences on other dates are a side effect of interpolation and do not affect overall returns or payment tracking. See Advanced options for day-count conventions.
A bond priced from a market quote is off by more than rounding
A bond with Market prices switched on is worth the quote plus accrued interest, so a gap wider than rounding is almost always a quote convention that does not match the source. Two toggles set the arithmetic: Price is reported as a % of face value scales the quote by face value ÷ 100, and Price is reported with accrual says the quote already carries the accrual, so it is subtracted back out rather than added on. The alert under them states the equation in force - read that against what your source publishes before anything else.
Accrue from coupon date decides where the accrual starts, and getting it wrong moves the value by up to one coupon: on, interest accrues from the issue schedule's last coupon date; off, it starts at the purchase date with a pro-rated first coupon. Matching your source's quote convention works through the combinations.