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

ToolVersionResultDetail
pdfops APIhosted, tested 2026-08-06verified + deterministic flatten76/76 supported fields landed; flatten=true byte-deterministic (sha256 a1b9fc23a24f…)
pdf-lib1.17.1verified (76/76)76 fields filled in-process
@cantoo/pdf-lib (fork)2.6.5verified (76/76)76 fields filled in-process
pypdf6.15.0text fields verified (59/59)59 text fields written and re-read (text fields only)
pdftk-java3.3.3verified (76/76)76 fields filled via FDF and re-dumped
qpdf --check11.9.0warningsWARNING: 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 check24.02.0values 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

Quirks & limitations

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 nameTypemaxLengthOptions
txtNameTextField26
txtCompanyNameTextField40
AgentNameTextField26
YourAddress1TextField30
YourAddress2TextField30
YourAddress3TextField40
YourPost codeTextField20
YourPhoneNumberTextField30
AgentsAddress1TextField30
AgentsAddress2TextField30
AgentsAddress3TextField40
AgentsPostCodeTextField20
AgentsPhoneNumberTextField30
Agent code SATextField26
Agent code CTTextField30
Client refTextField20
chkSACheckBox
chkPartnershipCheckBox
SA NI 12TextField2
SA NI 34TextField2
SA NI 56TextField2
SA NI 78TextField2
SA NI 9TextField1
UTR 1-5TextField5
UTR 6-10TextField5
chkUTRCheckBox
chk to agentCheckBox
chkTrustCheckBox
TR UTR 1-5TextField5
TR UTR 6-10TextField5
chkPAYECheckBox
PAYE NI 12TextField2
PAYE NI 34TextField2
PAYE NI 56TextField2
PAYE NI 78TextField2
PAYE NI 9TextField1
Clear formButton
chkCorpTaxCheckBox
CRNTextField8
CT UTR 1-5TextField5
CT UTR 6-10TextField5
chkTaxcreditsCheckBox
TC NI 12TextField2
TC NI 34TextField2
TC NI 56TextField2
TC NI 78TextField2
TC NI 9TextField1
Joint claimants nameTextField50
JC NI 12TextField2
JC NI 34TextField2
JC NI 56TextField2
JC NI 78TextField2
JC NI 9TextField1
chkVATCheckBox
VATTextField9
chkVAT not registeredCheckBox
chkCISCheckBox
CIS reference numberTextField50
CIS PAYE Ref no 1-3TextField3
CIS PAYE Ref no 4-13TextField10
CIS Agent Gateway IDTextField50
CIS PAYE IDTextField50
chkAuthAgentCIS1CheckBox
chkAuthAgent CIS2CheckBox
chkEmp PAYE schemeCheckBox
Emp PAYE Ref no 1-3TextField3
Emp PAYE Ref no 4-13TextField10
EMP PAYE Agent Gateway IDTextField50
EMP PAYE IDTextField50
EMPchkAuthAgentPAYECheckBox
EMPchkAuthAgent CISCheckBox
chkVATDIYCheckBox
VATDIY NI 12TextField2
VATDIY NI 34TextField2
VATDIY NI 56TextField2
VATDIY NI 78TextField2
VATDIY NI 9TextField1

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.