Изготвяне и проследяване на фактури с 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
-ната. С прост шаблон и фрагментите по-горе, ще получавате плащания по-бързо и ще поддържате книгите си безупречни.