# Cash Flow Statements

> Returns annual or quarterly cash flow statements.

`GET https://api.bavest.co/v2/equities/cash-flow`

Group: Equities. Route id: `v2_equities_cash_flow`. Included in: Startup, Pro, Growth.

## Authentication

Send your API key in the `x-api-key` header on every request. No key yet? Sign up at https://dashboard.bavest.co/sign-up (free trial). The examples read the key from the `BAVEST_API_KEY` environment variable.

## Parameters

| Name | In | Type | Required | Description |
|---|---|---|---|---|
| `symbol` | query | string | one of symbol, isin | Stock ticker symbol (e.g., `AAPL`, `MSFT`, `GOOGL`). Provide exactly one of symbol or isin. Example `AAPL`. |
| `isin` | query | string | one of symbol, isin | ISIN code (e.g., `US0378331005`). Provide exactly one of symbol or isin. Clear the symbol example before using an ISIN. |
| `freq` | query | string | no | Reporting frequency. One of `annual`, `quarterly`. Default `annual`. |
| `provenance` | query | boolean | no | When true, the response carries a `provenance` block with one entry per served statement date: where the numbers come from, when we got them, and whether they changed since. Entries are explicit nulls while ledger coverage has not begun for the security. Default `false`. |
| `fields` | query | string | no | Comma-separated list of cash flow line items to include. When provided, each statement is reduced to the named line items. Names that are not cash flow line items match nothing, so a statement reduced by them comes back empty. Example when explicitly filtering: `netOperatingCashFlow,capex,freeCashFlow`. |

Required: one of `symbol`, `isin`.

## Response

200 Successful response (`application/json`).

