Перейти к основному содержимому
Beancount.io Logo
Справочник по Beancount CLI

Справочник по Beancount CLI

Найдите команды bea, параметры, поведение отчетов, JSON-вывод, коды выхода и исправления для распространенных ошибок локальной бухгалтерской книги.

Используйте этот справочник для поиска команд bea и их поведения. Для первой бухгалтерской книги следуйте краткому руководству по CLI. Для файлов банковских выписок используйте пошаговое руководство по импорту.

Команды с первого взгляда

КомандаНазначение
bea init [DIRECTORY]Создать бухгалтерскую книгу с общими счетами
bea add TYPEДобавить директиву с датой
bea add transactions --from FILE.jsonДобавить пакет транзакций
bea import SOURCEПредварительный просмотр экспорта; добавьте --apply для записи
bea list TYPEПеречислить и отфильтровать директивы
bea checkПроверить полную бухгалтерскую книгу
bea format [PATH]Выровнять файл или рекурсивно отформатировать каталог
bea query [BQL]Выполнить запрос или открыть интерактивную оболочку запросов
bea report TYPEСформировать финансовые отчеты
bea ask [QUESTION]Использовать необязательную облачную ИИ-помощь с локальной книгой
bea cloud …Войти и управлять облачными бухгалтерскими книгами
bea upgrade [--check]Обновить с помощью менеджера пакетов или проверить наличие обновления

Глобальные параметры и пути

Глобальные параметры идут перед командой:

bea --file ~/my-books/main.bean check
bea --json list transaction --limit 100
ПараметрПоведение
--file / -f PATHВыбрать корневую бухгалтерскую книгу; переопределяет BEA_FILE и ./main.bean
--jsonСтруктурированный вывод; также отключает подсказки CLI
--no-inputОтключить подсказки; отсутствие необходимого ввода завершается кодом 2
--yes / -yПодтвердить операции, такие как удаление облачных данных; не предоставляет разрешение на запись ИИ
--debugВключить трассировку исключений
--versionПоказать установленную версию без сетевого запроса
--help / -hПоказать справку; также доступна для подкоманд
--show-completionВывести автодополнение оболочки
--install-completionУстановить автодополнение оболочки
--shell NAMEВыбрать bash, zsh, fish, powershell или pwsh вместо определения оболочки

init создает собственный целевой каталог/файл и игнорирует BEA_FILE. Он принимает глобальный --file вместо аргумента каталога. format использует собственный позиционный целевой объект, по умолчанию — рабочий каталог. Глобальный --file не выбирает цель форматирования.

Создание бухгалтерской книги

bea init [DIRECTORY] по умолчанию использует текущий каталог. Каталог создает main.bean; путь .bean или .beancount напрямую называет новый файл.

ПараметрПоведение
--currency / -c SYMBOLРабочая валюта; требуется при автоматическом режиме, интерактивный по умолчанию USD
--date YYYY-MM-DDСамая ранняя дата истории/открытия; иначе подсказка или сегодня
--opening-balance "ACCOUNT NUMBER"Повторите для шаблонных счетов активов/обязательств; суммы используют рабочую валюту

Шаблон открывает Assets:Checking, Assets:Savings, Assets:Cash, Liabilities:CreditCard, Income:Salary, Income:Interest, Expenses:Groceries, Expenses:Dining, Expenses:Rent, Expenses:Transport, Expenses:Utilities, Expenses:Fees и Equity:OpeningBalances.

Начальные остатки компенсируются через Equity:OpeningBalances. Долг отрицательный. Ввод валюты приводится к верхнему регистру. Разрешены пользовательские символы; символ, не являющийся тремя заглавными буквами, вызывает предупреждение о опечатке. Это не проверка по реестру ISO-валют.

Существующие файлы никогда не перезаписываются. Новые файлы используют разрешения только для владельца, режим 0600 на POSIX. Последующие записи add, import и format сохраняют разрешения и уважают доступные только для чтения места назначения.

Добавление транзакций

bea add transaction -n "Groceries" --payee "Corner Market" \
  -p "Expenses:Groceries 30" -p "Assets:Checking" \
  --flag '!' --tag household --link receipt-42 --meta 'receipt:IMG_42.jpg'
