Back to the overview

Annual financial statements (Jahresabschlüsse) are now clean JSON

4 min

Raw XML from the Austrian company register is tedious to parse. Filings pack balance sheets and income statements into deeply nested tag trees under UGB § 224 and § 231.

We updated GET /api/documents/[key] so you do not have to parse that XML yourself. Electronically filed annual financial statements are now returned directly as structured JSON.

What is included

When you fetch an annual financial statement, the endpoint returns an annualReport object with:

  • Balance sheet breakdown: fixed assets, current assets, receivables, cash, equity, provisions, and liabilities.
  • Income statement: revenues, material costs, personnel expenses, depreciation, EBIT, financial result, and net profit under both GKV (§ 231 Abs. 2) and UKV (§ 231 Abs. 3) formats.
  • Pre-calculated KPIs: equity ratio, leverage, and EBIT margin.
  • Clean payloads: base64 XML strings are no longer attached by default.

Example response

{
  "data": {
    "type": "annual_report",
    "metadata": {
      "key": "579180_0070752521339_000___000_30_35697663_XML",
      "urkid": "35697663",
      "fnr": "579180k",
      "az": "070 Fr 7525/21 y",
      "documentType": {
        "code": "48",
        "text": "Jahresabschluss"
      },
      "documentDate": "2024-06-30",
      "referenceDate": "2023-12-31"
    },
    "annualReport": {
      "meta": {
        "jabVersion": "3.32",
        "currency": "EUR",
        "reportingPeriodStart": "2023-01-01",
        "reportingPeriodEnd": "2023-12-31"
      },
      "company": {
        "firmenbuchNumber": "579180k",
        "name": "Muster GmbH"
      },
      "balanceSheet": {
        "assets": {
          "totalAssets": 815000,
          "fixedAssets": 512500,
          "currentAssets": 300000,
          "receivables": 85000,
          "cashAndCashEquivalents": 95000
        },
        "equityAndLiabilities": {
          "totalEquity": 470000,
          "shareCapital": 35000,
          "capitalReserves": 100000,
          "provisions": 45000,
          "liabilities": 300000,
          "totalEquityAndLiabilities": 815000
        }
      },
      "incomeStatement": {
        "revenues": 1250000,
        "costOfMaterials": -620000,
        "personnelExpenses": -380000,
        "ebit": 120000,
        "netIncome": 85000
      },
      "kpis": {
        "equityRatio": 0.5767,
        "ebitMargin": 0.096
      }
    }
  }
}

Migration and backward compatibility

If your current integration expects the old payload structure:

  • Add ?deprecated=true to any request URL to keep receiving the previous format (metadaten, dokument, and base64 XML content).
  • The ?deprecated=true fallback will stay active for one month, until September 14, 2026.
  • If you need the raw base64 XML alongside the new JSON, pass ?raw=true.

The full schema is available in the API documentation and the OpenAPI specification.

Because Austrian filings come in many different software flavors and formatting styles, make sure to verify important numbers against the official court records during this rollout. If you run into an edge case or an unhandled line item, send it over to [email protected] so we can adjust the parser.