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

# Get a discrepancy report (Beta)

> **Beta.** Germany only for now; more countries are coming. The request and response shapes may change. Available on accounts with access to the beta; contact support@topograph.co to request it.

The current state of a report: poll it until `status` is `succeeded` or `failed`. Free.



## OpenAPI

````yaml get /v2/discrepancy-reports/{id}
openapi: 3.0.0
info:
  title: Topograph
  description: The Topograph API
  version: '0.1'
  contact: {}
servers:
  - url: https://api.topograph.co
security:
  - x-api-key: []
tags: []
paths:
  /v2/discrepancy-reports/{id}:
    get:
      tags:
        - Discrepancy reports (Beta)
      summary: Get a discrepancy report (Beta)
      description: >-
        **Beta.** Germany only for now; more countries are coming. The request
        and response shapes may change. Available on accounts with access to the
        beta; contact support@topograph.co to request it.


        The current state of a report: poll it until `status` is `succeeded` or
        `failed`. Free.
      operationId: DiscrepancyReportsController_get_v2
      parameters:
        - name: x-topograph-workspace-id
          in: header
          description: >-
            Workspace whose register credentials file the report. Defaults to
            the default workspace.
          required: false
          schema:
            type: string
        - name: id
          required: true
          in: path
          description: The report id returned when the report was filed
          schema:
            type: string
      responses:
        '200':
          description: The report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DiscrepancyReportDto'
        '403':
          description: '`feature_not_enabled`: the beta is not enabled on this account'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        example: feature_not_enabled
                      message:
                        type: string
                        example: >-
                          Discrepancy reports are in beta and not enabled on
                          this account.
                      retryable:
                        example: false
                        type: boolean
        '404':
          description: '`resource_not_found`: no such report on this account'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        example: resource_not_found
                      message:
                        type: string
                        example: Discrepancy report not found.
                      retryable:
                        example: false
                        type: boolean
      security:
        - x-api-key: []
