Перейти до основного вмісту

Прогнозування грошових потоків: метод 13-тижневого ковзного прогнозу

Цей посібник пропонує простий метод рівня фінансового директора для управління ліквідністю вашої компанії. Побудувавши 13-тижневий ковзний прогноз грошових потоків, ви зможете побачити запас грошових коштів по тижнях, стратегічно керувати надходженнями та платежами й усунути фінансові несподіванки. Це система, створена для засновників — і на цій сторінці викладено справжню модель: робочу книгу з формулами та зразковими даними, а також зразок леджера Beancount, що лежить в основі її перших двох тижнів (див. завантаження нижче).

Дві речі, якими цей посібник не є: прогноз — це орієнтовні оцінки на майбутнє, які ви вводите вручну, тоді як бухгалтерські факти — це банківські рухи, вже проведені у вашому леджері, — тому робоча книга тримає їх окремо. Ви фіксуєте копію свого плану як датований базовий план (baseline), вводите банківські грошові кошти кожного закритого тижня на окремому аркуші Фактичні дані (Actuals) і читаєте різницю на аркуші Відхилення (Variance); план, з яким ви порівнюєте, ніколи не перезаписується. Тут нічого не синхронізується автоматично: робоча книга не має макросів чи зовнішніх з'єднань, і жоден крок не підтягує дані з вашого банку чи Beancount самостійно.

Чому саме 13 тижнів?​

13-тижневий прогноз є золотим стандартом для оперативного управління грошовими коштами з кількох ключових причин:

  • Короткостроковий контроль: Він охоплює приблизно один бізнес-квартал, даючи вам чітке уявлення про вашу негайну ліквідність. Цей горизонт достатньо довгий, щоб включити 2–3 цикли виплати зарплат, податкові платежі та типові умови оплати постачальникам, але достатньо короткий, щоб залишатися високоточним і практичним.
  • Погляд на надходження та видатки: Прогноз використовує «прямий метод», зосереджуючись виключно на надходженні та вибутті грошових коштів. Це не про метод нарахування чи прибутковість; це про те, що насправді надійде на ваш банківський рахунок або залишить його, що гарантує пряму відповідність прогнозу вашому банківському балансу.
  • Ковзний, а не статичний: Це не одноразовий бюджет. Щотижня ви відкидаєте тиждень, що щойно минув, додаєте новий тиждень у кінці (тиждень 13) і оновлюєте свої припущення. Це підтримує постійний горизонт погляду вперед, перетворюючи прогнозування на динамічну щотижневу дисципліну.

Що ви побудуєте​

  1. Одна сітка прогнозу: Ядром системи є один аркуш із 13 стовпцями (тиждень 1 – тиждень 13) та чітко визначеними розділами: Початкові грошові кошти, Надходження, Видатки, Чистий рух грошових коштів і Кінцеві грошові кошти. Три допоміжні аркуші з тими самими рядками зберігають зафіксований базовий план цього прогнозу, фактичні дані, зафіксовані вашим банком, і відхилення між ними.
  2. Відображення категорій: Проста система для зіставлення транзакцій з вашого леджера з категоріями прогнозу (наприклад, усі платежі від Stripe зіставляються з «Надходження від клієнтів»; платежі Gusto — з «Зарплата»). Вкладка Vendor Mapping робочої книги вже містить цю карту, включно з правилом уникнення подвійного обліку банк/картка — почніть з неї, а не вигадуйте власну.
  3. Щотижневий ритм: Повторюваний процес фіксації фактичних даних, перегляду відхилень від базового плану, якого ви дотримувалися, повторної оцінки майбутніх тижнів і набір заздалегідь визначених тригерів для дій при досягненні фінансових порогів.

Завантажте стартові файли​

Уникніть налаштування з чистого аркуша: цей посібник містить робочу книгу з формулами та зразковими даними, а також зразок леджера, що лежить в основі її перших двох тижнів.

  • Робоча книга 13-тижневого прогнозу (XLSX, v1.1.0) — cash-flow-forecast-13-week-uk.xlsx. Редаговані припущення, пов'язані формулами тижні, знімок Baseline лише зі значеннями, аркуш Actuals, аркуш Variance лише з формулами та вкладка відображення постачальників. Кожне зразкове число — це опрацьований приклад — замініть його своїми (див. Зразок проти ваших даних нижче).
  • Зразок леджера та фактичних даних (леджер Beancount, .bean) — sample.bean. Збалансований приклад леджера, банківські грошові кошти W1–W2 якого точно збігаються з тим, що містить аркуш Actuals робочої книги для його перших двох тижнів.

Як працюють стартові файли (прочитайте це перед введенням даних)​