ПараметрПоведение
--posting / -p POSTINGОбязательный; повторите для каждой проводки
--date YYYY-MM-DDПо умолчанию сегодня
--flag CHARACTERПо умолчанию *; используйте !, чтобы пометить транзакцию для проверки
--payee TEXTНеобязательная другая сторона
--narration / -n TEXTНеобязательное назначение; пропущенный текст отображается как (no narration)
--tag TAG, --link LINKПовторяемые; необязательный ведущий # или ^ принимается
--meta KEY:VALUEПовторяемые метаданные транзакции
--into FILEЗаписать во включаемый файл, проверяя корневой файл
--allow-errorsЯвно разрешить семантические ошибки проверки; синтаксис все равно должен быть разборчивым

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

Собственный синтаксис проводок поддерживает арифметику, такую как 84/2 EUR, затраты, такие как {100 USD}, общие затраты {{1000 USD}}, и цены @ или @@. Используйте десятичные суммы, такие как 1000, а не экспоненциальную запись, такую как 1e3.

Обмен валюты требует фактический курс транзакции. Например, запишите 100 EUR @ 1.08 USD на счет, открытый в EUR, и -108 USD на счет проверки. Покупка инвестиции может записать 2 AAPL {100 USD} на счет, открытый в AAPL, и -200 USD на счет проверки. Добавляйте котировки price с датами, когда для отчетов нужна рыночная оценка.

Метаданные принимают простые строки, такие как --meta 'receipt:IMG_42.jpg'. Собственные числа, логические значения, даты и суммы сохраняют свои типы. Примеры включают --meta 'reviewed:TRUE', --meta 'received:2026-08-03' и --meta 'fee:2.50 USD'. Внутренние кавычки принуждают к строке: --meta 'code:"1234"'. Ключи должны быть уникальными; filename и lineno зарезервированы.

Одиночные добавления, массовые добавления и импорт заменяют переносы строк в получателях, назначениях и строковых метаданных пробелами. Кавычки и обратные слэши сохраняют содержимое.

Добавление других директив

Все эти команды требуют --date YYYY-MM-DD. Они также принимают --into FILE и --allow-errors.

ТипОбязательные поляДополнительные параметры
open--account / -aПовторяйте --currency / -c для ограничения валют
close--account / -a
balance--account / -a, --amount "NUMBER CURRENCY"--pad-from ACCOUNT, --pad-date YYYY-MM-DD
pad--account / -a, --source / -s
note--account / -a, --comment / --message / -m
event--type / -t, --description / -d
price--currency / --commodity / -c, --amount "NUMBER CURRENCY"Валюта называет товар, для которого устанавливается цена
commodity--currency / --commodity / -c
document--account / -a, --filename / --pathПовторяемые --tag и --link
custom--type / -tПовторяемые --value / -v KIND:VALUE

Имена счетов имеют корень с заглавной буквы и сегменты, разделенные двоеточием. Каждый субакаунт начинается с заглавной буквы или цифры. Beancount поддерживает буквы Unicode и настроенные имена корней.

Баланс проверяет счет на начало его даты. Поддерживается синтаксис допуска, например --amount "1538 ~ 1 EUR". Допуск должен быть неотрицательным.

Используйте add balance --pad-from Equity:OpeningBalances для записи pad и проверки баланса вместе. Pad по умолчанию на предыдущий день; --pad-date может выбрать другой более ранний день. Оба счета должны быть активными. Отдельный pad требует более позднего баланса для его использования. --allow-errors может подготовить это промежуточное состояние, но не может обойти недопустимый счет pad.

add price пропускает точный дубликат даты/товара/цены в корне и его включениях. Он завершается с кодом 0 и указывает существующее местоположение. Другие даты или цены являются новыми добавлениями.

Пути документов разрешаются рядом с файлом, содержащим директиву. С --into years/2026.bean, --filename receipt.pdf означает years/receipt.pdf, а не файл рядом с рабочим каталогом вашей оболочки.

Виды пользовательских значений: text, number, amount, account, bool и date. Например, бюджет может использовать --value "text:travel" --value "amount:500 USD".

Массовый JSON-ввод

bea add transactions --from transactions.json принимает массив JSON:

[
  {
    "date": "2026-08-04",
    "narration": "Groceries",
    "postings": [
      { "account": "Expenses:Groceries", "amount": "45.00 USD" },
      { "account": "Assets:Checking" }
    ],
    "meta": { "receipt": "R-43", "reviewed": true }
  }
]

Каждая транзакция требует date и postings. Необязательные поля: flag, payee, narration, tags, links и meta.

Проводка использует либо amount, либо units, например {"number":"45.00","currency":"USD"}. Опустите оба для балансирующей проводки. Поля проводки также включают cost, price, flag и meta. Затраты содержат number и currency, с необязательными date и label. Цены содержат number и currency.