| Field | Type | Always present | Description |
|---|---|---|---|
| `data` | object | no |  |
| `data.currency` | string | no | Currency of reported values (ISO 4217) Example: `USD`. |
| `data.financials` | array of FinancialPeriodMeta | no |  |
| `data.financials[].date` | string (date) | no | Period end date. Example: `2025-09-27`. |
| `data.financials[].frequency` | string | no | Reporting frequency. One of `annual`, `quarterly`. |
| `data.financials[].reportedCurrency` | string | no | Currency of reported values (ISO 4217) Example: `USD`. |
| `data.financials[].cik` | string | no | SEC Central Index Key (10-digit) Example: `320193`. |
| `data.financials[].filingDate` | string (date) | no | SEC filing submission date. |
| `data.financials[].acceptedDate` | string (date-time) | no | SEC acceptance timestamp. |
| `data.financials[].calendarYear` | string | no | Calendar year. Example: `2025`. |
| `data.financials[].period` | string | no | Period code: FY, Q1, Q2, Q3, Q4. Example: `FY`. |
| `data.financials[].link` | string (uri) | no | SEC EDGAR filing index URL. |
| `data.financials[].finalLink` | string (uri) | no | Direct SEC filing document URL. |
| `data.financials[].isGapData` | boolean \| null | no | Whether this period was interpolated to fill a gap. |
| `data.financials[].netIncome` | number (double) | no | Net income. |
| `data.financials[].depreciationAmortization` | number (double) | no | Depreciation and amortization. |
| `data.financials[].stockBasedCompensation` | number (double) | no | Stock-based compensation. |
| `data.financials[].accountsReceivables` | number (double) | no | Change in accounts receivables. |
| `data.financials[].inventory` | number (double) | no | Change in inventory. |
| `data.financials[].accountsPayables` | number (double) | no | Change in accounts payables. |
| `data.financials[].deferredTaxesInvestmentTaxCredit` | number (double) | no | Deferred taxes. |
| `data.financials[].otherNonCashItems` | number (double) | no | Other non-cash items. |
| `data.financials[].changesInWorkingCapital` | number (double) | no | Total working capital changes. |
| `data.financials[].otherWorkingCapital` | number (double) | no | Other working capital items. |
| `data.financials[].netCashProvidedByOperatingActivities` | number (double) | no | Net operating cash flow. |
| `data.financials[].capex` | number (double) | no | Capital expenditures (negative) |
| `data.financials[].investmentsInPropertyPlantAndEquipment` | number (double) | no | PP&E investments. |
| `data.financials[].acquisitionsNet` | number (double) | no | Net acquisitions. |
| `data.financials[].purchasesOfInvestments` | number (double) | no | Investment purchases (negative) |
| `data.financials[].salesMaturitiesOfInvestments` | number (double) | no | Investment sales (positive) |
| `data.financials[].otherInvestingActivities` | number (double) | no | Other investing activities. |
| `data.financials[].netInvestingCashFlow` | number (double) | no | Net investing cash flow. |
| `data.financials[].commonStockIssued` | number (double) | no | Stock issuance proceeds. |
| `data.financials[].issuanceReductionCapitalStock` | number (double) | no | Net buybacks (negative for repurchases) |
| `data.financials[].debtRepayment` | number (double) | no | Debt repayment (negative) |
| `data.financials[].cashDividendsPaid` | number (double) | no | Dividends paid (negative) |
| `data.financials[].otherFinancingActivities` | number (double) | no | Other financing activities. |
| `data.financials[].netCashFinancingActivities` | number (double) | no | Net financing cash flow. |
| `data.financials[].effectOfForexChangesOnCash` | number (double) | no | FX impact on cash. |
| `data.financials[].changeInCash` | number (double) | no | Net change in cash. |
| `data.financials[].cashAtBeginningOfPeriod` | number (double) | no | Opening cash balance. |
| `data.financials[].cashAtEndOfPeriod` | number (double) | no | Closing cash balance. |
| `data.financials[].netOperatingCashFlow` | number (double) | no | Net operating cash flow (alias) |
| `data.financials[].freeCashFlow` | number (double) | no | Free cash flow (operating - capex) |
| `data.financials[].symbol` | string \| null | no | Ticker symbol the statement belongs to. Example: `AAPL`. |
| `data.provenance` | StatementProvenance | no | Present only when provenance=true. Keyed by statement date, one entry per row served in `financials`, answering when we got each statement and whether it changed since. Clients must tolerate unknown enum values and additional fields: the vocabulary grows when filing-sourced numbers ship. |
| `data.provenance.source` | string | no | Where the numbers come from. Only `vendor` is served today; `filing` is reserved for filing-sourced numbers (which stay under /filings/reports for now). Tolerate unknown values. One of `vendor`. |
| `data.provenance.knownAt` | string (date-time) \| null | no | When the currently served statement became known to us (our honest first-seen axis). Null before ledger coverage begins for this security. |
| `data.provenance.firstKnownAt` | string (date-time) \| null | no | When we first observed any version of this statement. |
| `data.provenance.restated` | boolean | no | True when THIS statement has more than one distinct observed version in our ledger for the period. Per statement — income statement, balance sheet and cash flow are tracked separately. |
| `data.provenance.acceptedDate` | string (date-time) \| null | no | The vendor's claimed acceptance date. FABRICATED for non-SEC filers (~96-99% of EU rows equal the period end); never our knowledge axis. |
| `data.provenance.filingDate` | string (date) \| null | no | The vendor's claimed filing date, subject to the same fabrication caveat as acceptedDate. |
| `data.provenance.filing` | any \| null | no | Reserved. Null until filing-sourced numbers ship. |
| `data.provenance.fields` | any \| null | no | Reserved. Null until filing-sourced numbers ship. |
| `meta` | ResponseMeta | no | Response envelope metadata. Always present on a 200: `time` is set by `core/response.py` on every successful response. Errors carry the same block, built by the same code, so a client parses one meta shape whether the call succeeded or failed. |
| `meta.time` | integer | no | Server-side processing time in milliseconds. Example: `17`. |
| `meta.parameters` | object | no | Echo of the request parameters the endpoint resolved. |

## Example request

```bash
curl 'https://api.bavest.co/v2/equities/cash-flow?symbol=AAPL&freq=annual' \
  -H "x-api-key: $BAVEST_API_KEY"
```

## Example response

