API Docs / Schemas / MtdIncomeSourcesDto

MtdIncomeSourcesDto

A client's MTD income sources with every deadline HMRC expects of them, and their tax return
deadlines.

Everything a year view needs to draw itself, in one read — and deliberately not scoped
to a tax year
, because HMRC answers all of it per client. Scoping it would re-fetch
identical data every time the practice changed the year on screen. Each period carries the tax
year it is filed against, so a caller filters on a string rather than re-deriving a calendar
rule the MTD service already applied.

The income source list and the obligations answer different questions — the list is what the
client actually has, the obligations carry only the sources HMRC returned periods for — and
joining them is where sources have gone missing before, so the MTD service does it.

Every reason the client's position cannot be shown is resolved before HMRC is called, so the
page explains itself rather than surfacing a bare error: not connected, not authorised and no
National Insurance number on file are all things the practice can act on.

Properties

Name Type Description
availabilityenum

Available NotConnected NotAuthorised MissingClientDetails

Available NotConnected NotAuthorised MissingClientDetails

agentRoleenum

None Main Supporting NotApplicable

None Main Supporting NotApplicable

canViewFinalDeclarationboolean

Whether the tax return obligation was retrievable. Only a main agent may see it — a supporting
agent can submit quarterly updates but cannot finalise the client's tax position.

Whether the tax return obligation was retrievable. Only a main agent may see it — a supporting
agent can submit quarterly updates but cannot finalise the client's tax position.

clientCodestring

The Sodium client the year belongs to, stamped by the API on the way out.

The Sodium client the year belongs to, stamped by the API on the way out.

availableTaxYearsarray of string

Every tax year mentioned anywhere in this response, newest first — what a year picker offers.
HMRC's window only; a caller holding its own filed records for a year HMRC has stopped listing
must still offer that year, or a filed record disappears behind a moving window.

Every tax year mentioned anywhere in this response, newest first — what a year picker offers.
HMRC's window only; a caller holding its own filed records for a year HMRC has stopped listing
must still offer that year, or a filed record disappears behind a moving window.

unavailablePartsarray of string

The parts HMRC could not be asked about — income-sources, obligations or
final-declaration. One part failing leaves the rest usable rather than failing the
read, and a named part means "not asked" rather than "nothing there";
final-declaration failing is routine for a supporting agent rather than a sign of
anything wrong.

The parts HMRC could not be asked about — income-sources, obligations or
final-declaration. One part failing leaves the rest usable rather than failing the
read, and a named part means "not asked" rather than "nothing there";
final-declaration failing is routine for a supporting agent rather than a sign of
anything wrong.

incomeSourcesarray of MtdIncomeSourceDto

The client's income sources with their quarterly update deadlines.

The client's income sources with their quarterly update deadlines.

finalDeclarationarray of MtdObligationPeriodDto

The tax return deadlines, every year HMRC returned. Empty for a supporting agent — check
SodiumHQ.DTOs.MtdSubmissions.MtdIncomeSourcesDto.UnavailableParts to tell that apart from a client with no tax return obligation.

The tax return deadlines, every year HMRC returned. Empty for a supporting agent — check
SodiumHQ.DTOs.MtdSubmissions.MtdIncomeSourcesDto.UnavailableParts to tell that apart from a client with no tax return obligation.

JSON Example

{
  "availability": "Available",
  "agentRole": "None",
  "canViewFinalDeclaration": false,
  "clientCode": "string",
  "availableTaxYears": [
    "string"
  ]
}

Used By Operations