Skip to main content

Dual Registry System

Poland’s implementation uses a hybrid approach with two different APIs:
  • biznes.gov.pl API: Used for search across both registries and for CEIDG entities (individual businesses and sole proprietorships)
  • KRS API: Used directly for companies and legal entities registered in the National Court Register

Dual ID System with Prefixes

To distinguish between the two registry sources, our system uses prefixed identifiers:
  • nip-{number}: CEIDG entities (individual businesses) - handled via biznes.gov.pl
  • krs-{number}: KRS entities (companies and legal entities) - handled via direct KRS API
This approach ensures optimal data retrieval by using biznes.gov.pl for search and CEIDG data, while leveraging the specialized KRS API for comprehensive company information and documents.

Company Identifiers

Poland’s implementation provides comprehensive company identification through multiple registry codes:
  • NIP: Tax identification number (Numer Identyfikacji Podatkowej) - primary business identifier for tax purposes
  • REGON: Statistical number (Rejestr Gospodarki Narodowej) - unique identifier in the National Business Registry
  • VAT Number: Same as NIP for most entities - used for VAT purposes
Format Example:
{
  "identifiers": {
    "nip": "6111010909",
    "regon": "003295237",
    "vatNumber": "6111010909"
  }
}

Search Capabilities

  • By company name (contains matching): search("AUTO TEST")
  • By NIP code: search("6111010909")
  • By REGON code: search("003295237")
  • By KRS number: search("0001010154")

Company Status Information

Registry Status Mapping

Poland’s KRS system provides detailed status information that we map to standardized company statuses:
KRS DataLocal Status (Polish)Standardized StatusDescription
dataWykresleniaZRP + dataUprawomocnieniaWykresleniaZKRSWYKREŚLONA Z REJESTRUCLOSEDCompany dissolved/deleted from register
czyUpadlosc = trueUPADŁOŚĆUNDER_INSOLVENCY_PROCEEDINGCompany in bankruptcy proceedings
czyOPP = truePOSTĘPOWANIE NAPRAWCZEUNDER_INSOLVENCY_PROCEEDINGCompany in restructuring proceedings
nazwa contains “W LIKWIDACJI”W LIKWIDACJICLOSEDCompany in liquidation (name-based detection)
dataZawieszeniaDzialalnosciZAWIESZONA DZIAŁALNOŚĆUNKNOWNBusiness activity suspended
DefaultAKTYWNAACTIVEActive company

Date Mapping

Our implementation maps different Polish registry dates to standardized fields:
Registry FieldEnglish TranslationUsage
dataWpisuDoRPDate of entry into Register of EntrepreneursregistrationDate
dataWykresleniaZRPDate of deletion from Register of EntrepreneursDissolution date (internal)
dataUprawomocnieniaWykresleniaZKRSDate when deletion became finalFinal closure date (internal)
daneDotyczaceUpadlosci.dataZakonczeniaPostUpadBankruptcy proceedings completion dateBankruptcy end date (internal)

Closure Scenarios

Poland handles several types of company closure with corresponding closure dates:
  1. Standard Dissolution: Both dataWykresleniaZRP and dataUprawomocnieniaWykresleniaZKRS are present
    • Closure date: Uses dataUprawomocnieniaWykresleniaZKRS (final deletion date) if available, otherwise dataWykresleniaZRP
    • Closure reason: ADMINISTRATIVE_DISSOLUTION
  2. Bankruptcy: czyUpadlosc = true with detailed bankruptcy information in daneDotyczaceUpadlosci
    • Closure date: daneDotyczaceUpadlosci.dataZakonczeniaPostUpad (if bankruptcy proceedings completed)
    • Closure reason: BANKRUPTCY
    • Status: UNDER_INSOLVENCY_PROCEEDING (ongoing) or CLOSED (if completion date available)
  3. Liquidation: Company name contains “W LIKWIDACJI”
    • Closure reason: LIQUIDATION
    • Status: CLOSED
  4. Restructuring: czyOPP = true indicating ongoing reorganization proceedings
    • Closure reason: OTHER
    • Status: UNDER_INSOLVENCY_PROCEEDING

Closure Date Priority

Our implementation prioritizes closure dates in the following order:
  1. Administrative dissolution dates (dataWykresleniaZRP/dataUprawomocnieniaWykresleniaZKRS) - highest priority
  2. Bankruptcy completion dates (daneDotyczaceUpadlosci.dataZakonczeniaPostUpad)
  3. Name-based liquidation detection (no specific date available)
This ensures that formal registry deletion dates take precedence over other closure indicators.

KRS Data Structure

Company Representatives

The KRS system provides detailed information about company management:
interface KrsRepresentativeMember {
  funkcja: string; // Role: "PREZES ZARZĄDU" (CEO), "WICEPREZES ZARZĄDU" (Vice President)
  imiePierwsze: string; // First name: "JAKUB", "TOMASZ"
  imieDrugie: string; // Middle name: "JULIAN", "FRANCISZEK", "" (if none)
  nazwisko: string; // Last name: "BARAN", "RADZISZEWSKI"
  nazwiskoDrugiCzlon: string; // Second surname component (for compound surnames)
  nazwa: string | null; // Company name (if representative is a legal entity)
}
Example:
  • PREZES ZARZĄDU → CEO/President of the Board
  • WICEPREZES ZARZĄDU → Vice President of the Board
  • CZŁONEK ZARZĄDU → Board Member