Используйте строки для десятичных чисел. Метаданные используют обычные строки и логические значения, или тегированные значения, такие как {"kind":"number","value":"1.125"}, {"kind":"date","value":"2026-08-04"} и {"kind":"amount","number":"2.50","currency":"USD"}. Необязательное местоположение source транзакции никогда не записывается как метаданные.

По умолчанию — атомарный пакет: любая отклоненная строка оставляет книгу без изменений и завершается с кодом 1. --partial записывает допустимое подмножество и все равно завершается с кодом 1, если какие-либо строки отклонены. Ошибки JSON описывают результат в error.result; индексы строк там начинаются с нуля. Номера строк для человека начинаются с единицы.

Массовое добавление принимает --into и --allow-errors. Он не дедуплицирует. Используйте bea import для проверки банковских экспортов.

Разделенные бухгалтерские книги и безопасность записи

Держите --file указанным на корневую книгу. Добавьте --into для выбора существующего включаемого файла:

bea --file ~/my-books/main.bean add transaction --into 2026.bean \
  --date 2026-08-02 -n "Groceries" \
  -p "Expenses:Groceries 30" -p "Assets:Checking"

Назначение относительно корневого каталога. Оно должно уже быть включено; указание несвязанного файла отклоняется. Команды добавления, импорт и интерактивные записи ИИ поддерживают это разделение.

Записи проверяют полную кандидатную книгу, включая плагины и регистрацию пакетов затрат. Одновременное изменение корня или графа включений завершается с кодом 4. Цель только для чтения завершается с кодом 3. Успешные добавления используют то же выравнивание, что и bea format, которое может переформатировать существующие столбцы в этом месте назначения.

Перечисление директив

bea list TYPE поддерживает одиннадцать типов: transaction, open, close, balance, pad, note, event, price, commodity, document и custom.

ПараметрПрименяется кПоведение
--limit / -l NВсе типыПоложительный предел; по умолчанию 50
--from-date, --to-dateВсе типыВключительные границы YYYY-MM-DD
--allow-errorsВсе типыРазрешить частичные данные, несмотря на ошибки загрузчика
--account / -a TEXTТранзакция, открытие, закрытие, баланс, pad, заметка, документНечувствительная к регистру подстрока счета
--currency / -c SYMBOLЦена, товарЧувствительный к регистру точный символ; цена фильтрует базовый товар
--sort newest/oldestТранзакцияПо умолчанию новейшие; применяется перед пределом
--flag CHARACTERТранзакцияФильтрация записей, таких как !, перед пределом
--detailsТранзакцияПоказать синтаксис Beancount, каждую проводку, метаданные и исходные местоположения

Другие типы директив сохраняют хронологический порядок. Таблица транзакций с фильтром по счету помечает столбец суммы как MATCHING POSTING AMOUNTS. Подробности и JSON по-прежнему включают все проводки каждой выбранной транзакции. Подробности отображают загруженные записи, включая выведенные суммы; они не являются сырыми выдержками из исходного кода.

Проверка, форматирование и запрос

bea check проверяет корневой файл и включения. Он завершается с кодом 1 при ошибках в книге и не имеет параметра --allow-errors. Запросы, списки и отчеты также отклоняют ошибки загрузчика, если вы явно не передаете их параметр --allow-errors.

Форматирование принимает файл .bean/.beancount или каталог. Каталог ищется рекурсивно.

Режим форматированияЗапись?Поведение при выходе
bea format PATHДа0 после успеха
bea format PATH --dry-runНет0, даже если файлы изменятся
bea format PATH --checkНет1, если нужно форматирование; 0, когда чисто

Каждый режим сообщает об ошибках синтаксиса по файлу и строке, пропускает эти файлы и завершается с кодом 1. Рекурсивный обычный запуск может отформатировать допустимые файлы. JSON сообщает scanned, formatted, skipped, dry_run и check в error.result при сбое.

bea query "BQL" выполняет язык запросов Beancount. Пропуск BQL открывает интерактивную оболочку; exit или quit закрывает ее. Аргумент запроса обязателен в автоматическом режиме. Таблица BQL по умолчанию имеет по одной строке на проводку. Таблицы запросов сохраняют точность. Пустые результаты печатают (no rows) в stderr; JSON возвращает пустой data.rows и метаданные столбцов в data.columns.

Финансовые отчеты

ОтчетВывод
bea report overviewАктивы, обязательства, доходы, расходы, чистая стоимость и серии интервалов
bea report income-statementДеревья доходов/расходов, чистая прибыль и строки периодов
bea report balance-sheetДеревья активов/обязательств/капитала и производная сверка
bea report trial-balanceБалансы счетов

