Создание и отслеживание счетов с помощью Beancount
Текстовый шаблон, повторяемый рабочий процесс и один запрос для ответа на вопрос «Кто мне еще должен?»
Выставление счетов может казаться рутиной, застрявшей между выполненной работой и ожидаемым платежом. Но хороший процесс выставления счетов — это основа здорового денежного потока. Он выполняет двойную функцию: четко сообщает вашим клиентам, что и когда они должны, и предоставляет вашей бухгалтерской системе неопровержимые факты, которые ей необходимы.
Хотя специализированные SaaS-приложения могут отправлять красивые, автоматизированные PDF-файлы, они часто требуют ежемесячной платы и блокируют ваши данные в проприетарном хранилище. Легкий, текстовый подход с использованием Beancount предлагает мощную альтернативу. Вы можете превратить каждый счет в четкий набор бухгалтерских записей, получая все преимущества контроля версий, мощных метаданных и мгновенных запросов — без необходимости подписки.
Минимально жизнеспособный счет (поля, которые никогда нельзя пропускать)
Прежде чем приступить к работе с бухгалтерской книгой, вам нужен профессиональный счет. Формат может быть простым, но содержание должно быть точным. Эти поля, заимствованные из проверенной временем практики малого бизнеса, не подлежат обсуждению.
- Реквизиты продавца: Название вашей компании и физический адрес.
- Реквизиты клиента: Имя вашего клиента и (в идеале) его адрес.
- Номер счета: Уникальный, последовательный идентификатор, который никогда не используется повторно.
INV-045
следует заINV-044
. - Даты выставления и оплаты: Четко укажите, когда был выставлен счет и когда ожидается оплата.
- Строки счета: Четкое описание услуг или продуктов, а также количество, ставка и итоговая сумма по строке.
- Итого, налог и общая сумма: Покажите расчет, чтобы клиент мог легко его проследить.
- Дополнительные примечания: Место для благодарности, инструкций по переводу или предоставленного клиентом номера заказа на покупку.
Чтобы помочь вам начать, мы создали набор готовых к редактированию шаблонов, которые включают все эти поля. Версии электронных таблиц даже предварительно рассчитывают итоговые суммы для вас.
Скачайте наши шаблоны здесь: beancount.io/invoice‑templates (Доступны в форматах Google Docs, Word, Sheets, Excel и PDF)
Запись счета в бухгалтерской книге
После того, как вы отправили PDF-файл счета клиенту, вы должны записать его в Beancount. Это важный шаг, который учитывает доход в момент его получения, а не только в момент оплаты. Процесс включает в себя две отдельные транзакции.
1. При выставлении счета:
Вы создаете транзакцию, которая перемещает общую сумму с вашего счета Income
(Доход) на счет Assets:AccountsReceivable
(Активы:Дебиторская задолженность). Это создает цифровой долговой документ в вашей бухгалтерии.
; 2025‑07‑21 Счет № 045 Веб-дизайн спринт для Acme Corp.
2025-07-21 * "Acme Corp" "INV-045 Веб-дизайн спринт"
Assets:AccountsReceivable 3500.00 USD ; due:2025-08-04
Income:Design:Web
invoice_id: "INV-045"
contact_email: "ap@acme.example"
link: "docs/invoices/2025-07-21_Acme_INV-045.pdf"
Здесь вы дебетуете AccountsReceivable
(Дебиторская задо лженность) и кредитуете свой счет Income
(Доход). Обратите внимание на богатые метаданные: срок оплаты, уникальный invoice_id
и даже прямая link:
(ссылка) на отправленный вами PDF-файл.
2. При оплате клиентом:
Когда деньги поступают на ваш банковский счет, вы записываете вторую транзакцию, чтобы "закрыть" долговой документ. Это перемещает баланс с AccountsReceivable
(Дебиторская задолженность) на ваш расчетный счет.
2025-08-01 * "Acme Corp" "Оплата INV-045"
Assets:Bank:Checking 3500.00 USD
Assets:AccountsReceivable
invoice_id: "INV-045"
Баланс для INV-045
в Assets:AccountsReceivable
(Дебиторская задолженность) теперь равен нулю, и ваша бухгалтерия идеально сбалансирована.
Прикрепите PDF: Ключ метаданных
link:
особенно полезен при использовании с Fava, веб-интерфейсом Beancount. Fava отобразит кликабельную ссылку прямо в представлении транзакции, поэтому исходный документ всегда находится на расстоянии одного клика. Этот рабочий процесс был задуман еще в 2016 году в запросе на функцию (GitHub).
Один запрос для вывода списка всех открытых счетов
Итак, кто вам еще должен деньги? С этой системой вам не нужно рыться в электронной почте или электронных таблицах. Вам нужен всего один простой запрос.
Сохраните следующее как файл с именем open-invoices.sql
:
SELECT
meta('invoice_id') AS id,
payee,
narration,
date,
number(balance) AS outstanding
WHERE
account = "Assets:AccountsReceivable"
AND balance != 0
ORDER BY
date;
Теперь запустите его из командной строки:
bean-query books.beancount open-invoices.sql
За считанные секунды вы получите чистый, актуальный отчет о всех непогашенных счетах, с указанием идентификатора счета, клиента, даты выставления и суммы задолженности. Никакого дополнительного программного обеспечения не требуется.
Автоматизируйте рутинную работу
Прелесть простого текста — это возможность написания скриптов. Вы можете автоматизировать утомительные части этого рабочего процесса.
- Шаблон + Pandoc = PDF: Храните шаблон счета в Markdown. Небольшой скрипт на Python может заполнить переменные (имя клиента, строки счета, номер счета), а инструмент командной строки Pandoc может мгновенно преобразовать его в профессиональный PDF-файл.
- Git Pre-commit Hook: Если вы храните свою бухгалтерскую книгу в Git, простой pre-commit hook может выполнять проверки перед сохранением вашей работы. Он может проверить, что каждый новый
invoice_id
уникален, что проводки по транзакции сбалансированы до нуля, и что файл, на который ссылается метаданныеlink:
, действительно существует. - Cron Job: Настройте запланированное задание (cron job) для запуска запроса
open-invoices.sql
каждую ночь и отправки вам сводки по электронной почте. Вы будете начинать каждый день, точно зная, кому нужно отправить дружеское напоминание.
Реалистичное предостережение
Beancount — это инструмент для ведения бухгалтерского учета, а не сервис для выставления счетов. Он не будет автоматически отправлять клиентам напоминания об оплате или обрабатывать платежи по их кредитным картам. Рабочий процесс следующий: вы создаете и отправляете счет с помощью выбранного вами метода (например, с помощью шаблонов выше), а затем вносите бухгалтерские записи в свою бухгалтерскую книгу.
Для большинства фрилансеров и небольших компаний этот ручной шаг — небольшая цена за надежную, проверяемую и бесплатную бухгалтерскую систему, которой вы полностью владеете и управляете (beancount.io).
Следующие шаги
Готовы взять под контроль выставление счетов? Вот как начать.
- Скачайте шаблон и используйте его для создания следующего реального счета, обязательно используя последовательный номер счета.
- Храните отправленные PDF-файлы в специальной папке, например
docs/invoices/
, и используйте ключ метаданныхlink:
в своей транзакции Beancount для ссылки на них. - Сохраните запрос
open-invoices.sql
и сделайте его запуск частью вашего еженедельного финансового обзора.
Текстовый бухгалтерский учет не означает отказ от аккуратности или контроля — это просто означает, что база данных доступна для поиска с помощью grep
. С помощью простого шаблона и приведенных выше фрагментов кода вы будете получать оплату быстрее и поддерживать безупречный порядок в своей бухгалтерии.