; 13-week cash forecast — sample ledger (worked actuals for W1–W2). ; ; Weeks are Monday-start, matching the forecast workbook ; (public/downloads/cash-flow-forecast/cash-flow-forecast-13-week.xlsx): ; W1 = 2026-09-14..2026-09-20, W2 = 2026-09-21..2026-09-27. ; W1 actuals equal the workbook's W1 sample forecast (receipts 12200, ; disbursements 9700, ending 87500) and W2 actuals equal its W2 forecast ; (receipts 13200, disbursements 17200, ending 83500), so a reader can ; reconcile every forecast cell to a transaction below. ; ; BANK-CASH SCOPE (the no-double-count rule) ; ----------------------------------------- ; Forecast actuals are bank cash movement ONLY: postings to ; Assets:Bank:* ; This one scope decision settles both traps: ; ; 1. Credit cards: a card purchase posts to Liabilities:CreditCard:* ; and moves no bank cash, so it is NOT counted when charged. Cash ; leaves the bank once, at settlement (bank -> card). Counting the ; charge plus the settlement would count the same spend twice. ; W1 below has both legs: 420.00 USD of new Amex purchases (not ; counted) and a 600.00 USD August-statement settlement (counted). ; The naive "bank outflows + card charges" total for W1 is ; 10120.00 USD — exactly 420.00 too high. ; ; 2. Internal transfers: a Checking <-> Savings movement has two bank ; legs of opposite sign, so it nets to zero inside this scope and ; never inflates inflows or outflows. W1 moves 3000.00 USD ; Checking -> Savings; W2 moves 1500.00 USD back. ; ; Related non-cash distinctions fall out of the same scope: loan ; principal is not an expense but IS a bank outflow, while a card ; purchase IS an expense but is NOT yet a bank outflow. Map the bank ; legs, not the Income/Expense legs. ; ; Reproduce (pinned toolchain, no new npm dependency): ; uvx --from beancount bean-check public/downloads/cash-flow-forecast/sample.bean ; yarn check:cash-flow-actuals option "title" "Cash forecast sample ledger" option "operating_currency" "USD" 2026-09-13 open Assets:Bank:Checking USD 2026-09-13 open Assets:Bank:Savings USD 2026-09-13 open Liabilities:CreditCard:Amex USD 2026-09-13 open Liabilities:Loan USD 2026-09-13 open Equity:Opening-Balances USD 2026-09-13 open Income:Sales USD 2026-09-13 open Income:PrepaidBookings USD 2026-09-13 open Income:Interest USD 2026-09-13 open Expenses:Payroll USD 2026-09-13 open Expenses:Contractors USD 2026-09-13 open Expenses:Cloud USD 2026-09-13 open Expenses:Software USD 2026-09-13 open Expenses:Marketing USD 2026-09-13 open Expenses:Rent USD 2026-09-13 open Expenses:Interest USD ; Opening balances, dated before W1 so weekly queries exclude them. ; Bank cash opens at 85000.00 USD = the workbook's opening assumption. ; Amex opens -600.00 USD: August SaaS charges, settled in W1. 2026-09-13 * "Opening balances" ^opening Assets:Bank:Checking 80000.00 USD Assets:Bank:Savings 5000.00 USD Liabilities:CreditCard:Amex -600.00 USD Liabilities:Loan -20000.00 USD Equity:Opening-Balances -64400.00 USD ; ---------------- W1: 2026-09-14..2026-09-20 ---------------- ; Expect: receipts 12200.00, disbursements 9700.00, ending 87500.00. 2026-09-14 * "Stripe" "Customer receipts W1" Assets:Bank:Checking 12000.00 USD Income:Sales -12000.00 USD 2026-09-15 * "Contractor" "Contractors W1" Expenses:Contractors 1500.00 USD Assets:Bank:Checking -1500.00 USD 2026-09-15 * "AWS" "Cloud hosting W1" Expenses:Cloud 2200.00 USD Assets:Bank:Checking -2200.00 USD ; Internal transfer: two bank legs, nets to zero in bank-cash scope. 2026-09-16 * "Bank" "Checking -> Savings sweep" Assets:Bank:Savings 3000.00 USD Assets:Bank:Checking -3000.00 USD ; Card purchases: liability only, NOT bank cash out. Do not count. 2026-09-17 * "SaaS vendor" "Amex SaaS charges" Expenses:Software 250.00 USD Liabilities:CreditCard:Amex -250.00 USD 2026-09-17 * "SaaS vendor" "Amex SaaS charges" Expenses:Software 170.00 USD Liabilities:CreditCard:Amex -170.00 USD ; Card settlement: THIS is the bank cash outflow. Count it once. 2026-09-18 * "Amex" "August statement settlement" Liabilities:CreditCard:Amex 600.00 USD Assets:Bank:Checking -600.00 USD 2026-09-19 * "Landlord" "Rent W1" Expenses:Rent 3500.00 USD Assets:Bank:Checking -3500.00 USD 2026-09-19 * "Agency" "Marketing W1" Expenses:Marketing 1000.00 USD Assets:Bank:Checking -1000.00 USD 2026-09-19 * "Bank" "Interest W1" Assets:Bank:Checking 200.00 USD Income:Interest -200.00 USD 2026-09-19 * "Lender" "Loan autopay W1" Liabilities:Loan 800.00 USD Expenses:Interest 100.00 USD Assets:Bank:Checking -900.00 USD ; W1 close: bank cash 79500.00 + 8000.00 = 87500.00 (workbook W1 ending). ; Balance directives sort before same-day transactions, so every W1 ; transaction is dated 2026-09-19 or earlier. 2026-09-20 balance Assets:Bank:Checking 79500.00 USD 2026-09-20 balance Assets:Bank:Savings 8000.00 USD 2026-09-20 balance Liabilities:CreditCard:Amex -420.00 USD 2026-09-20 balance Liabilities:Loan -19200.00 USD ; ---------------- W2: 2026-09-21..2026-09-27 ---------------- ; Expect: receipts 13200.00, disbursements 17200.00, ending 83500.00. 2026-09-21 * "Stripe" "Customer receipts W2" Assets:Bank:Checking 8000.00 USD Income:Sales -8000.00 USD 2026-09-21 * "Gusto" "Payroll W2" Expenses:Payroll 11000.00 USD Assets:Bank:Checking -11000.00 USD 2026-09-22 * "New customer" "Prepaid booking W2" Assets:Bank:Checking 5000.00 USD Income:PrepaidBookings -5000.00 USD 2026-09-22 * "Contractor" "Contractors W2" Expenses:Contractors 1500.00 USD Assets:Bank:Checking -1500.00 USD 2026-09-23 * "AWS" "Cloud hosting W2" Expenses:Cloud 2200.00 USD Assets:Bank:Checking -2200.00 USD 2026-09-23 * "Bank" "Interest W2" Assets:Bank:Checking 200.00 USD Income:Interest -200.00 USD ; SaaS billed straight to the bank: a bank outflow, counted once. 2026-09-24 * "SaaS vendor" "Annual plan, bank debit W2" Expenses:Software 600.00 USD Assets:Bank:Checking -600.00 USD ; Reverse sweep: nets to zero in bank-cash scope, like the W1 sweep. 2026-09-24 * "Bank" "Savings -> Checking sweep" Assets:Bank:Checking 1500.00 USD Assets:Bank:Savings -1500.00 USD 2026-09-25 * "Agency" "Marketing W2" Expenses:Marketing 1000.00 USD Assets:Bank:Checking -1000.00 USD 2026-09-26 * "Lender" "Loan autopay W2" Liabilities:Loan 800.00 USD Expenses:Interest 100.00 USD Assets:Bank:Checking -900.00 USD ; W2 close: bank cash 77000.00 + 6500.00 = 83500.00 (workbook W2 ending). 2026-09-27 balance Assets:Bank:Checking 77000.00 USD 2026-09-27 balance Assets:Bank:Savings 6500.00 USD 2026-09-27 balance Liabilities:CreditCard:Amex -420.00 USD 2026-09-27 balance Liabilities:Loan -18400.00 USD