Source: https://wealthfolio.app/docs/concepts/activity-fields/

# Activity Fields

What each activity field means, what to enter, and how it affects your balances, holdings, and returns.

* * *

Last updated September 10, 2026

An activity records a trade, payment, transfer, or other change to your account. This page explains the fields you may see when adding, editing, or importing one. The form only shows fields that apply to the selected [activity type](https://wealthfolio.app/docs/concepts/activity-types/).

## Amount means the final total

**Amount is the final cash paid or received, including fees and taxes.** Use the total that actually changed your cash balance. Wealthfolio does not deduct the fee or tax again.

| Example | Amount | Fee | Tax | Cash change |
| --- | --- | --- | --- | --- |
| Buy 10 shares at $100 with a $5 fee | 1,005 | 5 | 0 | −$1,005 |
| Sell 10 shares at $100 with a $5 fee | 995 | 5 | 0 | +$995 |
| $100 dividend with $15 withheld | 85 | 0 | 15 | +$85 |
| Deposit with $1,000 sent and $5 charged before arrival | 995 | 5 | 0 | +$995 |
| Withdrawal of $100 plus a $2 fee | 102 | 2 | 0 | −$102 |
| Separate $10 account fee | 10 | blank | blank | −$10 |

Enter amounts as positive values. The activity type normally sets the direction: a buy pays cash out, while a dividend brings cash in. A sell can pay cash out when its fees and taxes exceed its proceeds and its trade details confirm that result. Credit-card accounts also interpret interest as a charge rather than income.

Do not add a separate FEE or TAX activity for a charge already included in another activity’s amount. If your statement lists separate cash movements, record each once.

## Basic details

| Field | What to enter | What it changes |
| --- | --- | --- |
| Account (`accountId`; `account` in CSV) | The account where the event happened. | Which account holds the cash and shares. Its currency is also the target for the activity’s FX rate. |
| Activity type (`activityType`) | BUY, SELL, DEPOSIT, or another supported type. | Whether cash comes in or goes out, whether shares change, and how income and contributions are reported. |
| Subtype (`subtype`) | A more specific choice, such as DRIP or Position Open. | Can change how an activity works. DRIP also acquires shares; Position Open/Close identifies how a trade changes a position. |
| Date (`activityDate`; `date` in CSV) | When the trade or payment happened. | When it affects balances and returns, and which historical exchange rates apply. |
| Symbol / asset (`asset`; `symbol` in CSV) | The security involved. Leave blank for plain cash movements. | Which holding gains or loses shares, or receives attributed income. |
| Instrument type (`instrumentType`) | The kind of a new asset, such as EQUITY, CRYPTO, or OPTION. | Helps create the correct asset and apply its pricing rules. |
| ISIN (`isin`) | The security’s identifier, when available. | Helps match a security during import. It does not change cash by itself. |
| Notes (`comment` on entry/CSV; `notes` on saved activities) | A description or reference from your statement. | No direct effect on calculations. |

## Numbers and currencies

| Field | Meaning and when to use it | Impact |
| --- | --- | --- |
| Quantity (`quantity`) | Number of shares, units, or contracts. Use positive quantities for trades; choose the correct type and position intent for short trades. | Changes the number of units held. Also helps calculate a missing trade total. |
| Unit price (`unitPrice`) | Price for one unit, in the **activity currency**. For options, enter the premium per share. | Helps calculate a trade total. It does not replace a saved final amount when balances are calculated. |
| Amount (`amount`) | Final cash total, with the special cases below. | Controls cash movement. For a normal long buy, it sets purchase cost; for a sell, it sets final proceeds. A custom total can change gains as well as cash. |
| Fee (`fee`) | Included commission or other charge, in activity currency. Blank means no fee supplied. | Helps calculate a suggested total and explain costs. It is not deducted again from a saved final amount. A security-transfer fee is a special case below. |
| Tax (`tax`) | Included tax or withholding, in activity currency. Blank means no tax supplied. | Helps calculate a suggested total and explain tax charges and gross income. It is not deducted again. |
| Currency (`currency`) | Currency used for **all** monetary values on this activity, including price, amount, fee, and tax. | Determines how the cash movement is converted and reported. It can differ from the asset’s quote currency. Check the import preview if the file omits it. |
| FX rate (`fxRate`) | Account-currency units for one activity-currency unit. USD 1 = CAD 1.36 means `1.36` for a USD activity in a CAD account. | Can book trade cash in account currency. Other cash entries keep their activity currency; the rate can still affect contribution reporting. See the currency rules below. |
| Contract multiplier | Units represented by the asset’s price, usually 100 for options and 1 for other assets. | Scales quantity × price. The asset owns this value. The option form can set it for a new asset, but does not override an existing asset. Bonds default to 1; percent-of-par pricing needs the correct asset setup. |

### Which cash balance changes?

For a BUY or SELL in another currency, a positive FX rate books the cash in the account currency. Without a supplied rate, the trade changes cash in its activity currency. For example, a USD 100 purchase with a rate of 1.36 in a CAD account pays CAD 136; without that rate, it pays USD 100.

Deposits, withdrawals, cash transfers, income, and standalone charges keep their activity currency. A USD 100 deposit remains USD cash even in a CAD account. The app converts that cash for display using available exchange rates. The rate saved on the deposit can still affect its reported contribution value.

For asset settings, classifications, and logos, see [Assets & Securities](https://wealthfolio.app/docs/guide/assets/).

Changing the currency label does not convert the numbers you entered. Make sure the price, amount, fee, and tax all use the selected currency.

Fees and taxes still matter when the amount is final. For example, an $85 dividend with $15 tax represents $100 of income before withholding. Likewise, contributions can differ from the cash received when a deposit has a fee. Cash balance and new capital are different measures. See [Performance Metrics](https://wealthfolio.app/docs/concepts/performance-metrics/). [Contribution limits](https://wealthfolio.app/docs/guide/contribution-limits/) use the saved final amount for eligible cash contributions, rather than adding charges back.

## Calculated totals, custom totals, and blank cells

For a trade, the suggested total starts with:

**quantity × unit price × asset multiplier**

A buy adds fees and taxes. A sell subtracts them. Check the result against your statement. You can confirm a different final amount if that is what your broker actually booked. After editing quantity, price, or charges, check the final total again before saving.

For CSV imports:

-   A blank trade amount can be calculated from complete trade details.
-   An amount matching the value before charges can be converted to the final total.
-   An amount that does not match is kept and marked **Needs review**.
-   Plain cash and income need an amount. Placeholder quantity and price values cannot replace it.
-   A missing amount that cannot be established leaves the imported row as Draft for review.

**Zero is not blank.** A saved amount of `0` means no cash movement. A blank or missing amount means the total has not been supplied. Wealthfolio does not calculate a replacement for a missing stored amount while displaying balances. Complete and review such rows.

## Special activity types

| Activity | How to use the fields |
| --- | --- |
| SPLIT | `amount` is a ratio, such as `2` for 2-for-1 or `0.5` for 1-for-2. It does not move cash. Total cost stays the same while quantity and cost per share change. |
| Cash TRANSFER\_IN / TRANSFER\_OUT | Amount is the final cash received or paid. Enter included charges separately for detail. A paired internal transfer does not add new money to the whole portfolio. |
| Security TRANSFER\_IN / TRANSFER\_OUT | Quantity moves the shares. Cost details describe the transferred holding, not a cash purchase. The fee can reduce cash; the position value does not. Paired transfers preserve the original lots. |
| DRIP, Dividend in Kind, Staking Reward | Amount is the value reinvested or received as shares/tokens. Supply quantity and price too. Wealthfolio records income and a matching acquisition, normally with no net cash movement in the same currency. See the reinvestment FX note below. A missing amount can be derived from complete quantity, price, and multiplier details. |
| FEE / TAX | Amount is the standalone charge. A missing amount can be filled from the fee/tax field when saving or importing, including legacy rows with zero amount and a separate charge value. The saved amount is then used once. |
| ADJUSTMENT with Option Expiry | Removes the expired option position without a cash payment. It does not need a final cash total. |

For transfers, the **External** flag means the other side is outside your tracked portfolio. It affects contributions and performance. Moving holdings between two Wealthfolio accounts is internal; adding holdings from an untracked account is external.

### Reinvestments and FX rates

For DRIP, Dividend in Kind, and Staking Reward, income and acquisition cancel in the same currency when no FX rate is supplied. If you supply an FX rate and the activity currency differs from the account currency, the current app keeps the income in activity currency but pays the purchase in account currency. Both cash balances change.

For example, a USD 100 DRIP in a CAD account with FX rate 1.36 adds USD 100 and removes CAD 136. If your broker reinvested entirely in USD with no currency conversion, leave the FX rate blank. Check imported reinvestments that include a rate against your statement.

### Option and transfer details

| Field | Meaning and impact |
| --- | --- |
| Call / Put | Which kind of option contract is traded. Part of identifying the correct asset. |
| Strike price | Price at which the option can be exercised. It is not the premium paid for the option. |
| Expiration | Date the option contract expires. Helps identify the contract. |
| Position Open / Close | Whether the trade opens or reduces a position. Required for option trades and used for short-stock trades. |
| Transfer account | The other Wealthfolio account in an internal transfer. The paired entries move cash or holdings between accounts. |
| External | Whether the other side is outside your tracked portfolio. In the API this is stored as `metadata.flow.is_external`. |

## Status and Needs review

| Field or value | Meaning | Included in calculations? |
| --- | --- | --- |
| Posted | A recorded activity. | Yes. |
| Pending | An activity awaiting completion. | No. |
| Draft | An activity being prepared or corrected. | No. |
| Void | An activity kept in history but excluded. | No. |
| Needs review (`needsReview`) | Details need checking. This is separate from status. | A Posted activity still counts, even when flagged. |

After an import or upgrade, open **Activities → Needs review** and check the amount, currency, asset, and type against your records. Clearing the flag does not turn a Draft into a Posted activity. See [Activities](https://wealthfolio.app/docs/guide/activities/) for the workflow.

## Fields managed by imports, sync, and add-ons

Most people do not need to enter these. They appear in saved data or the [Addon API](https://wealthfolio.app/docs/addons/api-reference/), and are not all available as CSV columns.

| Field | Meaning and impact |
| --- | --- |
| `id` | Unique activity identifier. Used to update the correct row. |
| `assetId` | Saved link to the asset selected by symbol or another identifier. |
| `activityTypeOverride` | User-selected type that takes precedence over the original type. It can change calculations. |
| `sourceType` | Original broker label, kept for reference. |
| `settlementDate` | Settlement date supplied by the source. Separate from the activity date used to book the event. |
| `sourceSystem` / `sourceRecordId` | Provider and original record identity. Help match future imports or sync updates. |
| `sourceGroupId` | Links related source events. A shared group alone does not prove that transfers are a matching internal pair. |
| `idempotencyKey` | Helps prevent saving the same event twice. |
| `importRunId` | Identifies the import batch that supplied the activity. |
| `isUserModified` | Marks user changes so sync can protect edited financial details. |
| `metadata` | Extra details, including transfer settings, source information, or preserved migration values. Some entries affect behavior; use the API’s documented structure. |
| `createdAt` / `updatedAt` | Audit timestamps. These are not the transaction date. |

Saved decimal fields can be strings to preserve precision. Entry and API field names can differ, so use the input type for the action rather than copying every saved field back.

* * *
