Multifamily Investment Memo
Render one per deal from your underwriting model's output, with key returns, a cash flow projection for any hold period and IRR and DSCR sensitivity grids.
PDF, A4, from 1 credit
Output

Variables
assumptions.expenseGrowthnumber0.03assumptions.rentGrowthnumber0.03assumptions.vacancynumber0.05capital.equitynumber1951500capital.sources[].amountnumber3217500capital.sources[].labeltextSenior loan (65% LTV)capital.totalSourcesnumber5169000capital.totalUsesnumber5169000capital.uses[].amountnumber4950000capital.uses[].labeltextPurchase pricecashFlowstext[{"year":1,"grossPotentialRent":496800,"otherIncome":28800,"vacancy":24840,"effectiveGrossIncome":500760,"operatingExpenses":190846,"noi":309914,"debtService":237728,"cashFlow":72186,"cashOnCash":0.037,"dscr":1.3},{"year":2,"grossPotentialRent":511704,"otherIncome":29664,"vacancy":25585,"effectiveGrossIncome":515783,"operatingExpenses":196571,"noi":319212,"debtService":237728,"cashFlow":81483,"cashOnCash":0.0418,"dscr":1.34},{"year":3,"grossPotentialRent":527055,"otherIncome":30554,"vacancy":26353,"effectiveGrossIncome":531256,"operatingExpenses":202468,"noi":328788,"debtService":237728,"cashFlow":91060,"cashOnCash":0.0467,"dscr":1.38},{"year":4,"grossPotentialRent":542867,"otherIncome":31471,"vacancy":27143,"effectiveGrossIncome":547194,"operatingExpenses":208542,"noi":338652,"debtService":237728,"cashFlow":100923,"cashOnCash":0.0517,"dscr":1.42},{"year":5,"grossPotentialRent":559153,"otherIncome":32415,"vacancy":27958,"effectiveGrossIncome":563610,"operatingExpenses":214798,"noi":348811,"debtService":237728,"cashFlow":111083,"cashOnCash":0.0569,"dscr":1.47},{"year":6,"grossPotentialRent":575927,"otherIncome":33387,"vacancy":28796,"effectiveGrossIncome":580518,"operatingExpenses":221242,"noi":359276,"debtService":237728,"cashFlow":121547,"cashOnCash":0.0623,"dscr":1.51},{"year":7,"grossPotentialRent":593205,"otherIncome":34389,"vacancy":29660,"effectiveGrossIncome":597934,"operatingExpenses":227880,"noi":370054,"debtService":237728,"cashFlow":132326,"cashOnCash":0.0678,"dscr":1.56},{"year":8,"grossPotentialRent":611001,"otherIncome":35420,"vacancy":30550,"effectiveGrossIncome":615872,"operatingExpenses":234716,"noi":381156,"debtService":237728,"cashFlow":143427,"cashOnCash":0.0735,"dscr":1.6},{"year":9,"grossPotentialRent":629331,"otherIncome":36483,"vacancy":31467,"effectiveGrossIncome":634348,"operatingExpenses":241757,"noi":392590,"debtService":237728,"cashFlow":154862,"cashOnCash":0.0794,"dscr":1.65},{"year":10,"grossPotentialRent":648211,"otherIncome":37577,"vacancy":32411,"effectiveGrossIncome":653378,"operatingExpenses":249010,"noi":404368,"debtService":237728,"cashFlow":166640,"cashOnCash":0.0854,"dscr":1.7}]cashFlows[].cashFlownumber72186cashFlows[].cashOnCashnumber0.037cashFlows[].debtServicenumber237728cashFlows[].dscrnumber1.3cashFlows[].effectiveGrossIncomenumber500760cashFlows[].grossPotentialRentnumber496800cashFlows[].noinumber309914cashFlows[].operatingExpensesnumber190846cashFlows[].otherIncomenumber28800cashFlows[].vacancynumber24840cashFlows[].yearnumber1currencytextUSDdisclaimertextThis report is prepared from information supplied by the seller and third parties and has not been independently verified. Projections are estimates based on stated assumptions, not guarantees of future performance. All names, addresses and figures in this sample are fictional.exit.capRatenumber0.065exit.loanPayoffnumber2710348exit.netProceedsnumber3537137exit.salePricenumber6407678exit.sellingCostRatenumber0.025exit.sellingCostsnumber160192exit.yearnumber10facts[].labeltextAsset typefacts[].valuetextGarden-style multifamily, 3 storeysfirm.logoUrltextdata:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22%3E%3Crect width=%2224%22 height=%2224%22 rx=%225%22 fill=%22%2315212b%22/%3E%3Cpath d=%22M6 17V9.5L12 6l6 3.5V17h-3.6v-4.4H9.6V17Z%22 fill=%22%23fff%22/%3E%3Crect x=%2210.6%22 y=%2213.8%22 width=%222.8%22 height=%223.2%22 fill=%22%23a9824a%22/%3E%3C/svg%3Efirm.nametextHalberd Property Analyticshighlights[].texttextIn-place rents sit 9% under renovated comparables within half a mile; 16 units are unrenovated.highlights[].titletextBelow-market rents.loan.amortizationYearsnumber30loan.annualDebtServicenumber237728loan.balanceAtExitnumber2710348loan.dscrCovenantnumber1.25loan.ltvnumber0.65loan.ratenumber0.0625loan.rateTypetextfixedloan.termYearsnumber10metrics.capRatenumber0.0626metrics.cashOnCashnumber0.037metrics.dscrnumber1.3metrics.equityMultiplenumber2.41metrics.irrnumber0.1055metrics.occupancynumber0.958proForma.effectiveGrossIncome.annualnumber500760proForma.effectiveGrossIncome.perUnitnumber20865proForma.expenseRationumber0.381proForma.expenses[].annualnumber54000proForma.expenses[].labeltextProperty taxesproForma.expenses[].perUnitnumber2250proForma.income[].annualnumber496800proForma.income[].labeltextGross potential rentproForma.income[].perUnitnumber20700proForma.noi.annualnumber309914proForma.noi.perUnitnumber12913proForma.notetextTaxes reflect reassessment at the purchase price.proForma.totalExpenses.annualnumber190846proForma.totalExpenses.perUnitnumber7952property.addresstext1418 Larkspur Avenue, Denver, CO 80206property.nametextThe Callowayproperty.photo.alttextExterior of a mid-rise apartment building with balconiesproperty.photo.credittextPhoto: Unsplashproperty.photo.urltexthttps://images.unsplash.com/photo-1460317442991-0ec209397118?w=1600&q=80property.pricePerSqFtnumber229property.pricePerUnitnumber206250property.purchasePricenumber4950000property.taglinetextMultifamily · Value-add · Built 1987, renovated 2019property.unitsnumber24property.unitsLeasednumber23report.datetext2026-10-06report.dealTypetextAcquisition opportunityreport.numbertextHPA-26-1173report.preparedFortextLarkspur Capital Partnersreport.titletextInvestment Property Reportrisks[].leveltextmediumrisks[].texttextEvery 25 bps of exit cap expansion costs about 0.6 points of IRR. At a 7.00% exit the hold still returns 9.4%.risks[].titletextRefinance and exit pricingsensitivity.dscr.interestRatestext[0.055,0.06,0.0625,0.065,0.07]sensitivity.dscr.ltvs[]number0.55sensitivity.dscr.valuestext[[1.67,1.53,1.41,1.31,1.23],[1.58,1.45,1.34,1.24,1.16],[1.54,1.41,1.3,1.21,1.13],[1.5,1.38,1.27,1.18,1.1],[1.43,1.31,1.21,1.12,1.05]]sensitivity.dscr.values[][]textsensitivity.irr.exitCapRates[]number0.0575sensitivity.irr.rentGrowthtext[0.02,0.025,0.03,0.035,0.04]sensitivity.irr.valuestext[[0.0928,0.0858,0.079,0.0723,0.0657,0.0592],[0.109,0.1023,0.0959,0.0896,0.0834,0.0774],[0.124,0.1176,0.1115,0.1055,0.0997,0.094],[0.138,0.1319,0.126,0.1203,0.1148,0.1094],[0.1513,0.1454,0.1397,0.1342,0.1289,0.1237]]sensitivity.irr.values[][]text
Send any of these in modify. Anything you leave out prints the sample value, and the response lists it in warnings.
Render it
Save the template to your account first. Saving gives you its ID.
curl --request POST \
--url https://api.ojo.so/v1/pdf/template \
--header 'Authorization: Bearer <your API key>' \
--header 'Content-Type: application/json' \
--data '{
"templateId": "<YOUR_TEMPLATE_ID>",
"modify": {
"currency": "USD",
"firm": {
"name": "Halberd Property Analytics"
},
"report": {
"title": "Investment Property Report",
"number": "HPA-26-1173"
}
}
}'What's included
- Sensitivity Grids
- Any Hold Period
- NOI and DSCR Chart


