Repository avatar
Other Tools
v0.1.3
active

diya-submit

io.github.diy-accounting-uk/diya-submit

Opens a book, derives VAT return figures and reads stored VAT receipts. Files no return.

Documentation

DIY Accounting Submit™

HMRC recognised software for Making Tax Digital VAT submissions

Submit UK VAT returns to HMRC using the official Making Tax Digital (MTD) APIs.

Website: https://submit.diyaccounting.co.uk Status: Production


What is DIY Accounting Submit?

DIY Accounting Submit is a free web application that enables UK VAT-registered businesses to:

  • View VAT obligations - See your outstanding and fulfilled VAT periods
  • Submit VAT returns - File your VAT return directly to HMRC
  • View submission receipts - Access confirmation of submitted returns
  • Track submission history - Keep records for 7 years (HMRC requirement)

The software connects directly to HMRC's official MTD APIs and implements all required fraud prevention measures.


Key Features

FeatureDescription
Free to useGuest bundle available at no cost
HMRC compliantFull fraud prevention header implementation
SecureData encrypted at rest (AES-256) and in transit (TLS 1.2+)
UK hostedAWS eu-west-2 (London) region
Privacy focusedUser identifiers hashed before storage
Source availableRead the whole source under the PolyForm Internal Use License 1.0.0
7-year retentionSubmission receipts stored per HMRC requirements

How It Works

  1. Sign in with Google (via AWS Cognito)
  2. Authorise the application through HMRC's secure OAuth flow
  3. Enter your VAT return figures
  4. Submit directly to HMRC
  5. Receive confirmation and receipt

Your HMRC Government Gateway credentials are never stored by this application. Authentication is handled entirely by HMRC's secure OAuth service.


Technology

ComponentTechnology
FrontendStatic HTML/JavaScript (no framework dependencies)
BackendNode.js on AWS Lambda
AuthenticationAWS Cognito with Google federation
Data storageAWS DynamoDB (encrypted at rest)
HostingAWS CloudFront + S3
SecurityAWS WAF, TLS 1.2+, fraud prevention headers

HMRC Integration

  • APIs used: VAT MTD (obligations, returns)
  • Connection method: WEB_APP_VIA_SERVER
  • Fraud prevention: All Gov-Client and Gov-Vendor headers implemented
  • Error handling: Full HMRC error code mapping

Compliance

HMRC Requirements

RequirementStatus
Fraud prevention headersImplemented and validated
OAuth 2.0 authenticationImplemented
Error handlingAll HMRC error codes handled
Accessibility (WCAG 2.1 AA)Implemented (13/13 pages pass)
Penetration testingScheduled

Data Protection

RequirementStatus
UK GDPR complianceImplemented
Privacy policyPublished
Terms of servicePublished
Data subject rightsExport/deletion scripts available
72-hour breach notificationDocumented procedures

Organisation

DIY Accounting Limited

  • Registered Office: 37 Sutherland Avenue, Leeds, LS8 1BY.
  • Company Number: 06846849
  • Registered in England and Wales
  • Contact: admin@diyaccounting.co.uk

Documentation

DocumentDescription
Privacy PolicyHow we handle your data
Terms of UseService terms and conditions
User GuideHow to use the application
Accessibility StatementWCAG 2.1 AA compliance

npm scripts

395 scripts in package.json. A group is the text before the first colon; a name below follows it.

