Dashboard

Debt Structure

GET/api/footnotes/debt-structure

Pro

Returns a company's debt at the individual-borrowing level, straight from the debt footnote of 10-K / 10-Q filings: every note, bond, term loan, and debenture the filer tagged on the XBRL debt-instrument axis, with face amount, carrying amount, stated and effective interest rate, variable-rate spread, fair value, conversion price, and more, data that never appears on the face of the balance sheet.

Each period entry carries two arrays:

Monetary values default to US dollars. Pass the currency parameter to receive any supported ISO 4217 currency instead: values not already in that currency (e.g. EUR-denominated notes) are converted at the period-end spot rate, and the per-period fx block records the exact rate(s) applied so each conversion is reproducible. Pass currency=original for as-filed values. Interest rates are fractions of 1 (0.048 = 4.8%) and are never converted.

What this data can tell you:

Data honesty notes:

Get API key Try it live in the API explorer

Query parameters

Example request

curl 'https://api.stockfit.io/v1/api/footnotes/debt-structure?symbol=AAPL&cik=320193&cusip=037833100&composite_figi=BBG000B9XRY4&share_class_figi=BBG001S5N8V8&currency=USD' \
  -H 'Authorization: Bearer YOUR_API_TOKEN'

Responses

200 OK

Per-tranche and per-type debt detail, organized by period

Response schema

array of:
  • period string (date)

    The fiscal period end date (YYYY-MM-DD), the balance-sheet date the values are measured at

  • fiscalYear integer

    The company's fiscal year (handles non-December year-ends).

  • fiscalPeriod string (enum)

    Fiscal period of a reported value: `FY` (annual) or `Q1`-`Q4` (quarterly).

    Allowed values: FY, Q1, Q2, Q3, Q4
  • instruments array of object

    One entry per debt tranche, sorted by face amount descending. Fields the filer did not tag are omitted, not serialized as `null`.

    array of:
    • member string

      Raw XBRL member QName of the tranche

    • name string

      Derived display label

    • debtType string | null

      Debt-type member the filer crossed this tranche with; null when not tagged

    • debtTypeName string | null

      Derived display label of `debtType`

    • dueYear integer | null

      Maturity year DERIVED from the member name ("…Due2030…"); null when the name carries no year token. Not a tagged maturity date.

    • currency string | null

      Currency of the monetary values after conversion (the requested `currency` unless listed in `fx.unconverted`); null when the entry's values remain in mixed currencies or no monetary field is present

    • normalized boolean

      Only present (as `true`) when a rate value was re-scaled from a mis-tagged whole percent (`4.8`) to a fraction (`0.048`).

    • faceAmount number

      Principal amount at issuance

    • carryingAmount number

      Balance-sheet carrying amount (net of discounts/issuance costs)

    • longTermDebt number

      Long-term debt attributed to this tranche

    • fairValue number

      Disclosed fair value

    • unamortizedDiscount number

      Unamortized discount remaining

    • conversionPrice number

      Convertible-debt conversion price per share

    • statedRate number

      Stated (coupon) interest rate as a fraction of 1

    • effectiveRate number

      Effective interest rate as a fraction of 1

    • variableSpread number

      Basis spread over the variable benchmark rate as a fraction of 1

    • weightedAverageRate number

      Weighted-average interest rate as a fraction of 1

    • redemptionPrice number

      Redemption price as a fraction of principal (1.0 = 100%)

  • types array of object

    Aggregates by debt type (Senior Notes, Commercial Paper, ...), rollups across tranches, served separately so they are never summed with `instruments`. Same fields as `instruments` minus `debtType`/`dueYear`.

    array of:
    • member string

      Raw XBRL member QName of the debt type

    • name string

      Derived display label

    • currency string | null
    • normalized boolean

      Only present (as `true`) when a rate value was re-scaled from a mis-tagged whole percent.

    • faceAmount number
    • carryingAmount number
    • longTermDebt number
    • fairValue number
    • unamortizedDiscount number
    • conversionPrice number
    • statedRate number
    • effectiveRate number
    • variableSpread number
    • weightedAverageRate number

      Weighted-average interest rate across the type as a fraction of 1

    • redemptionPrice number
  • dateFiled string (date) | null

    SEC filing acceptance date of the newest filing contributing to this period. Use this to gate point-in-time data and avoid lookahead bias.

  • fx object

    Foreign-currency conversion audit for this period. Every monetary value in `facts` is in the requested `currency` (default **US dollars**). This block is absent when the period was already wholly in the target currency (e.g. a US filer with the default USD, nothing to convert). It is present when one or more line items were originally filed in a different currency and converted on the fly, and it records the exact rate(s) applied so the conversion can be reproduced. Rates come from the Frankfurter API (api.frankfurter.dev). Instant balance-sheet items use the spot rate at period end; flow income/cash-flow items use the day-weighted average rate over the period.

    • targetCurrency string

      The currency (ISO 4217) every `facts` value was converted INTO, the value of the request `currency` parameter (default USD). The literal `original` here means no conversion was requested: each fact stays in its as-reported currency (see `unconverted` for the per-fact mapping).

    • originalCurrencies array of string

      Every source currency (ISO 4217) that appeared in this period, the union of converted, unconverted, and already-in-target. The target currency itself is listed when some facts were natively in it (e.g. a foreign filer reporting some lines in USD alongside its converted local currency), so a mixed period reflects its true composition rather than appearing wholly converted.

    • rates array of object

      One entry per (source currency, method) actually applied. `rate` is the multiplier: `target = original * rate`.

      array of:
      • from string

        ISO 4217 source currency that was converted.

      • method string (enum)

        `spot` for instant balance-sheet items (rate at period end); `average` for flow income/cash-flow items (day-weighted mean over the period).

        Allowed values: spot, average
      • rate number

        Multiply the original-currency amount by this to get the `targetCurrency` amount.

      • effectiveDate string (date)

        Spot only: the date (YYYY-MM-DD) the applied rate was published (≤ period end).

      • start string (date)

        Average only: period start (YYYY-MM-DD).

      • end string (date)

        Average only: period end (YYYY-MM-DD).

    • unconverted map of string to array of string

      Facts that could NOT be converted (no published rate within tolerance, or an unsupported code/date), grouped by the currency they remain in: each key is a source ISO 4217 code, each value lists the curated fact names in `facts` still in that currency (NOT `targetCurrency`). Absent when everything converted. Use it to know exactly which figures to treat as native currency.

      • * (additional properties) array of string

