LUSID has a tax calculation engine that can be triggered to automatically calculate and store amounts of tax due for transactions that match a set of tax rules. You can then use transaction types to determine what happens to these tax amounts: simply record them, subtract them from main cash balances in a portfolio, report them as separate cash balances, or something else.
For example, suppose you have a GB-domiciled portfolio holding UK and US equities. You can create a tax rule set for dividend tax that applies to transactions representing cash dividends, with tax rules distinguishing between different UK and US dividend tax rates. You can create a transaction type that adds gross dividend amounts to core cash balances in different currencies, and simultaneously records the amounts of tax due as separate cash balances. Work through this scenario.
Note the following:
You should create one tax rule set for each kind of tax, for example dividend tax. A tax rule set has an effective (or start) date with tax rates that apply until it is superseded by a tax rule set with the same scope and code, a subsequent date, and different tax rates.
A tax rule set can have any number of tax rules to distinguish between different tax rates, for example 25% for UK dividend tax and 10% for US dividend tax. Tax rules are processed in order and, for each applicable transaction, the first matching rule applies.
A tax rule can have any number of match criteria, each of which compares a value against either a sub-holding key or a property in the
Instrument
,Portfolio
orInstrumentEvent
domains. Every match criterion must be met for a tax rule to apply.A tax rule set must have an output property that stores the calculated amount of tax due for each matching transaction. This property must be from the
Transaction
domain, for exampleTransaction/DividendTax/AmountDue
.
You can interact with tax rule sets programmatically:
Using the APIs in the Tax Rule Sets collection.
Using equivalent methods in the LUSID SDKs in various languages.
Note tax rule sets are not yet available in the LUSID web app nor in Luminesce.
Tutorials: Get started by doing something tangible
How-to guides: Get something done