GroupScriptsNames
npm run test:218test all app-unit web-unit unit coverage system system-coverage browser enableCognitoNative disableCognitoNative totpCode behaviour allBehaviour allBehaviour-proxy allBehaviour-simulator allBehaviour-ci allBehaviour-prod authBehaviour authBehaviour-proxy authBehaviour-simulator authBehaviour-ci authBehaviour-prod bundleBehaviour bundleBehaviour-proxy bundleBehaviour-simulator bundleBehaviour-ci bundleBehaviour-prod tokenRefreshBehaviour tokenRefreshBehaviour-proxy tokenRefreshBehaviour-simulator tokenRefreshBehaviour-ci tokenRefreshBehaviour-prod submitVatBehaviour submitVatBehaviour-proxy submitVatBehaviour-ci submitVatBehaviour-prod submitVatBehaviour-simulator postVatReturnFraudPreventionHeadersBehaviour postVatReturnFraudPreventionHeadersBehaviour-proxy postVatReturnFraudPreventionHeadersBehaviour-ci postVatReturnFraudPreventionHeadersBehaviour-prod postVatReturnFraudPreventionHeadersBehaviour-simulator getVatObligationsBehaviour getVatObligationsBehaviour-proxy getVatObligationsBehaviour-ci getVatObligationsBehaviour-prod getVatObligationsBehaviour-simulator getVatLiabilitiesBehaviour getVatLiabilitiesBehaviour-proxy getVatLiabilitiesBehaviour-ci getVatLiabilitiesBehaviour-prod getVatLiabilitiesBehaviour-simulator getVatPaymentsBehaviour getVatPaymentsBehaviour-proxy getVatPaymentsBehaviour-ci getVatPaymentsBehaviour-prod getVatPaymentsBehaviour-simulator getVatPenaltiesBehaviour getVatPenaltiesBehaviour-proxy getVatPenaltiesBehaviour-ci getVatPenaltiesBehaviour-prod getVatPenaltiesBehaviour-simulator itsaBusinessDetailsBehaviour itsaBusinessDetailsBehaviour-proxy itsaBusinessDetailsBehaviour-ci itsaBusinessDetailsBehaviour-prod itsaBusinessDetailsBehaviour-simulator itsaObligationsBehaviour itsaObligationsBehaviour-proxy itsaObligationsBehaviour-ci itsaObligationsBehaviour-prod itsaObligationsBehaviour-simulator itsaSelfEmploymentPeriodBehaviour itsaSelfEmploymentPeriodBehaviour-proxy itsaSelfEmploymentPeriodBehaviour-ci itsaSelfEmploymentPeriodBehaviour-prod itsaSelfEmploymentPeriodBehaviour-simulator itsaAnnualSubmissionBehaviour itsaAnnualSubmissionBehaviour-proxy itsaAnnualSubmissionBehaviour-ci itsaAnnualSubmissionBehaviour-prod itsaAnnualSubmissionBehaviour-simulator itsaUkPropertyPeriodBehaviour itsaUkPropertyPeriodBehaviour-proxy itsaUkPropertyPeriodBehaviour-ci itsaUkPropertyPeriodBehaviour-prod itsaUkPropertyPeriodBehaviour-simulator itsaUkPropertyAnnualSubmissionBehaviour itsaUkPropertyAnnualSubmissionBehaviour-proxy itsaUkPropertyAnnualSubmissionBehaviour-ci itsaUkPropertyAnnualSubmissionBehaviour-prod itsaUkPropertyAnnualSubmissionBehaviour-simulator itsaForeignPropertyPeriodBehaviour itsaForeignPropertyPeriodBehaviour-proxy itsaForeignPropertyPeriodBehaviour-ci itsaForeignPropertyPeriodBehaviour-prod itsaForeignPropertyPeriodBehaviour-simulator itsaForeignPropertyAnnualSubmissionBehaviour itsaForeignPropertyAnnualSubmissionBehaviour-proxy itsaForeignPropertyAnnualSubmissionBehaviour-ci itsaForeignPropertyAnnualSubmissionBehaviour-prod itsaForeignPropertyAnnualSubmissionBehaviour-simulator itsaLossesAndClaimsBehaviour itsaLossesAndClaimsBehaviour-proxy itsaLossesAndClaimsBehaviour-ci itsaLossesAndClaimsBehaviour-prod itsaLossesAndClaimsBehaviour-simulator itsaFinalDeclarationBehaviour itsaFinalDeclarationBehaviour-proxy itsaFinalDeclarationBehaviour-ci itsaFinalDeclarationBehaviour-prod itsaFinalDeclarationBehaviour-simulator postVatReturnBehaviour postVatReturnBehaviour-proxy postVatReturnBehaviour-ci postVatReturnBehaviour-prod postVatReturnBehaviour-simulator practiceLicenceBehaviour practiceLicenceBehaviour-proxy practiceLicenceBehaviour-ci practiceLicenceBehaviour-prod practiceLicenceBehaviour-simulator getVatReturnBehaviour getVatReturnBehaviour-proxy getVatReturnBehaviour-ci getVatReturnBehaviour-prod getVatReturnBehaviour-simulator complianceBehaviour complianceBehaviour-proxy complianceBehaviour-ci complianceBehaviour-prod complianceBehaviour-simulator helpBehaviour helpBehaviour-proxy helpBehaviour-ci helpBehaviour-prod helpBehaviour-simulator vatValidationBehaviour vatValidationBehaviour-proxy vatValidationBehaviour-ci vatValidationBehaviour-prod vatValidationBehaviour-simulator hmrcAssistBehaviour hmrcAssistBehaviour-proxy hmrcAssistBehaviour-ci hmrcAssistBehaviour-simulator vatSchemesBehaviour vatSchemesBehaviour-proxy vatSchemesBehaviour-ci vatSchemesBehaviour-prod vatSchemesBehaviour-simulator passRedemptionBehaviour passRedemptionBehaviour-proxy passRedemptionBehaviour-ci passRedemptionBehaviour-prod passRedemptionBehaviour-simulator tokenEnforcementBehaviour tokenEnforcementBehaviour-proxy tokenEnforcementBehaviour-ci tokenEnforcementBehaviour-prod tokenEnforcementBehaviour-simulator paymentBehaviour paymentBehaviour-proxy paymentBehaviour-ci paymentBehaviour-prod paymentBehaviour-simulator generatePassActivityBehaviour generatePassActivityBehaviour-proxy generatePassActivityBehaviour-ci generatePassActivityBehaviour-prod generatePassActivityBehaviour-simulator commissionJourneysBehaviour commissionJourneysBehaviour-simulator commissionJourneysStripeBehaviour commissionJourneysStripeBehaviour-ci companiesHouseBehaviour companiesHouseBehaviour-proxy companiesHouseBehaviour-ci companiesHouseBehaviour-prod companiesHouseBehaviour-simulator diyaGlBehaviour diyaGlBehaviour-proxy diyaGlBehaviour-ci diyaGlBehaviour-prod diyaGlBehaviour-simulator mcpHostedBehaviour mcpHostedBehaviour-simulator mcpHostedBehaviour-ci mcpHmrcGrantBehaviour mcpHmrcGrantBehaviour-simulator mcpPrepareVatReturnBehaviour mcpPrepareVatReturnBehaviour-simulator diyaGlSubscriptionBehaviour diyaGlSubscriptionBehaviour-ci changeRegisteredOfficeBehaviour changeRegisteredOfficeBehaviour-proxy changeRegisteredOfficeBehaviour-ci changeRegisteredOfficeBehaviour-prod changeRegisteredOfficeBehaviour-simulator changeRegisteredEmailBehaviour changeRegisteredEmailBehaviour-proxy changeRegisteredEmailBehaviour-ci changeRegisteredEmailBehaviour-prod changeRegisteredEmailBehaviour-simulator fileMicroEntityAccountsBehaviour fileMicroEntityAccountsBehaviour-proxy fileMicroEntityAccountsBehaviour-ci fileMicroEntityAccountsBehaviour-prod fileMicroEntityAccountsBehaviour-simulator companyTaxReturnBehaviour companyTaxReturnBehaviour-simulator companyTaxReturnBehaviour-ci fileConfirmationStatementBehaviour fileConfirmationStatementBehaviour-proxy fileConfirmationStatementBehaviour-ci fileConfirmationStatementBehaviour-prod fileConfirmationStatementBehaviour-simulator
npm run accessibility:39proxy ci prod proxy-report ci-report prod-report pa11y-proxy pa11y-ci pa11y-prod pa11y-proxy-report pa11y-ci-report pa11y-prod-report axe-proxy axe-ci axe-prod axe-proxy-report axe-ci-report axe-prod-report axe-wcag22-proxy axe-wcag22-ci axe-wcag22-prod axe-wcag22-proxy-report axe-wcag22-ci-report axe-wcag22-prod-report lighthouse-proxy lighthouse-ci lighthouse-prod lighthouse-proxy-report lighthouse-ci-report lighthouse-prod-report lighthouse-multi-proxy lighthouse-multi-ci lighthouse-multi-prod text-spacing-proxy text-spacing-ci text-spacing-prod text-spacing-proxy-report text-spacing-ci-report text-spacing-prod-report
npm run penetration:21proxy ci prod proxy-report ci-report prod-report eslint eslint-report audit audit-report audit-dev audit-dev-report retire retire-report zap-proxy zap-ci zap-prod zap-urls-check zap-proxy-report zap-ci-report zap-prod-report
npm run compliance:9proxy ci prod proxy-report ci-report prod-report proxy-report-md ci-report-md prod-report-md
npm run build:8build static-content mtd-calendar chatgpt-plugin review-links rates-page filing-pages welsh
npm run video:8mcp-diya-gl accounting-diya-gl-profit accounting-spreadsheet-profit publish embed-check walkthrough stale record
npm run diagram:7app-all app-auth-billing app-hmrc app-account app-ops app-delivery environment
npm run ads:5inventory sync report conversions-upload forecast
npm run formatting:5formatting js js-fix java java-fix
npm run msads:5consent whoami inventory forecast report
npm run seo:4structured-data-submit-prod structured-data-prod structured-data-submit-ci structured-data-ci
npm run cdk:3synth-environment synth-application cdk
npm run deploy:3app app-ci app-prod
npm run start:3start simulator proxy
npm run stripe:3cancel trigger-lifecycle configure-policies
npm run ai-ranges:2refresh check
npm run bing:2report report-prod
npm run bundle:2bundle books
npm run capabilities:2generate check
npm run data:2data simulator
npm run ga4:2sync bigquery-sync
npm run google:2reconsent inventory
npm run mcp:2vat-sandbox-proof accounts-test-service-proof
npm run searchconsole:2sync report
npm run server:2server simulator
npm run verify:2tax-sources waf-false-positives
npm run auth:1auth
npm run campaign:1threads
npm run cdk-ci:1cdk-ci
npm run clean:1clean
npm run cloudfront:1set-origins
npm run docker:1build
npm run everything:1everything
npm run exploratory:1diff
npm run formatting-fix:1formatting-fix
npm run generate:1submission-record
npm run generate-pass:1generate-pass
npm run lighthouse:1multi
npm run lint:1workflows
npm run linting:1linting
npm run linting-fix:1linting-fix
npm run marketing:1build
npm run playwright:1install
npm run prepare:1prepare
npm run pretest:1pretest
npm run scripts:1table
npm run search:1health
npm run set-apex-origins:1set-apex-origins
npm run simulator:1simulator
npm run site:1screenshots
npm run test-report:1test-report
npm run update:1java
npm run update-to-greatest:1update-to-greatest
npm run update-to-latest:1update-to-latest
npm run update-to-minor:1update-to-minor
npm run users:1provision
npm run validate:1accounts-ixbrl
npm run videos:1manifest

