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

Jurisdiction
Denmark · national
Version
1.0.0
Verification
draft

Authoritative source Blanket 40.110 "Virksomhedsregistrering" (April 2021 edition, footer-stamped "04.2021" on every page), a 5-page fillable AcroForm PDF published unauthenticated at virk.dk, cross-checked against Erhvervsstyrelsen's own guidance pages (virk.dk/myndigheder/stat/ERST/selvbetjening/Registrering_af_udenlandsk_virksomhed_-_start_-_40110/ and its vejledning-til-registrering-udenlandsk-virksomhed/ sub-page) and against form 40.112, the same form's official English-language translation, linked from the same guidance page ("Blanketten findes på engelsk her").

Machine access

Schema document
registry/dk/erst/virksomhedsregistrering/1.0.0/schema.jsonapplication/schema+json
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

  • businessType enum required

    Which 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
  • registeredInHomeCountry boolean required

    Whether the business is already registered in its home country. If yes, the foreign business ID and home-country VAT number must also be provided.

  • foreignBusinessId string optional

    The 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
  • homeCountryVatNumberAtRegistration string optional

    The 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
  • businessNameHomeCountry string required

    The business's own registered name in its home country.

    length: 0–300
  • phoneNumberHomeCountry string optional

    The business's telephone number in its home country.

    length: 0–30
  • addressLine1HomeCountry string required

    The business's home-country address, first line.

    length: 0–200classification: pii
  • faxNumberHomeCountry string optional

    The business's fax number in its home country.

    length: 0–30
  • addressLine2HomeCountry string optional

    The business's home-country address, second line.

    length: 0–200classification: pii
  • mobileNumberHomeCountry string optional

    The business's mobile telephone number in its home country.

    length: 0–30
  • postalCodeHomeCountry string required

    The postal code of the business's home-country address.

    length: 0–20classification: pii
  • cityHomeCountry string required

    The city of the business's home-country address.

    length: 0–100classification: pii
  • emailHomeCountry string optional

    The business's email address in its home country.

    length: 0–200
  • countryHomeCountry string required

    The business's home country (name).

    length: 0–100
  • countryCodeHomeCountry string required

    The country code of the business's home country.

    length: 0–10
  • danishBusinessAddressStreet string optional

    The 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
  • danishBusinessAddressPhone string optional

    Telephone number at the business's Danish establishment address.

    length: 0–30
  • danishBusinessAddressPostalCode string optional

    Postal code of the business's Danish establishment address.

    patternclassification: pii
  • danishBusinessAddressCity string optional

    City of the business's Danish establishment address.

    length: 0–100classification: pii
  • danishBusinessAddressFax string optional

    Fax number at the business's Danish establishment address.

    length: 0–30
  • danishBusinessAddressEmail string optional

    Email address at the business's Danish establishment address.

    length: 0–200
  • danishBusinessAddressMobile string optional

    Mobile telephone number at the business's Danish establishment address.

    length: 0–30
  • contactPersonNameDenmark string optional

    Name 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
  • contactPersonPhoneDenmark string optional

    Telephone number of the business's contact person in Denmark.

    length: 0–30
  • contactPersonAddressDenmark string optional

    Danish contact/postal address (street name, house number, floor) of the business's contact person in Denmark.

    length: 0–300classification: pii
  • contactPersonFaxDenmark string optional

    Fax number of the business's contact person in Denmark.

    length: 0–30
  • contactPersonPostalCodeDenmark string optional

    Postal code of the business's contact person's Danish address.

    patternclassification: pii
  • contactPersonCityDenmark string optional

    City of the business's contact person's Danish address.

    length: 0–100classification: pii
  • contactPersonMobileDenmark string optional

    Mobile telephone number of the business's contact person in Denmark.

    length: 0–30
  • contactPersonEmailDenmark string optional

    Email address of the business's contact person in Denmark.

    length: 0–200
  • contactPersonCprOrCvr string optional

    The Danish contact person's own CPR number (10 digits) or CVR number (8 digits), if they have one.

    patternclassification: sensitive-pii
  • ownerName string required

    Full name of the business's owner.

    length: 0–200classification: pii
  • ownerDateOfBirth date required

    The 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
  • ownerAddressLine1 string required

    The owner's address, first line.

    length: 0–200classification: pii
  • ownerAddressLine2 string optional

    The owner's address, second line.

    length: 0–200classification: pii
  • ownerPostalCode string required

    Postal code of the owner's address.

    length: 0–20classification: pii
  • ownerCity string required

    City of the owner's address.

    length: 0–100classification: pii
  • ownerCountry string required

    Country of the owner's address.

    length: 0–100
  • ownerCountryCode string required

    Country code of the owner's address.

    length: 0–10
  • ownerIdType enum required

    The type of identity document the owner is providing a copy of: passport, or another form of ID (specified in ownerOtherIdTypeSpecify).

    enum: passport | other
  • ownerOtherIdTypeSpecify string optional

    If the owner's ID type is "other" rather than a passport, the specific type of ID document provided.

    length: 0–100
  • ownerCprNumberIfEmigrated string optional

    The 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
  • ownerIdNumber string required

    The owner's ID document number (passport number, or the equivalent number on the other ID type specified).

    length: 0–50classification: sensitive-pii
  • ownerIdCopyAttachment file required

    A 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.

  • homeCountryContactName string required

    Name of the business's contact person in its home country.

    length: 0–200classification: pii
  • homeCountryContactPhone string optional

    Telephone number of the business's contact person in its home country.

    length: 0–30
  • homeCountryContactEmail string optional

    Email address of the business's contact person in its home country.

    length: 0–200
  • homeCountryContactMobile string optional

    Mobile telephone number of the business's contact person in its home country.

    length: 0–30
  • industryDescription string required

    Free-text description of the business's industry/trade.

    length: 0–500
  • industryCode string required

    The 6-digit industry code chosen from Erhvervsstyrelsen's own list at branchekode.dk.

    pattern
  • vatStartDate date optional

    Start 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.

  • vatRegistrationType enum optional

    The single type of Danish VAT registration being requested (the form instructs "vælg kun en" — choose only one).

    enum: 7 values
  • vatRegistrationReason string optional

    Free-text reason for VAT registration, if applicable (see the form's own guidance).

    length: 0–500
  • permanentEstablishmentInDenmark boolean optional

    Whether the business has a fixed place of business in Denmark, asked to help establish the business's legal VAT status.

  • permanentEstablishmentInEu boolean optional

    Whether the business has a fixed place of business within the EU, asked to help establish the business's legal VAT status.

  • homeCountryVatCountryCode string optional

    Country 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
  • homeCountryVatNumberIfNotInRubrik2 string optional

    The business's home-country VAT number, only needed if not already given in Rubrik 2 (homeCountryVatNumberAtRegistration).

    length: 0–50
  • customsStartDate date optional

    Start 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.

  • customsImport boolean optional

    Whether the business imports goods.

  • customsExport boolean optional

    Whether the business exports goods.

  • customsDutyPaymentMethod enum optional

    The 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
  • customsEstablishedOtherEuCountry boolean optional

    Whether the business is established in an EU country other than Denmark for EU customs-rule purposes, asked to help determine EORI-number eligibility.

  • customsEstablishedInDenmark boolean optional

    Whether the business is established in Denmark for EU customs-rule purposes, asked to help determine EORI-number eligibility.

  • eoriPublicationConsent boolean optional

    Whether the business wants its name and address published in the EU's central EORI web search.

  • existingEoriNumber string optional

    The business's existing EORI number, if it already has one (remember the country code).

    length: 0–30
  • euVatCountryCode1 string optional

    Country code for the first of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.

    length: 0–10
  • euVatNumber1 string optional

    The first of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.

    length: 0–50
  • euVatCountryCode2 string optional

    Country code for the second of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.

    length: 0–10
  • euVatNumber2 string optional

    The second of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.

    length: 0–50
  • euVatCountryCode3 string optional

    Country 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
  • euVatNumber3 string optional

    The third of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.

    length: 0–50
  • euVatCountryCode4 string optional

    Country code for the fourth of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.

    length: 0–10
  • euVatNumber4 string optional

    The fourth of up to 4 additional EU VAT numbers the business wants linked to a Danish EORI number.

    length: 0–50
  • taxLiabilityStartDate date optional

    The 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.

  • firstAccountingPeriodStartDate date optional

    Start 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.

  • firstAccountingPeriodEndDate date optional

    End 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.

  • taxLiabilityPermanentEstablishment boolean optional

    One 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").

  • taxLiabilityOwnsRealProperty boolean optional

    One of several possible reasons for Danish corporate tax liability: the business owns real property in Denmark.

  • taxLiabilityManagementSeatInDenmark boolean optional

    One of several possible reasons for Danish corporate tax liability: the seat of the business's management is in Denmark.

  • taxLiabilityJointTaxationRequested boolean optional

    One of several possible reasons for Danish corporate tax liability: the business requests joint taxation (see the form's own guidance).

  • taxLiabilityOtherReasonApplicable boolean optional

    One of several possible reasons for Danish corporate tax liability: another reason, specified in taxLiabilityOtherReasonText.

  • taxLiabilityOtherReasonText string optional

    Free-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
  • alternativeAddressCoName string optional

    Optional 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
  • alternativeAddressStreet string optional

    Street 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
  • alternativeAddressPostalCode string optional

    Postal code of the alternative Danish address, only completed when neither Rubrik 3 nor Rubrik 4 has been filled in.

    patternclassification: pii
  • alternativeAddressCity string optional

    City of the alternative Danish address, only completed when neither Rubrik 3 nor Rubrik 4 has been filled in.

    length: 0–100classification: pii
  • payrollTaxStartDate date optional

    Start 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.").

  • payrollTaxCategory enum optional

    Which lønsumsafgift (payroll tax) category the business falls under.

    enum: touristOfficesInformationServicesLotteries | insuranceBankingFinancing | newspaperPublisherOrImporter | otherDoctorDentistEducationMuseumClinicTaxi | organizationsFoundationsAssociationsSelfGoverningInstitutions
  • payrollTaxBusinessLocationInDenmark boolean optional

    Whether 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.

  • firstEmployeeHireDate date optional

    The 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.

  • taxWithholdingCategory enum optional

    Which 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
  • atpRegistration boolean optional

    Whether 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.

  • taxFreeNetWageRegistration boolean optional

    Whether 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.

  • employeeTaxPermanentEstablishmentInDenmark boolean optional

    Whether 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).

  • addressOutsideEuFaroeGreenlandIcelandNorway boolean optional

    Whether the business has its registered address (hjemting) outside the EU, the Faroe Islands, Greenland, Iceland, and Norway.

  • registrationReasonOrRemarks string optional

    Free-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
  • signatoryDate1 date required

    Date of signature for the first owner/authorized signatory (of up to 3 on this specimen).

  • signatoryName1 string required

    Name in block letters of the first owner/authorized signatory (of up to 3 on this specimen).

    length: 0–200classification: pii
  • signatoryDate2 date optional

    Date of signature for the second owner/authorized signatory, if more than one signs.

  • signatoryName2 string optional

    Name in block letters of the second owner/authorized signatory, if more than one signs.

    length: 0–200classification: pii
  • signatoryDate3 date optional

    Date of signature for the third owner/authorized signatory, if more than two sign.

  • signatoryName3 string optional

    Name in block letters of the third owner/authorized signatory, if more than two sign.

    length: 0–200classification: pii
  • contactPersonSignatureDate date optional

    Date 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").

  • contactPersonSignatureName string optional

    Name 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,622 bytes — matching the pre-scout's byte count exactly, independently re-confirmed rather than assumed. Confirmed a genuine PDF (%PDF-1.7 header) with 5 pages and a live /AcroForm dictionary (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 its vejledning-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:

  1. doc.getFieldObjects() — resolved 122 distinct field names across the document's 5 pages: 97 Tx text fields, 15 Btn radio groups (41 total mutually-exclusive kid widgets across the 15 groups), and 10 independent Btn checkboxes. 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.
  2. page.getAnnotations() per page — captured every widget's own rect, alternativeText tooltip, field type, and (for Btn widgets) 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.
  3. 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.
  4. 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)

  1. 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 the alternativeText "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 as euVatCountryCode3 by rect position (column alignment with the two widgets above it and the Momsnummer 2 widget beside it at the same y-range), not by its tooltip text.
  2. 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's taxLiabilityManagementSeatInDenmark). 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 as taxLiabilityOtherReasonText (paired with taxLiabilityOtherReasonApplicable, 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

  1. 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.
  2. Two page-4 heading-echo Tx widgets (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, with alternativeText that 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".
  3. 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 alternativeText and 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 a Group3XX radio 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.
  4. 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 to euVatCountryCode1/euVatNumber1 through euVatCountryCode4/euVatNumber4. Unlike the entrant1/ child1 precedent, none of these 8 fields are marked required, 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) through signatoryDate3/ 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) with businessType: noAddressInDenmarkEuEeaOnly and registeredInHomeCountry: 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 (since registeredInHomeCountry: true), VAT registration, customs/EORI, corporate tax liability (including taxLiabilityManagementSeatInDenmark explicitly set false to 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):
    1. Removing the required industryCodeMISSING REQUIRED.
    2. Setting industryCode to "12A456" (violates pattern: ^[0-9]{6}$) → fails pattern.
    3. Setting businessType to "somethingElse" (not in the enum) → value ... not in enum.
    4. Setting businessType to "businessAddressInDenmark" without adding the Rubrik-3 fields it now requires → danishBusinessAddressStreet/danishBusinessAddressPostalCode/ danishBusinessAddressCity each flagged MISSING REQUIRED, confirming requiredWhen correctly re-evaluates when the gating field changes.
    5. Setting businessNameHomeCountry to a 301-character string (exceeds maxLength: 300) → exceeds maxLength.

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.0 draft latest this page has verification record schema.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.