Счетоводството с обикновен текст заема речника си от двустранното счетоводство и добавя шепа собствени думи, специфични за Beancount. Този речник дефинира термините, които ще срещнете, докато четете тези документи или собствения си файл с книги, всеки с кратък пример, когато това помага. Всеки запис има свой собствен линк, така че можете да насочите колега направо към определение.
Сметка
Сметката е именувана кошница, която проследява един поток от стойност, записана като
йерархия, разделена с двоеточие, под един от петте основни типа: Assets, Liabilities,
Equity, Income или Expenses. Йерархията е цялата организационна структура на
вашите книги — Assets:US:BofA:Checking и Expenses:Food:Restaurant се сортират и
обобщават автоматично. Всяка сметка трябва да бъде декларирана, преди да бъде
използвана. Вижте Синтаксис на езика Beancount за правилата за
именуване.
База на начисляване
Счетоводството на база начисляване отчита приходите, когато бъдат спечелени, и разходите, когато бъдат направени, независимо кога действително се движат паричните средства. Счетоводството на касова база прави обратното: то признава и двете само когато парите сменят ръцете си. Начисляването дава по-вярна картина на представянето за даден период, затова фактурата, която сте изпратили през март, принадлежи на март, дори ако клиентът плати през май.
Амортизация
Амортизацията разпределя едно голямо плащане през периодите, които то действително покрива, така че всеки месец поема справедливия си дял от разхода. Годишна застрахователна премия, платена през януари, е разход за всичките дванадесет месеца, не само за януари. В Beancount или записвате разделените записвания на ръка, или ги генерирате с плъгин — вижте Амортизиране.
Проверка на баланс
Проверката на баланс е директива balance, която посочва какъв трябва да бъде балансът на
дадена сметка в началото на определена дата, така че банковото ви извлечение се превръща в
автоматична проверка на книгите ви. Ако изчисленият баланс се различава с повече от
толеранса на проверката, Beancount се проваля шумно с очакваните и действителните суми.
Този толеранс е една единица от последния десетичен знак, който сте написали — 4.27 RGAGX
приема всичко от 4.26 до 4.28 — а ~ преди валутата задава ваш собствен. Поръсването на
една проверка на сметка на извлечение е най-евтиният начин да поддържате книгите надеждни.
2026-01-01 balance Assets:US:BofA:Checking 4,321.00 USDBeancount
Beancount е система за двустранно счетоводство с отворен код, чиито книги са файл с обикновен текст, който редактирате във всеки текстов редактор и валидирате с инструмент от командния ред. Той ви дава строг, разбираем синтаксис, език за заявки и уеб интерфейс, без база данни или патентован файлов формат. Тъй като книгите са текст, те живеят спокойно в Git заедно с кода ви. Започнете с Въведение в Beancount.
Език за заявки на Beancount
Езикът за заявки на Beancount, обикновено съкращаван BQL, е езикът, подобен на SQL, който
използвате, за да задавате въпроси на книгите си. Той работи върху разбраните директиви, а не
върху база данни, така че SELECT account, sum(position) WHERE year = 2026 отговаря веднага
от същия файл, който редактирате. Прочетете ръководството за езика за заявки за пълната граматика.
Метод за причисляване
Методът за причисляване е правилото, което Beancount прилага, когато намаление трябва да
избере кои съществуващи партиди да изтегли. Beancount 3.2.3 приема седем имена: STRICT
(по подразбиране, където сами идентифицирате партидата), STRICT_WITH_SIZE, NONE, FIFO,
LIFO, HIFO и AVERAGE. Задайте един на сметка в директивата ѝ open, или за целия файл
с option "booking_method". Шест от седемте са реализирани: AVERAGE се разбира, но
предизвиква AVERAGE method is not supported в момента, в който трябва да причисли
намаление. Методът, който изберете, променя реализираните ви капиталови печалби, затова
изберете този, който данъчната ви юрисдикция очаква, и го поддържайте стабилен. Управление на инвентара прекарва всичките седем през същите партиди и публикува
книгите, които се провалят при AVERAGE.
Сметкоплан
Сметкопланът е пълният списък на сметките, които вашите книги използват, заедно със
структурата, която ги организира. В Beancount няма отделен файл със сметкоплан — наборът от
директиви open е вашият сметкоплан. Доброто му проектиране отрано спестява много
преименуване по-късно; вижте Настройки за конкретни индустрии
за отправни точки.
Директива close
Директива close отбелязва датата, след която дадена сметка вече не може да бъде използвана,
което е начинът да пенсионирате банкова сметка или изплатен заем, без да изтривате историята
ѝ. Миналите транзакции остават валидни и докладваеми; само новите записвания се отхвърлят.
Затварянето на неизползвани сметки поддържа отчетите четими с остаряването на книгите.
2026-03-31 close Assets:US:OldBank:CheckingСтокова единица
Стоковата единица е всяка единица стойност, която книгите ви проследяват — валута като
USD, борсов тикер като AAPL, крипто актив като BTC, или нещо, което измислите като
VACATION-DAYS. Beancount никога не конвертира между стокови единици зад гърба ви, така че
сумата винаги е число, съчетано със стоковата единица, в която е деноминирана. Незадължителна
директива commodity ви позволява да прикачите метаданни като име или клас на актива.
Себестойност
Себестойността е това, което действително сте платили за дадено притежание, записано във
валутата, с която сте платили, и носено заедно с притежанието, докато го притежавате.
Beancount я записва във фигурни скоби — 10 AAPL {150.00 USD} означава десет акции,
придобити по 150 долара всяка. Удвоете фигурните скоби и числото става общата сума, а не
единичната цена, така че 10 AAPL {{1,500.00 USD}} записва същата партида. Тъй като
себестойността пътува с позицията, капиталовите печалби изпадат от аритметиката, когато
продадете. Вижте Управление на инвентара.
Директива
Директивата е една инструкция във файл на Beancount, обикновено с дата, и директивите са
това, от което е направена една книга. Дванадесет вида носят дата: open, close, balance,
price, note, document, pad, event, commodity, custom, query и самата
транзакция. Няколко не носят дата и действат върху файла, а не върху ден — option,
include, plugin и двойката pushtag/poptag. Beancount сортира тези с дата по дата,
преди да ги обработи, така че можете да поддържате тези в какъвто ред се чете най-добре; тези
без дата влизат в сила там, където са написани.
Двустранно счетоводство
Двустранното счетоводство е практиката да се записва всяко икономическо събитие като поне два съответстващи записа, така че теглата им винаги да се сумират до нула. Парите никога не се създават или унищожават — те само се движат между сметки, затова техниката хваща грешки, които едноколонен списък никога не би хванал. Теглото е собствената сума на записването, или неговата себестойност или цена, конвертирани обратно в една валута, така че двата крака в различни стокови единици все още се компенсират. Beancount налага правилото строго: транзакция, чиито записвания не се балансират, е грешка, не предупреждение.
2026-03-02 * "Bank" "Buy euros"
Assets:US:BofA:EUR 100.00 EUR @ 1.08 USD
Assets:US:BofA:Checking -108.00 USDБюджетиране с пликове
Бюджетирането с пликове заделя пари за дадена цел, преди да ги похарчите, така че всяка категория има свой собствен лимит, вместо да се състезава за един общ баланс. Името идва от хартиените пликове, които хората някога пълнели с пари в деня на заплата. В книги с обикновен текст моделирате пликовете с посветени сметки или бюджетни директиви — вижте Бюджети.
Fava
Fava е уеб интерфейсът за Beancount: графики, балансови отчети, отчети за приходите, редактор на заявки и форма за въвеждане, обслужвани от вашия файл с книги. Той е предимно за четене и работи локално, така че променя как виждате книгите си, без да променя как ги записвате. beancount.io хоства управлявана версия заедно със собствените си инструменти; ръководството Функции на интерфейса обхваща какво можете да правите там.
Инвентар
Инвентарът е колекцията от позиции, които дадена сметка в момента притежава, всяка със своя собствена стокова единица и, където е приложимо, своя собствена себестойност и дата на придобиване. Брокерска сметка, която е купила същата акция три пъти, държи три отделни партиди в един инвентар, а не едно обобщено число. Поддържането на партидите отделни е това, което прави точните изчисления на печалбите възможни.
Дневник
Дневникът е хронологичният списък на всичко, което се е случило в книгите ви — суровият поток от транзакции, в ред на датите, преди всяко групиране или обобщаване. Това е изгледът, който преглеждате, когато искате да отговорите на „какво всъщност направих през март?“. Страницата с дневника на Fava обикновено е най-бързото място да забележите погрешно категоризиран запис.
Книга
Книгата е пълният набор от счетоводни записи за един субект, което в Beancount означава вашият файл с обикновен текст (плюс всичко, което той включва). Думата служи едновременно като име на цялата счетоводна книга и като име на самия файл. Тъй като е текст, една книга може да бъде сравнявана, преглеждана, разклонявана и сливана като изходен код.
Партида
Партидата е едно конкретно придобиване на стокова единица, идентифицирано чрез своята себестойност и дата на придобиване. Купуването на същия ETF през януари и отново през юни създава две партиди, а продажбата по-късно означава избор коя партида продавате. Партидите са причината Beancount да може да изчисли реализираните печалби точно, вместо да ги приближава.
2026-06-15 * "Broker" "Buy VTI"
Assets:US:Broker:VTI 5 VTI {260.00 USD, 2026-06-15}
Assets:US:Broker:Cash -1,300.00 USDОписание
Описанието е свободният текст, описващ за какво е била дадена транзакция, записан като втория низ в кавички на реда на транзакцията. То е за хората: „Месечен наем“, „Хранителни стоки и домакинство“. Beancount не го разбира, но то е това, което ще четете, когато записът вече няма смисъл след шест месеца.
Директива open
Директива open декларира сметка, датата, от която започва да бъде използваема, и
незадължително стоковите единици, които може да държи, и метода за причисляване, който
използва. Beancount изисква всяка сметка да бъде отворена преди първото ѝ записване, което е
това, което спира печатна грешка да създаде тихо чисто нова сметка. Ограничаването на
позволените стокови единици превръща още цял клас грешки в грешки.
2026-01-01 open Assets:US:Broker:VTI VTI "FIFO"Pad
Директива pad казва на Beancount да вмъкне каквато сума е нужна, за да успее следващата
проверка на баланс на дадена сметка, причислявайки разликата към втора сметка. Тя съществува
за точно една задача: отваряне на книга по средата на живота ѝ без възстановяване на години
история. Пълнене извън тази първоначална настройка обикновено означава, че реална грешка се
замазва.
Получател
Получателят е с кого сте извършили транзакцията, записан като първия низ в кавички на реда на
транзакцията. Поддържането на получателите последователни — винаги "Whole Foods", никога
понякога "WholeFoods" — е това, което прави отчетите, базирани на получател, и
автоматизираните импортери работещи. Beancount третира получателя като незадължителен; една
транзакция може да носи само описание.
Счетоводство с обикновен текст
Счетоводството с обикновен текст е практиката да поддържате книгите си във файл с четим за хора текст под контрол на версии, обработван от инструменти с отворен код от командния ред. То заменя интерфейса с посочване и щракване за издръжливост, одитируемост и автоматизация: данните ви надживяват всеки доставчик, всяка промяна е преглеждаема разлика и всеки скрипт може да ги чете. Beancount, Ledger и hledger са трите най-известни реализации.
Плъгин
Плъгинът е Python модул, който Beancount зарежда, докато обработва файла ви, позволявайки му да
добавя, трансформира или валидира директиви, преди да бъдат построени отчетите. Плъгините са
начинът, по който прогнозиране, графици за амортизация и персонализирани проверки се
реализират без промяна на основния език. Активирате един с отделен ред plugin в горната
част на книгата си, никога с option — option "plugin" "…" се отхвърля с
Option 'plugin' may not be set. Ръководството Плъгин за прогнози
преминава през реален пример.
Записване
Записването е един крак от транзакция: сметка, сума и незадължително себестойност или цена.
Това, което трябва да се сумира до нула в една транзакция, не са суровите суми, а техните
тегла: обикновената сума тежи самата себе си, 10 FUND @ 38.46 USD тежи 384.60 USD, а
10 FUND {384.61 USD} тежи 3,846.10 USD, защото единичните фигурни скоби държат
себестойността на една единица. Най-много едно записване може да остави сумата си празна, в
който случай Beancount изчислява балансиращата цифра вместо вас. Вижте Точност и толеранси за пълните правила за теглото.
Директива price
Директива price записва обменния курс между две стокови единици на дадена дата, което е
начинът, по който Beancount конвертира дадено притежание към пазарната му стойност в отчетите.
Директивата price е чисти референтни данни: тя не движи пари и не принадлежи на никаква
транзакция. Не я бъркайте с цената @, записана вътре в записване, която е аритметика — тя
дава на 10 FUND @ 38.46 USD тегло 384.60 USD и така решава дали транзакцията се
балансира. Без директиви price един портфейл все още се балансира по себестойност, но не
може да бъде оценен по пазарна стойност.
2026-06-30 price VTI 271.40 USDЦени на живо предоставя управлявани директиви price за поддържани активи в
хоствани книги. Вашата собствена цена печели за същата дата и двойка, включително реципрочната
двойка. Управлявана цена на по-късна дата все още може да се приложи към по-късна оценка.
Сверяване
Сверяването е актът на доказване, че книгите ви съвпадат с външен запис като банково или брокерско извлечение. В счетоводството с обикновен текст то е до голяма степен механично: добавете проверка на баланс за всяка дата на извлечение и оставете инструмента да ви каже дали числата съвпадат. Книга, която се сверява чисто всеки месец, е такава, от която можете да подадете данъци без страх.
Тагове и връзки
Таговете и връзките са двете етикети, които прикачате към транзакции, за да ги групирате извън
йерархията на сметките: таг с # маркира тема като #trip-japan, а връзка с ^ свързва
свързани записи като ^invoice-2026-014 заедно. Таговете отговарят на „покажи ми всичко в тази
категория“; връзките отговарят на „покажи ми записите, които принадлежат на това едно
събитие“. И двете са филтрируеми във Fava и могат да се заявяват в BQL — вижте Филтриране и търсене.
Транзакция
Транзакцията е датирано икономическо събитие заедно със записванията, които го записват, и е
директивата, която ще пишете най-често. Тя носи флаг (* за потвърдена, ! за нуждаеща се от
преглед), незадължителен получател, описание и две или повече записвания, чиито тегла се
сумират до нула. Всичко останало във файл на Beancount съществува, за да декларира, проверява
или анотира транзакции.
2026-02-14 * "Blue Bottle" "Coffee with Dana"
Expenses:Food:Coffee 9.50 USD
Assets:US:BofA:Checking -9.50 USDВсе още се затруднявате с някоя дума? Помощният център индексира всяко ръководство на този сайт, а Шпаргалката поставя синтаксиса за всяка директива една до друга.