Example response

[
  {
    "period": "2025-05-31",
    "fiscalYear": 2025,
    "fiscalPeriod": {},
    "instruments": [
      {
        "member": "orcl:Fixed-RateSeniorNotesDueAugust2028Member",
        "name": "Fixed Rate Senior Notes Due August 2028",
        "debtType": "us-gaap:SeniorNotesMember",
        "debtTypeName": "Senior Notes",
        "dueYear": 2028,
        "currency": "USD",
        "normalized": true,
        "faceAmount": 1500000000,
        "carryingAmount": 1500000000,
        "longTermDebt": 1500000000,
        "fairValue": 1430000000,
        "unamortizedDiscount": 4000000,
        "conversionPrice": 71.25,
        "statedRate": 0.048,
        "effectiveRate": 0.0494,
        "variableSpread": 0.011,
        "weightedAverageRate": 0.0435,
        "redemptionPrice": 1
      }
    ],
    "types": [
      {
        "member": "us-gaap:CommercialPaperMember",
        "name": "Commercial Paper",
        "currency": "USD",
        "normalized": true,
        "faceAmount": 2300000000,
        "carryingAmount": 2300000000,
        "longTermDebt": 92355000000,
        "fairValue": 88000000000,
        "unamortizedDiscount": 350000000,
        "conversionPrice": 71.25,
        "statedRate": 0.048,
        "effectiveRate": 0.0494,
        "variableSpread": 0.011,
        "weightedAverageRate": 0.0435,
        "redemptionPrice": 1
      }
    ],
    "dateFiled": "2025-06-24",
    "fx": {}
  }
]

400 Bad Request

Invalid parameters or symbol not found

Response schema

  • error string

    Human-readable error message

Example response

{}

403 Forbidden

Feature not available on current plan

Response schema

  • error string

    Human-readable error message

Example response

{}