Tax Presets

You can manage your Tax Presets by going to Settings → Taxes. Clicking on a preset opens a dedicated editor page where you can configure options, write rules, and preview the tax report — all in one place.

Every preset carries its own documentation — what it covers, which rules it applies, and where it stops. Open a preset in Settings → Taxes to read it next to the rules it describes, or browse all of them in the demo project without signing in: Settings → Taxes in the demo.

Found an issue with a built-in preset, or want a country that isn't covered? Write to support with what you expected and what the report produced.

How Tax Presets work

Tax presets are bound to a single country, currency, and currency date offset. Multiple presets can share the same settings, and they will all be accumulated on a single report.

That currency is the one the tax itself is computed in — EUR for the German preset, PLN for the Polish ones. The Taxes Due Report then converts every figure into whatever currency you are viewing in, using each event's own exchange rate. So before reading or exporting numbers you intend to file, set the viewing currency to the preset's own and a period that covers the whole tax year — a mismatch on either is the usual reason the report looks wrong.

For each transaction on the account that has a tax preset applied, defined tax rules will be evaluated. This includes Buy, Sell, Dividend / Interest / Rent and Others.

Whenever an Apply Tax statement is encountered, the current revenue, expense, and tax are accumulated within a selected Tax Group. You can modify the revenue and expense with the Set statement. The tax is calculated as rate * (revenue - expense).

Revenue and Expense

For Buy transactions, expense is equal to the amount paid to acquire an asset, plus any opening fees.

For Sell transactions, expense is increased by closing fees - so it already includes all expenses paid when opening the transaction. revenue is equal to the amount received for the sale.

For Dividend / Interest / Income transactions, revenue equals the income received, while expense equals the fees.

For Other transactions, revenue equals the value gained, while expense includes any fees.

Tax Groups

Tax Group is optional, but you might want to group taxes from stock sales separately from taxes on dividends. They can also be nested similarly to Tags, by using the / symbol - eg. Dividends/US. The great thing is that tax groups are global, so different tax presets can use the same tax group as long as the country, currency, and offset match.

Use separate presets for different types of accounts

It is recommended to create a few separate Tax Presets if the tax situation varies across accounts. For example, you can have a single preset for all your investment accounts and separate presets for various tax-sheltered accounts. However, if the calculation logic is very similar, you can use just a single preset and check for tags to apply different logic.

Employee share plans are a worked example of that tag check: a cloned preset with an If condition on the RSU transaction tag can treat vested shares differently from ordinary purchases sitting in the same account — see Tracking RSUs and employee share plans.

Built-in presets

Capitally ships tax presets for a number of countries. Every one of them can be cloned and edited, and any country that is not covered can be modelled from scratch with the same statements. Settings → Taxes holds the authoritative list — the set grows over time. These are the ones asked about most often:

Country

Preset

Currency

Notes

Poland

Konto Inwestycyjne (PIT-38, D+1) and (PIT-38, D-1)

PLN.CB (NBP)

Two exchange-rate-date variants; output grouped for PIT-38 and PIT/ZG

Poland

Konto Emerytalne (IKE, IKZE, PPK, OIPE)

PLN.CB

Assumes no tax across the whole investment period

Poland

Wynajem (ryczałt PIT-28)

PLN.CB

8.5% on Rental transactions; costs are ignored

Germany

Capital Gains Tax (Abgeltungsteuer)

EUR.CB (ECB)

26.375% on realised gains; FIFO per depot, as EStG § 20 Abs. 4 Satz 7 requires for securities

United Kingdom

Investment Account

GBP

Average Cost Basis with the Section 104 variant — same-day, then 30-day, then pool matching

United States

Investment Account, 401k or IRA (before tax), Roth 401(k) or Roth IRA (after tax)

USD

Taxable and tax-sheltered accounts kept as separate presets

Italy

Administered Investment Account, Declaration/Foreign Investment Account

