For software companies

#GoFile Connect API

Add HMRC VAT filing to your product with one API call and a redirect. Your software sends the figures; #GoFile owns the last mile — HMRC authorisation, obligation matching, fraud-prevention headers, a hosted human approval, submission and the receipt.

VAT available now Free sandbox HMAC-signed REST Webhooks included

What the Connect API is

A compliance gateway for UK tax filing: your software calls one endpoint with a client and their figures, and #GoFile handles everything between that call and HMRC’s receipt.

Making Tax Digital is not a hard API to call once. It is a hard API to own. Recognition, OAuth grants that expire after 18 months, fraud-prevention headers that must describe the real originating device, obligation matching, period keys you must never invent, submission idempotency, and an audit trail that stands up years later — that is the work, and it never stops.

The Connect API is that work, done and maintained, behind a small REST surface. Version 1 covers VAT: checking a client is authorised, reading their full VAT position, filing a return, and following it to a receipt.

The short version: three calls and a redirect. Check the client, read what’s due, post the figures — then send the authorised person to the hosted approval page we return. You never touch a Government Gateway credential, an HMRC token, or a period key.

Who it’s for

Bookkeeping & accounting software

You already hold the numbers. Add compliant MTD VAT filing without becoming an HMRC integration team.

Vertical & ERP platforms

Trade, retail, hospitality or industry-specific systems that need filing as a feature, not a project.

Practice tools & fintech

Products serving accountants and their clients, where filing has to happen inside your workflow.

Internal finance systems

Groups filing for many entities from one place, with an audit trail per submission.

The API is designed for an agent model: your partner firm connects its HMRC agent services account once, and that single authorisation covers every client it is authorised to act for.

How it works

Every request is a signed REST call. Everything that legally requires a human happens on a page we host.

Check the client is authorised

One call confirms your firm’s agent account is authorised for that VAT number — with a plain answer, not an HMRC error code to decode.

Request
GET /api/v1/vat/193054661/status

Read the client’s VAT position

One call returns every open period with its due date, every fulfilled period, and any filing already in flight. We keep this in step with HMRC so you can poll it as often as you like.

GET /api/v1/vat/193054661
{
  "vat_number": "193054661",
  "mode": "live",
  "obligations": {
    "open": [
      { "period": { "start": "2026-04-01",
                    "end":   "2026-06-30" },
        "due": "2026-08-07",
        "overdue": false }
    ],
    "fulfilled": [ /* filed periods + figures */ ]
  }
}

Post the return

Send the client reference and the nine VAT boxes as decimal strings. Leave the period out and we file the open one. You get back a filing id and a continue_url.

POST /api/v1/vat/file
{
  "external_client_id": "CLIENT-91827",
  "client_name": "Acme Trading Ltd",
  "vat_number": "193054661",
  "return": {
    "vat_due_sales": "12500.00",
    "total_vat_due": "12500.00",
    "net_vat_due":   "8300.00"
    /* ...nine boxes in total */
  }
}

Redirect the authorised person

Send them to the continue_url. They review the return, connect HMRC if it’s their firm’s first filing, and press Confirm & Submit. We submit and capture the receipt.

Follow it to done

Poll the filing or take our webhooks until the status reaches submitted and the HMRC receipt is attached.

GET /api/v1/vat/filing/vfs_…
{
  "id": "vfs_...",
  "status": "submitted",
  "receipt": {
    "gofile_reference": "GF-VAT-123",
    "form_bundle": "258868935084"
  }
}

The hosted approval — and why it matters

HMRC does not simply want a return; it wants to know the return came from a real person on a real device, and that a human took responsibility for the declaration. That is what fraud-prevention headers are for, and getting them wrong is a compliance problem, not a bug.

So the Connect API never asks your software to fake them. When you post a filing we return a URL to a page we host. On that page the authorised person signs in with two-factor authentication, their real device is captured, the return is displayed in full, and they confirm the declaration. Only then do we call HMRC — with headers built from that exact device, snapshotted alongside the submission as evidence.

What this buys you: no Government Gateway credentials in your product, no fraud-header implementation to maintain and re-certify, no declaration wording to get right — and an immutable record of who approved what, tied to the exact figures they saw.

The page carries your client through the one-off HMRC connection too. When a firm files for the first time, it authorises its agent services account there and comes straight back to the filing.

What you don’t have to build

The MTD problemWho owns it
HMRC OAuth grants, refresh, and the 18-month re-authorisation cap#GoFile
Fraud-prevention headers from the true originating device#GoFile
Obligation matching and period keys#GoFile
The human declaration and approval record#GoFile
Submission idempotency and timeout reconciliation#GoFile
Audit trail and submission evidence#GoFile
Your client list and their VAT figuresYou

You are never asked for a period key or a finalised flag — the API refuses them outright, because those are ours to determine and getting them wrong is how bad filings happen.

Sandbox and live

Modes are chosen by the key you sign with, so there is no global switch to flip and nothing to forget in a deployment:

  • gfk_sandbox_… keys file to HMRC’s test environment. Free, unlimited, and safe to run in CI.
  • gfk_live_… keys file real returns.

Both work at the same time. Your test suite can hit sandbox while production files live, and switching between them is a matter of which credential you sign with. Usage, request logs and daily limits are tracked separately per mode.

