KausateKausate Docs
Jurisdiction Guides

Germany (DE)

Overview of German company data coverage, registers, and legal forms

Overview

Germany has one of the most comprehensive and well-digitized commercial register systems in Europe. The Handelsregister (Commercial Register) is maintained by local courts across all 16 federal states, providing authoritative information on companies, partnerships, and other legal entities.

Registers

Handelsregister

The commercial register, maintained by the local courts (Amtsgerichte) across all 16 federal states. It is the authoritative source for company data, official documents and — because German shareholder lists are checked by notaries at filing — the notary-verified shareholder graph.

FieldValue
NameHandelsregister
Managing authorityLocal courts (Amtsgerichte) / state justice ministries

Unternehmensregister

Germany's central portal for company publications: annual financial statements, corporate announcements and other mandatory filings. Companies are referenced by their Handelsregister identifiers.

TypeDescription
JahresabschlüsseAnnual financial statements
KonzernabschlüsseConsolidated financial statements
BekanntmachungenCorporate announcements
KapitalmarktinformationenCapital market information

Transparenzregister

Germany's beneficial ownership register. Since August 2021 it operates as a full register rather than a catch-all for entities not covered elsewhere. Its entries are self-declarations by the companies themselves, and access is legally restricted — see Beneficial ownership below for the delegated-access setup.

Insolvenzbekanntmachungen

The official insolvency publication portal required by § 9 InsO, run by the North Rhine-Westphalia Ministry of Justice on behalf of all federal states. Every German insolvency court publishes here, so it is the authoritative record that proceedings have been opened, dismissed, or closed.

FieldValue
NameInsolvenzbekanntmachungen (§ 9 InsO)
Managing authorityMinistry of Justice of North Rhine-Westphalia, for all states

Unlike the three registers above, this one is not a search or report source: it is a publication feed consumed by company monitoring. Subscribe a company to the de_insolvenzbekanntmachungen.feed source and a publication naming it raises an event within the polling window, resolved to the company through its Handelsregister coordinates and cross-checked on the debtor name.

The portal's nine publication types map onto generic event codes, so the same handler works across jurisdictions:

Publication type (German)eventCode
EröffnungenINSOLVENCY_OPENED
Abweisungen mangels MasseINSOLVENCY_DISMISSED_FOR_LACK_OF_ASSETS
SicherungsmaßnahmenINSOLVENCY_PROTECTIVE_MEASURES
Entscheidungen im VerfahrenINSOLVENCY_DECISION
Entscheidungen nach Aufhebung des VerfahrensINSOLVENCY_LIFTED
Verteilungsverzeichnisse (§ 188 InsO)INSOLVENCY_DISTRIBUTION_PUBLISHED
Entscheidungen im RestschuldbefreiungsverfahrenINSOLVENCY_DISCHARGE_DECISION
Überwachte InsolvenzpläneINSOLVENCY_PLAN_SUPERVISED
SonstigesINSOLVENCY_OTHER

A company's Handelsregister status also moves when proceedings open, but the register entry follows the court filing rather than the publication. The feed is the earlier signal, which is why monitoring reads it directly instead of waiting for a status change on the company report.

Identifiers

German companies are identified by a combination of court, register type, and register number:

FieldDescriptionExample
court_id5-character court codeD2601
register_typeRegister type codeHRB
register_numberRegister number253035
register_suffixOptional suffixB

The normalized display format is Amtsgericht München HRB 253035; the compact normalized id, used by the Unternehmensregister and Transparenzregister paths, joins the court code and the register number as R3101_HRB 75787.

Register Types

German companies are registered in different registers depending on their legal form:

RegisterCodeDescriptionExample Entities
Handelsregister AHRAPartnershipsOHG, KG, GmbH & Co. KG
Handelsregister BHRBCorporationsGmbH, AG, UG, SE
GenossenschaftsregisterGnRCooperativeseG
PartnerschaftsregisterPRProfessional partnershipsPartG, PartG mbB
VereinsregisterVRAssociationse.V.
GesellschaftsregisterGsRCivil law partnershipseGbR (since 2024)

Corporations (HRB)

Legal FormFull NameDescription
GmbHGesellschaft mit beschränkter HaftungLimited liability company (most common)
UGUnternehmergesellschaft (haftungsbeschränkt)Mini-GmbH with reduced capital requirements
AGAktiengesellschaftStock corporation
SESocietas EuropaeaEuropean company
KGaAKommanditgesellschaft auf AktienPartnership limited by shares

Partnerships (HRA)

Legal FormFull NameDescription
OHGOffene HandelsgesellschaftGeneral partnership
KGKommanditgesellschaftLimited partnership
GmbH & Co. KG-Limited partnership with GmbH as general partner