EUR.CB

Regime amministrato and regime dichiarativo

Netherlands

Investments and other assets (box 3 income)

EUR.CB

Wealth tax generated with Schedule Capital Tax

Spain

Savings Income

EUR

Australia, Belgium, Canada, Croatia, Czechia, France, Luxembourg and Sweden are covered as well. Each of these presets documents its own scope and limitations — read the preset's own note before filing on its numbers, either in Settings → Taxes or in the demo project, which needs no account. Missing a country, or spotted something wrong? Tell support.

Poland has a walkthrough of its own. Polish tax reporting covers assigning the PIT-38 preset to accounts, the PLN.CB NBP rate, choosing between the D+1 and D-1 variants, and grouping realized gains by country for PIT/ZG.

Several presets carry a 🚧 note flagging that they are early and may contain inaccuracies. That note is written into the preset itself and is displayed at the top of the Taxes Due Report, so you always see it next to the numbers it applies to.

What a preset can be configured to do

Nothing in a built-in preset is fixed. Clone it and you can change:

  • the rate per transaction type — capital gains and dividends taxed separately, at different rates
  • which accounts it applies to, so accounts in different jurisdictions follow different rules
  • the cost basis method: FIFO, LIFO, HICO, LOCO, Manual or Average Cost Basis
  • which country property classifies a transaction — asset domicile, account country or market country
  • the fiscal year start
  • the rate itself, which accepts a formula rather than a flat percentage
  • whether an exercised option's premium joins the cost basis of the shares it opens, on the Options tab — see Forward Cost to Opened Position

Known limitations in the built-in presets

The German preset does not apply Teilfreistellung. Abgeltungsteuer of 26.375% is computed on the full gain or distribution: the ETF partial exemption (30% for equity funds, 15% mixed, 60–80% for real-estate funds), the Vorabpauschale and the Sparer-Pauschbetrag are not applied automatically. This affects Capitally's estimate only — your German broker applies the exemption for you, or you apply it on Anlage KAP, so the tax you actually report is unaffected.

Average Cost Basis (ACB) Settings

When using Average Cost Basis for tax calculations, you can configure how cost averaging works at the preset level.

ACB Asset Types

Select which asset types should use average cost pooling instead of individual lot tracking.

Assets not in this list will continue to use lot-based tracking (FIFO, LIFO, etc.).

ACB Pooling

Choose how positions are pooled for averaging:

  • Asset: All holdings of an asset across all your accounts share one average cost. This is the Canadian approach where your ACB for Apple stock is the same whether held in your TFSA or taxable account.
  • Asset + Account: Each account maintains its own average cost per asset. This is the UK approach, where the same stock can have different cost bases in different accounts.

ACB Variant

Special calculation rules for specific jurisdictions:

  • Standard: Normal weighted average cost calculation. When you buy more shares, the new cost is averaged with your existing holdings.
  • UK: Section 104 holding rules with same-day and 30-day matching. Sales are first matched against same-day purchases, then purchases within 30 days, then the Section 104 pool.

Editing the preset's rules

Presets are built using statements. Learn more about the basic set of statements and ways to edit them in the Programmable Presets article.

Live tax report preview

While editing your rules, you can open a live tax report preview right next to the editor. Switch between accounts and tax years to test how your rules behave with real data — before saving anything into your project.

Your changes are stored as a draft until you save, so you can experiment freely. If something doesn't look right, revert to the last saved version and try again.

Notes and comments

Calculations will only be helpful if you understand the numbers. There are a couple of ways that you can inform your future self:

  • Preset Note - Every preset can have a richly formatted note that will be displayed in the Taxes Due Report. It's the best place to set the context for the numbers.
  • Add Note statement - You can add multiple notes to tax events. They will be displayed in the Notes column of the Taxes Due report for each transaction with tax applied.
  • Comment statement - You can add richly formatted comments within the rules to better describe the logic.