Аркуші. Робоча книга (cash-flow-forecast-13-week-uk.xlsx, v1.1.0) має шість аркушів у такому порядку:

  • Forecast — ваш поточний план: 13 датованих тижнів, припущення, надходження, видатки, чистий/кінцевий рух грошових коштів. Редагуйте його так часто, як забажаєте.
  • Baseline — знімок лише зі значеннями рядків 2–29 аркуша Forecast, позначений версією в B31 і датою станом на B32. Він не містить формул, тому ніщо зроблене вами в іншому місці не може його змінити.
  • Actuals — банківські грошові кошти, які реально рухалися кожного закритого тижня, введені вами: статус у рядку 3 (complete або partial), суми за категоріями в тих самих рядках, що й у Forecast, і необов'язковий баланс за випискою в рядку 30.
  • Variance — лише формули: Фактичні − Базові для кожної категорії та підсумку, зіставлені за датою початку тижня, плюс легенда, що пояснює кожне слово статусу. Він ніколи не читає Forecast.
  • Vendor Mapping — карта леджер→категорія з правилом підрахунку грошових коштів банк/картка для кожного джерела.
  • Notes — механіка, щотижневий огляд, перемикачі сценаріїв і версія, продубльовані з генератора, щоб файл пояснював сам себе офлайн.

Усі чотири тижневі сітки мають однакову структуру: тижні W1–W13 — це стовпці B–N, рядок 2 містить дату початку кожного тижня, початкові грошові кошти — рядок 10, надходження — рядки 12–14 (підсумок 15), видатки — рядки 17–26 (підсумок 27), чистий — рядок 28 і кінцевий — рядок 29. Тож B12 — це надходження від клієнтів за W1 на кожному з них.

Часовий базис. Тижні починаються з понеділка, W1 починається 2026-09-14 і до W13, що починається 2026-12-07 (рядок 2 аркуша Forecast; редагуйте ці дати, коли впроваджуєте модель — кожна формула відносна до тижня, тож ланцюжок зберігається — і перенесіть їх до Baseline та Actuals, коли фіксуєте свій базовий план). Транзакція належить до тижня, що містить дату її проведення, з понеділка по неділю.