Все отчеты принимают --conversion / -x, --time / -t, --account / -a и --allow-errors. Все, кроме пробного баланса, также принимают --interval / -i: monthly по умолчанию, или quarterly, yearly, weekly или daily.

Фильтры времени включают год, месяц, дату, квартал, неделю или диапазон, например 2026, 2026-08, 2026-08-31, 2026-Q3, 2026-W32 или "2026-01 - 2026-08". Относительные периоды включают year, quarter, month, week, day и смещения, такие как month-1. Фильтры счетов сохраняют каждую проводку соответствующей транзакции.

Конвертация по умолчанию использует единственную рабочую валюту книги. В противном случае по умолчанию используется units, сохраняя товары раздельно. at_cost использует затраты на приобретение. at_value использует рыночные стоимости с запасом по стоимости.

Явная конвертация валюты требует цен на каждую дату оценки или ранее, включая даты интервалов. Ошибка отсутствия цены называет фактический промежуток, например No EUR → USD price on or before 2026-01-31. Более поздняя котировка не может заполнить более ранний промежуток. Добавьте исторически подходящую цену, используйте --conversion units или выберите --allow-errors для проверки частичных значений.

Частичные отчеты сохраняют исходные валюты и помечают объединенные итоги как недоступные. JSON включает valuation: "partial", missing_prices и missing_price_dates. Затронутые итоги чистой прибыли/чистой стоимости равны null в запрошенной валюте.

Доходы, обязательства и капитал обычно используют отрицательные знаки Beancount. Чистая прибыль — это -(income + expenses), положительная для прибыли. Та же конвенция применяется к строкам периодов отчета о прибылях и убытках. Сверка балансового отчета производится для отчета; он не записывает директив. equity_reconciled указывает, доступна ли полная сверка.

JSON отчета также идентифицирует период, конечную дату, дату на дату, конвертацию, фильтр счетов и статус проверки книги. Проверяйте эти поля перед сравнением итогов.

Необязательная ИИ-помощь

bea ask требует как дополнительного пакета ask, так и учетных данных Beancount.io из bea cloud login или BEA_TOKEN. Установка Homebrew по умолчанию пропускает ИИ-зависимости. Пользователи Homebrew могут выполнить:

bea cloud login
uvx --from 'beancount-io[ask]' bea ask "What did I spend last month?" --print

Для установки uv установите beancount-io[ask] и запустите bea ask напрямую. --print / -p отвечает один раз и выходит. В противном случае терминальная сессия интерактивна, и необязательный вопрос предзаполняет ввод. Неинтерактивное использование требует вопроса. JSON-режим не поддерживается.

Запросы выполняются локально. Вопросы, контекст навыков и результаты инструментов отправляются в облачный сервис Beancount.io AI. Интерактивные записи предварительно просматриваются, подтверждаются, проверяются и записываются атомарно. Они принимают --into. Глобальный --yes не предоставляет разрешение на запись ИИ. Режим одного ответа не применяет предложенные записи.

Ask читает NAME/SKILL.md из .agents/skills/ в рабочем каталоге и из skills/ в каталоге конфигурации пользователя. Определения проекта имеют приоритет по имени. Каждый файл требует поля YAML name и description. Полные инструкции загружаются по требованию.

Облачные бухгалтерские книги

КомандаПараметры и поведение
bea cloud loginИнтерактивный вход через браузер/устройство
bea cloud logoutПытается выполнить удаленный выход и очищает сохраненные учетные данные
bea cloud statusУчетная запись, источник учетных данных и срок действия
bea cloud ledger list--page по умолчанию 1; --limit по умолчанию 50, максимум API 100
bea cloud ledger show OWNER/NAMEПроверить облачную бухгалтерскую книгу
bea cloud ledger create NAME--description / -d, --private / --public; приватная по умолчанию
bea cloud ledger clone OWNER/NAMEКлонировать по SSH; необязательный --dir PATH
bea cloud ledger delete OWNER/NAMEПостоянное удаление; требуется подтверждение или глобальный --yes

Создание также принимает --clone и --dir. Для клонирования требуются Git и SSH. Если клонирование не удается после создания, облачная книга все равно существует. Локальные команды не загружают вашу книгу автоматически. Нет глобального параметра --ledger.

JSON и коды выхода

Глобальный --json помещает успешные результаты в stdout:

