HMRC UK Tax Authority · Capability

HMRC VAT (Making Tax Digital) API

The HMRC VAT Making Tax Digital (MTD) API enables VAT-registered businesses and agents to submit VAT returns, view VAT obligations, liabilities, and payments, in compliance with UK Making Tax Digital requirements. Requires OAuth 2.0 authentication and mandatory fraud prevention headers on all requests.

Run with Naftiko HmrcAPI

What You Can Do

GET
Getvatobligations — Retrieve VAT obligations
/organisations/vat/{vrn}/obligations
POST
Submitvatreturn — Submit a VAT return
/organisations/vat/{vrn}/returns
GET
Getvatreturn — View a submitted VAT return
/organisations/vat/{vrn}/returns/{periodKey}
GET
Getvatpayments — Retrieve VAT payments
/organisations/vat/{vrn}/payments
GET
Getvatliabilities — Retrieve VAT liabilities
/organisations/vat/{vrn}/liabilities

MCP Tools

getvatobligations

Retrieve VAT obligations

read-only idempotent
submitvatreturn

Submit a VAT return

getvatreturn

View a submitted VAT return

read-only idempotent
getvatpayments

Retrieve VAT payments

read-only idempotent
getvatliabilities

Retrieve VAT liabilities

read-only idempotent

Capability Spec