Licence

The service is free to use and the source is available. The source is licensed under the PolyForm Internal Use License 1.0.0, with an additional grant for accountants and bookkeepers.

  • Use the hosted service at https://submit.diyaccounting.co.uk.
  • Run your own copy on your own machine, for your own or your company's business.
  • An accountant or bookkeeper may use it to prepare accounts for their own clients.
  • Do not host it for other people, under our name or any other, and do not pass the source on.

See LICENSE for the full text and LICENSING.md for which licence covers which file.

Contributions

This repository does not accept contributions. Please do not send a pull request.

Found a security problem? SECURITY.md says how to tell us privately.

Trade marks

DIY Accounting™, DIY Accounting Submit™ and DIYA-GL™ are trade marks of DIY Accounting Limited. The licence gives you no right to use them. See TRADEMARKS.md.

Third-Party Attributions

  • HMRC and Making Tax Digital are trademarks of HM Revenue and Customs
  • AWS is a trademark of Amazon Web Services
  • Google is a trademark of Alphabet Inc.

Support

For support enquiries: admin@diyaccounting.co.uk

For HMRC-specific questions about VAT or Making Tax Digital, please contact HMRC directly or visit gov.uk/vat.


DIY Accounting Submit is HMRC recognised software. This software is not endorsed, approved, or certified by HMRC.

NPM
@diy-accounting-uk/diya-submit
Install Command
npm install @diy-accounting-uk/diya-submit