{
  "bea": "0.1.0",
  "target": { "file": "/home/alice/my-books/main.bean" },
  "data": [],
  "truncated": false,
  "limit": 50
}

bea — установленная версия; data зависит от команды. Цели идентифицируют файл, каталог, сервер или отсутствие цели. Включенные записи также идентифицируют into. Десятичные суммы и даты используют строки. Ограниченные списки включают limit и truncated.

Сбои записывают {"error":{"category":"validation","message":"…","exit_code":1}} в stderr. Ошибка также может включать details, result, request_id бэкенда и traceback с --debug.

КодКатегорияЗначение
0Успех, включая предварительные просмотры и намеренные пропуски дубликатов
1validationОшибка книги/схемы, сбой проверки форматирования или другая ошибка выполнения
2usageНеверные аргументы, отсутствие цели/ввода или отсутствие необязательных зависимостей
3authОшибка аутентификации или разрешения
4conflictОдновременное редактирование, требуется проверка импорта, существующая цель init или неопределенный результат удаленной записи

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

Подсказки CLI отключаются через --no-input, JSON-режим, не-терминальный stdin или истинное значение CI. Облачное удаление по-прежнему требует явного --yes. Импорты требуют явного решения о дубликате, когда совпадения требуют проверки.

Исключения вывода: Ask отклоняет JSON; облачный вход требует взаимодействия; успешные выход из облака и клонирование не возвращают объект успеха JSON. Справка, версия и автодополнение сохраняют текстовый вывод. upgrade может выводить вывод менеджера пакетов в stderr, включая JSON-режим.

Настройки, обновления и сохраненное состояние

Переменная окруженияНазначение
BEA_FILEКорневая книга по умолчанию после --file
BEA_CONFIG_DIRПереопределить каталог конфигурации пользователя
XDG_CONFIG_HOMEИначе используйте $XDG_CONFIG_HOME/bea, с резервным ~/.config/bea
XDG_CACHE_HOMEБаза каталога кэша; иначе ~/.cache/bea
BEA_TOKENПереопределение облачных учетных данных; имеет приоритет над сохраненными и не сохраняется
BEA_API_URLБаза API; по умолчанию https://api.v3.beancount.io
BEA_DASHBOARD_URLБаза входа через браузер; по умолчанию https://beancount.io
BEA_NO_UPDATE_NOTIFIERОтключить пассивные уведомления об обновлениях при истинном значении
CIОтключить подсказки CLI и пассивные уведомления об обновлениях при истинном значении

Истинные значения: 1, true, yes и on, без учета регистра и окружающих пробелов. Состояние конфигурации включает учетные данные, историю подсказок Ask, пользовательские навыки, запомненные пути импортера и кэши проверок обновлений. Блокировки записи находятся в каталоге кэша locks/, вне вашего каталога книги.

bea upgrade --check сообщает версии и метод установки без обновления. bea upgrade вызывает brew upgrade bea, uv tool upgrade beancount-io или pipx upgrade beancount-io. Редактируемые установки получают руководство по ручному обновлению. Пассивные проверки выполняются не чаще одного раза в день в интерактивных установленных копиях; явный upgrade --check все равно выполняется, когда пассивный уведомитель отключен.

Удалите с помощью соответствующего менеджера: brew uninstall bea, uv tool uninstall beancount-io или pipx uninstall beancount-io. Ваши файлы книги и конфигурация пользователя остаются.

Частые исправления

СимптомСледующий шаг
Книга не найденаВыберите --file PATH, войдите в каталог книги или используйте bea init для новых книг
Глобальный флаг говорит “Нет такого параметра”Переместите его перед командой, как в bea --file main.bean check
Счет неизвестенОткройте его с помощью bea add open --date YYYY-MM-DD --account ACCOUNT
Счет неактивенПрочтите указанные даты открытия/закрытия; исправьте дату транзакции или историю счета
Pad не используетсяЗавершите его более позднюю проверку баланса; используйте add balance --pad-from для атомарной пары
Конвертация валюты неполнаяДобавьте цены, покрывающие даты, указанные в ошибке, или проверьте units
Документ не может быть найденРазрешите его путь рядом с файлом директивы, включая место назначения --into
Книга изменилась во время записиПроверьте новое содержимое, затем повторите попытку с свежего предварительного просмотра
Определение оболочки не удалосьУкажите оболочку, например bea --shell zsh --show-completion

Используйте bea COMMAND --help для проверки вашей установленной версии. Ссылка на репозиторий исходного кода содержит дополнительные примеры и точные определения моделей директив.