Making Tax Digital

MTD ITSA compliance - quarterly submissions, HMRC API integration, and SA103 auto-fill.

What is MTD ITSA?#

Making Tax Digital for Income Tax Self Assessment requires sole traders and landlords to keep digital records and submit quarterly updates using compatible software.

Rollout Timeline#

Date Who
April 2026 Income over £50,000
April 2027 Income over £30,000
TBC Income over £20,000

HMRC API Integration#

API Purpose Status
Self Assessment SA returns Live
Obligations Deadlines Live
Business Income BISS data Live
Individual Calculations Tax calcs Live
National Insurance NI lookup Live

OAuth 2.0 Flow#

sequenceDiagram
    participant User
    participant TaxMTD
    participant HMRC
    User->>TaxMTD: Click "Connect HMRC"
    TaxMTD->>HMRC: Redirect to Gov Gateway
    HMRC->>User: Login & Authorise
    HMRC->>TaxMTD: Auth code callback
    TaxMTD->>HMRC: Exchange for access token
    TaxMTD->>TaxMTD: Store encrypted tokens

Quarterly Schedule#

Quarter Period Deadline
Q1 6 Apr - 5 Jul 5 August
Q2 6 Jul - 5 Oct 5 November
Q3 6 Oct - 5 Jan 5 February
Q4 6 Jan - 5 Apr 5 May
Final Full year 31 January

Quarterly Update Payload#

Each submission includes:

{
  "totalIncome": 12500.00,
  "totalExpenses": 3200.00,
  "netProfit": 9300.00,
  "taxableProfit": 9300.00,
  "incomeTaxCharged": 1860.00,
  "nic2": 44.85,
  "nic4": 558.00,
  "totalTaxDue": 2462.85
}

Setting Up HMRC#

  1. Navigate to Settings → HMRC
  2. Enter your National Insurance Number (NINO)
  3. Click Authorise → redirect to Gov Gateway
  4. Log in with your Government Gateway credentials
  5. Grant TaxMTD permission
  6. View obligations under Making Tax Digital

All submissions require explicit user confirmation. TaxMTD never submits to HMRC automatically.

API#

// Check HMRC connection
const status = await $fetch('https://taxmtd.uk/api/hmrc/status')

// Get obligations
const obligations = await $fetch('https://taxmtd.uk/api/hmrc/auth')

// Get SA103 data
const sa103 = await $fetch('https://taxmtd.uk/api/hmrc/sa103')

// Store NINO
await $fetch('https://taxmtd.uk/api/hmrc/nino', {
  method: 'POST',
  body: { nino: 'QQ123456C' }
})
Was this page helpful? Share it.