```json
{
  "data": {
    "financials": [
      {
        "date": "2025-09-27",
        "frequency": "annual",
        "salesMaturitiesOfInvestments": 53797000000,
        "commonStockIssued": 0,
        "otherWorkingCapital": -20273000000,
        "cik": 320193,
        "cashAtBeginningOfPeriod": 29943000000,
        "filingDate": "2025-10-31",
        "link": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/0000320193-25-000079-index.htm",
        "changeInCash": 5991000000,
        "inventory": 1400000000,
        "acceptedDate": "2025-10-31T06:01:26",
        "stockBasedCompensation": 12863000000,
        "accountsReceivables": -7029000000,
        "freeCashFlow": 98767000000,
        "netCashProvidedByOperatingActivities": 111482000000,
        "purchasesOfInvestments": -24407000000,
        "otherFinancingActivities": -6071000000,
        "changesInWorkingCapital": -25000000000,
        "issuanceReductionCapitalStock": -90711000000,
        "netCashFinancingActivities": -120686000000,
        "otherInvestingActivities": -1480000000,
        "debtRepayment": -8483000000,
        "acquisitionsNet": 0,
        "cashAtEndOfPeriod": 35934000000,
        "otherNonCashItems": -89000000,
        "period": "FY",
        "effectOfForexChangesOnCash": 0,
        "capex": -12715000000,
        "calendarYear": "2025",
        "depreciationAmortization": 11698000000,
        "cashDividendsPaid": -15421000000,
        "netInvestingCashFlow": 15195000000,
        "reportedCurrency": "USD",
        "netIncome": 112010000000,
        "investmentsInPropertyPlantAndEquipment": -12715000000,
        "finalLink": "https://www.sec.gov/Archives/edgar/data/320193/000032019325000079/aapl-20250927.htm",
        "deferredTaxesInvestmentTaxCredit": 0,
        "accountsPayables": 902000000,
        "netOperatingCashFlow": 111482000000,
        "isGapData": false,
        "symbol": "AAPL"
      },
      {
        "date": "2024-09-28",
        "frequency": "annual",
        "salesMaturitiesOfInvestments": 62346000000,
        "commonStockIssued": 0,
        "otherWorkingCapital": 3821000000,
        "cik": 320193,
        "cashAtBeginningOfPeriod": 30737000000,
        "filingDate": "2024-11-01",
        "link": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/0000320193-24-000123-index.htm",
        "changeInCash": -794000000,
        "inventory": -1046000000,
        "acceptedDate": "2024-11-01T06:01:36",
        "stockBasedCompensation": 11688000000,
        "accountsReceivables": -5144000000,
        "freeCashFlow": 108807000000,
        "netCashProvidedByOperatingActivities": 118254000000,
        "purchasesOfInvestments": -48656000000,
        "otherFinancingActivities": -5802000000,
        "changesInWorkingCapital": 3651000000,
        "issuanceReductionCapitalStock": -94949000000,
        "netCashFinancingActivities": -121983000000,
        "otherInvestingActivities": -1308000000,
        "debtRepayment": -5998000000,
        "acquisitionsNet": 0,
        "cashAtEndOfPeriod": 29943000000,
        "otherNonCashItems": -2266000000,
        "period": "FY",
        "effectOfForexChangesOnCash": 0,
        "capex": -9447000000,
        "calendarYear": "2024",
        "depreciationAmortization": 11445000000,
        "cashDividendsPaid": -15234000000,
        "netInvestingCashFlow": 2935000000,
        "reportedCurrency": "USD",
        "netIncome": 93736000000,
        "investmentsInPropertyPlantAndEquipment": -9447000000,
        "finalLink": "https://www.sec.gov/Archives/edgar/data/320193/000032019324000123/aapl-20240928.htm",
        "deferredTaxesInvestmentTaxCredit": 0,
        "accountsPayables": 6020000000,
        "netOperatingCashFlow": 118254000000,
        "isGapData": false,
        "symbol": "AAPL"
      }
    ],
    "currency": "USD"
  },
  "meta": {
    "parameters": {
      "freq": "annual",
      "symbol": "AAPL"
    },
    "time": 17
  }
}
```

## Errors

| Status | Meaning |
|---|---|
| 400 | Invalid request parameters. Returned when required query parameters are missing, have invalid types, or violate constraints (e.g., providing both symbol and isin when they are mutually exclusive). |
| 401 | Missing or invalid API key. |
| 404 | Resource not found. |
| 429 | Rate limit exceeded. Retry after the `Retry-After` header interval. |
| 500 | An unexpected error occurred on the server. If the issue persists, contact support with the X-Request-Id header value. |
| 502 | Upstream data provider returned an error or is temporarily unavailable. Retry after a short delay. |
| 504 | The request timed out waiting for a response from the upstream data provider. This may occur for complex queries or during peak load. |
| default | An unexpected error occurred on the server. If the issue persists, contact support with the X-Request-Id header value. |

- `403` from the gateway: the API key is invalid or switched off.
- `429` with message `Limit Exceeded`: the monthly quota of the key is used up. With `Too Many Requests`: the key is throttled, or this route is not in the key's plan. Wait for `Retry-After` when it is sent.

## Links

- HTML page: https://dashboard.bavest.co/docs/v2_equities_cash_flow
- OpenAPI: https://dashboard.bavest.co/openapi.json (YAML: https://dashboard.bavest.co/openapi.yaml)
- Authentication: https://dashboard.bavest.co/docs/authentication.md
- MCP server for AI agents: https://dashboard.bavest.co/docs/mcp.md
- All routes: https://dashboard.bavest.co/llms.txt
