Fixed assets
15 operations in the Tolvi API, version 1. Paths are relative to https://api.tolvi.co.uk. Every amount is integer pence.
Get the fixed asset register
GET/api/v1/engagements/{id}/fixed-assets
- Scopes
engagements:read
Classes and assets, movements by class, the reconciliation to the final TB, capital allowances by chargeable period and NBV against tax WDV. Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
Responses
200 OK, application/json
Body: object (FixedAssetRegister).
Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV.
| Field | Type | Description |
|---|---|---|
inUserequired | boolean | Any class or asset has been entered. |
errorrequired | stringnullable | Why the register could not be computed. |
regimerequired | string (CapitalAllowanceRegime) | One of: |
settingsrequired | object (FixedAssetSettings) | Part-year depreciation policy and the tax pools brought forward from last year. |
settings.acquisitionYearrequired | string (PartYearPolicy) | Depreciation in the year an asset is acquired. One of: |
settings.disposalYearrequired | string (PartYearPolicy) | Depreciation in the year an asset is disposed of. One of: |
settings.mainPoolBfPencerequired | integer | Integer pence (GBP). Main pool tax written down value brought forward. at least 0 |
settings.specialRatePoolBfPencerequired | integer | Integer pence (GBP). Special rate pool tax written down value brought forward. at least 0 |
settings.disposalProceedsCode | stringnullable | Account the fixed asset journal debits with disposal proceeds the TB does not yet show (the bank or debtor they went to, or a journal-only account). Left as it was when not sent. up to 50 characters |
settings.disposalAccountCode | stringnullable | The profit/loss on disposal account the fixed asset journal posts to: a TB account mapped there, or an account on the client’s chart of accounts with no balance yet. Null: the first account mapped to profit/loss on disposal. Left as it was when not sent. up to 50 characters |
disposals | object (FixedAssetDisposalCheck) | Profit (positive) or loss (negative) on disposal per the register and per the final TB (profit/loss on disposal accounts in M). C is not done until they agree. |
disposals.registerProfitPencerequired | integer | Integer pence (GBP). Register: proceeds less net book value of the assets disposed of in the period. |
disposals.tbProfitPencerequired | integer | Integer pence (GBP). Final TB: the profit/loss on disposal accounts, credit as profit. |
disposals.differencePencerequired | integer | Integer pence (GBP). Register less TB. |
disposals.proceedsPencerequired | integer | Integer pence (GBP). Disposal proceeds per the register. |
disposals.agreedrequired | boolean | |
classesrequired | array of FixedAssetClass | |
classes[].idrequired | string (uuid) | |
classes[].positionrequired | integer | |
classes[].namerequired | string | |
classes[].costCoderequired | stringnullable | TB account for cost. |
classes[].depreciationCoderequired | stringnullable | TB account for accumulated depreciation. |
classes[].chargeCoderequired | stringnullable | TB account the depreciation charge goes to (default: the first admin depreciation account). |
classes[].depreciationrequired | object (DepreciationPolicy) | Straight line over a useful life, straight line at a rate on cost, reducing balance at a rate, or none. |
classes[].depreciation.methodrequired | string (DepreciationMethod) | One of: |
classes[].depreciation.usefulLifeMonths | integernullable | Straight line: useful life in months. 1 to 1200 |
classes[].depreciation.rateBasisPoints | integernullable | Straight-line rate or reducing balance, basis points (2500 = 25%). 1 to 10000 |
classes[].taxTreatmentrequired | string (TaxTreatment) | Default capital allowance treatment for the class’s assets. One of: |
classes[].rateClassrequired | string (RateClass) | One of: |
classes[].assetCountrequired | integer | |
assetsrequired | array of FixedAsset | |
assets[].idrequired | string (uuid) | |
assets[].refrequired | string | example "C-001" |
assets[].classIdrequired | string (uuid) | |
assets[].classNamerequired | string | |
assets[].descriptionrequired | string | |
assets[].supplierrequired | stringnullable | |
assets[].invoiceRefrequired | stringnullable | |
assets[].acquisitionDaterequired | string (date) | example "2026-03-31" |
assets[].costPencerequired | integer | Integer pence (GBP). Original cost. |
assets[].residualPencerequired | integer | Integer pence (GBP). |
assets[].broughtForwardrequired | boolean | Held at the start of the period (b/f), as opposed to an addition. |
assets[].bfDepreciationPencerequired | integernullable | Integer pence (GBP). |
assets[].ownPolicyrequired | boolean | The asset has its own depreciation policy rather than the class’s. |
assets[].effectiveDepreciationrequired | object (DepreciationPolicy) | The policy applied (the asset’s own, else the class’s). |
assets[].effectiveDepreciation.methodrequired | string (DepreciationMethod) | One of: |
assets[].effectiveDepreciation.usefulLifeMonths | integernullable | Straight line: useful life in months. 1 to 1200 |
assets[].effectiveDepreciation.rateBasisPoints | integernullable | Straight-line rate or reducing balance, basis points (2500 = 25%). 1 to 10000 |
assets[].taxrequired | object (FixedAssetTax) | Overrides of the class’s tax treatment for one asset. Null or absent uses the class default. |
assets[].tax.treatment | string (TaxTreatment)nullable | Default capital allowance treatment for the class’s assets. One of: |
assets[].tax.rateClass | string (RateClass)nullable | One of: |
assets[].tax.co2GramsPerKm | integernullable | Cars only (CAA 2001 s268A): CO₂ g/km. Cars never take AIA or full expensing. 0 to 1000 |
assets[].tax.newAndUnused | booleannullable | Needed for full expensing and first-year allowances. |
assets[].tax.privateUsePercent | integernullable | Sole traders and partnerships only (s205-s208). 0 to 100 |
assets[].tax.sbaQualifyingCostPence | integernullable | Integer pence (GBP). SBA: qualifying expenditure excluding land. Default cost. at least 0 |
assets[].tax.sbaFirstUseDate | string (date)nullable | SBA: first brought into non-residential use. Default acquisition date. example "2026-03-31" |
assets[].effectiveTreatmentrequired | string (TaxTreatment) | The treatment applied. One of: |
assets[].disposalDaterequired | string (date)nullable | Disposed of in the period on this date, or null if held. example "2026-03-31" |
assets[].disposalProceedsPencerequired | integernullable | Integer pence (GBP). Null while the proceeds are not known (a blocking check on C). |
assets[].taxWdvBfPencerequired | integernullable | Integer pence (GBP). Single-asset pool WDV brought forward. |
assets[].sbaClaimedBfPencerequired | integernullable | Integer pence (GBP). SBA claimed to date, brought forward. |
assets[].costBfPencerequired | integer | Integer pence (GBP). |
assets[].additionsPencerequired | integer | Integer pence (GBP). |
assets[].disposalsPencerequired | integer | Integer pence (GBP). Cost disposed of (positive). |
assets[].costCfPencerequired | integer | Integer pence (GBP). |
assets[].depreciationBfPencerequired | integer | Integer pence (GBP). |
assets[].chargePencerequired | integer | Integer pence (GBP). |
assets[].depreciationDisposalsPencerequired | integer | Integer pence (GBP). Depreciation eliminated on disposal (positive). |
assets[].depreciationCfPencerequired | integer | Integer pence (GBP). |
assets[].nbvCfPencerequired | integer | Integer pence (GBP). |
assets[].profitOnDisposalPencerequired | integer | Integer pence (GBP). Proceeds less NBV disposed of; negative is a loss. |
assets[].claimrequired | stringnullable | Allowance claimed on this year’s expenditure: aia, full-expensing, special-rate-allowance, fya-40, fya-zero-emission-car, wda, sba or none. |
assets[].allowancePencerequired | integer | Integer pence (GBP). AIA or first-year allowance on this year’s expenditure. |
assets[].pool | string (FixedAssetPool) | The capital allowance pool the asset is in, as the computation decides it (a car by its CO₂ emissions, CAA 2001 s104AA). One of: |
movementsrequired | array of FixedAssetMovement | |
movements[].classIdrequired | string (uuid)nullable | |
movements[].namerequired | string | |
movements[].costBfPencerequired | integer | Integer pence (GBP). |
movements[].additionsPencerequired | integer | Integer pence (GBP). |
movements[].disposalsPencerequired | integer | Integer pence (GBP). Positive. |
movements[].costCfPencerequired | integer | Integer pence (GBP). |
movements[].depreciationBfPencerequired | integer | Integer pence (GBP). |
movements[].chargePencerequired | integer | Integer pence (GBP). |
movements[].depreciationDisposalsPencerequired | integer | Integer pence (GBP). Positive. |
movements[].depreciationCfPencerequired | integer | Integer pence (GBP). |
movements[].nbvBfPencerequired | integer | Integer pence (GBP). |
movements[].nbvCfPencerequired | integer | Integer pence (GBP). |
movements[].proceedsPencerequired | integer | Integer pence (GBP). |
movements[].profitOnDisposalPencerequired | integer | Integer pence (GBP). |
totalrequired | object (FixedAssetMovement) | Cost and depreciation b/f, movements and c/f for an asset class (or the total). |
total.classIdrequired | string (uuid)nullable | |
total.namerequired | string | |
total.costBfPencerequired | integer | Integer pence (GBP). |
total.additionsPencerequired | integer | Integer pence (GBP). |
total.disposalsPencerequired | integer | Integer pence (GBP). Positive. |
total.costCfPencerequired | integer | Integer pence (GBP). |
total.depreciationBfPencerequired | integer | Integer pence (GBP). |
total.chargePencerequired | integer | Integer pence (GBP). |
total.depreciationDisposalsPencerequired | integer | Integer pence (GBP). Positive. |
total.depreciationCfPencerequired | integer | Integer pence (GBP). |
total.nbvBfPencerequired | integer | Integer pence (GBP). |
total.nbvCfPencerequired | integer | Integer pence (GBP). |
total.proceedsPencerequired | integer | Integer pence (GBP). |
total.profitOnDisposalPencerequired | integer | Integer pence (GBP). |
reconciliationrequired | object (FixedAssetReconciliation) | |
reconciliation.linesrequired | array of FixedAssetReconciliationLine | |
reconciliation.lines[].classIdrequired | string (uuid)nullable | Null for C accounts no class claims. |
reconciliation.lines[].namerequired | string | |
reconciliation.lines[].costCoderequired | stringnullable | |
reconciliation.lines[].depreciationCoderequired | stringnullable | |
reconciliation.lines[].registerCostPencerequired | integer | Integer pence (GBP). |
reconciliation.lines[].registerDepreciationPencerequired | integer | Integer pence (GBP). |
reconciliation.lines[].registerNbvPencerequired | integer | Integer pence (GBP). |
reconciliation.lines[].tbCostPencerequired | integer | Integer pence (GBP). |
reconciliation.lines[].tbDepreciationPencerequired | integer | Integer pence (GBP). |
reconciliation.lines[].tbNbvPencerequired | integer | Integer pence (GBP). |
reconciliation.lines[].differenceCostPencerequired | integer | Integer pence (GBP). Register less TB. |
reconciliation.lines[].differenceDepreciationPencerequired | integer | Integer pence (GBP). |
reconciliation.lines[].differenceNbvPencerequired | integer | Integer pence (GBP). |
reconciliation.lines[].agreedrequired | boolean | |
reconciliation.lines[].openingIssuerequired | stringnullable | Why the opening position does not agree for this class (for example cost and depreciation held in one TB account), and the fix. The fixed asset journal does not post it. |
reconciliation.agreedrequired | boolean | Blocking check on C: every class agrees to the penny. |
reconciliation.differenceNbvPencerequired | integer | Integer pence (GBP). |
capitalAllowancesrequired | array of CapitalAllowancePeriod | |
capitalAllowances[].periodStartrequired | string (date) | example "2026-03-31" |
capitalAllowances[].periodEndrequired | string (date) | example "2026-03-31" |
capitalAllowances[].aiaMaximumPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].aiaClaimedPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].firstYearAllowancesPencerequired | integer | Integer pence (GBP). Full expensing, special rate allowance, 40% FYA and zero-emission car FYA. |
capitalAllowances[].mainPoolrequired | object (CapitalAllowancePool) | |
capitalAllowances[].mainPool.poolrequired | string (CapitalAllowancePoolKind) | One of: |
capitalAllowances[].mainPool.writtenDownValueBfPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].mainPool.additionsPencerequired | integer | Integer pence (GBP). Expenditure added to the pool (after AIA and first-year allowances). |
capitalAllowances[].mainPool.aiaClaimedPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].mainPool.disposalValuesPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].mainPool.balanceBeforeAllowancesPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].mainPool.wdaRateBpsrequired | integer | |
capitalAllowances[].mainPool.writingDownAllowancePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].mainPool.smallPoolAllowancePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].mainPool.balancingAllowancePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].mainPool.balancingChargePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].mainPool.writtenDownValueCfPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].specialRatePoolrequired | object (CapitalAllowancePool) | |
capitalAllowances[].specialRatePool.poolrequired | string (CapitalAllowancePoolKind) | One of: |
capitalAllowances[].specialRatePool.writtenDownValueBfPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].specialRatePool.additionsPencerequired | integer | Integer pence (GBP). Expenditure added to the pool (after AIA and first-year allowances). |
capitalAllowances[].specialRatePool.aiaClaimedPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].specialRatePool.disposalValuesPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].specialRatePool.balanceBeforeAllowancesPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].specialRatePool.wdaRateBpsrequired | integer | |
capitalAllowances[].specialRatePool.writingDownAllowancePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].specialRatePool.smallPoolAllowancePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].specialRatePool.balancingAllowancePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].specialRatePool.balancingChargePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].specialRatePool.writtenDownValueCfPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].singleAssetPoolsrequired | array of SingleAssetPool | |
capitalAllowances[].singleAssetPools[].assetIdrequired | string (uuid) | |
capitalAllowances[].singleAssetPools[].refrequired | string | |
capitalAllowances[].singleAssetPools[].businessUsePercentrequired | integer | |
capitalAllowances[].singleAssetPools[].writtenDownValueBfPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].singleAssetPools[].additionsPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].singleAssetPools[].disposalValuePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].singleAssetPools[].allowanceBeforeRestrictionPencerequired | integer | Integer pence (GBP). Allowances on the whole pool, before the private-use restriction (CAA 2001 s207). |
capitalAllowances[].singleAssetPools[].aiaClaimedPencerequired | integer | Of allowanceBeforeRestrictionPence, the Annual Investment Allowance. Included in the period’s aiaClaimedPence. |
capitalAllowances[].singleAssetPools[].allowancesClaimedPencerequired | integer | Integer pence (GBP). Business share. |
capitalAllowances[].singleAssetPools[].balancingChargePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].singleAssetPools[].writtenDownValueCfPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].structuresAndBuildingsrequired | array of StructuresAndBuildingsAllowance | |
capitalAllowances[].structuresAndBuildings[].assetIdrequired | string (uuid) | |
capitalAllowances[].structuresAndBuildings[].refrequired | string | |
capitalAllowances[].structuresAndBuildings[].qualifyingCostPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].structuresAndBuildings[].claimedBfPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].structuresAndBuildings[].allowancePencerequired | integer | Integer pence (GBP). |
capitalAllowances[].structuresAndBuildings[].claimedCfPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].totalAllowancesPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].totalBalancingChargesPencerequired | integer | Integer pence (GBP). |
capitalAllowances[].netAllowancesPencerequired | integer | Integer pence (GBP). Allowances less balancing charges. |
deferredTaxrequired | object (FixedAssetDeferredTax) | Empty until the register can be computed. |
deferredTax.linesrequired | array of FixedAssetTimingDifference | |
deferredTax.lines[].keyrequired | string | |
deferredTax.lines[].labelrequired | string | |
deferredTax.lines[].nbvPencerequired | integer | Integer pence (GBP). |
deferredTax.lines[].taxWrittenDownValuePencerequired | integer | Integer pence (GBP). |
deferredTax.lines[].timingDifferencePencerequired | integer | Integer pence (GBP). Positive: accelerated capital allowances (a liability). |
deferredTax.lines[].permanentDifferencePencerequired | integer | Integer pence (GBP). NBV that never attracts allowances: no deferred tax. |
deferredTax.totalTimingDifferencePencerequired | integer | Integer pence (GBP). |
deferredTax.totalPermanentDifferencePencerequired | integer | Integer pence (GBP). |
issuesrequired | array of FixedAssetIssue | Treatments the engines changed, and why (e.g. AIA refused on a car). |
issues[].coderequired | string | |
issues[].assetIdrequired | string (uuid)nullable | |
issues[].messagerequired | string | |
journalrequired | object (FixedAssetJournalProposal) | The journal that brings the TB to the register: disposals derecognised and depreciation charged. |
journal.linesrequired | array of FixedAssetJournalLine | |
journal.lines[].accountCoderequired | string | |
journal.lines[].accountNamerequired | stringnullable | |
journal.lines[].debitPencerequired | integer | Integer pence (GBP). |
journal.lines[].creditPencerequired | integer | Integer pence (GBP). |
journal.unresolvedrequired | array of string | Differences the journal cannot put right; post those by hand. |
journal.existingRefrequired | stringnullable | The fixed asset journal already posted, which posting again replaces. |
defaultChargeAccountrequired | object (FixedAssetDefaultChargeAccount)nullable | Null when neither the TB nor the client’s chart of accounts has an account mapped to admin depreciation: add one in the client’s books. |
defaultChargeAccount.coderequired | string | |
defaultChargeAccount.namerequired | string | |
defaultChargeAccount.inTbrequired | boolean | False for an account on the client’s chart of accounts with no balance in this TB yet: the fixed asset journal posts to it under its own code. |
lockedReasonrequired | stringnullable | Why you cannot change the register now (C reviewed, or you are not its preparer). |
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Set the depreciation part-year policy and the tax pools brought forward
PUT/api/v1/engagements/{id}/fixed-assets/settings
- Scopes
engagements:writeandengagements:read
Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
Request body
Required. application/json: object (FixedAssetSettings).
Part-year depreciation policy and the tax pools brought forward from last year.
| Field | Type | Description |
|---|---|---|
acquisitionYearrequired | string (PartYearPolicy) | Depreciation in the year an asset is acquired. One of: |
disposalYearrequired | string (PartYearPolicy) | Depreciation in the year an asset is disposed of. One of: |
mainPoolBfPencerequired | integer | Integer pence (GBP). Main pool tax written down value brought forward. at least 0 |
specialRatePoolBfPencerequired | integer | Integer pence (GBP). Special rate pool tax written down value brought forward. at least 0 |
disposalProceedsCode | stringnullable | Account the fixed asset journal debits with disposal proceeds the TB does not yet show (the bank or debtor they went to, or a journal-only account). Left as it was when not sent. up to 50 characters |
disposalAccountCode | stringnullable | The profit/loss on disposal account the fixed asset journal posts to: a TB account mapped there, or an account on the client’s chart of accounts with no balance yet. Null: the first account mapped to profit/loss on disposal. Left as it was when not sent. up to 50 characters |
Responses
200 OK, application/json
Body: object (FixedAssetRegister).
Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Add an asset class
POST/api/v1/engagements/{id}/fixed-assets/classes
- Scopes
engagements:writeandengagements:read- Retries
- Send an
Idempotency-Keyto make retries safe.
With its depreciation policy, default tax treatment and the TB accounts it reconciles to. Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
Idempotency-Key | header | string | A unique key (1-255 visible characters) to make retries safe. Replayed for 24 hours. 1 to 255 characters |
Request body
Required. application/json: object (CreateFixedAssetClass).
| Field | Type | Description |
|---|---|---|
namerequired | string | up to 100 characters |
costCode | stringnullable | up to 50 characters |
depreciationCode | stringnullable | up to 50 characters |
chargeCode | stringnullable | up to 50 characters |
depreciationrequired | object (DepreciationPolicy) | Straight line over a useful life, straight line at a rate on cost, reducing balance at a rate, or none. |
depreciation.methodrequired | string (DepreciationMethod) | One of: |
depreciation.usefulLifeMonths | integernullable | Straight line: useful life in months. 1 to 1200 |
depreciation.rateBasisPoints | integernullable | Straight-line rate or reducing balance, basis points (2500 = 25%). 1 to 10000 |
taxTreatment | string (TaxTreatment) | Default aia. One of: |
rateClass | string (RateClass) | Default main. One of: |
Responses
201 Created, application/json
Body: object (FixedAssetRegister).
Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 409 Conflict, 422 Unprocessable content, 429 Too many requests, as problem details (application/problem+json).
Change an asset class
PATCH/api/v1/engagements/{id}/fixed-assets/classes/{classId}
- Scopes
engagements:writeandengagements:read
Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
classIdrequired | path | string (uuid) | Asset class id. |
Request body
Required. application/json: object (UpdateFixedAssetClass).
Only the fields given change.
| Field | Type | Description |
|---|---|---|
name | string | up to 100 characters |
position | integer | at least 1 |
costCode | stringnullable | up to 50 characters |
depreciationCode | stringnullable | up to 50 characters |
chargeCode | stringnullable | up to 50 characters |
depreciation | object (DepreciationPolicy) | Straight line over a useful life, straight line at a rate on cost, reducing balance at a rate, or none. |
depreciation.methodrequired | string (DepreciationMethod) | One of: |
depreciation.usefulLifeMonths | integernullable | Straight line: useful life in months. 1 to 1200 |
depreciation.rateBasisPoints | integernullable | Straight-line rate or reducing balance, basis points (2500 = 25%). 1 to 10000 |
taxTreatment | string (TaxTreatment) | Default capital allowance treatment for the class’s assets. One of: |
rateClass | string (RateClass) | One of: |
Responses
200 OK, application/json
Body: object (FixedAssetRegister).
Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Delete an empty asset class
DELETE/api/v1/engagements/{id}/fixed-assets/classes/{classId}
- Scopes
engagements:writeandengagements:read
409 while it still has assets. Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
classIdrequired | path | string (uuid) | Asset class id. |
Responses
200 OK, application/json
Body: object (FixedAssetRegister).
Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Add an asset
POST/api/v1/engagements/{id}/fixed-assets/assets
- Scopes
engagements:writeandengagements:read- Retries
- Send an
Idempotency-Keyto make retries safe.
Acquired before the period: brought forward, with its accumulated depreciation b/f. Acquired in the period: an addition. Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
Idempotency-Key | header | string | A unique key (1-255 visible characters) to make retries safe. Replayed for 24 hours. 1 to 255 characters |
Request body
Required. application/json: object (CreateFixedAsset).
| Field | Type | Description |
|---|---|---|
classIdrequired | string (uuid) | |
ref | string | W/P ref; default the next C-nnn. up to 20 characters |
descriptionrequired | string | up to 200 characters |
supplier | stringnullable | up to 200 characters |
invoiceRef | stringnullable | up to 100 characters |
acquisitionDaterequired | string (date) | example "2026-03-31" |
costPencerequired | integer | Integer pence (GBP). at least 0 |
residualPence | integer | Integer pence (GBP). at least 0 |
bfDepreciationPence | integernullable | Integer pence (GBP). Set for an asset held at the start of the period: accumulated depreciation b/f. Null (or absent) for an addition. at least 0 |
depreciation | object (DepreciationPolicy)nullable | Straight line over a useful life, straight line at a rate on cost, reducing balance at a rate, or none. |
depreciation.methodrequired | string (DepreciationMethod) | One of: |
depreciation.usefulLifeMonths | integernullable | Straight line: useful life in months. 1 to 1200 |
depreciation.rateBasisPoints | integernullable | Straight-line rate or reducing balance, basis points (2500 = 25%). 1 to 10000 |
tax | object (FixedAssetTax) | Overrides of the class’s tax treatment for one asset. Null or absent uses the class default. |
tax.treatment | string (TaxTreatment)nullable | Default capital allowance treatment for the class’s assets. One of: |
tax.rateClass | string (RateClass)nullable | One of: |
tax.co2GramsPerKm | integernullable | Cars only (CAA 2001 s268A): CO₂ g/km. Cars never take AIA or full expensing. 0 to 1000 |
tax.newAndUnused | booleannullable | Needed for full expensing and first-year allowances. |
tax.privateUsePercent | integernullable | Sole traders and partnerships only (s205-s208). 0 to 100 |
tax.sbaQualifyingCostPence | integernullable | Integer pence (GBP). SBA: qualifying expenditure excluding land. Default cost. at least 0 |
tax.sbaFirstUseDate | string (date)nullable | SBA: first brought into non-residential use. Default acquisition date. example "2026-03-31" |
taxWdvBfPence | integernullable | Integer pence (GBP). at least 0 |
sbaClaimedBfPence | integernullable | Integer pence (GBP). at least 0 |
Responses
201 Created, application/json
Body: object (FixedAssetRegister).
Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 409 Conflict, 422 Unprocessable content, 429 Too many requests, as problem details (application/problem+json).
Change an asset
PATCH/api/v1/engagements/{id}/fixed-assets/assets/{assetId}
- Scopes
engagements:writeandengagements:read
Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
assetIdrequired | path | string (uuid) | Asset id. |
Request body
Required. application/json: object (UpdateFixedAsset).
Only the fields given change.
| Field | Type | Description |
|---|---|---|
classId | string (uuid) | |
ref | string | up to 20 characters |
description | string | up to 200 characters |
supplier | stringnullable | up to 200 characters |
invoiceRef | stringnullable | up to 100 characters |
acquisitionDate | string (date) | example "2026-03-31" |
costPence | integer | Integer pence (GBP). at least 0 |
residualPence | integer | Integer pence (GBP). at least 0 |
bfDepreciationPence | integernullable | Integer pence (GBP). at least 0 |
depreciation | object (DepreciationPolicy)nullable | Straight line over a useful life, straight line at a rate on cost, reducing balance at a rate, or none. |
depreciation.methodrequired | string (DepreciationMethod) | One of: |
depreciation.usefulLifeMonths | integernullable | Straight line: useful life in months. 1 to 1200 |
depreciation.rateBasisPoints | integernullable | Straight-line rate or reducing balance, basis points (2500 = 25%). 1 to 10000 |
tax | object (FixedAssetTax) | Overrides of the class’s tax treatment for one asset. Null or absent uses the class default. |
tax.treatment | string (TaxTreatment)nullable | Default capital allowance treatment for the class’s assets. One of: |
tax.rateClass | string (RateClass)nullable | One of: |
tax.co2GramsPerKm | integernullable | Cars only (CAA 2001 s268A): CO₂ g/km. Cars never take AIA or full expensing. 0 to 1000 |
tax.newAndUnused | booleannullable | Needed for full expensing and first-year allowances. |
tax.privateUsePercent | integernullable | Sole traders and partnerships only (s205-s208). 0 to 100 |
tax.sbaQualifyingCostPence | integernullable | Integer pence (GBP). SBA: qualifying expenditure excluding land. Default cost. at least 0 |
tax.sbaFirstUseDate | string (date)nullable | SBA: first brought into non-residential use. Default acquisition date. example "2026-03-31" |
taxWdvBfPence | integernullable | Integer pence (GBP). at least 0 |
sbaClaimedBfPence | integernullable | Integer pence (GBP). at least 0 |
Responses
200 OK, application/json
Body: object (FixedAssetRegister).
Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Delete an asset from the register
DELETE/api/v1/engagements/{id}/fixed-assets/assets/{assetId}
- Scopes
engagements:writeandengagements:read
Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
assetIdrequired | path | string (uuid) | Asset id. |
Responses
200 OK, application/json
Body: object (FixedAssetRegister).
Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Preview adding an asset
POST/api/v1/engagements/{id}/fixed-assets/assets/preview
- Scopes
engagements:writeandengagements:read
A dry run of Add an asset, with the same checks: the asset’s depreciation charge, net book value, the allowance claimed and its pool, and the register’s totals before and after. Nothing is stored. Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
Request body
Required. application/json: object (CreateFixedAsset).
The fields are as shown above.
Responses
200 OK, application/json
Body: object (FixedAssetPreview).
What saving an asset or a disposal would do, worked by the same engines as the register. Nothing is stored.
| Field | Type | Description |
|---|---|---|
assetrequired | object (FixedAsset) | The asset as the register would show it. |
asset.idrequired | string (uuid) | |
asset.refrequired | string | example "C-001" |
asset.classIdrequired | string (uuid) | |
asset.classNamerequired | string | |
asset.descriptionrequired | string | |
asset.supplierrequired | stringnullable | |
asset.invoiceRefrequired | stringnullable | |
asset.acquisitionDaterequired | string (date) | example "2026-03-31" |
asset.costPencerequired | integer | Integer pence (GBP). Original cost. |
asset.residualPencerequired | integer | Integer pence (GBP). |
asset.broughtForwardrequired | boolean | Held at the start of the period (b/f), as opposed to an addition. |
asset.bfDepreciationPencerequired | integernullable | Integer pence (GBP). |
asset.ownPolicyrequired | boolean | The asset has its own depreciation policy rather than the class’s. |
asset.effectiveDepreciationrequired | object (DepreciationPolicy) | The policy applied (the asset’s own, else the class’s). |
asset.effectiveDepreciation.methodrequired | string (DepreciationMethod) | One of: |
asset.effectiveDepreciation.usefulLifeMonths | integernullable | Straight line: useful life in months. 1 to 1200 |
asset.effectiveDepreciation.rateBasisPoints | integernullable | Straight-line rate or reducing balance, basis points (2500 = 25%). 1 to 10000 |
asset.taxrequired | object (FixedAssetTax) | Overrides of the class’s tax treatment for one asset. Null or absent uses the class default. |
asset.tax.treatment | string (TaxTreatment)nullable | Default capital allowance treatment for the class’s assets. One of: |
asset.tax.rateClass | string (RateClass)nullable | One of: |
asset.tax.co2GramsPerKm | integernullable | Cars only (CAA 2001 s268A): CO₂ g/km. Cars never take AIA or full expensing. 0 to 1000 |
asset.tax.newAndUnused | booleannullable | Needed for full expensing and first-year allowances. |
asset.tax.privateUsePercent | integernullable | Sole traders and partnerships only (s205-s208). 0 to 100 |
asset.tax.sbaQualifyingCostPence | integernullable | Integer pence (GBP). SBA: qualifying expenditure excluding land. Default cost. at least 0 |
asset.tax.sbaFirstUseDate | string (date)nullable | SBA: first brought into non-residential use. Default acquisition date. example "2026-03-31" |
asset.effectiveTreatmentrequired | string (TaxTreatment) | The treatment applied. One of: |
asset.disposalDaterequired | string (date)nullable | Disposed of in the period on this date, or null if held. example "2026-03-31" |
asset.disposalProceedsPencerequired | integernullable | Integer pence (GBP). Null while the proceeds are not known (a blocking check on C). |
asset.taxWdvBfPencerequired | integernullable | Integer pence (GBP). Single-asset pool WDV brought forward. |
asset.sbaClaimedBfPencerequired | integernullable | Integer pence (GBP). SBA claimed to date, brought forward. |
asset.costBfPencerequired | integer | Integer pence (GBP). |
asset.additionsPencerequired | integer | Integer pence (GBP). |
asset.disposalsPencerequired | integer | Integer pence (GBP). Cost disposed of (positive). |
asset.costCfPencerequired | integer | Integer pence (GBP). |
asset.depreciationBfPencerequired | integer | Integer pence (GBP). |
asset.chargePencerequired | integer | Integer pence (GBP). |
asset.depreciationDisposalsPencerequired | integer | Integer pence (GBP). Depreciation eliminated on disposal (positive). |
asset.depreciationCfPencerequired | integer | Integer pence (GBP). |
asset.nbvCfPencerequired | integer | Integer pence (GBP). |
asset.profitOnDisposalPencerequired | integer | Integer pence (GBP). Proceeds less NBV disposed of; negative is a loss. |
asset.claimrequired | stringnullable | Allowance claimed on this year’s expenditure: aia, full-expensing, special-rate-allowance, fya-40, fya-zero-emission-car, wda, sba or none. |
asset.allowancePencerequired | integer | Integer pence (GBP). AIA or first-year allowance on this year’s expenditure. |
asset.pool | string (FixedAssetPool) | The capital allowance pool the asset is in, as the computation decides it (a car by its CO₂ emissions, CAA 2001 s104AA). One of: |
errorrequired | stringnullable | Why the register could not be computed with this change. |
poolrequired | string (FixedAssetPool)nullable | The capital allowance pool the asset is in. One of: |
depreciationChargePencerequired | integer | Integer pence (GBP). This asset’s depreciation charge for the period. |
nbvCfPencerequired | integer | Integer pence (GBP). This asset’s net book value carried forward. |
allowancePencerequired | integer | Integer pence (GBP). AIA, first-year allowance or full expensing on this asset’s cost this period, before any private-use restriction. Writing down allowances are in the totals. |
claimrequired | stringnullable | The allowance claimed on its cost, e.g. "aia", "full-expensing", "pool". |
disposalrequired | object (FixedAssetDisposalOutcome)nullable | Set when the asset is disposed of in the period. |
disposal.nbvAtDisposalPencerequired | integer | Integer pence (GBP). Cost less accumulated depreciation at the disposal date. |
disposal.proceedsPencerequired | integer | Integer pence (GBP). |
disposal.profitOnDisposalPencerequired | integer | Integer pence (GBP). Proceeds less NBV: positive a profit, negative a loss. |
disposal.disposalValuePencerequired | integer | Integer pence (GBP). Deducted from the pool (or the asset’s single-asset pool): the proceeds capped at cost (CAA 2001 ss61–62). |
disposal.balancingAllowancePencerequired | integer | Integer pence (GBP). Balancing allowance the disposal gives (CAA 2001 s55; single-asset pools s206). |
disposal.balancingChargePencerequired | integer | Integer pence (GBP). Balancing charge the disposal causes, including the relevant proportion on full expensing (CA23174AD). |
beforerequired | object (FixedAssetTotals) | The register’s figures for the period, before or after the change previewed. |
before.depreciationChargePencerequired | integer | Integer pence (GBP). |
before.capitalAllowancesPencerequired | integer | Integer pence (GBP). Capital allowances for the period (all chargeable periods), before balancing charges. |
before.balancingChargesPencerequired | integer | Integer pence (GBP). |
before.nbvCfPencerequired | integer | Integer pence (GBP). |
before.profitOnDisposalPencerequired | integer | Integer pence (GBP). Profit (positive) or loss (negative) on disposal. |
afterrequired | object (FixedAssetTotals) | The register’s figures for the period, before or after the change previewed. |
after.depreciationChargePencerequired | integer | Integer pence (GBP). |
after.capitalAllowancesPencerequired | integer | Integer pence (GBP). Capital allowances for the period (all chargeable periods), before balancing charges. |
after.balancingChargesPencerequired | integer | Integer pence (GBP). |
after.nbvCfPencerequired | integer | Integer pence (GBP). |
after.profitOnDisposalPencerequired | integer | Integer pence (GBP). Profit (positive) or loss (negative) on disposal. |
issuesrequired | array of string | Notes from the engines about this asset, e.g. a disposal value capped at cost. |
journalrequired | object (FixedAssetJournalProposal) | The fixed asset journal the register would then propose. |
journal.linesrequired | array of FixedAssetJournalLine | |
journal.lines[].accountCoderequired | string | |
journal.lines[].accountNamerequired | stringnullable | |
journal.lines[].debitPencerequired | integer | Integer pence (GBP). |
journal.lines[].creditPencerequired | integer | Integer pence (GBP). |
journal.unresolvedrequired | array of string | Differences the journal cannot put right; post those by hand. |
journal.existingRefrequired | stringnullable | The fixed asset journal already posted, which posting again replaces. |
lockedReasonrequired | stringnullable | Why you could not save it now (C reviewed). |
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Preview changing an asset
POST/api/v1/engagements/{id}/fixed-assets/assets/{assetId}/preview
- Scopes
engagements:writeandengagements:read
A dry run of Change an asset: what the register would show. Nothing is stored. Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
assetIdrequired | path | string (uuid) | Asset id. |
Request body
Required. application/json: object (UpdateFixedAsset).
Only the fields given change.
The fields are as shown above.
Responses
200 OK, application/json
Body: object (FixedAssetPreview).
What saving an asset or a disposal would do, worked by the same engines as the register. Nothing is stored.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Preview a disposal
POST/api/v1/engagements/{id}/fixed-assets/assets/{assetId}/disposal/preview
- Scopes
engagements:writeandengagements:read
A dry run of Record the disposal: NBV at disposal, profit or loss on disposal, the disposal value deducted from the pool (capped at cost) and any balancing allowance or charge. Nothing is stored. Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
assetIdrequired | path | string (uuid) | Asset id. |
Request body
Required. application/json: object (FixedAssetDisposal).
| Field | Type | Description |
|---|---|---|
daterequired | string (date) | example "2026-03-31" |
proceedsPencerequired | integernullable | Integer pence (GBP). Null while the proceeds are not known (a blocking check on C). Nil for an asset scrapped. at least 0 |
Responses
200 OK, application/json
Body: object (FixedAssetPreview).
What saving an asset or a disposal would do, worked by the same engines as the register. Nothing is stored.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Record the disposal of an asset
PUT/api/v1/engagements/{id}/fixed-assets/assets/{assetId}/disposal
- Scopes
engagements:writeandengagements:read
In the period. Proceeds may be null until known, but C cannot be signed off until every disposal has them (nil for an asset scrapped). Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
assetIdrequired | path | string (uuid) | Asset id. |
Request body
Required. application/json: object (FixedAssetDisposal).
| Field | Type | Description |
|---|---|---|
daterequired | string (date) | example "2026-03-31" |
proceedsPencerequired | integernullable | Integer pence (GBP). Null while the proceeds are not known (a blocking check on C). Nil for an asset scrapped. at least 0 |
Responses
200 OK, application/json
Body: object (FixedAssetRegister).
Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Remove a disposal (the asset is held again)
DELETE/api/v1/engagements/{id}/fixed-assets/assets/{assetId}/disposal
- Scopes
engagements:writeandengagements:read
Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
assetIdrequired | path | string (uuid) | Asset id. |
Responses
200 OK, application/json
Body: object (FixedAssetRegister).
Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV.
The fields are as shown above.
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Preview the fixed asset journal
POST/api/v1/engagements/{id}/fixed-assets/journal/preview
- Scopes
engagements:read
The journal that posting would make (lines, date and narrative), the earlier fixed asset journal it would replace, differences it cannot put right, and what would change: sections whose content moves, sign-offs that go out of date and the headline figures. Nothing is saved. Read access is enough. Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
Responses
200 OK, application/json
Body: object (FixedAssetJournalPreview).
What posting the fixed asset journal would do. Nothing is saved.
| Field | Type | Description |
|---|---|---|
daterequired | string (date) | The journal date: the period end. example "2026-03-31" |
narrativerequired | string | |
linesrequired | array of FixedAssetJournalLine | Empty when the TB already agrees with the register. |
lines[].accountCoderequired | string | |
lines[].accountNamerequired | stringnullable | |
lines[].debitPencerequired | integer | Integer pence (GBP). |
lines[].creditPencerequired | integer | Integer pence (GBP). |
unresolvedrequired | array of string | Differences the journal cannot put right; posting is refused (422) until they are dealt with by hand. |
replacesRefrequired | stringnullable | The fixed asset journal already posted, which posting would replace (it is deleted; its number is never reused). |
replacesAmountPencerequired | integernullable | The total debits of the journal replaced, in integer pence. |
impactrequired | object (JournalImpact) | What a journal change would do, worked out without saving anything. |
impact.sectionsrequired | array of SectionImpact | Sections whose content would change, in file order. |
impact.sections[].coderequired | string | |
impact.sections[].namerequired | string | |
impact.sections[].staleSignOffsrequired | array of StaleSignOff | Live sign-offs on the section that would go out of date. |
impact.sections[].staleSignOffs[].stageIdrequired | string | |
impact.sections[].staleSignOffs[].stageNamerequired | string | |
impact.sections[].staleSignOffs[].userIdrequired | string (uuid) | |
impact.figuresrequired | array of FigureChange | Headline figures that would move. |
impact.figures[].keyrequired | string (FigureKey) | One of: |
impact.figures[].labelrequired | string | |
impact.figures[].beforePencerequired | integer | Integer pence (GBP). |
impact.figures[].afterPencerequired | integer | Integer pence (GBP). |
blockedReasonrequired | stringnullable | Why the caller can’t post it now (C reviewed and the caller is a preparer); null when they can. |
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).
Post the fixed asset journal
POST/api/v1/engagements/{id}/fixed-assets/journal
- Scopes
engagements:writeandengagements:read
Brings each class’s TB accounts to the register: disposals derecognised to profit/loss on disposal and depreciation charged. 409 if one exists unless replace is true; 422 for differences it cannot put right (e.g. unposted additions). Part of the working_papers product: the firm must have it and you must have access to it.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
idrequired | path | string (uuid) | Engagement id. |
Request body
Required. application/json: object (PostFixedAssetJournal).
| Field | Type | Description |
|---|---|---|
replace | boolean | Replace the earlier fixed asset journal (required when one exists). |
Responses
200 OK, application/json
Body: object (FixedAssetJournalResult).
| Field | Type | Description |
|---|---|---|
journalrequired | object (Journal)nullable | Null when the TB already agrees. |
journal.idrequired | string (uuid) | |
journal.refrequired | string | example "JNL-03" |
journal.daterequired | string (date) | example "2026-03-31" |
journal.typerequired | string (JournalType) | One of: |
journal.statusrequired | string (JournalStatus) | One of: |
journal.narrativerequired | string | |
journal.autoKindrequired | string (JournalAutoKind)nullable | Posted by Tolvi from the tax computation (ct, deferred) or the fixed asset register (fixed_assets). One of: |
journal.linesrequired | array of JournalLine | |
journal.lines[].accountCoderequired | string | |
journal.lines[].accountNamerequired | stringnullable | |
journal.lines[].debitPencerequired | integer | Integer pence (GBP). |
journal.lines[].creditPencerequired | integer | Integer pence (GBP). |
journal.sectionCodesrequired | array of string | Lead sections the journal touches. |
journal.lockedBySectionsrequired | array of string | Reviewed sections that lock it: only a reviewer or above can unpost or delete it. |
journal.createdByrequired | string (uuid)nullable | |
journal.createdAtrequired | string (date-time) | |
journal.postedByrequired | string (uuid)nullable | |
journal.postedAtrequired | string (date-time)nullable | |
replacedRefrequired | stringnullable | |
registerrequired | object (FixedAssetRegister) | Section C: the register, depreciation per policy, capital allowances, the TB reconciliation and NBV against tax WDV. |
register.inUserequired | boolean | Any class or asset has been entered. |
register.errorrequired | stringnullable | Why the register could not be computed. |
register.regimerequired | string (CapitalAllowanceRegime) | One of: |
register.settingsrequired | object (FixedAssetSettings) | Part-year depreciation policy and the tax pools brought forward from last year. |
register.settings.acquisitionYearrequired | string (PartYearPolicy) | Depreciation in the year an asset is acquired. One of: |
register.settings.disposalYearrequired | string (PartYearPolicy) | Depreciation in the year an asset is disposed of. One of: |
register.settings.mainPoolBfPencerequired | integer | Integer pence (GBP). Main pool tax written down value brought forward. at least 0 |
register.settings.specialRatePoolBfPencerequired | integer | Integer pence (GBP). Special rate pool tax written down value brought forward. at least 0 |
register.settings.disposalProceedsCode | stringnullable | Account the fixed asset journal debits with disposal proceeds the TB does not yet show (the bank or debtor they went to, or a journal-only account). Left as it was when not sent. up to 50 characters |
register.settings.disposalAccountCode | stringnullable | The profit/loss on disposal account the fixed asset journal posts to: a TB account mapped there, or an account on the client’s chart of accounts with no balance yet. Null: the first account mapped to profit/loss on disposal. Left as it was when not sent. up to 50 characters |
register.disposals | object (FixedAssetDisposalCheck) | Profit (positive) or loss (negative) on disposal per the register and per the final TB (profit/loss on disposal accounts in M). C is not done until they agree. |
register.disposals.registerProfitPencerequired | integer | Integer pence (GBP). Register: proceeds less net book value of the assets disposed of in the period. |
register.disposals.tbProfitPencerequired | integer | Integer pence (GBP). Final TB: the profit/loss on disposal accounts, credit as profit. |
register.disposals.differencePencerequired | integer | Integer pence (GBP). Register less TB. |
register.disposals.proceedsPencerequired | integer | Integer pence (GBP). Disposal proceeds per the register. |
register.disposals.agreedrequired | boolean | |
register.classesrequired | array of FixedAssetClass | |
register.classes[].idrequired | string (uuid) | |
register.classes[].positionrequired | integer | |
register.classes[].namerequired | string | |
register.classes[].costCoderequired | stringnullable | TB account for cost. |
register.classes[].depreciationCoderequired | stringnullable | TB account for accumulated depreciation. |
register.classes[].chargeCoderequired | stringnullable | TB account the depreciation charge goes to (default: the first admin depreciation account). |
register.classes[].depreciationrequired | object (DepreciationPolicy) | Straight line over a useful life, straight line at a rate on cost, reducing balance at a rate, or none. |
register.classes[].depreciation.methodrequired | string (DepreciationMethod) | One of: |
register.classes[].depreciation.usefulLifeMonths | integernullable | Straight line: useful life in months. 1 to 1200 |
register.classes[].depreciation.rateBasisPoints | integernullable | Straight-line rate or reducing balance, basis points (2500 = 25%). 1 to 10000 |
register.classes[].taxTreatmentrequired | string (TaxTreatment) | Default capital allowance treatment for the class’s assets. One of: |
register.classes[].rateClassrequired | string (RateClass) | One of: |
register.classes[].assetCountrequired | integer | |
register.assetsrequired | array of FixedAsset | |
register.assets[].idrequired | string (uuid) | |
register.assets[].refrequired | string | example "C-001" |
register.assets[].classIdrequired | string (uuid) | |
register.assets[].classNamerequired | string | |
register.assets[].descriptionrequired | string | |
register.assets[].supplierrequired | stringnullable | |
register.assets[].invoiceRefrequired | stringnullable | |
register.assets[].acquisitionDaterequired | string (date) | example "2026-03-31" |
register.assets[].costPencerequired | integer | Integer pence (GBP). Original cost. |
register.assets[].residualPencerequired | integer | Integer pence (GBP). |
register.assets[].broughtForwardrequired | boolean | Held at the start of the period (b/f), as opposed to an addition. |
register.assets[].bfDepreciationPencerequired | integernullable | Integer pence (GBP). |
register.assets[].ownPolicyrequired | boolean | The asset has its own depreciation policy rather than the class’s. |
register.assets[].effectiveDepreciationrequired | object (DepreciationPolicy) | The policy applied (the asset’s own, else the class’s). |
register.assets[].effectiveDepreciation.methodrequired | string (DepreciationMethod) | One of: |
register.assets[].effectiveDepreciation.usefulLifeMonths | integernullable | Straight line: useful life in months. 1 to 1200 |
register.assets[].effectiveDepreciation.rateBasisPoints | integernullable | Straight-line rate or reducing balance, basis points (2500 = 25%). 1 to 10000 |
register.assets[].taxrequired | object (FixedAssetTax) | Overrides of the class’s tax treatment for one asset. Null or absent uses the class default. |
register.assets[].tax.treatment | string (TaxTreatment)nullable | Default capital allowance treatment for the class’s assets. One of: |
register.assets[].tax.rateClass | string (RateClass)nullable | One of: |
register.assets[].tax.co2GramsPerKm | integernullable | Cars only (CAA 2001 s268A): CO₂ g/km. Cars never take AIA or full expensing. 0 to 1000 |
register.assets[].tax.newAndUnused | booleannullable | Needed for full expensing and first-year allowances. |
register.assets[].tax.privateUsePercent | integernullable | Sole traders and partnerships only (s205-s208). 0 to 100 |
register.assets[].tax.sbaQualifyingCostPence | integernullable | Integer pence (GBP). SBA: qualifying expenditure excluding land. Default cost. at least 0 |
register.assets[].tax.sbaFirstUseDate | string (date)nullable | SBA: first brought into non-residential use. Default acquisition date. example "2026-03-31" |
register.assets[].effectiveTreatmentrequired | string (TaxTreatment) | The treatment applied. One of: |
register.assets[].disposalDaterequired | string (date)nullable | Disposed of in the period on this date, or null if held. example "2026-03-31" |
register.assets[].disposalProceedsPencerequired | integernullable | Integer pence (GBP). Null while the proceeds are not known (a blocking check on C). |
register.assets[].taxWdvBfPencerequired | integernullable | Integer pence (GBP). Single-asset pool WDV brought forward. |
register.assets[].sbaClaimedBfPencerequired | integernullable | Integer pence (GBP). SBA claimed to date, brought forward. |
register.assets[].costBfPencerequired | integer | Integer pence (GBP). |
register.assets[].additionsPencerequired | integer | Integer pence (GBP). |
register.assets[].disposalsPencerequired | integer | Integer pence (GBP). Cost disposed of (positive). |
register.assets[].costCfPencerequired | integer | Integer pence (GBP). |
register.assets[].depreciationBfPencerequired | integer | Integer pence (GBP). |
register.assets[].chargePencerequired | integer | Integer pence (GBP). |
register.assets[].depreciationDisposalsPencerequired | integer | Integer pence (GBP). Depreciation eliminated on disposal (positive). |
register.assets[].depreciationCfPencerequired | integer | Integer pence (GBP). |
register.assets[].nbvCfPencerequired | integer | Integer pence (GBP). |
register.assets[].profitOnDisposalPencerequired | integer | Integer pence (GBP). Proceeds less NBV disposed of; negative is a loss. |
register.assets[].claimrequired | stringnullable | Allowance claimed on this year’s expenditure: aia, full-expensing, special-rate-allowance, fya-40, fya-zero-emission-car, wda, sba or none. |
register.assets[].allowancePencerequired | integer | Integer pence (GBP). AIA or first-year allowance on this year’s expenditure. |
register.assets[].pool | string (FixedAssetPool) | The capital allowance pool the asset is in, as the computation decides it (a car by its CO₂ emissions, CAA 2001 s104AA). One of: |
register.movementsrequired | array of FixedAssetMovement | |
register.movements[].classIdrequired | string (uuid)nullable | |
register.movements[].namerequired | string | |
register.movements[].costBfPencerequired | integer | Integer pence (GBP). |
register.movements[].additionsPencerequired | integer | Integer pence (GBP). |
register.movements[].disposalsPencerequired | integer | Integer pence (GBP). Positive. |
register.movements[].costCfPencerequired | integer | Integer pence (GBP). |
register.movements[].depreciationBfPencerequired | integer | Integer pence (GBP). |
register.movements[].chargePencerequired | integer | Integer pence (GBP). |
register.movements[].depreciationDisposalsPencerequired | integer | Integer pence (GBP). Positive. |
register.movements[].depreciationCfPencerequired | integer | Integer pence (GBP). |
register.movements[].nbvBfPencerequired | integer | Integer pence (GBP). |
register.movements[].nbvCfPencerequired | integer | Integer pence (GBP). |
register.movements[].proceedsPencerequired | integer | Integer pence (GBP). |
register.movements[].profitOnDisposalPencerequired | integer | Integer pence (GBP). |
register.totalrequired | object (FixedAssetMovement) | Cost and depreciation b/f, movements and c/f for an asset class (or the total). |
register.total.classIdrequired | string (uuid)nullable | |
register.total.namerequired | string | |
register.total.costBfPencerequired | integer | Integer pence (GBP). |
register.total.additionsPencerequired | integer | Integer pence (GBP). |
register.total.disposalsPencerequired | integer | Integer pence (GBP). Positive. |
register.total.costCfPencerequired | integer | Integer pence (GBP). |
register.total.depreciationBfPencerequired | integer | Integer pence (GBP). |
register.total.chargePencerequired | integer | Integer pence (GBP). |
register.total.depreciationDisposalsPencerequired | integer | Integer pence (GBP). Positive. |
register.total.depreciationCfPencerequired | integer | Integer pence (GBP). |
register.total.nbvBfPencerequired | integer | Integer pence (GBP). |
register.total.nbvCfPencerequired | integer | Integer pence (GBP). |
register.total.proceedsPencerequired | integer | Integer pence (GBP). |
register.total.profitOnDisposalPencerequired | integer | Integer pence (GBP). |
register.reconciliationrequired | object (FixedAssetReconciliation) | |
register.reconciliation.linesrequired | array of FixedAssetReconciliationLine | |
register.reconciliation.lines[].classIdrequired | string (uuid)nullable | Null for C accounts no class claims. |
register.reconciliation.lines[].namerequired | string | |
register.reconciliation.lines[].costCoderequired | stringnullable | |
register.reconciliation.lines[].depreciationCoderequired | stringnullable | |
register.reconciliation.lines[].registerCostPencerequired | integer | Integer pence (GBP). |
register.reconciliation.lines[].registerDepreciationPencerequired | integer | Integer pence (GBP). |
register.reconciliation.lines[].registerNbvPencerequired | integer | Integer pence (GBP). |
register.reconciliation.lines[].tbCostPencerequired | integer | Integer pence (GBP). |
register.reconciliation.lines[].tbDepreciationPencerequired | integer | Integer pence (GBP). |
register.reconciliation.lines[].tbNbvPencerequired | integer | Integer pence (GBP). |
register.reconciliation.lines[].differenceCostPencerequired | integer | Integer pence (GBP). Register less TB. |
register.reconciliation.lines[].differenceDepreciationPencerequired | integer | Integer pence (GBP). |
register.reconciliation.lines[].differenceNbvPencerequired | integer | Integer pence (GBP). |
register.reconciliation.lines[].agreedrequired | boolean | |
register.reconciliation.lines[].openingIssuerequired | stringnullable | Why the opening position does not agree for this class (for example cost and depreciation held in one TB account), and the fix. The fixed asset journal does not post it. |
register.reconciliation.agreedrequired | boolean | Blocking check on C: every class agrees to the penny. |
register.reconciliation.differenceNbvPencerequired | integer | Integer pence (GBP). |
register.capitalAllowancesrequired | array of CapitalAllowancePeriod | |
register.capitalAllowances[].periodStartrequired | string (date) | example "2026-03-31" |
register.capitalAllowances[].periodEndrequired | string (date) | example "2026-03-31" |
register.capitalAllowances[].aiaMaximumPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].aiaClaimedPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].firstYearAllowancesPencerequired | integer | Integer pence (GBP). Full expensing, special rate allowance, 40% FYA and zero-emission car FYA. |
register.capitalAllowances[].mainPoolrequired | object (CapitalAllowancePool) | |
register.capitalAllowances[].mainPool.poolrequired | string (CapitalAllowancePoolKind) | One of: |
register.capitalAllowances[].mainPool.writtenDownValueBfPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].mainPool.additionsPencerequired | integer | Integer pence (GBP). Expenditure added to the pool (after AIA and first-year allowances). |
register.capitalAllowances[].mainPool.aiaClaimedPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].mainPool.disposalValuesPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].mainPool.balanceBeforeAllowancesPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].mainPool.wdaRateBpsrequired | integer | |
register.capitalAllowances[].mainPool.writingDownAllowancePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].mainPool.smallPoolAllowancePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].mainPool.balancingAllowancePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].mainPool.balancingChargePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].mainPool.writtenDownValueCfPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].specialRatePoolrequired | object (CapitalAllowancePool) | |
register.capitalAllowances[].specialRatePool.poolrequired | string (CapitalAllowancePoolKind) | One of: |
register.capitalAllowances[].specialRatePool.writtenDownValueBfPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].specialRatePool.additionsPencerequired | integer | Integer pence (GBP). Expenditure added to the pool (after AIA and first-year allowances). |
register.capitalAllowances[].specialRatePool.aiaClaimedPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].specialRatePool.disposalValuesPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].specialRatePool.balanceBeforeAllowancesPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].specialRatePool.wdaRateBpsrequired | integer | |
register.capitalAllowances[].specialRatePool.writingDownAllowancePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].specialRatePool.smallPoolAllowancePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].specialRatePool.balancingAllowancePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].specialRatePool.balancingChargePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].specialRatePool.writtenDownValueCfPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].singleAssetPoolsrequired | array of SingleAssetPool | |
register.capitalAllowances[].singleAssetPools[].assetIdrequired | string (uuid) | |
register.capitalAllowances[].singleAssetPools[].refrequired | string | |
register.capitalAllowances[].singleAssetPools[].businessUsePercentrequired | integer | |
register.capitalAllowances[].singleAssetPools[].writtenDownValueBfPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].singleAssetPools[].additionsPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].singleAssetPools[].disposalValuePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].singleAssetPools[].allowanceBeforeRestrictionPencerequired | integer | Integer pence (GBP). Allowances on the whole pool, before the private-use restriction (CAA 2001 s207). |
register.capitalAllowances[].singleAssetPools[].aiaClaimedPencerequired | integer | Of allowanceBeforeRestrictionPence, the Annual Investment Allowance. Included in the period’s aiaClaimedPence. |
register.capitalAllowances[].singleAssetPools[].allowancesClaimedPencerequired | integer | Integer pence (GBP). Business share. |
register.capitalAllowances[].singleAssetPools[].balancingChargePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].singleAssetPools[].writtenDownValueCfPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].structuresAndBuildingsrequired | array of StructuresAndBuildingsAllowance | |
register.capitalAllowances[].structuresAndBuildings[].assetIdrequired | string (uuid) | |
register.capitalAllowances[].structuresAndBuildings[].refrequired | string | |
register.capitalAllowances[].structuresAndBuildings[].qualifyingCostPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].structuresAndBuildings[].claimedBfPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].structuresAndBuildings[].allowancePencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].structuresAndBuildings[].claimedCfPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].totalAllowancesPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].totalBalancingChargesPencerequired | integer | Integer pence (GBP). |
register.capitalAllowances[].netAllowancesPencerequired | integer | Integer pence (GBP). Allowances less balancing charges. |
register.deferredTaxrequired | object (FixedAssetDeferredTax) | Empty until the register can be computed. |
register.deferredTax.linesrequired | array of FixedAssetTimingDifference | |
register.deferredTax.lines[].keyrequired | string | |
register.deferredTax.lines[].labelrequired | string | |
register.deferredTax.lines[].nbvPencerequired | integer | Integer pence (GBP). |
register.deferredTax.lines[].taxWrittenDownValuePencerequired | integer | Integer pence (GBP). |
register.deferredTax.lines[].timingDifferencePencerequired | integer | Integer pence (GBP). Positive: accelerated capital allowances (a liability). |
register.deferredTax.lines[].permanentDifferencePencerequired | integer | Integer pence (GBP). NBV that never attracts allowances: no deferred tax. |
register.deferredTax.totalTimingDifferencePencerequired | integer | Integer pence (GBP). |
register.deferredTax.totalPermanentDifferencePencerequired | integer | Integer pence (GBP). |
register.issuesrequired | array of FixedAssetIssue | Treatments the engines changed, and why (e.g. AIA refused on a car). |
register.issues[].coderequired | string | |
register.issues[].assetIdrequired | string (uuid)nullable | |
register.issues[].messagerequired | string | |
register.journalrequired | object (FixedAssetJournalProposal) | The journal that brings the TB to the register: disposals derecognised and depreciation charged. |
register.journal.linesrequired | array of FixedAssetJournalLine | |
register.journal.lines[].accountCoderequired | string | |
register.journal.lines[].accountNamerequired | stringnullable | |
register.journal.lines[].debitPencerequired | integer | Integer pence (GBP). |
register.journal.lines[].creditPencerequired | integer | Integer pence (GBP). |
register.journal.unresolvedrequired | array of string | Differences the journal cannot put right; post those by hand. |
register.journal.existingRefrequired | stringnullable | The fixed asset journal already posted, which posting again replaces. |
register.defaultChargeAccountrequired | object (FixedAssetDefaultChargeAccount)nullable | Null when neither the TB nor the client’s chart of accounts has an account mapped to admin depreciation: add one in the client’s books. |
register.defaultChargeAccount.coderequired | string | |
register.defaultChargeAccount.namerequired | string | |
register.defaultChargeAccount.inTbrequired | boolean | False for an account on the client’s chart of accounts with no balance in this TB yet: the fixed asset journal posts to it under its own code. |
register.lockedReasonrequired | stringnullable | Why you cannot change the register now (C reviewed, or you are not its preparer). |
Errors: 400 Bad request, 401 Unauthorised, 403 Forbidden, 404 Not found, 429 Too many requests, as problem details (application/problem+json).