hmrc-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: HMRC VAT (Making Tax Digital) API
  description: The HMRC VAT Making Tax Digital (MTD) API enables VAT-registered businesses and agents to submit VAT returns,
    view VAT obligations, liabilities, and payments, in compliance with UK Making Tax Digital requirements. Requires OAuth
    2.0 authentication and mandatory fraud prevention headers on all requests.
  tags:
  - Hmrc
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: hmrc
    baseUri: https://api.service.hmrc.gov.uk
    description: HMRC VAT (Making Tax Digital) API HTTP API.
    authentication:
      type: bearer
      token: '{{HMRC_TOKEN}}'
    resources:
    - name: organisations-vat-vrn-obligations
      path: /organisations/vat/{vrn}/obligations
      operations:
      - name: getvatobligations
        method: GET
        description: Retrieve VAT obligations
        inputParameters:
        - name: vrn
          in: path
          type: string
          required: true
          description: VAT Registration Number (9 digits)
        - name: from
          in: query
          type: string
          required: true
          description: Obligation period start date (YYYY-MM-DD), minimum 2017-01-01
        - name: to
          in: query
          type: string
          required: true
          description: Obligation period end date (must be within 366 days of 'from')
        - name: status
          in: query
          type: string
        - name: Authorization
          in: header
          type: string
          required: true
          description: Bearer token (OAuth 2.0)
        - name: Gov-Client-Connection-Method
          in: header
          type: string
          required: true
          description: Fraud prevention header – client connection method
        - name: Gov-Vendor-Version
          in: header
          type: string
          required: true
          description: Fraud prevention header – vendor application version
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: organisations-vat-vrn-returns
      path: /organisations/vat/{vrn}/returns
      operations:
      - name: submitvatreturn
        method: POST
        description: Submit a VAT return
        inputParameters:
        - name: vrn
          in: path
          type: string
          required: true
        - name: Authorization
          in: header
          type: string
          required: true
        - name: Gov-Client-Connection-Method
          in: header
          type: string
          required: true
        - name: Gov-Vendor-Version
          in: header
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: organisations-vat-vrn-returns-periodkey
      path: /organisations/vat/{vrn}/returns/{periodKey}
      operations:
      - name: getvatreturn
        method: GET
        description: View a submitted VAT return
        inputParameters:
        - name: vrn
          in: path
          type: string
          required: true
        - name: periodKey
          in: path
          type: string
          required: true
          description: Period key from the obligation (e.g., "23AA")
        - name: Authorization
          in: header
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: organisations-vat-vrn-payments
      path: /organisations/vat/{vrn}/payments
      operations:
      - name: getvatpayments
        method: GET
        description: Retrieve VAT payments
        inputParameters:
        - name: vrn
          in: path
          type: string
          required: true
        - name: from
          in: query
          type: string
          required: true
        - name: to
          in: query
          type: string
          required: true
        - name: Authorization
          in: header
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: organisations-vat-vrn-liabilities
      path: /organisations/vat/{vrn}/liabilities
      operations:
      - name: getvatliabilities
        method: GET
        description: Retrieve VAT liabilities
        inputParameters:
        - name: vrn
          in: path
          type: string
          required: true
        - name: from
          in: query
          type: string
          required: true
        - name: to
          in: query
          type: string
          required: true
        - name: Authorization
          in: header
          type: string
          required: true
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: hmrc-rest
    description: REST adapter for HMRC VAT (Making Tax Digital) API.
    resources:
    - path: /organisations/vat/{vrn}/obligations
      name: getvatobligations
      operations:
      - method: GET
        name: getvatobligations
        description: Retrieve VAT obligations
        call: hmrc.getvatobligations
        with:
          vrn: rest.vrn
        outputParameters:
        - type: object
          mapping: $.
    - path: /organisations/vat/{vrn}/returns
      name: submitvatreturn
      operations:
      - method: POST
        name: submitvatreturn
        description: Submit a VAT return
        call: hmrc.submitvatreturn
        with:
          vrn: rest.vrn
        outputParameters:
        - type: object
          mapping: $.
    - path: /organisations/vat/{vrn}/returns/{periodKey}
      name: getvatreturn
      operations:
      - method: GET
        name: getvatreturn
        description: View a submitted VAT return
        call: hmrc.getvatreturn
        with:
          vrn: rest.vrn
          periodKey: rest.periodKey
        outputParameters:
        - type: object
          mapping: $.
    - path: /organisations/vat/{vrn}/payments
      name: getvatpayments
      operations:
      - method: GET
        name: getvatpayments
        description: Retrieve VAT payments
        call: hmrc.getvatpayments
        with:
          vrn: rest.vrn
        outputParameters:
        - type: object
          mapping: $.
    - path: /organisations/vat/{vrn}/liabilities
      name: getvatliabilities
      operations:
      - method: GET
        name: getvatliabilities
        description: Retrieve VAT liabilities
        call: hmrc.getvatliabilities
        with:
          vrn: rest.vrn
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: hmrc-mcp
    transport: http
    description: MCP adapter for HMRC VAT (Making Tax Digital) API for AI agent use.
    tools:
    - name: getvatobligations
      description: Retrieve VAT obligations
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: hmrc.getvatobligations
      with:
        vrn: tools.vrn
        from: tools.from
        to: tools.to
        status: tools.status
      inputParameters:
      - name: vrn
        type: string
        description: VAT Registration Number (9 digits)
        required: true
      - name: from
        type: string
        description: Obligation period start date (YYYY-MM-DD), minimum 2017-01-01
        required: true
      - name: to
        type: string
        description: Obligation period end date (must be within 366 days of 'from')
        required: true
      - name: status
        type: string
        description: status
      outputParameters:
      - type: object
        mapping: $.
    - name: submitvatreturn
      description: Submit a VAT return
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: hmrc.submitvatreturn
      with:
        vrn: tools.vrn
      inputParameters:
      - name: vrn
        type: string
        description: vrn
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: getvatreturn
      description: View a submitted VAT return
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: hmrc.getvatreturn
      with:
        vrn: tools.vrn
        periodKey: tools.periodKey
      inputParameters:
      - name: vrn
        type: string
        description: vrn
        required: true
      - name: periodKey
        type: string
        description: Period key from the obligation (e.g., "23AA")
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: getvatpayments
      description: Retrieve VAT payments
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: hmrc.getvatpayments
      with:
        vrn: tools.vrn
        from: tools.from
        to: tools.to
      inputParameters:
      - name: vrn
        type: string
        description: vrn
        required: true
      - name: from
        type: string
        description: from
        required: true
      - name: to
        type: string
        description: to
        required: true
      outputParameters:
      - type: object
        mapping: $.
    - name: getvatliabilities
      description: Retrieve VAT liabilities
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: hmrc.getvatliabilities
      with:
        vrn: tools.vrn
        from: tools.from
        to: tools.to
      inputParameters:
      - name: vrn
        type: string
        description: vrn
        required: true
      - name: from
        type: string
        description: from
        required: true
      - name: to
        type: string
        description: to
        required: true
      outputParameters:
      - type: object
        mapping: $.
binds:
- namespace: env
  keys:
    HMRC_TOKEN: HMRC_TOKEN