Registry
HMRC 64-8 — programmatic fill compatibility
Authorising your agent · HM Revenue & Customs (HMRC) · HMRC 05/25. Tested 2026-08-06 on the unmodified upstream blank — every number below comes from a recorded run, not from documentation.
Verdict at a glance
| Tool | Version | Result | Detail |
|---|---|---|---|
| pdfops API | hosted, tested 2026-08-06 | verified + deterministic flatten | 76/76 supported fields landed; flatten=true byte-deterministic (sha256 a1b9fc23a24f…) |
| pdf-lib | 1.17.1 | verified (76/76) | 76 fields filled in-process |
| @cantoo/pdf-lib (fork) | 2.6.5 | verified (76/76) | 76 fields filled in-process |
| pypdf | 6.15.0 | text fields verified (59/59) | 59 text fields written and re-read (text fields only) |
| pdftk-java | 3.3.3 | verified (76/76) | 76 fields filled via FDF and re-dumped |
| qpdf --check | 11.9.0 | warnings | WARNING: public/registry/blank/hmrc-64-8.pdf: page 2: shared object 570: in hint table but not computed list | qpdf: operation succeeded with warnings |
| poppler render check | 24.02.0 | values render (59/59) | 59/59 filled text values present in pdftotext output of the pdf-lib-filled file; page-1 raster sha256 0c08158ddb19… |
File facts
- Source: https://assets.publishing.service.gov.uk/media/6852e9f02b367fdd44c15e8a/64-8.pdf (issuer page: here)
- Blank tested: hmrc-64-8.pdf · 1038 KB · sha256
9b52438ecc4d9e4aa4e67d4a61c21043b5419b755c111dcddf76b9fb1abaafc4 - License: Crown copyright, published under the Open Government Licence v3.0. The hash-verified blank is redistributed here unmodified.
- Structure: 3 pages · AcroForm
- Fields: 77 (59 text, 17 checkbox, 1 button)
Quirks & limitations
- The first non-US, non-XFA jurisdiction in this registry: a plain AcroForm (no XFA layer at all) from HMRC, the UK's tax authority — useful as a check that this registry's US-federal-heavy findings (XFA drop, maxLength enforcement) generalize outside the IRS/USCIS family rather than being an artifact of US agencies' specific tooling.
- A4 page size (595 x 842pt), not US Letter — a real-world reminder that page-geometry assumptions baked into a filler (e.g. fixed-DPI raster preview sizing) can't be hardcoded to Letter.
- Carries field-level JavaScript (/AA actions) like the US federal forms in this registry, but built with Adobe InDesign CS4 exporting through Adobe PDF Library 9.0 rather than LiveCycle Designer — a different production pipeline arriving at the same 'JS the non-Adobe fillers won't run' outcome.
- 77 fields covering both the individual/Self Assessment authorisation (page 1) and the business-tax authorisation (page 2) sections on one combined form, plus signature/date fields on page 3.
Tested request
This exact shape ran against the live API during the recorded test (values here shortened to two fields; the test filled all 76 supported fields). With flatten=true, two identical runs produced byte-identical output — sha256 a1b9fc23a24febe9ad8a9ecb3123a127eb7a1f1282bdfdfe8f019fc1d3b24f1f.
curl -X POST https://pdfops.dev/api/fill-form \
-F "pdf=@hmrc-64-8.pdf" \
-F 'fields={"txtName":"PDFops","txtCompanyName":"PDFops"}' \
-F "flatten=true" \
-o filled.pdf
Enumerate all 77 field names first with the inspector or POST /api/inspect.
Field schema
All 77 fields (name, type, maxLength, options)
| Field name | Type | maxLength | Options |
|---|---|---|---|
txtName | TextField | 26 | |
txtCompanyName | TextField | 40 | |
AgentName | TextField | 26 | |
YourAddress1 | TextField | 30 | |
YourAddress2 | TextField | 30 | |
YourAddress3 | TextField | 40 | |
YourPost code | TextField | 20 | |
YourPhoneNumber | TextField | 30 | |
AgentsAddress1 | TextField | 30 | |
AgentsAddress2 | TextField | 30 | |
AgentsAddress3 | TextField | 40 | |
AgentsPostCode | TextField | 20 | |
AgentsPhoneNumber | TextField | 30 | |
Agent code SA | TextField | 26 | |
Agent code CT | TextField | 30 | |
Client ref | TextField | 20 | |
chkSA | CheckBox | ||
chkPartnership | CheckBox | ||
SA NI 12 | TextField | 2 | |
SA NI 34 | TextField | 2 | |
SA NI 56 | TextField | 2 | |
SA NI 78 | TextField | 2 | |
SA NI 9 | TextField | 1 | |
UTR 1-5 | TextField | 5 | |
UTR 6-10 | TextField | 5 | |
chkUTR | CheckBox | ||
chk to agent | CheckBox | ||
chkTrust | CheckBox | ||
TR UTR 1-5 | TextField | 5 | |
TR UTR 6-10 | TextField | 5 | |
chkPAYE | CheckBox | ||
PAYE NI 12 | TextField | 2 | |
PAYE NI 34 | TextField | 2 | |
PAYE NI 56 | TextField | 2 | |
PAYE NI 78 | TextField | 2 | |
PAYE NI 9 | TextField | 1 | |
Clear form | Button | ||
chkCorpTax | CheckBox | ||
CRN | TextField | 8 | |
CT UTR 1-5 | TextField | 5 | |
CT UTR 6-10 | TextField | 5 | |
chkTaxcredits | CheckBox | ||
TC NI 12 | TextField | 2 | |
TC NI 34 | TextField | 2 | |
TC NI 56 | TextField | 2 | |
TC NI 78 | TextField | 2 | |
TC NI 9 | TextField | 1 | |
Joint claimants name | TextField | 50 | |
JC NI 12 | TextField | 2 | |
JC NI 34 | TextField | 2 | |
JC NI 56 | TextField | 2 | |
JC NI 78 | TextField | 2 | |
JC NI 9 | TextField | 1 | |
chkVAT | CheckBox | ||
VAT | TextField | 9 | |
chkVAT not registered | CheckBox | ||
chkCIS | CheckBox | ||
CIS reference number | TextField | 50 | |
CIS PAYE Ref no 1-3 | TextField | 3 | |
CIS PAYE Ref no 4-13 | TextField | 10 | |
CIS Agent Gateway ID | TextField | 50 | |
CIS PAYE ID | TextField | 50 | |
chkAuthAgentCIS1 | CheckBox | ||
chkAuthAgent CIS2 | CheckBox | ||
chkEmp PAYE scheme | CheckBox | ||
Emp PAYE Ref no 1-3 | TextField | 3 | |
Emp PAYE Ref no 4-13 | TextField | 10 | |
EMP PAYE Agent Gateway ID | TextField | 50 | |
EMP PAYE ID | TextField | 50 | |
EMPchkAuthAgentPAYE | CheckBox | ||
EMPchkAuthAgent CIS | CheckBox | ||
chkVATDIY | CheckBox | ||
VATDIY NI 12 | TextField | 2 | |
VATDIY NI 34 | TextField | 2 | |
VATDIY NI 56 | TextField | 2 | |
VATDIY NI 78 | TextField | 2 | |
VATDIY NI 9 | TextField | 1 |
Frequently asked
Can I fill the HMRC 64-8 programmatically?
Yes — the blank HMRC 05/25 HMRC 64-8 is a fillable AcroForm with 77 fields. In our tested run, all 76 supported fields were filled through the pdfops API and verified by re-inspecting the output; upstream pdf-lib also round-trips it, and pypdf handled its text fields. Field names are listed in the schema on this page.
← All forms in the registry · Inspect your own PDF · Make a flat PDF fillable