Available Documents

The register's own shortcut is the documentType you order by, and each document bills its own SKU:

Document typeShortcutSKUDescriptionFormatAvailability
Aktueller AbdruckADDEHRADCurrent register extractPDFAll companies
Chronologischer AbdruckCDDEHRCDHistorical extract with all changesPDFAll companies
Historischer AbdruckHDDEHRHDPre-digitisation historical extractPDFWhere digitised
Strukturierter RegisterinhaltSIDEHRSIMachine-readable structured dataXMLAll companies
GesellschafterlisteDKDEHRSLShareholder listPDFGmbH, UG only
Satzung / GesellschaftsvertragDKDEHRAAArticles of associationPDFWhen filed
MusterprotokollDKDEHRMPModel protocol (simplified formation)PDFWhen used

AD, CD, HD and SI are the four top-level register documents — ordering one is a single call. Everything under DK (Dokumentenansicht) is a filing in the company's document tree, so it is discovered through List Documents and ordered by the documentId that listing returns, rather than by shortcut.

Ownership, control, and UBO data

Germany exposes ownership through two complementary sources, which answer different questions — for KYB the registry-backed signal is usually the stronger one:

SourceWhat it gives youNature
Handelsregister shareholder graphDirect and indirect shareholders, recursively, with ownership %Notary-verified (checked at filing)
TransparenzregisterDeclared ultimate beneficial owners with control typeSelf-declared by the company
  • Shareholder graph (Handelsregister) — direct and indirect shareholders with ownership percentages, reconstructed recursively. Shareholder lists are verified by notaries at filing, making this a strong ownership signal. No special credentials required. See Real-time Search and the Shareholder Graph API.
  • Beneficial owners (Transparenzregister) — declared ultimate beneficial owners and control type. These are self-declarations, and access is legally restricted to German obliged entities, so it uses a delegated-access setup (the client's credentials are deployed into Kausate). See Beneficial ownership.

Fetching UBOs for a German company without configured Transparenzregister credentials returns a clear "credentials not configured" error. This is a legal access restriction — see Beneficial ownership for the delegated-access setup.

Our real-time search API allows you to search for companies directly from the German Handelsregister portal. This is useful when you need the most up-to-date search results or when searching for companies not yet in our index.

Advanced Query

For more precise searches, use the advancedQuery parameter instead of a simple name search. This allows you to combine multiple search criteria for better results.

{
  "advancedQuery": {
    "name": "Chocoladefabriken Lindt & Sprüngli GmbH",
    "registerNumber": "HRB 3452",
    "jurisdiction": "de"
  }
}

Available Fields (Germany)

FieldDescriptionExample
nameCompany name"BMW AG"
courtIdCourt ID"D2803"
courtCityCourt city (fuzzy-matched)"München"
registerTypeRegister type"HRB", "HRA", "GNR"
registerNumberRegister number (can include prefix)"10364", "HRB 275800"
registerSuffixRegister suffix"B"
jurisdictionAlways "de" for Germany"de"

You cannot use both courtId and courtCity in the same query - use one or the other. The courtCity field supports fuzzy matching, so minor spelling variations are handled automatically.

Example Queries

Search by name and register number:

{
  "advancedQuery": {
    "name": "Lindt",
    "registerNumber": "HRB 3452",
    "jurisdiction": "de"
  }
}

Search by court city and register details:

{
  "advancedQuery": {
    "courtCity": "München",
    "registerType": "HRB",
    "registerNumber": "10364B",
    "jurisdiction": "de"
  }
}

Search by register number with embedded type:

{
  "advancedQuery": {
    "courtCity": "Berlin",
    "registerNumber": "HR B 275800",
    "jurisdiction": "de"
  }
}

The registerNumber field automatically parses embedded register types (like HRB, HR B, HRA, etc.) and suffixes, so you can pass the full register number as it appears in official documents.

Real-time Document Retrieval

Our real-time document retrieval service allows you to fetch official documents directly from the German Handelsregister on demand. This ensures you always have access to the most current versions of company documents.

Supported Document Types

  • Shareholder Lists (Gesellschafterliste)
  • Articles of Association (Satzung / Gesellschaftsvertrag)
  • Current Extract (Aktuelle Auszug)
  • Structured Information (Strukturierte Information)

How It Works

  1. The API establishes a connection to the official Handelsregister
  2. Documents are retrieved in real-time
  3. Retrieved documents are automatically processed and made available via a secure URL
  4. Documents are cached to improve performance for subsequent requests

For detailed implementation instructions, refer to our API Reference.

Beneficial ownership (Transparenzregister)

Data available

FieldDescription
Beneficial OwnersNatural persons with >25% ownership or control
Ownership PercentagePercentage of shares or voting rights
Control TypeDirect, indirect, or other form of control

Access: delegated credentials required

Beneficial ownership data from the German Transparenzregister is not openly accessible. Access is governed by § 23 GwG (Geldwäschegesetz, the German Money Laundering Act): since the ECJ struck down open public access in C-37/20, inspection is limited to authorities, obliged entities performing customer due diligence, and anyone who can demonstrate a legitimate interest. Retrieving it therefore requires credentials issued to a Verpflichteter — the obliged entities listed in § 2 GwG: banks, notaries, regulated financial and professional service firms. That permission is granted only to German obliged entities, so the register cannot be opened to an arbitrary account.

If you are a German obliged entity, or you serve a German client that is one, you reach the Transparenzregister through a delegated access setup: the obliged entity's credentials are deployed into Kausate's encrypted secret store and used to authenticate the calls on their behalf. Attempting a UBO request without configured credentials returns a clear "credentials not configured" error rather than data.

How delegated access works

1. Store the credentials

The German obliged entity's Transparenzregister login is passed into Kausate's encrypted secret store via the Integrations API. Credential values are write-only — they are used for calls but never returned by the API.

2. Separate customers with customerId

When you act for more than one obliged entity, a customerId keeps each client's credentials isolated, both in storage and at call time.

3. Fetch UBO / ownership data

UBO requests for German companies authenticate with the stored credentials that match the request, returning beneficial owners, ownership percentages, and control type.

Step 1 — Pass the credentials into the secret store

Use the Create Integration endpoint with the de-transparenzregister datasource. The credential pair is the email and password the obliged entity uses to sign in to the Transparenzregister:

curl -X POST "https://api.kausate.com/v2/integrations" \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "datasourceSlug": "de-transparenzregister",
    "secretValues": {
      "email": "obliged-entity@example.de",
      "password": "the-account-password"
    }
  }'