components:
  schemas:
    DiscrepancyReportDto:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the report
          example: 0b7e8a3c-5d2f-4c1e-9a6b-7f8e9d0c1b2a
        status:
          description: >-
            `in_progress`: accepted and being filed. `succeeded`: filed with the
            register; `filing.registerReference` and `filing.receipt` are set.
            `failed`: nothing was filed; see `error`, then correct and resend
            with a new `Idempotency-Key`.
          example: succeeded
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportStatus'
        countryCode:
          type: string
          description: Country of the company
          example: DE
        companyId:
          type: string
          description: The company ID
          example: München HRB 228960
        register:
          description: The register the report is filed with
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportRegisterDto'
        reasons:
          type: array
          description: Why the register is wrong, as sent
          items:
            type: string
            enum:
              - incorrect_or_incomplete_information
              - different_beneficial_owners
          example:
            - incorrect_or_incomplete_information
        ultimateBeneficialOwners:
          description: The beneficial owners, as sent
          type: array
          items:
            $ref: '#/components/schemas/DiscrepancyReportOwnerDto'
        evidence:
          description: Evidence the report relies on, as sent
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportEvidenceDto'
        comment:
          type: string
          description: Free text appended to the explanation, as sent
        filing:
          description: What was filed, and the register acknowledgement
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportFilingDto'
        error:
          description: Why the report failed. Present only when `status` is `failed`.
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportErrorDto'
        sourceRequestId:
          type: string
          description: The company request the report refers to, as sent
        metadata:
          type: object
          additionalProperties:
            type: string
          example:
            caseId: case-12345
          description: Key-value pairs provided at creation
        createdAt:
          type: string
          description: Creation time (ISO 8601)
          example: '2026-10-27T14:10:02.000Z'
        updatedAt:
          type: string
          description: Last update time (ISO 8601)
          example: '2026-10-27T14:12:46.000Z'
      required:
        - id
        - status
        - countryCode
        - companyId
        - register
        - reasons
        - ultimateBeneficialOwners
        - evidence
        - filing
        - createdAt
        - updatedAt
    DiscrepancyReportStatus:
      type: string
      enum:
        - in_progress
        - succeeded
        - failed
      description: >-
        `in_progress`: accepted and being filed. `succeeded`: filed with the
        register; `filing.registerReference` and `filing.receipt` are set.
        `failed`: nothing was filed; see `error`, then correct and resend with a
        new `Idempotency-Key`.
    DiscrepancyReportRegisterDto:
      type: object
      properties:
        name:
          type: string
          description: Name of the register the report is filed with
          example: Transparenzregister
      required:
        - name
    DiscrepancyReportOwnerDto:
      type: object
      properties:
        gender:
          type: string
          description: >-
            Gender of the person. In German it decides the grammatical form of
            the filed text.
          enum:
            - Male
            - Female
            - Other
            - PreferNotToSay
          example: Male
        name:
          description: Name of the person
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportOwnerNameDto'
        birthDate:
          description: Birth date; partial dates (year only, year and month) are accepted
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportOwnerBirthDateDto'
        nationality:
          type: string
          description: Nationality (ISO 3166-1 alpha-2)
          example: DE
        residenceAddress:
          description: Residence of the person
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportOwnerAddressDto'
        control:
          description: How the person owns or controls the company
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportControlDto'
      required:
        - name
    DiscrepancyReportEvidenceDto:
      type: object
      properties:
        type:
          description: >-
            What the report relies on. `public_register_reference`: the
            discrepancy can be established from public registers (in Germany, §
            22 GwG). Other evidence types, such as uploaded documents, will be
            added.
          example: public_register_reference
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportEvidenceType'
      required:
        - type
    DiscrepancyReportFilingDto:
      type: object
      properties:
        language:
          type: string
          description: >-
            Language of the filed explanation (ISO 639-1), the register's
            language
          example: de
        text:
          type: string
          description: >-
            The exact explanation filed with the register, generated from
            `ultimateBeneficialOwners` and `comment`. Available from the moment
            the report is accepted.
          example: Die wirtschaftlich Berechtigte ist Erika Mustermann mit 100 %.
        registerReference:
          type: string
          description: >-
            The register's own reference for the report. Present once the report
            is filed.
          example: '261000000001'
        submittedAt:
          type: string
          description: >-
            When the register received the report (ISO 8601). Present once the
            report is filed.
          example: '2026-10-27T14:11:47.000Z'
        receipt:
          description: >-
            The register's acknowledgement of receipt. Present once the report
            is filed and the receipt collected.
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportReceiptDto'
      required:
        - language
        - text
    DiscrepancyReportErrorDto:
      type: object
      properties:
        code:
          type: string
          description: Public error code
          example: resource_not_found
        message:
          type: string
          description: Human-readable explanation
          example: Resource not found
      required:
        - code
        - message
    DiscrepancyReportOwnerNameDto:
      type: object
      properties:
        fullName:
          type: string
          description: Full name of the person, as it should appear in the register
          example: Erika Mustermann
        title:
          type: string
          description: Title of the person (e.g. Dr.)
        firstName:
          type: string
          description: First name of the person
          example: Erika
        middleName:
          type: string
          description: Middle name of the person
        lastName:
          type: string
          description: Last name of the person
          example: Mustermann
        suffix:
          type: string
          description: Suffix of the name (e.g. Jr.)
      required:
        - fullName
    DiscrepancyReportOwnerBirthDateDto:
      type: object
      properties:
        day:
          type: number
          description: Day of birth (1-31)
          example: 15
        month:
          type: number
          description: Month of birth (1-12), where January is 1
          example: 7
        year:
          type: number
          description: Year of birth
          example: 1980
    DiscrepancyReportOwnerAddressDto:
      type: object
      properties:
        city:
          type: string
          description: City of residence
          example: Berlin
        countryCode:
          type: string
          description: Country of residence (ISO 3166-1 alpha-2)
          example: DE
    DiscrepancyReportControlDto:
      type: object
      properties:
        types:
          type: array
          description: Types of control held by the beneficial owner
          items:
            type: string
            enum:
              - ownership-of-shares
              - voting-rights
              - appoint-and-remove-directors
              - significant-influence-or-control
          example:
            - ownership-of-shares
        details:
          description: >-
            Percentages of control. Never invented: send only what you
            established.
          type: array
          items:
            $ref: '#/components/schemas/DiscrepancyReportPercentageDetailDto'
      required:
        - types
    DiscrepancyReportEvidenceType:
      type: string
      enum:
        - public_register_reference
      description: >-
        What the report relies on. `public_register_reference`: the discrepancy
        can be established from public registers (in Germany, § 22 GwG). Other
        evidence types, such as uploaded documents, will be added.
    DiscrepancyReportReceiptDto:
      type: object
      properties:
        url:
          type: string
          description: >-
            Signed download link to the register receipt (PDF). It expires after
            15 minutes; fetch the report again for a fresh link. Topograph keeps
            the receipt, so it stays available after the register stops serving
            it.
          example: >-
            https://storage.topograph.co/documents/discrepancy-reports/receipt.pdf?sv=...
        expiresAt:
          type: string
          description: When `url` expires (ISO 8601)
          example: '2026-10-27T14:27:47.000Z'
        sha256:
          type: string
          description: >-
            SHA-256 of the receipt, to prove later that a stored copy is the one
            received
          example: 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
      required:
        - url
        - expiresAt
        - sha256
    DiscrepancyReportPercentageDetailDto:
      type: object
      properties:
        type:
          type: string
          description: What the percentage measures
          enum:
            - shares
            - voting-rights
          example: shares
        percentageValue:
          type: number
          description: Exact percentage
          example: 100
        percentageRange:
          description: >-
            Range, when only bounds are known. Ignored when `percentageValue` is
            set.
          allOf:
            - $ref: '#/components/schemas/DiscrepancyReportPercentageRangeDto'
        nature:
          type: string
          description: >-
            Whether the control is direct or indirect. Omit or send `null` when
            unknown.
          enum:
            - direct
            - indirect
            - null
          nullable: true
      required:
        - type
    DiscrepancyReportPercentageRangeDto:
      type: object
      properties:
        lower:
          type: number
          description: Lower bound of the range
          example: 25
        upper:
          type: number
          description: Upper bound of the range
          example: 50
      required:
        - lower
        - upper
  securitySchemes:
    x-api-key:
      type: apiKey
      in: header
      name: x-api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.