Registry entry
Denmark Consent Declaration for a Driving Licence Application, Under 18 — Samtykkeerklæring ved ansøgning om kørekort, Under 18 år (P23T)
Denmark's form P23T, "Samtykkeerklæring ved ansøgning om kørekort — Under 18 år" (Consent Declaration for a Driving Licence Application, under 18), published by Færdselsstyrelsen (the Danish Road Traffic Authority) and required whenever a driving-licence applicant (kørekortansøger) is under 18 years of age. Because a minor cannot independently consent to holding a driving licence, whoever holds parental custody (forældremyndighed) over the applicant must declare, under penalty of Section 163 of the Danish Criminal Code, that they consent to the licence being issued. The form's own two parallel "Part 1"/"Part 2" columns let it capture either a single sole-custody holder's consent or, where custody is shared, both joint-custody holders' consent side by side. This schema models the form's own applicant header (name and personnummer) plus both consent-holder columns in full (name, personnummer, sole-vs-joint-custody declaration, and date-and-signature) and the destination-municipality header field where the declaration is shown/presented ("Forevist kommunen"). It is presented in person, alongside the underlying driving-licence application itself, at the applicant's kommune (municipality) citizen service centre; this schema models the form's own data fields, not an online submission channel. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Kingdom of Denmark or Færdselsstyrelsen.
Registry entry
dk/fstyr/samtykkeerklaering-koerekort-under-18
Machine access
- Schema document
registry/dk/fstyr/samtykkeerklaering-koerekort-under-18/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/dk/fstyr/samtykkeerklaering-koerekort-under-18/1.0.0/VERIFICATION.mdtext/markdown- Registry catalog
registry/index.jsonone record per schema id
Field reference
14 fields, read from the published schema.json, with names, types, requiredness, and validation as the document states them. The live government form remains the authoritative source.
Fields
-
presentedAtMunicipalityNameAndAddressstring optionalThe name and address of the kommune (municipality) citizen service centre where this consent declaration is presented, alongside the underlying driving-licence application, for verification. Ambiguous on the source form between an applicant/guardian pre-filling which office it will be shown at and a staff confirmation stamp; modelled here as optional and applicant/guardian-facing rather than excluded — see VERIFICATION.md.
length: 0–500 -
applicantPersonalIdentityNumberstring requiredThe driving-licence applicant's (the minor's) 10-digit Danish CPR number (personnummer).
patternclassification: sensitive-pii -
applicantFirstNamestring requiredThe driving-licence applicant's (the minor's) given name(s).
length: 1–200classification: pii -
applicantLastNamestring requiredThe driving-licence applicant's (the minor's) surname.
length: 1–200classification: pii -
firstGuardianNamestring requiredThe name of the first parent/legal guardian (consent holder) giving consent to the licence being issued.
length: 1–200classification: pii -
firstGuardianPersonalIdentityNumberstring requiredThe first parent/legal guardian's 10-digit Danish CPR number (personnummer).
patternclassification: sensitive-pii -
firstGuardianHasSoleCustodyboolean optionalThe first consent holder declares, under penalty of Section 163 of the Danish Criminal Code, that they are the sole holder (eneindehaver) of parental custody over the applicant. One of two independent, non-grouped PDF checkboxes (checkBox:true, radioButton:false); see exclusivityGroups. Not itself requiredWhen-gated, consistent with this registry's convention of not forcing an answer onto an independent, non-grouped checkbox pair.
-
firstGuardianHasJointCustodyboolean optionalThe first consent holder declares, under penalty of Section 163 of the Danish Criminal Code, that they are a joint holder (medindehaver) of parental custody over the applicant, alongside a second custody holder who must also consent (see secondGuardian* fields). One of two independent, non-grouped PDF checkboxes (checkBox:true, radioButton:false); see exclusivityGroups.
-
firstGuardianDateAndSignaturestring requiredA physical, ink date-and-signature block completed in person by the first consent holder, given under penalty of Section 163 of the Danish Criminal Code. Not a hand-drawn/image signature field per this registry's convention for other in-person print-and-sign Danish forms — modelled as the printed date-plus-signature line the consent holder completes on paper.
length: 1–200 -
secondGuardianNamestring optionalThe name of the second parent/legal guardian (consent holder), required only where the first consent holder has declared joint (not sole) custody — per this registry's dk/um/application-for-danish-passport precedent for the structurally identical two-column consent pattern, a sole-custody declaration means no second consent holder exists.
length: 1–200classification: pii -
secondGuardianPersonalIdentityNumberstring optionalThe second parent/legal guardian's 10-digit Danish CPR number (personnummer), required only where the first consent holder has declared joint custody.
patternclassification: sensitive-pii -
secondGuardianHasSoleCustodyboolean optionalThe second consent holder declares, under penalty of Section 163 of the Danish Criminal Code, that they are the sole holder (eneindehaver) of parental custody over the applicant. One of two independent, non-grouped PDF checkboxes (checkBox:true, radioButton:false); see exclusivityGroups. Relevant only when a second consent holder exists (see secondGuardianName); not itself requiredWhen-gated, consistent with this registry's convention of not forcing an answer onto an independent, non-grouped checkbox pair.
-
secondGuardianHasJointCustodyboolean optionalThe second consent holder declares, under penalty of Section 163 of the Danish Criminal Code, that they are a joint holder (medindehaver) of parental custody over the applicant. One of two independent, non-grouped PDF checkboxes (checkBox:true, radioButton:false); see exclusivityGroups.
-
secondGuardianDateAndSignaturestring optionalA physical, ink date-and-signature block completed in person by the second consent holder, given under penalty of Section 163 of the Danish Criminal Code, required only where the first consent holder has declared joint custody. Not a hand-drawn/image signature field per this registry's convention for other in-person print-and-sign Danish forms.
length: 1–200
Verification record
Why this candidate (GOV-2346, "GovSchema Standard Research")
Denmark's DMV vertical was its last open vertical (5 of 6 already modelled: Passport, Taxes, National ID, Business Formation, Visa). A prior cycle (GOV-2253) screened and rejected two DMV candidates: Færdselsstyrelsen's primary P23 driving-licence application, a genuine, current AcroForm but a shared, multi-party 397-field record card filled progressively by driving schools, police, and kommune staff over the licence's lifetime — not a citizen-facing intake form — and Motorstyrelsen's vehicle-registration/ re-registration flow, exclusively MitID/TastSelv-login-gated with no static fallback. This cycle's scouting (completed before this authoring pass; not redone here) found P23T, "Samtykkeerklæring ved ansøgning om kørekort — Under 18 år" (Consent Declaration for a Driving Licence Application, under 18) — a distinct, narrowly-scoped companion form P23's own under-18 branch references, containing only the parent/guardian consent declaration with no kommune/kørelærer/syn institutional fill-in section of any kind, unlike every previously-rejected DMV candidate. International-permit and form 21.093 candidates were also named and set aside in the prior scouting round (per the parent research issue) as weaker/non-AcroForm alternatives; P23T was the clear pick.
Source fetch
- URL:
https://www.fstyr.dk/Media/638161826116299623/Samtykkeerkl%C3%A6ring%20ved%20ans%C3%B8gning%20om%20k%C3%B8rekort%20-%20%20Under%2018%20%C3%A5r%20-%20(P23T).pdf - Judgment call disclosed: the resolving URL encodes a double space (
%20%20) between "kørekort -" and "Under 18" — this is how fstyr.dk's own link is itself encoded (confirmed via a fresh web search returning this exact URL from the live site), not a typo introduced here. The single-space variant given in the initial task brief (...kørekort - Under 18...) returns HTTP 404; only the double-space variant resolves. Both were tested directly withcurlthis cycle. - HTTP status: 200 (both
www.fstyr.dkdirect fetch; no login/CAPTCHA/WAF gate encountered) - Byte size: 61,834 bytes — matches the pre-authoring scouting figure exactly
- File header:
%PDF-1.7 - SHA-256 of the fetched bytes: confirmed reproducible: re-fetching and re-hashing this cycle's own download is
86efdb6a3799cf9b54475a838e0cd677036eb5a93c4aa6de5c675ae89dc0735d(recorded here for future re-verification cycles to diff against).
Independent field extraction
Performed fresh with pdfjs-dist@3.11.174 (legacy/build/pdf.js), not trusted from the scouting pass's own numbers:
pdf.numPages→ 1 (single-page form)pdf.getFieldObjects()→ 14 distinct keys (field names), each with exactly one associated widget- Per-page
page.getAnnotations()→ 14Widgetannotations on page 1, cross-checked 1:1 againstgetFieldObjects()'s own 14 keys — exact match, confirming the pre-authoring scouting count of 14 fields. - Field type breakdown: 10
Tx(text) widgets, 4Btn(checkbox) widgets. EveryBtnwidget hascheckBox: trueandradioButton: falsewith a distinctfieldName— i.e. the two custody-declaration checkboxes per consent-holder column ("ene myndighed" / "med myndighed") are independent, non-grouped checkboxes, not a true PDF radio-button group, matching this registry's existing dk/um/application-for-danish-passport precedent for the same physical pattern (a pair of "sole"/"joint" custody checkboxes). - Every widget's own
alternativeText(a Danish instruction string, e.g. "Indtast ansøgerens personnummer", "Klik hvis part 1 er eneindehaver af forældremyndigheden over kørekortansøgeren") was cross-referenced against the page's own printed text (viagetTextContent(), grouped by y-coordinate) to confirm each widget's real-world meaning and section placement (header / "Ansøger" / "Samtykke og underskrift" Part 1 / Part 2).
Raw field list (internal PDF field name → this schema's field name):
| PDF field name | Type | Schema field | |---|---|---| | kommune navn adresse | Tx | presentedAtMunicipalityNameAndAddress | | ansoeger personnr | Tx | applicantPersonalIdentityNumber | | ansoeger fornavn | Tx | applicantFirstName | | ansoeger efternavn | Tx | applicantLastName | | part 1 navn | Tx | firstGuardianName | | part 1 personnr | Tx | firstGuardianPersonalIdentityNumber | | part 1 ene myndighed | Btn | firstGuardianHasSoleCustody | | part 1 med myndighed | Btn | firstGuardianHasJointCustody | | part 1 dato underskrift | Tx | firstGuardianDateAndSignature | | part 2 navn | Tx | secondGuardianName | | part 2 personnr | Tx | secondGuardianPersonalIdentityNumber | | part 2 ene myndighed | Btn | secondGuardianHasSoleCustody | | part 2 med myndighed | Btn | secondGuardianHasJointCustody | | part 2 dato underskrift | Tx | secondGuardianDateAndSignature |
14 PDF widgets → 14 schema fields[] entries, a clean 1:1 mapping with no merging, splitting, or exclusion of any widget.
Custody-branching design
The form's own body text (extracted via getTextContent()) reads: "Når en kørekortansøger er under 18 år, skal forældremyndighedsindehaver(e) give samtykke til, at der kan udstedes kørekort til kørekortansøgeren" ("When a driving-licence applicant is under 18, the holder(s) of parental custody must consent to the licence being issued to the applicant") — the plural "(e)" on "indehaver(e)" itself signals that either one (sole-custody) or two (joint-custody) consent holders may need to sign, mirrored by the form's own two parallel "Part 1"/"Part 2" columns. Each column's own declaration text reads "Jeg erklærer ... at jeg er eneindehaver / medindehaver af forældremyndigheden over kørekortansøgeren" ("I declare ... that I am the sole/joint holder of parental custody over the applicant").
This is structurally identical to the two-column consent pattern this registry already modelled in dk/um/application-for-danish-passport@1.1.0, whose own VERIFICATION.md documents a real, disclosed defect found and fixed between 1.0.0 and 1.1.0: a sole-custody declaration by the first consent-holder means, by definition, no second consent-holder exists, so the second column's core fields cannot be unconditionally required — they must be requiredWhen the first column declares joint custody. This schema applies that same precedent from 1.0.0 rather than repeating the 1.0.0/1.1.0 mistake-then-fix cycle: secondGuardianName, secondGuardianPersonalIdentityNumber, and secondGuardianDateAndSignature are each requiredWhen: { field: "firstGuardianHasJointCustody", equals: true }, not unconditionally required. The two custody checkboxes per column are each left required: false and grouped into an exclusivityGroups entry (at most one of "sole"/"joint" may be true per column), consistent with this registry's convention of not forcing an answer onto an independent, non-grouped checkbox pair (per the same passport-schema precedent, notEquals: "" against an optional sibling is never used as a gating condition here either).
Disclosed judgment call: presentedAtMunicipalityNameAndAddress
The form's top field, printed under the heading "Forevist kommunen" ("Shown to the municipality"), has alternativeText "Indtast kommunens navn og adresse" ("Enter the municipality's name and address") — a plain fill-in instruction, not phrased as a staff annotation. Unlike the excluded institutional sections of P23/P22/P23A (which carry their own caseworker-notes/signature blocks), this form has no such staff-only block anywhere else, and this field is the form's only ambiguous one. It is kept in fields[], marked required: false, and described as ambiguous between an applicant/guardian pre-filling the destination office and a kommune staff member's own presentation-confirmation stamp, rather than silently excluded (which would misrepresent the widget count) or forced required (which would overstate confidence in its completion party).
documents[]
This schema has no documents[] array — the form itself references no supporting document requirement (no ID/court-order/proof-of-custody itemization anywhere in its printed text or field alternativeText), unlike dk/um/application-for-danish-passport's lostPassportPoliceReport entry. This is a disclosed structural fact, not an oversight: this registry has previously found conformance checkers can silently skip documents[] requiredness checks, but with zero documents[] entries here that blind spot has no surface to hide in. Explicitly noted rather than left implicit.
Conformance verification
A one-off checker script (node check_conformance.mjs, not committed — ad hoc per this registry's convention, mirroring prior cycles) was written to evaluate every fixture in conformance/dk/fstyr/ samtykkeerklaering-koerekort-under-18/1.0.0/ against this schema's fields[] (required/requiredWhen/validation.pattern/minLength/ maxLength) and exclusivityGroups rules (no documents[] rules to evaluate, per above). Results:
| Fixture | Errors | Expected | |---|---|---| | application-packet-sole-custody-single-guardian.json | 0 | 0 | | application-packet-joint-custody-two-guardians.json | 0 | 0 | | mutation-control-missing-static-required.json | 1 (firstGuardianDateAndSignature missing) | 1 | | mutation-control-conditional-second-guardian-violation.json | 1 (secondGuardianDateAndSignature requiredWhen violated) | 1 | | mutation-control-exclusivity-group-violation.json | 1 (first_guardian_custody_type both true) | 1 | | mutation-control-personnummer-pattern-violation.json | 1 (pattern mismatch) | 1 |
All 6 fixtures produced exactly the expected error count. The two valid scenarios (sole custody / joint custody) cover both branches of the custody-gating logic; the four mutation controls each isolate exactly one rule type (plain required, requiredWhen, exclusivityGroups, validation.pattern) by construction — each mutation fixture is otherwise a fully valid, complete submission with exactly one deliberate defect introduced, so no fixture can pass by accidentally satisfying an unrelated rule.
Registry validation
node tools/validate.mjs registry/dk/fstyr/samtykkeerklaering-koerekort-under-18/1.0.0/schema.json→ok, 1/1 passednode tools/validate-ajv.mjs registry/dk/fstyr/samtykkeerklaering-koerekort-under-18/1.0.0/schema.json→okagainst the v0.3 meta-schema, 1/1 validated
View the raw record (VERIFICATION.md)
Version history
-
1.0.0draftlatestthis pagehas verification recordschema.json
Independent and non-affiliated
GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Færdselsstyrelsen (the Danish Road Traffic Authority) or any government. The authoritative source is always the live government form and its official instructions.