The response confirms the stored datasource and its timestamps; it never echoes the values back:

{
  "datasourceSlug": "de-transparenzregister",
  "datasourceName": "Transparenzregister",
  "createdAt": "2026-06-06T10:00:00Z",
  "updatedAt": "2026-06-06T10:00:00Z"
}

Manage credentials over their lifetime with the companion endpoints — List (to see which datasources are configured, without exposing values), Update (to rotate the password), and Delete.

Step 2 — Separate multiple customers with customerId

If you provide UBO access to several German clients, each supplies their own obliged-entity credentials. The customerId flag keeps those credential sets separate: pass it when storing the credentials, and the same identifier later selects which set is used for a call.

# Store one client's credentials under their customerId
curl -X POST "https://api.kausate.com/v2/integrations?customerId=acme-bank" \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "datasourceSlug": "de-transparenzregister",
    "secretValues": { "email": "kyb@acme-bank.de", "password": "..." }
  }'

customerId must be URL-safe (letters, numbers, dashes, underscores) and at most 150 characters. Omit it to store a single set of credentials at the organization level — that single set is then used for every German UBO call.

Step 3 — Retrieve beneficial owners

Place a UBO order with the Extract Ultimate Beneficial Owners endpoint. To use a specific customer's stored credentials, send their identifier in the X-Customer-Id header — it selects the matching credential set and scopes the resulting order to that customer:

curl -X POST "https://api.kausate.com/v2/companies/ubo" \
  -H "X-API-Key: $API_KEY" \
  -H "X-Customer-Id: acme-bank" \
  -H "Content-Type: application/json" \
  -d '{ "kausateId": "co_de_4JFFrsbQ99t1nmRw2JgzmG" }'

This returns an order you can poll at GET /v2/companies/ubo/{orderId} or receive via webhook. For a blocking call that returns the completed report directly, use Extract UBOs (sync). Pass the same X-Customer-Id to the poll endpoint to read back a customer-scoped order.

Omit X-Customer-Id to use the organization-level credentials configured in Step 1. Send it (matching a customerId used at storage time) to use that end customer's credentials.

Other data sources

Company data in every jurisdiction is also spread across sources outside the commercial register — the central bank, the official gazette, the financial supervisor's authorisation registers, the statistical office and the tax authority among them. Kausate draws only on the sources described on this page; when you need something the API does not carry, those are where to look.

Coverage

  • All 16 federal states covered
  • 150+ local courts (Amtsgerichte)
  • All register types (HRA, HRB, GnR, PR, VR, GsR)
  • Historical data available where digitized (typically from 2007 onwards)

FAQ

Last updated on

On this page