Security & evidence

Signed requests

Every call carries an HMAC-SHA256 signature over the method, path, timestamp, nonce and body hash. Replays are refused; secrets are shown once and never logged.

Encrypted at rest

HMRC tokens, VAT numbers, client identity and filed figures are encrypted in storage — not merely access-controlled.

Append-only audit

Every state change, HMRC call and approval lands in a ledger that is never overwritten, with the exact headers sent on the wire.

Never a blind retry

A timeout is not treated as failure. Uncertain submissions are reconciled against HMRC’s own record before anything changes.

Rotation is zero-downtime: several keys can be active at once, so you issue the new pair, deploy it, and revoke the old one once nothing signs with it.

Webhooks, logs and the developer portal

Filing is asynchronous by nature — a human has to approve, and HMRC has to answer. Rather than make you poll, we push signed events to your endpoint as a filing moves: awaiting approval, submitted, failed, and more. Each delivery is HMAC-signed with your webhook secret so you can verify it came from us.

The partner portal at api.gofile.co.uk gives your team:

  • API keys — issue sandbox and live pairs, see last use, rotate and revoke.
  • Request logs — every signed request with its status, error code, mode, duration and request id. Signature failures appear too, which is exactly what you need when you are getting HMAC wrong at 2am.
  • Webhook deliveries — status, response code and retry schedule per event.
  • Usage — requests and filings charted by day, split by mode.
  • Billing — invoices, payment methods and your plan.

Pricing

Sandbox

Free

Unlimited test filing against HMRC’s sandbox. Build and run your integration tests at no cost.

Per filing

£1.50

Per successful live VAT return. Failed submissions are never charged. All other API operations are free.

Prices exclude VAT. Filing fees are added to your next monthly invoice. No per-client fees, no minimum volume, and no charge for sandbox filing — you only pay when a real return reaches HMRC.

What’s next

Version 1 is VAT, because that is where MTD is mandatory and volume is highest. The same model — one clean call, a hosted approval, a receipt — is designed to extend to the rest of UK compliance filing.

MTD for Income Tax is the natural next surface, and it is where the value of a simplified API is greatest: HMRC’s own ITSA interface spans a large number of endpoints and shapes, and we intend to collapse that into the same rational surface Connect gives you for VAT. If your roadmap depends on a specific tax or timeline, tell us — partner demand decides the order.

Get started

Create a partner account

Register at api.gofile.co.uk. You get a sandbox key pair immediately — the secret is shown once.

Build against the sandbox

Follow the API reference: check a client, read their position, file a test return, and walk the hosted approval yourself. There is a reference client in plain PHP with no dependencies if you want a working example to read.

Go live

Subscribe to the platform plan, issue a live key, and your partner firm connects its agent services account once. Same code, different credential.

Filing, without becoming an HMRC integration team

Read the reference, or talk to us about what you are building — we are happy to look at your use case before you write any code.

Connect API FAQs

Do my users need a #GoFile account?

The firm that files does — that is the account holding the HMRC agent authorisation and the people who approve returns. Their clients do not. Your software keeps its own client records and refers to them by your own identifiers.

Why is there a hosted approval page? Can I not submit directly?

Because HMRC requires fraud-prevention headers describing the real originating device, and a human declaration for the return. The hosted page is how those are captured honestly and recorded as evidence. It also means the compliance burden — and any future change to HMRC’s requirements — sits with us rather than in your release cycle.

Can I white-label the approval page?

Talk to us about what you need. The journey is deliberately #GoFile-hosted for compliance reasons, but we are interested in partner requirements around presentation and return-to-app flow — you already control where the person lands afterwards.

What happens if a submission times out?

Nothing is assumed. A timeout is never treated as a failure, and we never blindly re-submit — a duplicate VAT return is a serious problem. The filing is reconciled against HMRC’s own record of what it holds for that period, and only then resolved to submitted, failed, or held for a human to review.

How do I test without filing real returns?

Sign with a sandbox key. It files to HMRC’s test environment, is free and unlimited, and is completely separate from live — separate credentials, separate usage counters, separate filing history. Sandbox and live keys work at the same time, so CI never touches production.

What does the API cost to try?

Nothing. Registration and the full sandbox are free — you can build and prove your entire integration before paying anything. The platform plan and per-filing fee apply only when you start filing real returns.

Which taxes are supported?

VAT under Making Tax Digital in version 1. Other filing types follow the same three-call model and are prioritised by partner demand — tell us what you need.

Is there an SDK?

The API is plain signed REST, so any HTTP client works — signing is about ten lines in any language. A dependency-free PHP reference client ships with the documentation, and it is short enough to read start to finish as a specification.

Building something with UK tax filing in it? Get in touch — we would rather understand your use case early than have you discover a gap late.

5.0/5 Rated 5.0/5 from 201 verified customer reviews
★★★★★
“Was let down my usual MTD Bridging company, who promised delivery by 7 August - so in panic looked elsewhere and was impressed by Gofile's user friendly interface.”
— Zosia N., Sole trader · Income Tax
★★★★★
“Fairly straight forward. Tutorials very helpful.”
— Ann A., Sole trader · Income Tax
★★★★★
“Very easy and user friendly. Very fast response from support.”
— , Sole trader · Income Tax