Перейти к основному содержимому

Одна запись с тегом "invoicing"

Посмотреть все теги

Создание и отслеживание счетов с помощью Beancount

· 6 минут чтения
Mike Thrift
Mike Thrift
Marketing Manager

Текстовый шаблон, повторяемый рабочий процесс и один запрос для ответа на вопрос «Кто мне еще должен?»


2022-02-12-crafting-tracking-invoices-with-beancount

Выставление счетов может казаться рутиной, застрявшей между выполненной работой и ожидаемым платежом. Но хороший процесс выставления счетов — это основа здорового денежного потока. Он выполняет двойную функцию: четко сообщает вашим клиентам, что и когда они должны, и предоставляет вашей бухгалтерской системе неопровержимые факты, которые ей необходимы.

Хотя специализированные SaaS-приложения могут отправлять красивые, автоматизированные PDF-файлы, они часто требуют ежемесячной платы и блокируют ваши данные в проприетарном хранилище. Легкий, текстовый подход с использованием Beancount предлагает мощную альтернативу. Вы можете превратить каждый счет в четкий набор бухгалтерских записей, получая все преимущества контроля версий, мощных метаданных и мгновенных запросов — без необходимости подписки.


Минимально жизнеспособный счет (поля, которые никогда нельзя пропускать)

Прежде чем приступить к работе с бухгалтерской книгой, вам нужен профессиональный счет. Формат может быть простым, но содержание должно быть точным. Эти поля, заимствованные из проверенной временем практики малого бизнеса, не подлежат обсуждению.

  • Реквизиты продавца: Название вашей компании и физический адрес.
  • Реквизиты клиента: Имя вашего клиента и (в идеале) его адрес.
  • Номер счета: Уникальный, последовательный идентификатор, который никогда не используется повторно. INV-045 следует за INV-044.
  • Даты выставления и оплаты: Четко укажите, когда был выставлен счет и когда ожидается оплата.
  • Строки счета: Четкое описание услуг или продуктов, а также количество, ставка и итоговая сумма по строке.
  • Итого, налог и общая сумма: Покажите расчет, чтобы клиент мог легко его проследить.
  • Дополнительные примечания: Место для благодарности, инструкций по переводу или предоставленного клиентом номера заказа на покупку.

Чтобы помочь вам начать, мы создали набор готовых к редактированию шаблонов, которые включают все эти поля. Версии электронных таблиц даже предварительно рассчитывают итоговые суммы для вас.

Note: Invoice templates are coming soon! In the meantime, you can create your own using the fields listed above in Google Docs, Word, Sheets, Excel, or any other document format.


Запись счета в бухгалтерской книге

После того, как вы отправили 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).


Следующие шаги

Готовы взять под контроль выставление счетов? Вот как начать.

  1. Скачайте шаблон и используйте его для создания следующего реального счета, обязательно используя последовательный номер счета.
  2. Храните отправленные PDF-файлы в специальной папке, например docs/invoices/, и используйте ключ метаданных link: в своей транзакции Beancount для ссылки на них.
  3. Сохраните запрос open-invoices.sql и сделайте его запуск частью вашего еженедельного финансового обзора.

Текстовый бухгалтерский учет не означает отказ от аккуратности или контроля — это просто означает, что база данных доступна для поиска с помощью grep. С помощью простого шаблона и приведенных выше фрагментов кода вы будете получать оплату быстрее и поддерживать безупречный порядок в своей бухгалтерии.