> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topograph.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Portugal

> Country-specific identifiers, data sources, and implementation details

## Start here

This guide contains public integration notes for Portugal. Use it for identifier formats, search behavior, and country-specific caveats. The live source of truth for coverage, pricing, data sources, documents, legal forms, roles, and status values is the pricing page.

<Card title="Portugal coverage, pricing, and sources" icon="arrow-up-right-from-square" href="https://topograph.co/pricing/pt">
  Open the current catalog for supported datapoints, documents, sources, identifiers, and availability.
</Card>

<Note>
  Country details below are preserved as integration notes. If a table or example conflicts with the live pricing page, use the pricing page as the source of truth and contact support.
</Note>

## Table of Contents

* [Data Sources](#data-sources)
* [Company Identifiers](#company-identifiers)
* [Search Capabilities](#search-capabilities)
* [Quirks & Gotchas](#quirks--gotchas)
* [Mappings](#mappings)
* [Data Availability](#data-availability)
* [Example API Responses](#example-api-responses)

## Data Sources

Portugal uses a combination of a private business intelligence platform and the official registration authority. For a given entity, **data comes from a single primary source** (all-or-nothing model). There are two distinct data pathways: one for structured company profile data and one for official document retrieval.

### Company Profile Data

* **Aggregated commercial register source** -- A Portuguese business information platform that consolidates company data from official registries. Used as the **primary source for all structured company data**. A company report is retrieved from the source, from which all structured attributes are extracted via AI parsing: company name, legal form, status, registration date, registered address, share capital, activity codes (CAE), legal representatives, and shareholders.

### Official Documents

* **Instituto dos Registos e do Notariado (IRN)** -- The Portuguese registration and notary authority, operating under the Ministry of Justice since 2007. Used exclusively for **official document retrieval**. Two document types are available: the Certidao de Registo Comercial (permanent commercial register certificate) and the Certidao do Ultimo Pacto Social/Estatutos Atualizados (latest articles of association). Both are delivered via an email-based retrieval flow through the IRN portal.

### Publications (all company data)

* **Publicacoes do Registo Comercial** -- Official commercial register publications, and the source of **all** Portuguese company data. Publications include legal announcements, corporate acts, and other mandatory filings. In **verification mode**, the most recent publications are read chronologically and the company profile, legal representatives and shareholders are extracted by AI from them; the most recent publication determines the current company status. In **onboarding mode**, base company fields (legal name, NIPC, legal form, status, share capital) are reconstructed from the same publications ahead of time and refreshed daily, so they are returned instantly; officers and shareholders are not included. Neither mode performs a live query against the register, so both carry a `cached_from_registry` data source on `publicacoes_mj`.

<Note>
  **AI-parsed data:** Portugal's company profile data is entirely AI-parsed from HTML reports. There is no structured company API available. All attributes (including legal form, status, legal representatives, and shareholders) are extracted by AI from HTML content.
</Note>

## Company Identifiers

### Query Identifiers

| Company Type      | Source                    | Format           | Example     | Notes                                      |
| ----------------- | ------------------------- | ---------------- | ----------- | ------------------------------------------ |
| **All companies** | IRN / commercial register | 9-digit NIPC/NIF | `501442600` | Numero de Identificacao de Pessoa Coletiva |

<Tip>
  **NIPC Format:** The Portuguese NIPC (Numero de Identificacao de Pessoa Coletiva) is a 9-digit tax identification number for companies. For commercial companies, the first digit is typically `5`. The 9th digit is a check digit calculated using a modulo 11 algorithm with weights `[9, 8, 7, 6, 5, 4, 3, 2]`.
</Tip>

### Identifiers in API Response

Once you retrieve company data, the `identifiers` object contains all available identifiers for that entity:

| Identifier Type | Format        | Example       | Found In                           |
| --------------- | ------------- | ------------- | ---------------------------------- |
| `NIF` / `NIPC`  | 9 digits      | `501442600`   | All registered companies           |
| `VAT`           | PT + 9 digits | `PT501442600` | Companies with EU VAT registration |

## Search Capabilities

| Search Type | Pattern     | Example             | Match Type | Expected Results                                                     |
| ----------- | ----------- | ------------------- | ---------- | -------------------------------------------------------------------- |
| By NIF/NIPC | 9 digits    | `501442600`         | Exact      | Exact match returned first (matchType: id); other results may follow |
| By Name     | Text string | `"Exemplo Empresa"` | Fuzzy      | Multiple results                                                     |

<Note>
  **Search implementation:** Portugal search is performed via the aggregated commercial register source. Both NIF-based and name-based searches are routed through the same search workflow. Results include company name, NIF, and address (city/region). Brand results are automatically filtered out.
</Note>

## Quirks & Gotchas

| Quirk                                                | Details                                                                                                                                                                                                                                                                                                                                                   |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **All profile data is AI-parsed**                    | Company profile, legal form, status, legal representatives, and shareholders are all extracted from HTML reports via AI parsing. There is no structured API.                                                                                                                                                                                              |
| **Email-based document retrieve**                    | Certificates require an email-based retrieval flow through the IRN portal. A document request is submitted through the IRN portal and the access code is received by email.                                                                                                                                                                               |
| **Up to 24-hour document delivery**                  | After obtaining an access code, the system waits for document availability on the IRN portal (up to 24 hours). Most documents are available within 1-2 hours.                                                                                                                                                                                             |
| **Access code reuse (1 year)**                       | Once obtained, access codes are valid for 1 year. Subsequent requests for the same document type reuse the existing code, bypassing the email retrieval flow entirely.                                                                                                                                                                                    |
| **CAE classification**                               | Portugal uses CAE (Classificacao de Actividades Economicas), currently CAE Rev. 3 maintained by INE (Statistics Portugal). CAE closely mirrors NACE. Codes are extracted from the source report by AI.                                                                                                                                                    |
| **NIPC check digit**                                 | The 9th digit of the NIPC is a check digit calculated using modulo 11 with weights `[9, 8, 7, 6, 5, 4, 3, 2]`. The system can generate valid NIPCs for internal use.                                                                                                                                                                                      |
| **No direct registry API**                           | Unlike many European countries, Portugal does not offer a structured API for commercial register data. All data is sourced through an aggregated commercial register platform.                                                                                                                                                                            |
| **Retrieval may be slower than API-based countries** | Both search and company report retrieval require interaction with a web platform, which is inherently slower than direct API calls.                                                                                                                                                                                                                       |
| **Onboarding profile is pre-parsed**                 | Onboarding mode returns base company fields reconstructed from the register publications ahead of time and refreshed daily, rather than reading the publications at request time. This is why it responds instantly, why it carries a `cached_from_registry` data source, and why it excludes officers and shareholders. Use verification mode for those. |
| **Publication-based status detection**               | For the onboarding profile, company status is determined from the most recent publication's announcement type. Terms like "Dissolucao", "Liquidacao", "Encerramento", or "Extincao" in the announcement type indicate the company is dissolved/closed.                                                                                                    |
| **Legal representative exclusions**                  | The AI parser is instructed to exclude board members, administrators, and auditors from the legal representatives list. Only persons with active executive authority are returned.                                                                                                                                                                        |

## Mappings

### Company Status

Company status is extracted from HTML reports via **AI parsing**. There is no deterministic status mapping -- the AI infers the status from the document content and standardizes it.

| Local Status          | English Translation  | Standardized Status         |
| --------------------- | -------------------- | --------------------------- |
| Ativa / Em Actividade | Active               | Active                      |
| Encerrada             | Closed               | Closed                      |
| Dissolvida            | Dissolved            | Closed                      |
| Em Liquidacao         | In Liquidation       | Closed                      |
| Extinta               | Extinct / Terminated | Closed                      |
| Insolvente            | Insolvent            | Under Insolvency Proceeding |

<Warning>
  **AI-inferred status:** Since all company data is AI-parsed from HTML reports, status values may vary in their exact local names depending on how the source presents the information. The AI standardizes these to the Topograph status enum. For the onboarding profile (publication-based source), dissolution is detected from the announcement type field of the most recent publication.
</Warning>

### Legal Forms

Portuguese legal forms are extracted from HTML reports via **AI parsing**. The AI identifies the legal form from the company report and provides both the local Portuguese name and standardized classification. ISO 20275 (ELF) codes are assigned via AI enrichment.

#### Key Business Forms

| Abbreviation    | Portuguese Name                 | English Translation                   | Standardized              | ISO 20275 |
| --------------- | ------------------------------- | ------------------------------------- | ------------------------- | --------- |
| Lda.            | Sociedade por Quotas            | Private Limited Company               | Limited Liability Company | `USOG`    |
| S.A.            | Sociedade Anonima               | Public Limited Company                | Corporation               | `DFE5`    |
| Unipessoal Lda. | Sociedade Unipessoal por Quotas | Single-Member Private Limited Company | Limited Liability Company | `VF4C`    |
| S.A.D.          | Sociedade Anonima Desportiva    | Sports Public Limited Company         | Corporation               | `W9W3`    |
| S.C.            | Sociedade em Comandita          | Limited Partnership                   | Partnership               | -         |
| S.N.C.          | Sociedade em Nome Coletivo      | General Partnership                   | Partnership               | -         |

#### Sole Entrepreneurs

| Abbreviation | Portuguese Name               | English Translation | Standardized        | ISO 20275 |
| ------------ | ----------------------------- | ------------------- | ------------------- | --------- |
| ENI          | Empresario em Nome Individual | Sole Trader         | Sole Proprietorship | `VALH`    |

#### Cooperatives

| Abbreviation | Portuguese Name                          | English Translation           | Standardized | ISO 20275 |
| ------------ | ---------------------------------------- | ----------------------------- | ------------ | --------- |
| CRL          | Cooperativa de Responsabilidade Limitada | Limited Liability Cooperative | Cooperative  | -         |
| SCE          | Societas Cooperativa Europaea            | European Cooperative Society  | Cooperative  | `V6YL`    |

#### Non-Profits

| Type       | Portuguese Name | English Translation | Standardized           | ISO 20275 |
| ---------- | --------------- | ------------------- | ---------------------- | --------- |
| Associacao | Associacao      | Association         | Nonprofit Organization | `ALPT`    |
| Fundacao   | Fundacao        | Foundation          | Nonprofit Organization | -         |

#### Public & Government Entities

| Abbreviation | Portuguese Name                    | English Translation       | Standardized            | ISO 20275 |
| ------------ | ---------------------------------- | ------------------------- | ----------------------- | --------- |
| EPE          | Entidade Publica Empresarial       | Public Business Entity    | Government-Owned Entity | `A8CT`    |
| EM           | Empresa Municipal                  | Municipal Enterprise      | Government-Owned Entity | `PIDC`    |
| EEM          | Entidade Empresarial Municipal     | Municipal Business Entity | Government-Owned Entity | `D7OA`    |
| EIM          | Empresa Intermunicipal             | Intermunicipal Enterprise | Government-Owned Entity | `IX01`    |
| EMet         | Empresa Metropolitana              | Metropolitan Enterprise   | Government-Owned Entity | `XD16`    |
| -            | Pessoa Coletiva de Direito Publico | Public Law Legal Entity   | Government-Owned Entity | `P5S3`    |

#### European & International Forms

| Abbreviation | Portuguese Name                            | English Translation                 | Standardized | ISO 20275 |
| ------------ | ------------------------------------------ | ----------------------------------- | ------------ | --------- |
| AEIE         | Agrupamento Europeu de Interesse Economico | European Economic Interest Grouping | Other        | -         |
| ACE          | Agrupamento Complementar de Empresas       | Complementary Grouping of Companies | Other        | -         |
| -            | Pessoa Coletiva Internacional              | International Legal Entity          | Other        | `QFXD`    |

<Note>
  Legal form extraction and standardization are entirely **AI-inferred** from the source report content. ISO 20275 (ELF) codes are added via AI enrichment. The local Portuguese legal form name from the source document is always preserved verbatim. The tables above list the most common forms; the AI can recognize additional forms not listed here.
</Note>

### Legal Representatives

Legal representatives are extracted from HTML reports via **AI parsing**. The AI is specifically instructed to **exclude board members, administrators, and auditors** -- only active legal representatives with executive authority are returned.

<AccordionGroup>
  <Accordion title="Executive Roles (AI-extracted)">
    | Portuguese Role                         | English Translation    | Typical Entity Type        |
    | --------------------------------------- | ---------------------- | -------------------------- |
    | Gerente                                 | Manager                | Lda., Unipessoal Lda.      |
    | Administrador                           | Administrator/Director | S.A.                       |
    | Presidente do Conselho de Administracao | Chairman of the Board  | S.A.                       |
    | Administrador Delegado                  | Managing Director      | S.A.                       |
    | Administrador Unico                     | Sole Director          | S.A.                       |
    | Director-Geral                          | General Director       | Various                    |
    | Presidente                              | President              | Associations, Cooperatives |
    | Representante Legal                     | Legal Representative   | Various                    |
  </Accordion>
</AccordionGroup>

<Note>
  **AI-inferred role classification:** Since all role data is AI-parsed from HTML content, the exact role names may vary depending on how the source presents them. The AI translates Portuguese role names to English and classifies them as legal representatives or other key persons based on context. Both individual and corporate representatives are supported.
</Note>

### Other Key Persons

Other key persons (supervisory roles, auditors, etc.) are **excluded** from the Portugal response. The AI parser is instructed to return only active legal representatives with executive authority.

### Shareholders

Shareholders are extracted from HTML reports via **AI parsing**. Both individual and corporate shareholders are supported.

#### Extraction Logic

| Data Extracted   | Source                       | Notes                                               |
| ---------------- | ---------------------------- | --------------------------------------------------- |
| Shareholder name | AI-parsed from source report | Full name for individuals, legal name for companies |
| Shareholder type | AI-classified                | `individual` or `company`                           |
| Share percentage | AI-parsed when available     | `sharePercentage` field                             |
| Address          | AI-parsed when available     | When present in the report                          |

<Note>
  **Self-reference exclusion:** The AI parser is specifically instructed not to include the queried company itself as a shareholder. Entries listed as "Outros" (Others) without specific details are also excluded.
</Note>

### Activity Code Mapping

Portugal uses the **CAE (Classificacao Portuguesa de Actividades Economicas)**, currently in Revision 3, maintained by INE (Instituto Nacional de Estatistica / Statistics Portugal). CAE extends the European NACE Rev. 2 standard. The system maps activity codes across three levels:

```
CAE (Portuguese) -> NACE Rev. 2 (European) -> ISIC Rev. 4 (International)
```

| Classification | Source                         | Example | AI Inferred?               |
| -------------- | ------------------------------ | ------- | -------------------------- |
| **CAE**        | Source HTML report (AI-parsed) | `62010` | No (extracted from source) |
| **NACE**       | Derived from CAE or AI         | `6201`  | Sometimes                  |
| **ISIC**       | Derived from NACE or AI        | `6201`  | Sometimes                  |

<Note>
  CAE codes are extracted from the source report by AI parsing. The AI is specifically instructed to recognize the CAE classification format. NACE and ISIC derivations use formal mapping tables when possible, with AI fallback. The `isAIInferred` flag distinguishes official vs. AI-derived codes.
</Note>

## Data Availability

### Data Availability Matrix

| Data Type                  | Company Profile | Onboarding Profile (Publications) | Notes                                           |
| -------------------------- | --------------- | --------------------------------- | ----------------------------------------------- |
| Company Name & Address     | ✅               | ✅                                 | AI-parsed from HTML                             |
| Legal Form                 | ✅               | ✅                                 | AI-inferred with ISO 20275 enrichment           |
| Company Status             | ✅               | ✅                                 | AI-inferred; publications use announcement type |
| Registration Date          | ✅               | ✅                                 | When available in source                        |
| Share Capital              | ✅               | ✅                                 | Amount and currency                             |
| Activity Codes (CAE)       | ✅               | ✅                                 | Mapped to NACE/ISIC                             |
| Activity Description       | ✅               | ✅                                 | Business purpose text                           |
| Legal Representatives      | ✅               | ✅                                 | Executive roles only (AI-filtered)              |
| Shareholders               | ✅               | ✅                                 | Individual and corporate                        |
| Ultimate Beneficial Owners | ❌               | ❌                                 | Not available from the source or publications   |
| Establishments             | ❌               | ❌                                 | Not available from the source                   |
| Employee Count             | ❌               | ❌                                 | Not available from the source                   |

**Legend:** ✅ Available | ❌ Not Available | Async = Asynchronous processing

### Documents by Company Type

#### All Companies (NIPC)

| Document Type                       | API Category                    | Format | Catalog item                     | Availability                   | Notes                                                                                                                                                                 |
| ----------------------------------- | ------------------------------- | ------ | -------------------------------- | ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Certidao de Registo Comercial**   | `certifiedTradeRegisterExtract` | PDF    | `PRT_CERTIFIED_REGISTER_EXTRACT` | ✅ Commercial-register entities | Permanent certificate from IRN. The register does not issue it for entities that exist only in the FCPC (associations, foundations), so it is not listed for those.   |
| **Certidao do Ultimo Pacto Social** | `articleOfAssociation`          | PDF    | `PRT_STATUS`                     | ✅ Commercial-register entities | Latest company statutes from IRN. The register does not issue it for entities that exist only in the FCPC (associations, foundations), so it is not listed for those. |

<Warning>
  **Document Delivery Time:** Portuguese certificates (Certidao) are obtained through an email-based retrieval flow via the IRN portal. The process involves: (1) submitting a document request via the IRN portal, (2) receiving an access code by email (up to 5 minutes), (3) waiting for document availability (usually 1-2 hours, up to 24 hours).
</Warning>

### Document Delivery Flow

<AccordionGroup>
  <Accordion title="Certificate Retrieval Flow (Certidao de Registo Comercial & Pacto Social)">
    | Step | Action                                 | Duration                          |
    | ---- | -------------------------------------- | --------------------------------- |
    | 1    | Submit document request via IRN portal | \~30 seconds                      |
    | 2    | Receive access code by email           | 1-5 minutes                       |
    | 3    | Wait for document availability         | Usually 1-2 hours, up to 24 hours |
    | 4    | Download PDF                           | \~10 seconds                      |
  </Accordion>
</AccordionGroup>

<Tip>
  **Access code reuse:** Access codes are valid for 1 year. Subsequent requests for the same company and document type reuse the existing code, reducing delivery time significantly. The code allows retrieval of the most up-to-date version of the document each time it is used.
</Tip>

## Example API Responses

All examples use **placeholder data**. Query: `POST /v2/company` with `{ "id": "<id>", "countryCode": "PT", "dataPoints": ["company", "legalRepresentatives"] }`

<AccordionGroup>
  <Accordion title="Active Sociedade por Quotas (Lda.)">
    ```json theme={null}
    {
      "company": {
        "id": "501442600",
        "countryCode": "PT",
        "identifiers": { "NIF": "501442600", "VAT": "PT501442600" },
        "legalName": "Exemplo Tecnologia Lda.",
        "registrationDate": "2005-09-12",
        "activityDescription": "Consultoria em tecnologias de informacao.",
        "status": { "localName": "Ativa", "active": true, "statusDetails": { "status": "ACTIVE" } },
        "legalForm": { "localName": "Sociedade por Quotas", "standardized": "Limited Liability Company", "iso20275Code": "USOG" },
        "capital": { "amount": 50000, "currency": "EUR" },
        "activities": {
          "CAE": [{ "code": "62010", "description": "Actividades de programacao informatica", "isAIInferred": false }],
          "NACE": [{ "code": "6201", "description": "Computer programming activities", "isAIInferred": true }],
          "ISIC": [{ "code": "6201", "description": "Computer programming activities", "isAIInferred": true }]
        },
        "legalAddress": { "addressLine1": "Rua Augusta, 100", "city": "Lisboa", "postalCode": "1100-053", "countryCode": "PT" }
      },
      "legalRepresentatives": [
        { "type": "individual", "role": { "localName": "Gerente", "standardized": "Manager" }, "individual": { "name": { "fullName": "Joao SILVA", "firstName": "Joao", "lastName": "SILVA" } } }
      ],
      "shareholders": [
        { "type": "individual", "sharePercentage": 75, "individual": { "name": { "fullName": "Joao SILVA" } } },
        { "type": "individual", "sharePercentage": 25, "individual": { "name": { "fullName": "Maria SANTOS" } } }
      ]
    }
    ```
  </Accordion>

  <Accordion title="Active Sociedade Anonima (S.A.)">
    ```json theme={null}
    {
      "company": {
        "id": "500100144",
        "countryCode": "PT",
        "identifiers": { "NIF": "500100144", "VAT": "PT500100144" },
        "legalName": "Exemplo Holdings S.A.",
        "registrationDate": "1990-01-15",
        "activityDescription": "Gestao de participacoes sociais.",
        "status": { "localName": "Ativa", "active": true, "statusDetails": { "status": "ACTIVE" } },
        "legalForm": { "localName": "Sociedade Anonima", "standardized": "Corporation", "iso20275Code": "DFE5" },
        "capital": { "amount": 5000000, "currency": "EUR" },
        "activities": {
          "CAE": [{ "code": "64202", "description": "Actividades das sociedades gestoras de participacoes sociais", "isAIInferred": false }],
          "NACE": [{ "code": "6420", "description": "Activities of holding companies", "isAIInferred": true }],
          "ISIC": [{ "code": "6420", "description": "Activities of holding companies", "isAIInferred": true }]
        },
        "legalAddress": { "addressLine1": "Avenida da Liberdade, 250", "city": "Lisboa", "postalCode": "1250-149", "countryCode": "PT" }
      },
      "legalRepresentatives": [
        { "type": "individual", "role": { "localName": "Presidente do Conselho de Administracao" }, "individual": { "name": { "fullName": "Carlos FERREIRA" } } },
        { "type": "individual", "role": { "localName": "Administrador" }, "individual": { "name": { "fullName": "Ana OLIVEIRA" } } }
      ],
      "shareholders": [
        { "type": "company", "sharePercentage": 60, "company": { "legalName": "Grupo Exemplo SGPS S.A." } },
        { "type": "individual", "sharePercentage": 40, "individual": { "name": { "fullName": "Carlos FERREIRA" } } }
      ]
    }
    ```
  </Accordion>

  <Accordion title="Closed Company">
    ```json theme={null}
    {
      "company": {
        "id": "509000000",
        "countryCode": "PT",
        "identifiers": { "NIF": "509000000" },
        "legalName": "Antiga Empresa Lda.",
        "registrationDate": "2008-04-01",
        "status": { "localName": "Encerrada", "active": false, "statusDetails": { "status": "CLOSED" } },
        "legalForm": { "localName": "Sociedade por Quotas", "standardized": "Limited Liability Company", "iso20275Code": "USOG" },
        "legalAddress": { "addressLine1": "Rua do Comercio, 50", "city": "Porto", "postalCode": "4000-150", "countryCode": "PT" }
      }
    }
    ```

    **Note:** Closed companies have `active: false`. Data availability (legal representatives, shareholders) may be limited compared to active companies.
  </Accordion>

  <Accordion title="Sociedade Unipessoal por Quotas (Unipessoal Lda.)">
    ```json theme={null}
    {
      "company": {
        "id": "514000123",
        "countryCode": "PT",
        "identifiers": { "NIF": "514000123", "VAT": "PT514000123" },
        "legalName": "Exemplo Consultoria Unipessoal Lda.",
        "registrationDate": "2018-03-20",
        "activityDescription": "Consultoria para os negocios e a gestao.",
        "status": { "localName": "Ativa", "active": true, "statusDetails": { "status": "ACTIVE" } },
        "legalForm": { "localName": "Sociedade Unipessoal por Quotas", "standardized": "Limited Liability Company", "iso20275Code": "VF4C" },
        "capital": { "amount": 1000, "currency": "EUR" },
        "activities": {
          "CAE": [{ "code": "70220", "description": "Outras actividades de consultoria para os negocios e a gestao", "isAIInferred": false }],
          "NACE": [{ "code": "7022", "description": "Business and other management consultancy activities", "isAIInferred": true }],
          "ISIC": [{ "code": "7020", "description": "Management consultancy activities", "isAIInferred": true }]
        },
        "legalAddress": { "addressLine1": "Rua de Santa Catarina, 15", "city": "Porto", "postalCode": "4000-442", "countryCode": "PT" }
      },
      "legalRepresentatives": [
        { "type": "individual", "role": { "localName": "Gerente", "standardized": "Manager" }, "individual": { "name": { "fullName": "Pedro COSTA" } } }
      ],
      "shareholders": [
        { "type": "individual", "sharePercentage": 100, "individual": { "name": { "fullName": "Pedro COSTA" } } }
      ]
    }
    ```

    **Note:** Sociedade Unipessoal por Quotas has a single shareholder (100% ownership) and typically a single manager (Gerente).
  </Accordion>

  <Accordion title="Available Documents">
    Documents are returned when `"dataPoints": ["availableDocuments"]` is requested.

    | API Category                    | Document                                              | Format | Notes                                          |
    | ------------------------------- | ----------------------------------------------------- | ------ | ---------------------------------------------- |
    | `certifiedTradeRegisterExtract` | Certidao de Registo Comercial                         | PDF    | Email-based retrieval flow, up to 24h delivery |
    | `articleOfAssociation`          | Certidao do Ultimo Pacto Social/Estatutos Atualizados | PDF    | Latest company statutes, same delivery flow    |

    ```json theme={null}
    {
      "documents": {
        "certifiedTradeRegisterExtract": {
          "name": "Certidao de Registo Comercial",
          "description": "Permanent certificate from Portuguese authorities (Instituto dos Registos)",
          "type": "certifiedTradeRegisterExtract",
          "format": "pdf",
        },
        "articleOfAssociation": {
          "name": "Certidao do Ultimo Pacto Social/Estatutos Atualizados",
          "description": "Last updated company statutes from Portuguese authorities",
          "type": "articleOfAssociation",
          "format": "pdf",
        }
      }
    }
    ```
  </Accordion>
</AccordionGroup>

## Data Source Priority & Routing

For a given entity, **data comes from a single primary source** -- the system does not merge attributes across data sources (all-or-nothing model).

<Note>
  **Source Priority for Company Profile:**

  1. **Commercial register source** -- A company report is retrieved from the aggregated commercial register source. If the company is found, all structured attributes are extracted via AI parsing from the report. This is the **only source** for the company profile datapoint.
  2. If the company is **not found** in the source, a `SourceError.notFound` is returned.

  **Source Priority for Onboarding Profile (alternative datapoint):**

  1. **Publications** -- The system queries for official commercial register publications. Up to 10 most recent publications are downloaded (HTML preferred, PDF fallback), combined chronologically, and parsed via AI.
  2. If **no publications** exist for the company, a `SourceError.notFound` is returned.

  **Document Retrieval:**

  Documents are retrieved directly from the **IRN** (Instituto dos Registos e do Notariado) portal. This is independent of the company profile data source.
</Note>

### Attribute-Level Source Mapping

All company profile attributes come from a single AI parsing of the source HTML report:

| Attribute             | Source                 | Notes                           |
| --------------------- | ---------------------- | ------------------------------- |
| Company name          | **Source** (AI-parsed) | Extracted from report header    |
| Legal form            | **Source** (AI-parsed) | Enriched with ISO 20275 code    |
| Status                | **Source** (AI-parsed) | Enriched to standardized status |
| Registered address    | **Source** (AI-parsed) | Street, city, postal code       |
| Share capital         | **Source** (AI-parsed) | Amount and currency             |
| Activity codes (CAE)  | **Source** (AI-parsed) | Enriched to NACE/ISIC           |
| Activity description  | **Source** (AI-parsed) | Business purpose text           |
| Registration date     | **Source** (AI-parsed) | Incorporation/registration date |
| Legal representatives | **Source** (AI-parsed) | Executive roles only            |
| Shareholders          | **Source** (AI-parsed) | Individuals and companies       |
