# How to track dividend income across several brokers

One tracker as the ledger, each broker's dividend cash as the input. What breaks is one payment counted twice, and tax, DRIP and FX as separate rows.

*https://stockmarketstack.com/how-to/track-dividends-across-brokers · next to Stock Portfolio Trackers*

**Answer:** Pick one tracker as the ledger and feed it each broker's record of the cash that actually arrived, not a calendar's estimate. Sharesight and Portfolio Performance store gross, tax and exchange rate per payment; Snowball Analytics and Portseido are lighter and dividend-first. What breaks is one payment arriving twice — generated from holdings and imported from the broker — and withholding, reinvested fractions and currency conversion landing as separate rows that no two brokers format alike.

## The tools that do this

*In the order this page recommends trying them. Paid placement does not affect this order.*

1. [Sharesight](https://stockmarketstack.com/tools/sharesight.md) — Generates dividends from your holdings as unconfirmed rows to check against each statement. Automatic DRP with five rounding modes, fractional included.
2. [Portfolio Performance](https://stockmarketstack.com/tools/portfolio-performance.md) — Free desktop ledger. Each dividend stores gross, tax, fees, exchange rate and an optional ex-date, read from the PDF statements of 90-plus banks.
3. [Snowball Analytics](https://stockmarketstack.com/tools/snowball-analytics.md) — Dividend-first, 70+ exchanges. Broker linking is paid and usually reaches 90–200 days back, so older payments come from statement imports.
4. [Portseido](https://stockmarketstack.com/tools/portseido.md) — Detects dividends from imported trades across currencies. Withholding is one portfolio-level setting, not a per-payment record.
5. [DivvyDiary](https://stockmarketstack.com/tools/divvy-diary.md) — For German brokers — imports from Trade Republic, Scalable, Consorsbank, Parqet or Portfolio Performance. Net-dividend maths is on the paid plan.

## The short way

Choose one place to be the ledger, and decide what goes into it before importing anything: the
cash each broker says it paid you, or the dividends a tracker infers from what you held. Those are
two different records of the same events, and most of the trouble with dividend tracking comes from
running both at once.

The broker's record is the one to trust. Every broker's statement has a dividend line per payment,
and most have the tax deducted from it somewhere nearby; that pair is what landed in the account.
A tracker's generated dividend is a calculation — shares held, times the declared amount per share,
converted at the tracker's own exchange rate — and it is right exactly as often as the tracker knows
your share count, your tax treatment and the rate your broker dealt at.

In practice that means:

1. **Load the trades first**, from each broker, so the tracker knows what you held and when. Getting
   the fills out is its own job, covered in
   [exporting broker trade history](https://stockmarketstack.com/how-to/export-broker-trade-history).
2. **Then reconcile income, one broker at a time.** If the tracker generates dividends from
   holdings, check each against the statement and correct the net and the tax. If you import the
   broker's dividend rows instead, switch generation off for that portfolio first.
3. **Keep one currency decision.** Record each payment at the rate the broker actually converted
   at, or in the currency it was paid in if the broker did not convert — not at a reference rate
   picked later.

[Sharesight](https://stockmarketstack.com/tools/sharesight) is built around step 2: it generates dividends for the holdings you
imported, marks them unconfirmed, and expects you to confirm or adjust each against your statement.
[Portfolio Performance](https://stockmarketstack.com/tools/portfolio-performance) is the free version of the same discipline
with more typing — it reads broker PDF statements and records every dividend with its gross, tax,
fees and exchange rate in one transaction.

## What the options are

**A tracker that generates and you confirm.** [Sharesight](https://stockmarketstack.com/tools/sharesight) creates dividends
and corporate actions from the quantity and holding period of what you imported, and calls them
unconfirmed transactions until you have checked them; its own help page warns that some of the
data, currency rates among it, may not match your records. It connects directly to Interactive
Brokers, and to a set of mostly North American brokers through SnapTrade, and parses trade
confirmation emails from over 200 more. For three countries it turns the result into a
tax report, which is the reason to pay for it rather than anything on this page.

**A ledger that stores what the statement says.** [Portfolio Performance](https://stockmarketstack.com/tools/portfolio-performance)
generates nothing. A dividend is a transaction you import or type: date, optional ex-date, shares,
amount per share, gross value, exchange rate when the security and the account differ in currency,
fees and taxes, with the net computed as gross minus the last two. Its PDF importers read statements
from more than 90 banks and brokers by the manual's count, with an Interactive Brokers Flex Query
importer beside them; everything else is CSV. It is free, local, and as right as the documents you feed it.

**A dividend-first tracker.** [Snowball Analytics](https://stockmarketstack.com/tools/snowball-analytics) is organised around
the payout calendar and forward income rather than the ledger, across 70-plus exchanges.
Brokerage linking needs the paid plan, and the card records that connections usually surface only
90 to 200 days of transactions — enough for next quarter's calendar, not for last year's income.
[Portseido](https://stockmarketstack.com/tools/portseido) detects dividends from imported trades inside a general tracker, per
holding and per currency, with withholding tax as a portfolio-level setting.

**A German-market specialist.** [DivvyDiary](https://stockmarketstack.com/tools/divvy-diary) imports automatically from Trade
Republic, Scalable, Consorsbank, Parqet and Portfolio Performance, and applies a flat personal tax
rate and allowance rather than any country's actual rules; the net-dividend view is on the paid
plan. Its import from Portfolio Performance is the useful part for anyone else: keep the ledger in
one tool and use the other for the calendar.

## Where this breaks

**The same payment, twice.** A tracker that generates dividends from holdings and an import that
also carries the broker's dividend rows will both record the payment, and nothing flags it — the
income figure is simply double. It happens most often after switching a portfolio from one method
to the other, or after adding a broker connection to a portfolio that already has imported history.
Sharesight's answer is the unconfirmed state: a generated dividend can be rejected for a payment you
recorded yourself. The cheap test is one holding, one year, counted by hand against the statement.

**Withholding is a separate row, on its own date.** The tax is often reported apart from the
dividend. Interactive Brokers' activity statement has a Withholding Tax section of its own — date,
description, amount, totalled per currency — apart from the dividends, so an importer that reads one
section and not the other books the gross as if it were cash, or the tax as if it were a fee. What the gross, net
and reclaimable figures each mean is in [withholding](https://stockmarketstack.com/glossary/dividend-withholding); the
mechanical point here is that a tracker's withholding *setting* is a forecast, and the statement's
withholding *row* is the record, and only the second belongs in last year's income.

**Accruals are not income yet.** The same IBKR statement carries a dividend accruals section with
both an Ex Date and a Pay Date column, where an accrual is posted and later reversed — one of the
documented reasons for a reversal is payout in cash. An importer that treats a posted accrual as a
dividend counts it once on the accrual and again on the payment.

**Ex-date and pay date answer different questions.** Who is entitled is settled by the ex-date: buy
on it or after and the seller gets the dividend, per the SEC's own explanation. When the cash
arrives is the pay date, which can be weeks later. So a position sold after the ex-date still
receives a payment after it has left the portfolio, and a tracker that generates dividends from
what you hold on the pay date will miss it. A tracker that books income on the ex-date shows cash
that has not arrived, and near a year end can put it in a different year from the one the cash arrived in. For a special dividend of a
quarter of the share price or more, the ex-date moves to after the payment, which breaks any rule
that assumed the usual order.

**Reinvested dividends leave fractions.** A DRIP turns one cash event into two — the dividend and a
purchase — and the purchase is often of a fractional share, or of whole shares with a residual
carried to the next payment. Sharesight offers five rounding rules for its automatic reinvestment,
from round down, through round down and track the balance, to no rounding at all for fractional
plans; pick the wrong one and the share count drifts by a fraction each quarter, and every dividend
generated from that count afterwards is off by the same drift. The reinvestment is also a purchase
at its own price, so it changes the cost of the holding — which matters when the shares are sold,
not now.

**FX is a rate someone chose.** A dollar dividend credited to a euro account was converted at
whatever rate the broker dealt at, with any conversion margin inside it; a tracker that converts at
a reference rate for that day will disagree with it by a small amount on every payment. An account
that holds several currencies may not convert at all, and then the dollars sit in a dollar balance
until you move them. Portfolio
Performance puts the exchange rate on the dividend transaction itself, which is where it belongs;
record the rate the statement shows, and let the tracker's reference rate value the holding rather
than rewrite the income.

## If you outgrow this

**When the number goes on a tax return**, a tracker's dividend total is a starting point, and the
broker's year-end tax documents are the record the authority will compare you against. Among
the trackers on this page, only [Sharesight](https://stockmarketstack.com/tools/sharesight) produces reports shaped for filing,
and only for Australia, New Zealand and Canada. Reclaims are covered under
[withholding](https://stockmarketstack.com/glossary/dividend-withholding), not here.

**When income is the question rather than the ledger**, the forward calendar and projected annual
figure are what [Snowball Analytics](https://stockmarketstack.com/tools/snowball-analytics),
[Stock Events](https://stockmarketstack.com/tools/stock-events) and DivvyDiary are for. Keep the ledger elsewhere and let one
of these read it.

**When you want it in a program**, the dividend rows are available over an aggregation API rather
than a file: [SnapTrade](https://stockmarketstack.com/tools/snaptrade) returns account activities including dividends, and the
rest are in [brokerage account aggregation](https://stockmarketstack.com/categories/brokerage-aggregation). The same double-count
and withholding problems move into your code with them.

**When the return, not the income, is what you want to know**, dividends have to be modelled as
cash flows rather than totalled, which is what [time-weighted return](https://stockmarketstack.com/glossary/time-weighted-return)
is for.

The rest of the category is [portfolio trackers](https://stockmarketstack.com/categories/portfolio-trackers).

## FAQ

### Why does my tracker show more dividend income than my broker?

Usually because the same payment is in it twice — once generated from your holdings and once imported from the broker — or because it is showing the gross amount where the broker shows net of withholding. Check one holding for one year against the statement; the difference will be one of those two, or a currency conversion at a different rate.

### Should dividend income be dated by the ex-date or the pay date?

For cash in hand, the pay date — that is when the money arrived. The ex-date decides who is entitled, so it explains why a position you have already sold still pays you, but income booked on it shows cash that has not yet arrived. Which date a tax authority uses is a question for that authority.

### Can I just set a withholding percentage and skip the tax rows?

For a forecast, yes; that is what the setting is for. For last year's income, no. The rate actually deducted depends on the issuer's country, your residence and the paperwork your broker holds, and it can differ between two holdings that the setting treats the same. The statement's tax row is the record.

## Sources

1. [Automatically generated dividends and adjustments — Sharesight Help](https://help.sharesight.com/au/automatically-generated-dividends-and-adjustments/) — Sharesight, 2026-06-29
2. [Adjust a dividend — Sharesight Help](https://help.sharesight.com/edit_payout/) — Sharesight, 2026-06-29
3. [Dividend reinvestments — Sharesight Help](https://help.sharesight.com/drp/) — Sharesight, 2026-07-23
4. [Dividend — Portfolio Performance Manual](https://help.portfolio-performance.info/en/reference/transaction/dividend/) — Portfolio Performance, 2026-03-21
5. [Ex-Dividend Dates: When Are You Entitled to Stock and Cash Dividends](https://www.investor.gov/introduction-investing/investing-basics/glossary/ex-dividend-dates-when-are-you-entitled-stock-and) — U.S. Securities and Exchange Commission (Investor.gov), read 2026-09-27
6. [Withholding Tax — Default Activity Statement](https://www.ibkrguides.com/reportingreference/reportguide/witholdingtax_default.htm) — Interactive Brokers, read 2026-09-27
7. [Change in Dividend Accruals — Default Activity Statement](https://www.ibkrguides.com/reportingreference/reportguide/changeindividendaccruals_default.htm) — Interactive Brokers, read 2026-09-27

*Last updated 2026-09-27. A reference page, corrected in place — not a dated post.*
