Registry entry
Denmark Foreign Business Registration (Virksomhedsregistrering) — Form 40.110
Erhvervsstyrelsen's (the Danish Business Authority's) form 40.110, "Virksomhedsregistrering" ("Registrering af udenlandsk virksomhed - start"), the MitID-free paper fallback foreign businesses without a Danish CVR number use to register with Erhvervsstyrelsen when they cannot or do not want to use the digital self-service solution at virk.dk/virksomhed (which requires a Danish MitID/NemID-equivalent login most foreign applicants do not hold). This schema models the form's own applicant-facing content across all 5 pages: the business's registration-type choice and home-country identity (Rubrik 1-2), the conditional Danish business address or Danish/home-country contact-person blocks (Rubrik 3-4, gated on the registration-type choice), the business owner's identity and ID/passport documentation (Rubrik 5), the home-country contact person and industry classification (Rubrik 6, 8), VAT/moms registration (Rubrik 9, including a bounded 4-slot EU-country/VAT-number repeating pair for VAT numbers to be linked to a Danish EORI number), customs (told) registration and EORI eligibility questions (Rubrik 10), corporate tax liability including the "Ledelsens sæde er i Danmark" (management seat in Denmark) checkbox (Rubrik 11), payroll tax / lønsumsafgift for the narrow set of trades subject to it (Rubrik 12), employee registration (Rubrik 13), a free-text registration-reason/remarks field (Rubrik 14), and the owner/authorized-signatory and Danish-contact-person signature blocks (Rubrik 15-16, the latter conditionally required only when the applicant chose the contact-address-only registration path). It deliberately does NOT model: Rubrik 7 ("Forsendelsesadresse i Danmark"), whose own printed text discloses "Rubrikken er ikke længere relevant" ("this field is no longer relevant") and carries no AcroForm widget on this specimen; two page-4 text-field widgets whose rects and alternativeText exactly echo the Rubrik 12 section heading itself ("Lønsumsafgift" / "(kun for taxivognmænd, finansielle virksomheder, læger mv.)") rather than collecting any applicant input; and one page-3 checkbox ("Check Box328") next to the optional VAT-registration-reason text box that carries no tooltip/alternativeText and no disambiguating position against any printed label, whose purpose could not be determined from the specimen alone. It does not submit the registration; the live source (virk.dk / Erhvervsstyrelsen) is always authoritative. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Kingdom of Denmark or Erhvervsstyrelsen.
Registry entry
dk/erst/virksomhedsregistrering
Machine access
- Schema document
registry/dk/erst/virksomhedsregistrering/1.0.0/schema.jsonapplication/schema+json- Verification record
registry/dk/erst/virksomhedsregistrering/1.0.0/VERIFICATION.mdtext/markdown- Registry catalog
registry/index.jsonone record per schema id
Field reference
104 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
-
businessTypeenum requiredWhich of the three registration-type paths the business falls under, determining which of Rubrik 3/4's conditional address blocks (if any) must be completed.
enum: noAddressInDenmarkEuEeaOnly | businessAddressInDenmark | contactAddressInDenmark -
registeredInHomeCountryboolean requiredWhether the business is already registered in its home country. If yes, the foreign business ID and home-country VAT number must also be provided.
-
foreignBusinessIdstring optionalThe business's own foreign (home-country) business/company registration ID, if already registered there. Documentation must be enclosed per the form's own instruction.
length: 0–100 -
homeCountryVatNumberAtRegistrationstring optionalThe business's VAT number in its home country, if already registered there. Documentation must be enclosed per the form's own instruction.
length: 0–50 -
businessNameHomeCountrystring requiredThe business's own registered name in its home country.
length: 0–300 -
phoneNumberHomeCountrystring optionalThe business's telephone number in its home country.
length: 0–30 -
addressLine1HomeCountrystring requiredThe business's home-country address, first line.
length: 0–200classification: pii -
faxNumberHomeCountrystring optionalThe business's fax number in its home country.
length: 0–30 -
addressLine2HomeCountrystring optionalThe business's home-country address, second line.
length: 0–200classification: pii -
mobileNumberHomeCountrystring optionalThe business's mobile telephone number in its home country.
length: 0–30 -
postalCodeHomeCountrystring requiredThe postal code of the business's home-country address.
length: 0–20classification: pii -
cityHomeCountrystring requiredThe city of the business's home-country address.
length: 0–100classification: pii -
emailHomeCountrystring optionalThe business's email address in its home country.
length: 0–200 -
countryHomeCountrystring requiredThe business's home country (name).
length: 0–100 -
countryCodeHomeCountrystring requiredThe country code of the business's home country.
length: 0–10 -
danishBusinessAddressStreetstring optionalThe business's own Danish establishment address (street name, house number, floor) — e.g. a shop, office, or outlet. Only applicable when the business has established itself with a business address in Denmark (Rubrik 3); completing this rubrik means Rubrik 4 is skipped.
length: 0–300classification: pii -
danishBusinessAddressPhonestring optionalTelephone number at the business's Danish establishment address.
length: 0–30 -
danishBusinessAddressPostalCodestring optionalPostal code of the business's Danish establishment address.
patternclassification: pii -
danishBusinessAddressCitystring optionalCity of the business's Danish establishment address.
length: 0–100classification: pii -
danishBusinessAddressFaxstring optionalFax number at the business's Danish establishment address.
length: 0–30 -
danishBusinessAddressEmailstring optionalEmail address at the business's Danish establishment address.
length: 0–200 -
danishBusinessAddressMobilestring optionalMobile telephone number at the business's Danish establishment address.
length: 0–30 -
contactPersonNameDenmarkstring optionalName of the business's contact person in Denmark. Only applicable when the business has only a Danish contact/postal address (Rubrik 4), not an established business address (Rubrik 3); the contact person must also sign in Rubrik 16.
length: 0–200classification: pii -
contactPersonPhoneDenmarkstring optionalTelephone number of the business's contact person in Denmark.
length: 0–30 -
contactPersonAddressDenmarkstring optionalDanish contact/postal address (street name, house number, floor) of the business's contact person in Denmark.
length: 0–300classification: pii -
contactPersonFaxDenmarkstring optionalFax number of the business's contact person in Denmark.
length: 0–30 -
contactPersonPostalCodeDenmarkstring optionalPostal code of the business's contact person's Danish address.
patternclassification: pii -
contactPersonCityDenmarkstring optionalCity of the business's contact person's Danish address.
length: 0–100classification: pii -
contactPersonMobileDenmarkstring optionalMobile telephone number of the business's contact person in Denmark.
length: 0–30 -
contactPersonEmailDenmarkstring optionalEmail address of the business's contact person in Denmark.
length: 0–200 -
contactPersonCprOrCvrstring optionalThe Danish contact person's own CPR number (10 digits) or CVR number (8 digits), if they have one.
patternclassification: sensitive-pii -
ownerNamestring requiredFull name of the business's owner.
length: 0–200classification: pii -
ownerDateOfBirthdate requiredThe owner's date of birth. On the source PDF this is printed as three separate boxes (DD / MM / ÅÅ — the year box is genuinely only two digits on this specimen), combined here into a single date field per this registry's existing dk/cpr/notification-of-entry precedent.
classification: pii -
ownerAddressLine1string requiredThe owner's address, first line.
length: 0–200classification: pii -
ownerAddressLine2string optionalThe owner's address, second line.
length: 0–200classification: pii -
ownerPostalCodestring requiredPostal code of the owner's address.
length: 0–20classification: pii -
ownerCitystring requiredCity of the owner's address.
length: 0–100classification: pii -
ownerCountrystring requiredCountry of the owner's address.
length: 0–100 -
ownerCountryCodestring requiredCountry code of the owner's address.
length: 0–10 -
ownerIdTypeenum requiredThe type of identity document the owner is providing a copy of: passport, or another form of ID (specified in ownerOtherIdTypeSpecify).
enum: passport | other -
ownerOtherIdTypeSpecifystring optionalIf the owner's ID type is "other" rather than a passport, the specific type of ID document provided.
length: 0–100 -
ownerCprNumberIfEmigratedstring optionalThe owner's Danish CPR number, only applicable if the owner is a Danish citizen who has emigrated (an "udvandret person") and already holds a CPR number.
patternclassification: sensitive-pii -
ownerIdNumberstring requiredThe owner's ID document number (passport number, or the equivalent number on the other ID type specified).
length: 0–50classification: sensitive-pii -
ownerIdCopyAttachmentfile requiredA copy of the owner's passport or other ID document, which the form's own instruction requires be enclosed alongside the ID number. This field models that enclosure requirement; the source PDF has no dedicated upload widget for it (a physical/attached-copy requirement on a paper form), consistent with this registry's existing practice of modelling disclosed attachment requirements even without a dedicated widget.
-
homeCountryContactNamestring requiredName of the business's contact person in its home country.
length: 0–200classification: pii -
homeCountryContactPhonestring optionalTelephone number of the business's contact person in its home country.
length: 0–30 -
homeCountryContactEmailstring optionalEmail address of the business's contact person in its home country.
length: 0–200 -
homeCountryContactMobilestring optionalMobile telephone number of the business's contact person in its home country.
length: 0–30 -
industryDescriptionstring requiredFree-text description of the business's industry/trade.
length: 0–500 -
industryCodestring requiredThe 6-digit industry code chosen from Erhvervsstyrelsen's own list at branchekode.dk.
pattern -
vatStartDatedate optionalStart date of VAT-liable activities (e.g. first invoicing or first purchase). On the source PDF this is printed as three separate boxes (DD / MM / ÅÅ, a 2-digit year), combined here into a single date field. Modelled as optional: Rubrik 9 (Moms) applies only to businesses that need Danish VAT registration, which not every foreign business does, even though this row itself carries a printed asterisk.
-
vatRegistrationTypeenum optionalThe single type of Danish VAT registration being requested (the form instructs "vælg kun en" — choose only one).
enum: 7 values -
vatRegistrationReasonstring optionalFree-text reason for VAT registration, if applicable (see the form's own guidance).
length: 0–500 -
permanentEstablishmentInDenmarkboolean optionalWhether the business has a fixed place of business in Denmark, asked to help establish the business's legal VAT status.
-
permanentEstablishmentInEuboolean optionalWhether the business has a fixed place of business within the EU, asked to help establish the business's legal VAT status.
-
homeCountryVatCountryCodestring optionalCountry code for the home-country VAT number below. Only needs to be filled in if the home-country VAT number was not already given in Rubrik 2 (homeCountryVatNumberAtRegistration).
length: 0–10 -
homeCountryVatNumberIfNotInRubrik2string optionalThe business's home-country VAT number, only needed if not already given in Rubrik 2 (homeCountryVatNumberAtRegistration).
length: 0–50 -
customsStartDatedate optionalStart date of the business's first import or export in Denmark. On the source PDF this is printed as three separate boxes (DD / MM / ÅÅ, a 2-digit year), combined here into a single date field. Modelled as optional: Rubrik 10 (Toldregistrering) applies only to businesses that import/export, which not every foreign business does.
-
customsImportboolean optionalWhether the business imports goods.
-
customsExportboolean optionalWhether the business exports goods.
-
customsDutyPaymentMethodenum optionalThe chosen method of paying customs duty on goods imported from outside the EU, one of the three options the form itself lays out.
enum: immediateUseCashSettlementPerShipment | deferredUseCashSettlementWithin5Days | securityArrangement -
customsEstablishedOtherEuCountryboolean optionalWhether the business is established in an EU country other than Denmark for EU customs-rule purposes, asked to help determine EORI-number eligibility.
-
customsEstablishedInDenmarkboolean optionalWhether the business is established in Denmark for EU customs-rule purposes, asked to help determine EORI-number eligibility.
-
eoriPublicationConsentboolean optionalWhether the business wants its name and address published in the EU's central EORI web search.
-
existingEoriNumberstring optionalThe business's existing EORI number, if it already has one (remember the country code).
length: 0–30 -
euVatCountryCode1string optionalCountry code for the first of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.
length: 0–10 -
euVatNumber1string optionalThe first of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.
length: 0–50 -
euVatCountryCode2string optionalCountry code for the second of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.
length: 0–10 -
euVatNumber2string optionalThe second of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.
length: 0–50 -
euVatCountryCode3string optionalCountry code for the third of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number. This widget's own alternativeText tooltip on the source PDF is a copy-paste artifact reading "Husk at udfylde og medsende bilaget 'Hæftende Repræsentant'" (an unrelated instructional note found elsewhere on the same page); it is mapped here by its rect position, directly below the slot-1/slot-2 country-code column, not by its tooltip text — see VERIFICATION.md.
length: 0–10 -
euVatNumber3string optionalThe third of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.
length: 0–50 -
euVatCountryCode4string optionalCountry code for the fourth of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.
length: 0–10 -
euVatNumber4string optionalThe fourth of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.
length: 0–50 -
taxLiabilityStartDatedate optionalThe date Danish corporate tax liability commences. On the source PDF this is printed as three separate boxes (DD / MM / ÅÅ, a 2-digit year), combined here into a single date field. Modelled as optional: Rubrik 11 applies only to businesses that are subject to Danish corporate tax liability.
-
firstAccountingPeriodStartDatedate optionalStart date of the business's first Danish accounting period. On the source PDF this is printed as three separate boxes (DD / MM / ÅÅ, a 2-digit year), combined here into a single date field.
-
firstAccountingPeriodEndDatedate optionalEnd date of the business's first Danish accounting period. On the source PDF this is printed as three separate boxes (DD / MM / ÅÅ, a 2-digit year), combined here into a single date field.
-
taxLiabilityPermanentEstablishmentboolean optionalOne of several possible reasons for Danish corporate tax liability: the business has a permanent establishment in Denmark. The form allows selecting several reasons ("Vælg evt. flere").
-
taxLiabilityOwnsRealPropertyboolean optionalOne of several possible reasons for Danish corporate tax liability: the business owns real property in Denmark.
-
taxLiabilityManagementSeatInDenmarkboolean optionalOne of several possible reasons for Danish corporate tax liability: the seat of the business's management is in Denmark.
-
taxLiabilityJointTaxationRequestedboolean optionalOne of several possible reasons for Danish corporate tax liability: the business requests joint taxation (see the form's own guidance).
-
taxLiabilityOtherReasonApplicableboolean optionalOne of several possible reasons for Danish corporate tax liability: another reason, specified in taxLiabilityOtherReasonText.
-
taxLiabilityOtherReasonTextstring optionalFree-text statement of the other reason for Danish corporate tax liability. This widget's own alternativeText tooltip on the source PDF reads "Ledelsens sæde er i Danmark" — identical to a different, already-modelled checkbox's label two rows above it — an apparent copy-paste tooltip error; mapped here by its rect position (directly beside the "Andet, angiv årsag" checkbox), not by its tooltip text, since the position makes the free-text-for-other-reason purpose unambiguous. See VERIFICATION.md.
length: 0–300 -
alternativeAddressCoNamestring optionalOptional c/o name for the alternative Danish address below, only completed when neither Rubrik 3 (Danish business address) nor Rubrik 4 (Danish contact address) has been filled in.
length: 0–200classification: pii -
alternativeAddressStreetstring optionalStreet name, house number, and floor of the alternative Danish address, only completed when neither Rubrik 3 nor Rubrik 4 has been filled in.
length: 0–300classification: pii -
alternativeAddressPostalCodestring optionalPostal code of the alternative Danish address, only completed when neither Rubrik 3 nor Rubrik 4 has been filled in.
patternclassification: pii -
alternativeAddressCitystring optionalCity of the alternative Danish address, only completed when neither Rubrik 3 nor Rubrik 4 has been filled in.
length: 0–100classification: pii -
payrollTaxStartDatedate optionalStart date of payroll-tax (lønsumsafgift) liability. On the source PDF this is printed as three separate boxes (DD / MM / ÅÅ, a 2-digit year), combined here into a single date field. Modelled as optional: Rubrik 12's own heading states it applies only to taxi operators, financial businesses, doctors, etc. ("kun for taxivognmænd, finansielle virksomheder, læger mv.").
-
payrollTaxCategoryenum optionalWhich lønsumsafgift (payroll tax) category the business falls under.
enum: touristOfficesInformationServicesLotteries | insuranceBankingFinancing | newspaperPublisherOrImporter | otherDoctorDentistEducationMuseumClinicTaxi | organizationsFoundationsAssociationsSelfGoverningInstitutions -
payrollTaxBusinessLocationInDenmarkboolean optionalWhether the business has a place of business in Denmark, for lønsumsafgift purposes. If no, the form's own instruction requires enclosing the "Hæftende Repræsentant" (liable representative) attachment.
-
firstEmployeeHireDatedate optionalThe date the business's first employee in Denmark was hired. On the source PDF this is printed as three separate boxes (DD / MM / ÅÅ, a 2-digit year), combined here into a single date field. Modelled as optional: Rubrik 13 applies only to businesses with Danish employees.
-
taxWithholdingCategoryenum optionalWhich single category of Danish employee tax/contribution settlement applies (this is a mutually-exclusive radio group on the source PDF, distinct from the two independent checkboxes atpRegistration and taxFreeNetWageRegistration below).
enum: aSkatOgAmBidrag | bIncomeMonthly | bIncomeSporadic -
atpRegistrationboolean optionalWhether the business registers for ATP (Arbejdsmarkedets Tillægspension, the Danish labour-market supplementary pension) contributions for its Danish employees. An independent checkbox on the source PDF, not part of the taxWithholdingCategory radio group.
-
taxFreeNetWageRegistrationboolean optionalWhether the business pays tax-free net wage/hyre (see the form's own guidance). An independent checkbox on the source PDF, not part of the taxWithholdingCategory radio group.
-
employeeTaxPermanentEstablishmentInDenmarkboolean optionalWhether the business has a permanent establishment in Denmark, asked again in Rubrik 13 specifically to help establish the business's legal status for employee-tax purposes (distinct from the similarly-worded Rubrik 11 checkbox, taxLiabilityPermanentEstablishment, which is its own separate reason-for-corporate-tax-liability checkbox).
-
addressOutsideEuFaroeGreenlandIcelandNorwayboolean optionalWhether the business has its registered address (hjemting) outside the EU, the Faroe Islands, Greenland, Iceland, and Norway.
-
registrationReasonOrRemarksstring optionalFree-text field serving two purposes per the form's own printed instructions: the reason for registration in Denmark (Rubrik 14), only to be completed if none of Rubrik 9-13 have been filled in; and/or any other remarks of significance for the registration.
length: 0–1000 -
signatoryDate1date requiredDate of signature for the first owner/authorized signatory (of up to 3 on this specimen).
-
signatoryName1string requiredName in block letters of the first owner/authorized signatory (of up to 3 on this specimen).
length: 0–200classification: pii -
signatoryDate2date optionalDate of signature for the second owner/authorized signatory, if more than one signs.
-
signatoryName2string optionalName in block letters of the second owner/authorized signatory, if more than one signs.
length: 0–200classification: pii -
signatoryDate3date optionalDate of signature for the third owner/authorized signatory, if more than two sign.
-
signatoryName3string optionalName in block letters of the third owner/authorized signatory, if more than two sign.
length: 0–200classification: pii -
contactPersonSignatureDatedate optionalDate of signature of the Danish contact person, required only when the business registered via the Rubrik-4 contact-address-only path (Rubrik 1's own instruction: "husk at kontaktpersonen skal underskrive i rubrik 16").
-
contactPersonSignatureNamestring optionalName in block letters of the Danish contact person's signature, required only when the business registered via the Rubrik-4 contact-address-only path.
length: 0–200classification: pii
Verification record
Candidate selection
This session's brief (GOV-2268, "GovSchema Standard Research") targeted Denmark's Business Formation vertical, the only one of Denmark's 6 verticals still open (Passport opened Denmark as the registry's 33rd jurisdiction via GOV-2244; Taxes via GOV-2253; National ID & Civic Documents via GOV-2260, 3/6 at the start of this cycle). GOV-2260's own screening pass had already evaluated all three of Denmark's remaining open verticals in parallel and identified virk.dk's form 40.110 ("Virksomhedsregistrering") as a genuine unauthenticated AcroForm for foreign-business registration without a Danish CVR number/MitID login, setting it aside as the strongest Business Formation candidate while picking a different form for that cycle's own National ID target. This cycle picked up 40.110 directly, rather than re-screening: Denmark's other two open verticals at that point (Visa via SIRI's nyidanmark.dk work-permit form AR8 — genuine and unauthenticated but a fill-by-hand PDF with no AcroForm widget layer; DMV via Færdselsstyrelsen's P23 — a shared multi-party licence record card, 397 raw fields, mostly filled progressively by driving schools/police/kommune) had already been confirmed weaker candidates in that same GOV-2260 screening pass, and Business Formation was the deliberate target of this issue.
Source
- URL:
https://virk.dk/assets/7cC2xGkV8DgTbAW9pxeZVv/40110.pdf - Fetched fresh this session with a plain HTTP GET: HTTP 200,
642,622bytes — matching the pre-scout's byte count exactly, independently re-confirmed rather than assumed. Confirmed a genuine PDF (%PDF-1.7header) with 5 pages and a live/AcroFormdictionary (a genuine, non-flattened fillable form, not a flattened print specimen). - Edition: the form's own footer prints "04.2021" on every page (April 2021 edition); no more recent edition was found linked from either of Erhvervsstyrelsen's own guidance pages.
- Guidance/landing pages (read for context, not for field extraction — this form is entirely self-documenting via its own printed Rubrik numbering, like
dk/skattestyrelsen/oplysningsskemaet):virk.dk/myndigheder/stat/ERST/selvbetjening/Registrering_af_udenlandsk_virksomhed_-_start_-_40110/and itsvejledning-til-registrering-udenlandsk-virksomhed/sub-page. - Cross-check: form 40.112, Erhvervsstyrelsen's own official English-language translation of this same form, linked from the same guidance page ("Blanketten findes på engelsk her"), was used to confirm the meaning of ambiguous Danish labels (e.g. "hjemting", "Ledelsens sæde", "Anden ID (oplys type)").
Extraction technique
pdfjs-dist (legacy/build/pdf.js, loaded from a cached node_modules install at /tmp/node_modules) was used for the same three-pass technique established by dk/skattestyrelsen/oplysningsskemaet's own VERIFICATION.md, not a single pass:
doc.getFieldObjects()— resolved 122 distinct field names across the document's 5 pages: 97Txtext fields, 15Btnradio groups (41 total mutually-exclusive kid widgets across the 15 groups), and 10 independentBtncheckboxes. This count was derived fresh this session, not copied from the pre-scout's own "~122 unique field base names" estimate — it happens to match exactly, which is a reproduction, not an assumption.page.getAnnotations()per page — captured every widget's own rect,alternativeTexttooltip, field type, and (forBtnwidgets)buttonValue/export value. Total raw widgets per page: 25 (page 1), 30 (page 2), 41 (page 3), 43 (page 4), 9 (page 5) = 148 widgets, matching the pre-scout's own "~148 widget fields" estimate — independently reproduced, not assumed.page.getTextContent()clustered into visual lines by y-coordinate (2.5pt tolerance, then x-sorted within each line) — reconstructed the full Rubrik-by-Rubrik printed text for all 5 pages, independent of any AcroForm metadata.- Cross-reference: every widget's rect x/y range checked against the clustered lines and against neighbouring widgets' rects, not the field-name sequence or the tooltip text alone. This distrust was necessary, not precautionary: this specimen contains two disclosed tooltip-copy-paste artifacts (below) that a name/tooltip-only mapping would have silently mis-attributed.
Disclosed specimen quirks (position-mapped against a misleading tooltip)
- Page 3, Rubrik 10, EU-VAT-number repeating block. The block "Momsnumre, der ønskes tilføjet til et dansk EORI-nummer" prints two country-code/VAT-number column pairs per row across 2 rows (4 slots total). The third slot's country-code widget — positioned directly below the first two slots' own country-code column, at an identical x-range (
x 48.8–89.8) — carries thealternativeText"Husk at udfylde og medsende bilaget \"Hæftende Repræsentant\"", a tooltip that is verbatim identical to an unrelated instructional note printed elsewhere on the very same page (just above the "Har virksomheden et fast forretningssted i Danmark?" customs question). This is a copy-paste tooltip artifact, not a real description of this widget's purpose. Modelled here aseuVatCountryCode3by rect position (column alignment with the two widgets above it and theMomsnummer 2widget beside it at the same y-range), not by its tooltip text. - Page 4, Rubrik 11, "Årsag til skattepligt til Danmark". A free-text widget positioned at the row for the "Andet, angiv årsag" ("Other, state reason") checkbox carries the
alternativeText"Ledelsens sæde er i Danmark"— identical wording to a different checkbox's own label two rows above it (Check Box345, this schema'staxLiabilityManagementSeatInDenmark). Confirmed by reading the raw text-item stream at both y-ranges directly: the genuine printed label at the free-text widget's own row is "Andet, angiv årsag", and the widget's tooltip does not match it — another copy-paste artifact. Modelled here astaxLiabilityOtherReasonText(paired withtaxLiabilityOtherReasonApplicable, the actual "Andet, angiv årsag" checkbox), by rect position, not by the widget's own tooltip text.
Both quirks are disclosed in the affected fields' own description and sourceRef in schema.json, not silently corrected or silently followed.
Structural exclusions
- Rubrik 7, "Forsendelsesadresse i Danmark" is printed with its own disclosed annotation, "(Rubrikken er ikke længere relevant.)" ("this field is no longer relevant"), directly under its heading on page 2. Walking every widget rect on page 2 confirmed zero AcroForm widgets fall in Rubrik 7's row — a hard structural fact, the same kind of finding as the "Felt låst" pattern in
dk/skattestyrelsen/oplysningsskemaet, though the disclosure mechanism here is a deprecation note rather than a lock label. - Two page-4 heading-echo
Txwidgets (fieldNames"Lønsumsafgift"and"kun for taxivognmænd finansielle virksomheder læger mv") sit at an x-start identical, character-for-character, to the Rubrik 12 section heading's own two printed text runs, 13-15pt directly below them, withalternativeTextthat is simply the heading text itself ("Lønsumsafgift" / "(kun for taxivognmænd, finansielle virksomheder, læger mv.)"). Confirmed by reading the raw text-item stream at the heading's own y-position (426.6) and comparing x-starts against both widgets (52.8 and 133.6 respectively — an exact match to both text runs). Asking an applicant to type "Lønsumsafgift" into a box collects no information; these two widgets are excluded as a heading echoed into a fillable-looking widget, not applicant input — a clear but structurally softer finding than Rubrik 7's "zero widgets at all". - One page-3 checkbox, "Check Box328", sits immediately left of the optional "Angiv evt. årsag til momsregistrering (se vejledning)" free-text box. It carries no
alternativeTextand no other printed label disambiguates its position (unlike every other checkbox on this specimen, which either sits directly beside its own label or is part of aGroup3XXradio whose kids are individually positioned against a printed option). Its purpose could not be determined from the specimen alone and it is excluded rather than guessed at. - Per the task's own reminder to check for a "filled in by [government office]" disclosed section on every extracted page: no such heading was found anywhere on this specimen's 5 pages (unlike
dk/cpr/notification-of-entry's "udfyldes af kommunen" section). This form is entirely applicant-facing once submitted to Erhvervsstyrelsen; there is no municipal in-person processing step analogous to CPR registration.
Date-split convention (8 instances)
Eight rows on this specimen print a date as three separate boxes labelled "DD MM ÅÅ" (owner's Fødselsdato; VAT start date; customs start date; corporate-tax-liability start date; first-accounting-period start and end dates; payroll-tax start date; first-employee-hire date). Each was combined into a single schema field of type: "date", per this registry's existing dk/cpr/notification-of-entry precedent (which combines FR 050's "Dag / måned / år" split into one date field), rather than modelled as three separate fields. The printed year box is genuinely only two digits ("ÅÅ", not "ÅÅÅÅ") on every one of these eight instances — confirmed by reading the raw text-item stream at each date row (e.g. page 2: "DD" 485.0 536.8, "MM" 512.3 536.8, "ÅÅ" 539.1 536.8), not assumed to be a display abbreviation for a 4-digit box. Each combined field's own description/sourceRef discloses the specimen's three-box split rather than silently modelling a plain 4-digit-year date field.
Scope decision: Rubrik 9-13 modelled as optional despite printed asterisks
Rubrik 1 (Virksomhedstype/registered-in-home-country), 2 (home-country identity), 5 (owner), 6 (home-country contact person), 8 (industry), and 15 (signature) are unconditionally required on this specimen and modelled as required: true. Rubrik 3/4/16 (the Danish-business-address, Danish-contact-person, and Danish-contact-person-signature blocks) are conditionally required and modelled with requiredWhen against the Rubrik-1 registration-type radio (businessType), gated on equals against a required enum field (never on notEquals "" against an optional field — the known bug pattern from this registry's own notequals-empty-string-absent-field-bug precedent).
Rubrik 9 (Moms/VAT), 10 (Toldregistrering/customs+EORI), 11 (corporate tax liability), 12 (Lønsumsafgift/payroll tax), and 13 (Ansatte/employees) each carry their own printed asterisks on individual rows, but these Rubrikker are themselves conditional on real-world facts the form has no single gating checkbox for — whether the business needs Danish VAT/ customs/employee registration at all, which not every foreign business does (Rubrik 12's own heading states outright it applies "kun for taxivognmænd, finansielle virksomheder, læger mv." — "only for taxi operators, financial businesses, doctors, etc."). This schema therefore models every field in Rubrik 9-13 as required: false. This is a deliberate editorial scope decision, disclosed here and in schema.json's own verification.notes, distinct from the hard "no widget exists" and "heading echo" structural exclusions above.
Bounded repeating groups
Two bounded repeating groups were flattened per this registry's entrant1..entrant6 / child1..child5 convention:
- EU-country/VAT-number pair (Rubrik 10, "Momsnumre, der ønskes tilføjet til et dansk EORI-nummer"): the specimen prints exactly 4 slots (2 rows × 2 column-pairs), confirmed exhaustively by rect-mapping all 8 widgets (
Landekode_4/Momsnummer 1,Landekode 1/Momsnummer 1_2, the mislabeled slot-3 widget/Momsnummer 2,Landekode 2/Momsnummer 2_2). Flattened toeuVatCountryCode1/euVatNumber1througheuVatCountryCode4/euVatNumber4. Unlike theentrant1/child1precedent, none of these 8 fields are markedrequired, including slot 1 — the block itself carries no printed asterisk and is a genuinely optional addendum (linking additional VAT numbers to a Danish EORI number), not a mandatory repeating list like FR 050's entrants or the Swedish work-permit form's dependants. This is a deliberate deviation from the task's own default assumption ("only slot 1 fields should be required"), disclosed here rather than silently applied. - Owner/authorized-signatory signature (Rubrik 15, "Underskrift(er)* Ejer(e)s/tegningsberettigedes underskrift(er)"): the specimen prints 3 repeated Dato/Navn-med-blokbogstaver row pairs (the third column, "Underskrift", has no AcroForm widget on any row — a physical wet-ink signature is not captured as form-fillable text, consistent with how this registry's other DK schemas model signature blocks). Flattened to
signatoryDate1/signatoryName1(required, since Rubrik 15 itself carries an unconditional asterisk) throughsignatoryDate3/signatoryName3(optional, slots 2-3).
Field-by-field source mapping
All 104 fields cite their exact Rubrik number and printed label directly in sourceRef — see schema.json. Every citation was read from the clustered-line text and widget rects extracted directly from the live PDF this session, not copied from any secondary source.
Mock conformance test run
Two scenarios were built under conformance/dk/erst/virksomhedsregistrering/1.0.0/ and checked against this schema's required/requiredWhen/validation grammar with a disposable checker script (/tmp/gov2268/check_conformance.mjs, not committed — same technique used across this registry's other v1.0.0 cycles). The checker evaluates the shared Condition grammar (equals/notEquals/in/comparison operators, all/any/not composition) to resolve each field's effective requiredness, then checks pattern/maxLength/minLength/maximum/minimum/enum against whatever value is present, and flags any instance key not present in the schema's own field list:
application-packet-minimal-required-only.json: a minimal US fulfillment-services LLC (fictional — "Prairie Fulfillment Services LLC", Lincoln, NE) withbusinessType: noAddressInDenmarkEuEeaOnlyandregisteredInHomeCountry: false, filling only the 23 unconditionally required fields. 23 fields collected, 81 correctly not-applicable, 0 errors.application-packet-full-german-branch.json: a fictional German machinery manufacturer ("Nordlicht Maschinenbau GmbH", Hamburg) opening a Danish business-address branch office (businessType: businessAddressInDenmark), exercising the conditional Rubrik 3 address block, home-country VAT/foreign-ID fields (sinceregisteredInHomeCountry: true), VAT registration, customs/EORI, corporate tax liability (includingtaxLiabilityManagementSeatInDenmarkexplicitly setfalseto distinguish it from the mislabeled free-text quirk field), one EU-VAT-number slot, employee registration, and the Rubrik-14 remarks field. 70 fields collected, 34 correctly not-applicable, 0 errors.- Five mutation/negative controls, each derived from the minimal scenario with exactly one defect introduced, each correctly raised the expected error (verified live this session, not asserted from memory):
- Removing the required
industryCode→MISSING REQUIRED. - Setting
industryCodeto"12A456"(violatespattern: ^[0-9]{6}$) →fails pattern. - Setting
businessTypeto"somethingElse"(not in the enum) →value ... not in enum. - Setting
businessTypeto"businessAddressInDenmark"without adding the Rubrik-3 fields it now requires →danishBusinessAddressStreet/danishBusinessAddressPostalCode/danishBusinessAddressCityeach flaggedMISSING REQUIRED, confirmingrequiredWhencorrectly re-evaluates when the gating field changes. - Setting
businessNameHomeCountryto a 301-character string (exceedsmaxLength: 300) →exceeds maxLength.
- Removing the required
The schema was also validated against the GovSchema v0.3 meta-schema with node tools/validate-ajv.mjs ../registry/dk/erst/virksomhedsregistrering/1.0.0/schema.json (passes standalone, ajv 2020-12) and node tools/validate.mjs registry/dk/erst/virksomhedsregistrering/1.0.0/schema.json (structural validator, passes).
Scope and jurisdiction notes
This document opens Denmark's Business Formation vertical (4/6; Visa and DMV remain open, already-screened-and-set-aside backlog candidates — see CATALOG.md's Known Gaps section). It does not submit the registration; the live source (virk.dk / Erhvervsstyrelsen) is always authoritative. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Kingdom of Denmark or Erhvervsstyrelsen.
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 Erhvervsstyrelsen (Danish Business Authority) or any government. The authoritative source is always the live government form and its official instructions.