Tax Return
Prerequisites
You will need to log in to the API Gateway by retrieving an access token from the identity service. The moneyhub-api-client
can be used to retrieve this, make sure the API client is configured correctly to do this. If you choose to not use the moneyhub-api-client
, make sure you use the following scopes to go through this guide:
tax:read
transactions:read:all
transactions:write:all
Copy the access token returned and login to the API Gateway docs by putting Bearer ${accessToken}
into the login modal.
Having an API client with users with attached transactions will be beneficial.
Transactions
Our financial data can now store enhancedCategories
on transactions, in this use case this will allow us to store what kind of transaction, for tax return purposes, it is. enhancedCategories
is a dictionary object type with restricted keys. The uk-tax-hmrc
key will be used to categorise the transactions; the values allowed are restricted to the following regex: ^(income|expenditure)\.([a-zA-Z-]+)$
If you want to categorise a transaction as being one that is income that has come in from rent, then you would use the following body on the REST call PATCH /transactions/${transactionId}
{
"enhancedCategories": {
"uk-tax-hmrc": "income.rent"
}
}
Similarly for an expenditure for maintenance, the following body can be used:
{
"enhancedCategories": {
"uk-tax-hmrc": "expenditure.maintenance"
}
}
Automated Tax Categories
As well as being able to manually enrich a transaction with a tax category, you can let us do it for you on a transaction that doesn't have a tax category mapped on it. This can be achieved by adding a project ID to the transaction, i.e. calling PATCH /transactions/${transactionId}
with the following body:
{
"projectId": "00000000-0000-0000-0000-000000000000"
}
Tax Return
After some transactions have been patched to include these enhanced categories, we can now query the tax return end point. This end point has the following query parameters:
startDate
- the starting date to look for transactions (required)endDate
- the ending date to look for transactions (required)accountId
- a specific account ID to filter transactionsprojectId
- a specific project ID to filter transactions
So to get the tax return for the tax year for 2019, you would make the following request: GET /tax?startDate=2019-04-06&endDate=2020-04-05
This will return a tax return object similar to the one below:
{
"dateFrom": "2018-04-06",
"dateTo": "2019-04-05",
"taxReturn": {
"sa105": {
"income": {
"total": {
"value": 1500000,
"currency": "GBP"
},
"details": [
{
"amount": {
"value": 1500000,
"currency": "GBP"
},
"category": "income.rent"
}
]
},
"expenditure": {
"total": {
"value": 300000,
"currency": "GBP"
},
"details": [
{
"amount": {
"value": 200000,
"currency": "GBP"
},
"category": "expenditure.professional"
},
{
"amount": {
"value": 100000,
"currency": "GBP"
},
"category": "expenditure.maintenance"
}
]
},
"taxableIncome": {
"total": {
"value": 1200000,
"currency": "GBP"
}
}
}
}
}
The monetary values are an object with keys value
and currency
. The value
key is in pence.
Updated about 1 year ago