Bankruptcy Details

For companies that have gone through bankruptcy (czyUpadlosc = true), the KRS provides detailed proceedings information:
interface KrsBankruptcyDetails {
  dataWydaniaAktuPraw: string; // Date of legal act issuance
  dataZakonczeniaPostUpad: string; // Bankruptcy proceedings completion date
  nazwaOrganu: string; // Court/authority name
  sposobZakonczeniaPostUpad: string; // Method of bankruptcy completion
  sygnaturaAktuPraw: string; // Legal act reference number
}

Address Processing

Our implementation uses Google Geocoding API for accurate address standardization:
  • Primary: Google Maps API with Poland country bias for precise geocoding
  • Fallback: Manual parsing of KRS address components if geocoding fails
  • Test Environment: Returns basic parsed structure to avoid API calls during testing
Polish addresses typically include:
  • adres: Street address (“ALEJA JANA PAWŁA II 29”)
  • kodPocztowy: Postal code (“00-867”)
  • miejscowosc: City (“WARSZAWA”)
  • wojewodztwo: Voivodeship/Province (“MAZOWIECKIE”)

Document Retrieval

Poland supports multiple document types based on the company’s registry source:

Available Documents by Registry Type

RegistryDocument TypeDocument IDDescription
KRS (Companies)Trade Register Extract (Current)trade_register_extractCurrent official extract from the National Court Register (Aktualny odpis z KRS)
KRS (Companies)Historical Trade Register Extracthistorical_trade_register_extractFull historical extract with all changes (Pełny odpis historyczny z KRS)
CEIDG (Sole Proprietors)Trade Register Extracttrade_register_extractCertificate from CEIDG registry (Zaświadczenie z CEIDG)
CEIDG (Sole Proprietors)Representatives DocumentrepresentativesInformation about business representatives/proxies (Informacja o pełnomocnikach)

Document Availability Logic

For KRS Companies (prefix: krs-):
  • Active companies: Both current and historical trade register extracts available
  • Inactive/closed companies: Only historical trade register extract available (contains full history including closure details)
For CEIDG Entities (prefix: nip-):
  • All entities: Trade register extract (certificate) and representatives document available
  • These documents are retrieved directly from the biznes.gov.pl API

Document Format

All documents are delivered as PDF files with the following metadata:
  • Format: pdf
  • Language: Polish (original documents from government registries)
  • Cache interval: 1 day (documents are cached to improve performance)
  • Delivery time: 30-60 seconds estimated

API Response Structure

Documents that don’t match standard types (like representatives and historical_trade_register_extract) are returned in the otherDocuments array:
{
  "documents": {
    "tradeRegisterExtract": {
      "id": "trade_register_extract",
      "format": "pdf",
      "url": "https://..."
    },
    "otherDocuments": [
      {
        "id": "historical_trade_register_extract",
        "name": "Pełny odpis historyczny z KRS",
        "format": "pdf",
        "url": "https://..."
      },
      {
        "id": "representatives",
        "name": "Informacja o pełnomocnikach",
        "format": "pdf",
        "url": "https://..."
      }
    ]
  }
}

Financial Documents

Poland supports retrieval of financial statements (annual reports, consolidated statements, auditor opinions, etc.) from the official Ministry of Finance financial documents portal (ekrs.ms.gov.pl).

Automatic XML-to-PDF Conversion

Financial documents in Poland are often published in XML format using the Ministry of Finance schema (xmlns=“http://www.mf.gov.pl/schematy/SF/DefinicjeTypySprawozdaniaFinansowe/2018/07/09/JednostkaMikroWZlotych”). We automatically convert these XML files to human-readable PDF format for your convenience.
How it works:
  • When a financial document is retrieved in XML format, we automatically convert it to PDF (returned in the pdfUrl field) using the official Polish government visualization tool at e-sprawozdania.mf.gov.pl
  • Both the original XML and the converted PDF are stored and accessible
  • The conversion happens transparently during document retrieval
  • If conversion fails for any reason, the original XML file is still returned

Financial Document Types

Available financial document types include:
  • Annual Financial Statements (Roczne sprawozdanie finansowe)
  • Consolidated Annual Financial Statements (Skonsolidowane roczne sprawozdanie finansowe)
  • Management Reports (Sprawozdanie z działalności)
  • Auditor’s Opinions (Opinia biegłego rewidenta)
  • Approval Resolutions (Uchwały o zatwierdzeniu sprawozdań)
  • Profit Distribution Resolutions (Uchwały o podziale zysku)

Document Format Limitations

Due to technical limitations of the Polish financial documents portal, the document format (XML vs PDF) is not available in the availableDocuments listing. The format field will be undefined during listing and is only determined when the document is actually downloaded.

AI Parser Integration

The KRS mapper integrates with several AI-powered parsers for data standardization:

Status Parser

  • Maps Polish status terms to international standards
  • Handles complex scenarios like “POSTĘPOWANIE NAPRAWCZE” (restructuring)
  • Converts Polish legal forms to English translations
  • Maps to ISO 20275 codes and standardized categories
  • Examples: “SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ” → “Limited Liability Company”

Role Parser

  • Standardizes management roles using ISO 5009 codes
  • Maps Polish titles to international role classifications
  • Context-aware based on company’s legal form