> For the complete documentation index, see [llms.txt](https://docs.scaleconnect.com.au/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.scaleconnect.com.au/api/rest-api/scaleapp-rest-api/personal-cashflow.md).

# Personal Cashflow

Personal income, expenses, and cashflow analysis

## Get personal cashflow analysis by financial year

> Retrieves personal cashflow data per financial year: pre-investment, investment, entity (Entities & Commercial) and post-investment cashflows.\
> \
> \*\*Whose numbers:\*\* pass either \`userId\` or \`strategyId\` (or neither).\
> \- Neither: the authenticated user's default strategy.\
> \- \`userId\`: that client's default strategy. Resolved by the auth guard: brokers may pass any client they have access to (403 otherwise), admins any user, clients only themselves or their partner (403 otherwise). Same convention as the other client-scoped routes.\
> \- \`strategyId\`: that specific strategy (control centre), for the caller or for the client selected by \`userId\`. When both are supplied, \`strategyId\` decides which strategy is calculated.

```json
{"openapi":"3.0.0","info":{"title":"ScaleApp API","version":"1.0.0"},"tags":[{"name":"Personal Cashflow","description":"Personal income, expenses, and cashflow analysis"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"PersonalCashflowResponseDto":{"type":"object","properties":{"years":{"description":"Array of cashflow data by financial year","type":"array","items":{"$ref":"#/components/schemas/YearCashflowDto"}}},"required":["years"]},"YearCashflowDto":{"type":"object","properties":{"year":{"type":"string","description":"Financial year identifier"},"preInvestmentCashflow":{"description":"Pre-investment cashflow breakdown","allOf":[{"$ref":"#/components/schemas/PreInvestmentCashflowDto"}]},"investmentCashflows":{"description":"Investment cashflows breakdown","allOf":[{"$ref":"#/components/schemas/InvestmentCashflowsDto"}]},"entityCashflows":{"description":"Entities & Commercial: ENTITY CASHFLOWS block for the financial year (DASHBOARD rows 303-309).","allOf":[{"$ref":"#/components/schemas/PersonalEntityCashflowsDto"}]},"postInvestmentCashflow":{"description":"Post-investment cashflow summary","allOf":[{"$ref":"#/components/schemas/PostInvestmentCashflowDto"}]}},"required":["year","preInvestmentCashflow","investmentCashflows","entityCashflows","postInvestmentCashflow"]},"PreInvestmentCashflowDto":{"type":"object","properties":{"salary":{"type":"number","description":"Annual salary income"},"livingExpenses":{"type":"number","description":"Annual living expenses"},"hecshelpRepayments":{"type":"number","description":"Annual HECS/HELP repayments"},"soleTraderIncome":{"type":"number","description":"Sole trader/business income"},"personalLoans":{"type":"number","description":"Personal loan repayments"},"bonusesCommissions":{"type":"number","description":"Bonuses and commissions"},"paygTax":{"type":"number","description":"PAYG tax paid"},"preInvestmentCashflows":{"type":"number","description":"Net pre-investment cashflows"}},"required":["salary","livingExpenses","hecshelpRepayments","soleTraderIncome","personalLoans","bonusesCommissions","paygTax","preInvestmentCashflows"]},"InvestmentCashflowsDto":{"type":"object","properties":{"purchasingCosts":{"type":"number","description":"Property purchasing costs (stamp duty, legal, etc.)"},"rentalIncome":{"type":"number","description":"Rental income received"},"operatingCosts":{"type":"number","description":"Operating costs (maintenance, management, etc.)"},"debtPayments":{"type":"number","description":"Debt/loan payments"},"capitalExpenses":{"type":"number","description":"Capital expenses"},"plantEquipment":{"type":"number","description":"Plant and equipment expenses"},"landTax":{"type":"number","description":"Land tax"},"equityWithdrawn":{"type":"number","description":"Equity withdrawn from properties"},"netCashflow":{"type":"number","description":"Net cashflow from investments"},"totalEquityCashflow":{"type":"number","description":"Total equity cashflow"}},"required":["purchasingCosts","rentalIncome","operatingCosts","debtPayments","capitalExpenses","plantEquipment","landTax","equityWithdrawn","netCashflow","totalEquityCashflow"]},"PersonalEntityCashflowsDto":{"type":"object","properties":{"trustDistributionsReceived":{"type":"number","description":"Trust distributions received by both users. DASHBOARD!H303 = PERSONAL!2007 + 2008.","nullable":true},"companyDividendsReceived":{"type":"number","description":"Company dividends received by both users, in cash. DASHBOARD!H304 = PERSONAL!2128 + 2129 (user share x cash dividends declared). The workbook label says 'grossed-up' but the formula is cash; the grossed-up taxable amount (PERSONAL!2023/2024) is not exposed.","nullable":true},"smsfPensionIncome":{"type":"number","description":"SMSF pension drawdown received. DASHBOARD!H305 = PERSONAL!2102 (= 2093 + 2100).","nullable":true},"smsfContributionsOut":{"type":"number","description":"SMSF contributions paid out of personal cash (negative). DASHBOARD!H306 = PERSONAL!2122 + 2123.","nullable":true},"complianceFees":{"type":"number","description":"Compliance fees across all entities (negative). DASHBOARD!H307 = PERSONAL!2015 (trusts) + 2030 (companies) + 2036 (SMSF).","nullable":true},"cashContributionsForShortfall":{"type":"number","description":"Cash contributions to cover an entity shortfall, counted in tax-reconciliation periods only. DASHBOARD!H308 = SUMIFS(PERSONAL!2086, Personal_FinancialYear, H$3, PERSONAL!590, 1). Positive in the workbook.","nullable":true},"netEntityCashflow":{"type":"number","description":"Net entity cashflow. DASHBOARD!H309 = SUM(H303:H308).","nullable":true}},"required":["trustDistributionsReceived","companyDividendsReceived","smsfPensionIncome","smsfContributionsOut","complianceFees","cashContributionsForShortfall","netEntityCashflow"]},"PostInvestmentCashflowDto":{"type":"object","properties":{"preInvestmentCashflows":{"type":"number","description":"Pre-investment cashflows carried forward"},"portfolioEquityCashflows":{"type":"number","description":"Portfolio equity cashflows"},"taxAdjustment":{"type":"number","description":"Tax adjustment from investment"},"netCashflowToEquity":{"type":"number","description":"Net cashflow to equity after all adjustments"},"cumulativeCashflow":{"type":"number","description":"Cumulative cashflow"},"cashflowAvailable":{"type":"number","description":"Available cashflow for further investment"},"entityEquityCashflows":{"type":"number","description":"Entity equity cashflows for the financial year. DASHBOARD!H74 = H309 (net of the ENTITY CASHFLOWS block). Null only when the FY cannot be resolved in the model.","nullable":true},"cashHeldInRelatedEntities":{"type":"number","description":"Closing cash held in related entities at the FY end date (balance, not a flow). DASHBOARD!H81 = SUMIF(Personal_PeriodEnd, H$14, PERSONAL!M894:WZ894). Currently always null: the model port does not yet include DASHBOARD_H81 / PERSONAL!894.","nullable":true}},"required":["preInvestmentCashflows","portfolioEquityCashflows","taxAdjustment","netCashflowToEquity","cumulativeCashflow","cashflowAvailable","entityEquityCashflows","cashHeldInRelatedEntities"]}}},"paths":{"/v1/personal-cashflow":{"get":{"description":"Retrieves personal cashflow data per financial year: pre-investment, investment, entity (Entities & Commercial) and post-investment cashflows.\n\n**Whose numbers:** pass either `userId` or `strategyId` (or neither).\n- Neither: the authenticated user's default strategy.\n- `userId`: that client's default strategy. Resolved by the auth guard: brokers may pass any client they have access to (403 otherwise), admins any user, clients only themselves or their partner (403 otherwise). Same convention as the other client-scoped routes.\n- `strategyId`: that specific strategy (control centre), for the caller or for the client selected by `userId`. When both are supplied, `strategyId` decides which strategy is calculated.","operationId":"PersonalCashflowController_findAll_v1","parameters":[{"name":"strategyId","required":false,"in":"query","description":"A control centre/strategy ID. Optional; defaults to the selected user's default strategy.","schema":{"type":"string"}},{"name":"userId","required":false,"in":"query","description":"Client user ID to calculate for (brokers acting for a client). Optional; defaults to the authenticated user. Resolved by the auth guard, so the caller must have access to that client.","schema":{"type":"string"}}],"responses":{"200":{"description":"Successfully retrieved personal cashflow data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonalCashflowResponseDto"}}}},"401":{"description":"Unauthorized"}},"summary":"Get personal cashflow analysis by financial year","tags":["Personal Cashflow"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.scaleconnect.com.au/api/rest-api/scaleapp-rest-api/personal-cashflow.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