Одиниці. Цілі долари США по всьому документу (формат числа #,##0). Зразкова компанія — це SaaS на стадії сіду з початковими грошовими коштами 85 000, із щотижневою зарплатою, що чергується 0 / 11 000, щомісячною орендою та автоплатежем за кредитом 900/тиждень.

Що ви вводите проти того, що обчислюється. На аркуші Forecast сині клітинки — це ручні введення, а все інше — формула (Actuals працює так само зі своїми введеннями, описаними в розділі Зафіксуйте базовий план і в щотижневому огляді нижче):

  • Введення: початковий баланс B5 (85 000), перемикачі B6/B7 (1.0), мінімум B8 (40 000), три базові значення категорій надходжень, десять базових значень категорій видатків і дати початку тижнів на аркуші Forecast.
  • Формули (показані для стовпця B, тиждень 1 — кожен наступний тиждень зміщує літеру стовпця): Початкові B10 = $B$5 (тижні 2–13 натомість переносяться, напр. C10 = B29); Загальні надходження B15 = B12*$B$6+B13*$B$7+B14; Загальні видатки B27 = SUM(B17:B26); Чистий B28 = B15-B27; Кінцевий B29 = B10+B28.
  • Перерахунок — Automatic, і файл встановлює fullCalcOnLoad, тож Excel, LibreOffice і Numbers перераховують при відкритті (файл не зберігає кешованих значень формул). Змініть синю клітинку, і всі 13 тижнів зміняться — наприклад, встановлення перемикача надходжень B6 на 1.2 збільшує надходження W1 з 12 200 до 14 600, а кінцеві грошові кошти W1 — з 87 500 до 89 900.
  • Перегенеруйте незмінний файл будь-коли командою yarn generate:cash-flow-forecast (генератор: scripts/generate-cash-flow-forecast.py, записувач openpyxl 3.1.5; --verify повторно відкриває файл і перевіряє, що кожна підсумкова клітинка містить справжню формулу).

Зразок проти ваших даних. Три речі постачаються попередньо заповненими, і всі три — це опрацьований приклад, а не ваш бізнес:

  • сині клітинки на аркуші Forecast (поточний план зразкової компанії);
  • знімок на аркуші Baseline, версія B1 станом на 2026-09-11 — план у тому вигляді, у якому він був до закриття перших двох тижнів;
  • записи W1–W2 на аркуші Actuals (стовпці B–C), які є банківськими грошовими коштами зі зразка леджера (sample.bean, вище). W3–W13 залишені порожніми.

Оскільки зразкові Baseline та Actuals різняться, аркуш Variance відкривається на реальному порівнянні: W1 завершується на +500 попереду плану, а W2 на +300 (див. Огляд відхилень нижче). Перед вашим власним першим оглядом замініть усі три: введіть свій план на аркуші Forecast, очистіть зразкові записи Actuals і зафіксуйте власний Baseline поверх B1 (кроки нижче). Два перемикачі (B6 масштабує всі надходження від клієнтів, B7 масштабує всі передоплати) — це єдине, що має залишатися узагальненим, для сценарних програвань.

Переходите з v1.0.0? Структура аркуша Forecast не змінилася, тож ви можете свідомо перенести свій план: у старому файлі скопіюйте лише діапазони введення — B2:N2 (дати), B5:B8, B12:N14 і B17:N26 — і вставте їх як значення за тими самими адресами в аркуші Forecast нового файлу, ніколи не поверх рядків формул. v1.0.0 не зберігала базового плану, тож будь-який минулий тиждень, який ви перезаписали фактичними даними, не має відновлюваного плану: введіть банківські грошові кошти цих тижнів на аркуш Actuals і почніть свій перший Baseline з сьогоднішнього Forecast.

Структура (рядки, які вам потрібні)​

Ваш аркуш прогнозу має бути структурований з наступними рядками, щоб охопити всі рухи грошових коштів. Як розташована робоча книга: рядки нижче розміщені на аркуші Forecast (13 датованих тижнів із Початковими грошовими коштами, трьома категоріями надходжень, десятьма категоріями видатків, Чистим і Кінцевим), а Baseline, Actuals і Variance повторюють їх рядок за рядком; Vendor Mapping зіставляє джерела леджера з цими категоріями, включно з правилом уникнення подвійного обліку банк/картка, а Notes пояснює механіку офлайн. На аркуші Forecast надходження групуються як Надходження від клієнтів, Нові бронювання/Передоплати та Інші надходження; видатки групуються як Зарплата, Підрядники, Хмара/Хостинг, Програмне забезпечення/SaaS, Маркетинг, Оренда, Юридичні та бухгалтерські послуги, Податки та збори, Обслуговування боргу та Одноразові витрати; підсумки згортаються Початкові → Загальні надходження → Загальні видатки → Чистий → Кінцевий.

  • Початковий залишок грошових коштів (Має дорівнювати Кінцевому залишку грошових коштів попереднього тижня)

  • Надходження (Приплив грошових коштів)

    • Надходження від клієнтів: Грошові кошти, які ви очікуєте отримати за наявними рахунками (Дебіторська заборгованість).
    • Нові бронювання/Передоплати: Авансові платежі, які ви очікуєте від нових угод, закритих протягом 13-тижневого вікна.
    • Інші надходження: Будь-які інші грошові кошти, що надходять, як-от податкові відшкодування, процентний дохід або грантове фінансування.
  • Видатки (Відтік грошових коштів)

    • Зарплата: Повна грошова вартість, включно з чистою виплатою працівникам і всіма податками на зарплату з боку роботодавця.
    • Підрядники та фрілансери: Платежі не працівникам.
    • Хмара/Хостинг (COGS): Основні витрати на інфраструктуру, як-от AWS, GCP тощо.
    • SaaS/Інструменти: Усі ваші підписки на програмне забезпечення.
    • Маркетинг: Витрати на рекламу, гонорари агенцій та інші витрати, пов'язані з брендом.
    • Оренда/Офіс: Витрати на фізичний офіс.
    • Юридичні та бухгалтерські послуги: Гонорари за професійні послуги.
    • Податки та збори: Перерахування податку з продажів та інші платежі державі.
    • Обслуговування боргу: Як виплати основної суми, так і відсотків за будь-якими кредитами.
    • Одноразові витрати: Нерівномірні, нечасті платежі, як-от річні страхові премії, застави або обладнання/капітальні витрати (ноутбуки, техніка) — усе, що не має власного рядка вище, потрапляє сюди.
  • Чистий рух грошових коштів (= Загальні надходження − Загальні видатки)

  • Кінцевий залишок грошових коштів (= Початкові грошові кошти + Чистий рух грошових коштів)

Опрацьований 13-тижневий зразок (долари США)​

Таблиця нижче — це аркуш Forecast робочої книги для зразкової компанії, тиждень за тижнем — поточний план, перепрогнозований після закриття W1 і W2, тож ці два стовпці тепер містять те, що банк насправді зробив. W1 і W2 — це фактичні дані з леджера — вони дорівнюють підсумкам, які yarn check:cash-flow-actuals виводить з sample.bean (надходження 12 200 / 13 200, видатки 9 700 / 17 200, закриття 87 500 / 83 500). W3–W13 — це припущення робочої книги з базових значень генератора (не проведені в леджері). План, якого компанія дотримувалася заздалегідь, збережено окремо на аркуші Baseline і він відрізняється від цих стовпців W1–W2; Огляд відхилень нижче порівнює їх. Валюта — цілі долари США; Кінцевий = Початкові + Надходження − Видатки кожного тижня.

РядокW1W2W3W4W5W6W7W8W9W10W11W12W13
Початкові85 00087 50083 50092 50082 00081 00072 00080 00072 80075 30063 80079 80071 800
Надходження12 20013 20015 2009 20018 2008 20014 20014 20012 2009 20022 2009 20012 200
Видатки9 70017 2006 20019 70019 20017 2006 20021 4009 70020 7006 20017 2009 700
Чистий2 500-4 0009 000-10 500-1 000-9 0008 000-7 2002 500-11 50016 000-8 0002 500
Кінцевий87 50083 50092 50082 00081 00072 00080 00072 80075 30063 80079 80071 80074 300

Механіка ковзання (як реалізовано в робочій книзі)​

Логіка ковзного прогнозу проста й потужна — а в завантаженні вона вже налаштована як формули на аркуші Forecast (рядки в дужках):

  • Початкові грошові кошти (Тиждень 1) = припущення початкового балансу — клітинка B10 = $B$5.
  • Початкові грошові кошти (Тиждень n) = Кінцеві грошові кошти (Тиждень n−1) — напр. C10 = B29 (рядок 10, тижні 2–13).
  • Загальні надходження (Тиждень n) = Надходження від клієнтів × перемикач надходжень + Передоплати × перемикач бронювань + Інші — напр. B15 = B12*$B$6+B13*$B$7+B14 (рядок 15).
  • Загальні видатки (Тиждень n) = SUM 10 рядків категорій — напр. B27 = SUM(B17:B26) (рядок 27).
  • Чистий рух грошових коштів (Тиждень n) = Загальні надходження − Загальні видатки — напр. B28 = B15-B27 (рядок 28).
  • Кінцеві грошові кошти (Тиждень n) = Початкові грошові кошти + Чистий рух грошових коштів — напр. B29 = B10+B28 (рядок 29).

Ті самі рядки існують на аркуші Actuals як прості підсумки (B15 = SUM(B12:B14), B27 = SUM(B17:B26), B28 = B15-B27, B29 = B10+B28, C10 = B29), причому фактичні початкові грошові кошти тижня вводяться один раз у Actuals!B10. Actuals не має перемикачів і ніколи не посилається на інший аркуш.

Зафіксуйте базовий план (один раз на горизонт)​

Зробіть це, коли ваш Forecast містить план, за яким ви хочете вимірюватися — до закриття першого тижня.

  1. Скопіюйте план як значення. Виберіть Forecast!B2:N29 і скопіюйте. Виберіть Baseline!B2 і вставте лише значення — Excel: Paste Special → Values; LibreOffice: Paste Special → Values Only; Numbers: Edit → Paste Formula Results. Звичайне вставляння перенесло б живі формули, і «базовий план» непомітно слідував би за кожною подальшою правкою.
  2. Позначте його. Введіть версію (наприклад B1) у Baseline!B31 і сьогоднішню дату в Baseline!B32. Обидва розташовані нижче вставленого блоку, тож пізніше фіксування ніколи їх не перезапише.
  3. Вирівняйте тижні. Скопіюйте Baseline!B2:N2 і вставте значення в Actuals!B2, щоб обидва аркуші називали ті самі 13 дат початку тижнів, і введіть банківський баланс, з якого ви починаєте, у Actuals!B10.

Відтепер введення фактичних даних, редагування Forecast або перемикання перемикача перераховує Forecast і Variance й залишає Baseline точно таким, яким його зафіксовано.

Ваш щотижневий огляд у понеділок (за цією робочою книгою)​

  1. Запишіть тиждень на аркуші Actuals — ніколи на Forecast. У стовпці, дата в рядку 2 якого є понеділком, що щойно минув, введіть банківські грошові кошти тижня за категоріями в рядках 12–14 і 17–26 (відображення нижче). Введіть 0 там, де грошові кошти не рухалися: порожня клітинка означає «ще не введено», а не нуль. Помістіть кінцевий баланс із банківської виписки в рядок 30; рядок 31 тоді має показувати 0. Будь-що інше — це помилка відображення — зазвичай врахована витрата за карткою або збережене переведення — а не помилка банку.
  2. Перевірте, що тиждень завершено. Введіть complete у рядок 3, коли кожен рядок категорії містить число, або partial, поки тиждень ще відкритий (випадаючий список пропонує обидва). Variance порівнює тиждень лише тоді, коли він complete, кожна категорія введена і дата Actuals дорівнює даті Baseline у тому самому стовпці.
  3. Прочитайте Variance. Рядок 3 називає стан кожного тижня; лише тижні зі станом compared показують числа, а кожен інший стан показує n/a, ніколи 0, тож невведений тиждень не може зійти за «за планом». Знаки — це Фактичні − Базові (стовпець O повторює їх): надходження, чистий і кінцевий додатні = більше грошових коштів, ніж заплановано; видатки додатні = більше витрат, ніж заплановано. Рядок 29 кумулятивний — він включає кожен попередній тиждень — і існує лише поки кожен тиждень до нього є compared. Рядки 32–35 виражають підсумки як частку базового плану (n/a, коли базовий план дорівнює нулю).
  4. Повторно оцініть майбутнє на аркуші Forecast. Оновіть сині клітинки для наступних 2–4 тижнів найсвіжішою інформацією (щойно надіслані рахунки, майбутні платежі постачальникам, підтверджені дати виплати зарплат). Щоб зберегти повний 13-тижневий погляд уперед, прокрутіть вікно Forecast: зсуньте його сині введення, включно з датами в рядку 2, на один стовпець ліворуч (старий Тиждень 2 стає Тижнем 1), потім очистіть стовпець N і надайте йому нову дату Тижня 13. Формули перенесення автоматично переприв'язуються; Baseline, Actuals і Variance не зачіпаються.

Прокрутіть горизонт огляду (свідомий крок, а не щотижневий)​

Baseline і Actuals залишаються на горизонті, який ви зафіксували, поки ви не вирішите їх перемістити — зазвичай коли Forecast прокрутився на місяць чи квартал уперед, або план змінився настільки, що ви хочете нову мірку.

  1. Архівуйте. Збережіть копію робочої книги (наприклад cash-flow-forecast-B1.xlsx). Вона зберігає старий базовий план, його фактичні дані та їхнє відхилення разом; робочий файл не зберігає історії.
  2. Очистіть фактичні введення. На аркуші Actuals очистіть рядки 3, 12–14, 17–26 і 30 у стовпцях B–N, а також B10. Залиште C10:N10, рядки 15 і 27–29 та рядок 31 без змін — це формули.
  3. Зафіксуйте новий базовий план з сьогоднішнього Forecast з наступною версією (B2) і сьогоднішньою датою, потім вирівняйте дати Actuals і початковий баланс точно так, як у розділі Зафіксуйте базовий план вище.

Ніколи не вставляйте і не видаляйте тижневі стовпці. Якщо ви повторно фіксуєте базовий план, але забуваєте перепризначити дати Actuals, кожен уражений тиждень показує date mismatch замість порівняння тижня з планом іншого тижня.

Відображення з Beancount на ваш прогноз​

Обсяг банківських грошових коштів (правило, що запобігає подвійному обліку). Щотижневі фактичні дані — це проведення лише на Assets:Bank:* — один обсяг, який усуває обидві пастки:

  • Кредитні картки: покупка за карткою проводиться на Liabilities:CreditCard:* і не рухає банківських грошових коштів, тож вона не враховується при списанні. Грошові кошти вибувають один раз, при розрахунку (платіж банк→картка). Врахування списання плюс розрахунку зараховує одну й ту саму витрату двічі. У зразку леджера W1 містить 420.00 доларів США списань Amex за SaaS (лише зобов'язання, ігнорується) поряд із розрахунком за серпневою випискою на 600.00 доларів США (враховується). Наївний підсумок «банківські відтоки + списання за карткою» для W1 становить 10,120.00 доларів США — рівно на 420.00 завищений; робоча книга налічує 9,700.00.
  • Внутрішні перекази: переведення Checking↔Savings має дві протилежні банківські ноги, тож у цьому обсязі воно дає нуль і виключається з обох — надходжень і видатків. Переведення зразка на 3,000.00 доларів США (W1) і 1,500.00 доларів США (W2) інакше завищили б обидві сторони на ці суми.
  • Наслідок: відображайте банківські ноги, а не ноги Доходів/Витрат. Основна сума кредиту не є витратою, але є банківським відтоком (автоплатежі зразка на 900.00 доларів США = 800 основна сума + 100 відсотки, усі враховані в Обслуговуванні боргу); покупка за карткою є витратою, але ще не є банківським відтоком.

Розподіл надходжень/видатків. З експортованих банківських ніг: додатні ноги — це надходження, від'ємні ноги — це видатки, ноги переказів виключені. Карта категорій (та сама, що й вкладка Vendor Mapping): виплати Stripe/PayPal → Надходження від клієнтів; перекази від нових клієнтів → Нові бронювання / Передоплати; банківські відсотки/гранти → Інші надходження; Gusto/ADP → Зарплата; AWS/GCP → Хмара/Хостинг; SaaS, оплачений банком → Програмне забезпечення/SaaS; орендодавець → Оренда; юридична фірма → Юридичні/Бухгалтерські; податковий орган → Податки та збори; автоплатеж за кредитом → Обслуговування боргу.

  • Робота з податком з продажів: Хоча податок з продажів не є доходом, це стаття грошового потоку. Розглядайте збори податку з продажів як надходження грошових коштів, а перерахування державі — як видаток. Вплив на дохід живе у ваших книгах за методом нарахування, але рух грошових коштів важливий тут.

Фрагмент Beancount, що живить W1​

Кожне проведення нижче також існує у викладеному sample.bean. Збережений окремо, цей фрагмент проходить uvx --from beancount bean-check і дає надходження W1 з таблиці (12 200), видатки (9 700) і закриття (87 500), щойно ви застосуєте обсяг банківських грошових коштів вище (виключіть переведення Checking↔Savings з обох сторін; рахуйте розрахунок за Amex, а не списання за зобов'язаннями).

option "title" "Cash forecast sample — W1 excerpt"
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:Interest 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
 
2026-09-13 * "Opening balances"
  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
 
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
 
2026-09-16 * "Bank" "Checking -> Savings sweep"
  Assets:Bank:Savings               3000.00 USD
  Assets:Bank:Checking             -3000.00 USD
 
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
 
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 від початку до кінця (2026-09-14 – 2026-09-20)​

Початкові банківські грошові кошти — 85,000.00 (Checking 80 000 + Savings 5 000 на 2026-09-13) — значення в Actuals!B10. Банківські ноги W1 з леджера, після виключення пари переведення на 3,000.00, потрапляють у стовпець B аркуша Actuals; кожна категорія, не вказана тут, вводиться як 0, а рядок 3 встановлюється на complete:

Рядок Actuals (клітинка)Банківські ногиСума
Надходження від клієнтів (B12)Stripe 12 00012,000.00
Інші надходження (B14)Банківські відсотки 200200.00
Загальні надходженняB15 = SUM(B12:B14) = 12 000 + 0 + 20012,200.00
Підрядники (B18)1 5001,500.00
Хмара/Хостинг (B19)AWS 2 2002,200.00
Програмне забезпечення/SaaS (B20)Розрахунок за Amex 600 (списання виключені)600.00
Маркетинг (B21)Агенція 1 0001,000.00
Оренда (B22)Орендодавець 3 5003,500.00
Обслуговування боргу (B25)Автоплатеж за кредитом 900900.00
Загальні видаткиB27 = SUM(B17:B26)9,700.00
ЧистийB28 = B15−B27+2,500.00
КінцевийB29 = B10+B28 = 85 000 + 2 50087,500.00

Перенесення у W2. C10 = B29, тож W2 відкривається на 87,500.00. Його банківські ноги дають надходження 8 000 (Stripe) + 5 000 (передоплата) + 200 (відсотки) = 13,200.00 і видатки 11 000 (зарплата Gusto) + 1 500 + 2 200 + 600 (SaaS, списаний банком) + 1 000 + 900 = 17,200.00; чистий −4,000.00, кінцевий 83,500.00 — точно як у стовпці W2 робочої книги на аркуші Actuals (і на перепрогнозованому аркуші Forecast). Баланси за випискою 87 500 і 83 500 розташовані в Actuals!B30:C30, тож рядок 31 показує 0 для обох тижнів: це ваш доказ, що відображення працює. Що тижні зробили проти плану — це окреме питання, на яке відповідає розділ Variance нижче.

Відтворіть це (перевірено 2026-09-09, Beancount 3.2.3 + beanquery 0.2.0)​

uvx --from beancount bean-check public/downloads/cash-flow-forecast/sample.bean
yarn check:cash-flow-actuals

Перевірка запускає bean-check (власні твердження balance у леджері доводять кінцеві грошові кошти кожного тижня), запити експорту нижче та незалежне перенесення на Python, яке стверджує, що всі три збігаються — W1 12,200.00 / 9,700.00 / 87,500.00, W2 13,200.00 / 17,200.00 / 83,500.00:

SELECT date, narration, account, position
FROM date >= 2026-09-14 AND date <= 2026-09-20
WHERE account ~ "^Assets:Bank" ORDER BY date;
 
SELECT sum(position) AS net
FROM date >= 2026-09-14 AND date <= 2026-09-20
WHERE account ~ "^Assets:Bank";
 
SELECT sum(position) AS bank_cash
FROM close ON 2026-09-21 WHERE account ~ "^Assets:Bank";

(Зсуньте дати на 7 для W2, закриття на 2026-09-28.) Одне обмеження BQL, яке варто знати: ця версія beanquery не може фільтрувати проведення за знаком, тож розподіл надходжень/видатків застосовується до експортованих рядків — додатні банківські ноги до надходжень, від'ємні до видатків, пари переказів виключені — точно так, як це робить перевірка.

Ритм оновлення (30–45 хвилин щотижня)​

  1. Витягніть фактичні дані (15 хв): Експортуйте проведення тижня на Assets:Bank:* (запустіть запити вище або завантажте транзакції зі своїх банківських рахунків — списання за карткою залишаються поза увагою; рахується лише платіж-розрахунок) і введіть їх на аркуш Actuals. Підтвердьте, що Кінцеві грошові кошти тижня на аркуші Actuals точно збігаються з вашим фактичним сукупним банківським балансом (Checking + Savings) — рядок 31 показує 0. Ця звірка є обов'язковою.
  2. Перегляньте дебіторську заборгованість (10 хв): Складіть список усіх несплачених рахунків і розподіліть їх на тиждень, у якому ви очікуєте оплату. Будьте консервативними та застосовуйте реалістичні затримки надходжень на основі минулих результатів.
  3. Перегляньте кредиторську заборгованість і зарплату (10 хв): Розподіліть строки оплати для всіх відомих майбутніх рахунків. Заповніть наперед дати й суми виплати зарплат на весь квартал. Відкладіть некритичні видатки на п'ятниці, щоб зберегти можливість маневру з грошовими коштами протягом тижня.
  4. Зустріч щодо відхилень (10 хв): Відкрийте аркуш Variance і пройдіться стовпцем compared тижня: які категорії змінилися, у якому напрямку і як це вплинуло на кумулятивні кінцеві грошові кошти. Занотуйте причини будь-яких значних розбіжностей і вирішіть, чи потрібно скоригувати ваші правила прогнозування на майбутнє.

Точність і прийняття рішень​

Практичні правила точності​

  • Тижні 1–2: Прагніть до похибки ±5–10%. Ці дати й суми мають бути дуже певними.
  • Тижні 3–6: Очікуйте похибку ±10–20%. Цей період буде сумішшю відомих рахунків і оцінок на основі закономірностей.
  • Тижні 7–13: Ця частина прогнозу є орієнтовною. Вона керується вашим потоком продажів і витратами за поточною ставкою.

Коди впевненості: Щоб зробити прогноз легшим для читання, позначайте кожен рядок прогнозу кодом впевненості: Зобов'язано (напр., зарплата, оренда), Ймовірно (напр., рахунки добрим клієнтам) або Потенціал (напр., нові угоди з потоку).

Тригери та дії (вирішіть їх заздалегідь)​

Прогноз марний без плану. Заздалегідь визначте свої дії на випадок досягнення певних порогів.

  • Мінімальний запас грошових коштів: Наприклад, ваше правило може бути: «Ми повинні постійно підтримувати грошові кошти ≥ 1.5× наступної повної суми виплати зарплати». Якщо прогноз показує, що ви порушите цей мінімум, ви негайно виконуєте заздалегідь узгоджений план, як-от спринт зі збору платежів і пауза всіх дискреційних витрат.
  • Обмежувач запасу: Наприклад: «Якщо Кінцеві грошові кошти на Тижні 13 передбачають менше ніж X місяців витрат, ми ініціюємо наш план фінансування». Це може включати пошук терм-шита, пропонування клієнтам знижки за передоплату доходу або використання кредитної лінії.
  • Правило великих відтоків: Наприклад: «Будь-який єдиний видаток, не пов'язаний із зарплатою, більший за 5% нашого поточного залишку грошових коштів, має бути схвалений за два тижні наперед і мати резервний план».

Шаблон і сценарії​

Простий набір категорій (для SaaS на стадії сіду)​

  • Надходження: Надходження від клієнтів, Інші надходження (відсотки, відшкодування, гранти)
  • Видатки: Зарплата (чиста + податки роботодавця), Підрядники, Хмара/Хостинг (COGS), Програмне забезпечення/SaaS (OpEx), Маркетинг (Платний/Бренд), Оренда/Офіс, Юридичні/Бухгалтерські, Податки та збори, Обслуговування боргу, Одноразові / Річні
  • Обчислюється: Чистий рух грошових коштів, Кінцеві грошові кошти

Шаблон (уже побудований у завантаженні; скопіюйте це, щоб відбудувати з нуля)​

Таблиця нижче — це форма аркуша Forecast — ті самі рядки, ті самі формули — для відбудови на чистому аркуші. У завантаженні рядок 2 вже містить дати початку тижнів (W1 2026-09-14 до W13 2026-12-07) і кожен підсумок налаштований; закріпіть нижче рядка 3 і праворуч від стовпця A (B4 у файлі), щоб відповідати.

Рядок / ТижденьW1W2W3...W13
Початкові грошові кошти
--- НАДХОДЖЕННЯ ---
Надходження від клієнтів
Нові передоплати/Аванси
Інші надходження
Загальні надходження=SUM()=SUM()=SUM()=SUM()
--- ВИДАТКИ ---
Зарплата (чиста + податки роботодавця)
Підрядники
Хмара/Хостинг (COGS)
Програмне забезпечення/SaaS (OpEx)
Маркетинг
Оренда/Офіс
Юридичні/Бухгалтерські
Податки та збори
Обслуговування боргу
Одноразові / Річні
Загальні видатки=SUM()=SUM()=SUM()=SUM()
Чистий рух грошових коштів=Надходження-Видатки
Кінцеві грошові кошти=Початкові+Чистий

Перемикачі сценаріїв (тримайте це легким)​

Ви можете побудувати просте сценарне планування без створення складної моделі. Додайте клітинку-«перемикач» вгорі вашого аркуша для ключових драйверів. Наприклад:

  • Перемикач уповільнення надходжень B6: [1.0] (Змініть на 1.2, щоб змоделювати 20% уповільнення надходжень — Загальні надходження кожного тижня перераховуються через COL15 = COL12*$B$6+COL13*$B$7+COL14)
  • Перемикач нових бронювань B7: [1.0] (Змініть на 0.8, щоб змоделювати 20% невиконання проти плану)

Це фактичні клітинки припущень на аркуші Forecast — жодного додаткового налаштування не потрібно.


Навчання та уникнення помилок​

Огляд відхилень (зробіть навчання кумулятивним)​

Робоча книга робить бухгалтерію відхилень за вас: Відхилення = Фактичні − Базові, за категорією та за підсумком, для кожного тижня, чиї Actuals є complete і датовані як Baseline. Ваше завдання — пояснити числа. Під час огляду позначайте причини значних розбіжностей: затримка надходжень, зміна обсягу, незапланована покупка в постачальника, зсув у часі. Якщо один і той самий тип відхилення повторюється, змініть основне правило вашої моделі. Наприклад, якщо надходження стабільно запізнюються на тиждень, змініть ваше припущення про затримку надходжень за замовчуванням з 21 дня на 28 днів.

Опрацьоване порівняння (викладений зразок). Baseline B1 було зафіксовано 2026-09-11 з початкових 85 000; Actuals — це банківські грошові кошти зі зразка леджера. Знаки відповідають аркушу Variance: надходження, чистий і кінцевий додатні = більше грошових коштів, ніж заплановано, видатки додатні = більше витрат, ніж заплановано.

ТижденьБазові надх / вид / кінцФактичні надх / вид / кінцΔ надходженьΔ видатківΔ чистийΔ кінцевий (кумулятивний)
W1 (2026-09-14)12 000 / 10 000 / 87 00012 200 / 9 700 / 87 500+200−300+500+500
W2 (2026-09-21)13 200 / 17 000 / 83 20013 200 / 17 200 / 83 5000+200−200+300
W3 (2026-09-28)15 200 / 6 000 / 92 400не введеноn/an/an/an/a

Читаючи це так, як це викладає аркуш Variance:

  • W1, +500. Надходження від клієнтів надійшли на 200 більше за заплановані 11 800 (Variance!B12 = +200), а AWS виставив рахунок на 2 200 проти запланованих 2 500 (Variance!B19 = −300: менше витрат, сприятливо). 85 000 + 12 200 − 9 700 = 87 500 фактичних проти 85 000 + 12 000 − 10 000 = 87 000 запланованих.
  • W2, +300. Надходження надійшли точно за планом, але рахунок за SaaS, сплачений банком, становив 600 проти запланованих 400 (Variance!C20 = +200: більше витрат, несприятливо). Чистий за тиждень становить −200, тож кумулятивне перевищення кінцевих скорочується з +500 до +300 (Variance!C29): 87 500 + 13 200 − 17 200 = 83 500 проти 87 000 + 13 200 − 17 000 = 83 200.
  • W3 і далі, not observed. Нічого не введено, тож кожна клітинка показує n/a — а не втішний 0.
  • Як відсотки (рядки 32–33): надходження W1 +1.67% і видатки −3.00%; надходження W2 0.00% і видатки +1.18%.

З цього випливають два теги: оцінка AWS завищена, а рядок SaaS, сплаченого банком, було заплановано на 200 занизько. Обидва — це виправлення до припущень Forecast; Baseline B1 залишається як є, тож наступного кварталу ви все ще зможете побачити, наскільки відхилився початковий план.

Поширені пастки (уникайте їх)​

  • Перезапис плану: Введення фактичних даних поверх клітинок Forecast (або повторне вставляння Baseline щотижня) знищує план, за яким вас мали вимірювати. Фактичні дані йдуть на аркуш Actuals; Baseline змінюється лише коли ви свідомо прокручуєте горизонт.
  • Змішування нарахування та грошових коштів: Цей прогноз призначений лише для грошових коштів. Визнаний дохід, амортизація та інші концепції нарахування належать до вашого основного леджера, а не сюди.
  • Забування нерівномірних річних витрат: Річні страхові премії, великі поновлення SaaS і квартальні податкові платежі можуть бути величезними несподіванками. Заплануйте їх у своєму прогнозі, щойно дізнаєтеся про них.
  • Ігнорування грошових коштів від податку з продажів: Навіть якщо це транзитне зобов'язання, грошові кошти перебувають на вашому банківському рахунку, поки ви їх не перерахуєте. Змоделюйте як надходження, так і видаток.
  • Відсутність звірки: Якщо Кінцеві грошові кошти тижня на аркуші Actuals не збігаються з вашим фактичним сукупним банківським балансом (Checking + Savings; баланси за картками виключені), у вас є помилка відображення — зазвичай врахована витрата за карткою або збережене переведення. Ви повинні виправити її, перш ніж довіряти прогнозу.
  • Відсутність чіткого відповідального: Призначте одну людину відповідальною за оновлення прогнозу щотижня. Призначте заступника на час відпусток.

Швидкі зв'язки з Beancount​

  • План рахунків: Тримайте свої грошові сегменти чистими (напр., Assets:Bank:Checking, Assets:Bank:Savings, Liabilities:CreditCard:Amex). Щотижневі фактичні дані — це лише ноги Assets:Bank:* — рахунок картки існує, щоб розрахункам було звідки надходити, а не як друге джерело відтоків.
  • Не використовуйте Звіт про прибутки як перевірку: Звіт про прибутки Fava — це нарахування — він проводить покупки за карткою при списанні та ігнорує основну суму кредиту — тож він за задумом розходитиметься з цим прогнозом грошових потоків. Перевіркою грошових коштів є експорт bean-query + перенесення вище (yarn check:cash-flow-actuals), який має збігатися з Кінцевими грошовими коштами щотижня.
  • Документація: Коли у вас є велика одноразова стаття, прикріпіть PDF рахунку у вашій теці Beancount documents/ і додайте посилання на нього в стовпці нотаток вашого прогнозу.

Пакет для ради директорів/інвесторів (один слайд)​

  1. Графік: Простий лінійний графік ваших Кінцевих грошових коштів за тижнями для всіх 13 тижнів. Додайте горизонтальну лінію, що показує ваш мінімальний запас грошових коштів.
  2. Таблиця: Невелика таблиця з числами Кінцевих грошових коштів W1–W13, плюс маркований список 5 найбільших очікуваних надходжень і видатків за квартал.
  3. Нотатки: Кілька маркованих пунктів про ключові припущення, що змінилися від часу останнього оновлення, та будь-які тригери, яких ви досягли або очікуєте досягти.

Налаштуйте бухгалтерію, якій можна довіряти

Почніть безкоштовно вести облік просто зараз або зверніться до посібника для стартапів і спільноти засновників, коли потрібен додатковий контекст.