Домашние финансы — разработчикам: простой CSV для ваших приложений

Разработчикам

«Домашние финансы» — локальная программа без облаков, поэтому и интеграция у неё локальная: ваше приложение пишет файл, человек открывает его кнопкой «Загрузить…» — записи встают в базу через тот же мастер, что и банковские выписки: с предпросмотром, подбором статей и защитой от дублей.

← на страницу программы

Простой CSV — открытый формат

Текстовый файл, кодировка UTF-8 (метка BOM не важна; windows-1251 тоже понимается), разделитель — точка с запятой. Первая строка — заголовок; в нём обязаны быть колонки Дата и Сумма — по ним программа узнаёт формат, порядок любой. формат. Порядок остальных колонок любой, незнакомые колонки пропускаются.

КолонкаОбязательнаЧто в ней
Датададень операции: 21.08.2026 или 2026-08-21
Суммадасо знаком: минус — расход, плюс — доход; дробная часть через запятую или точку: -450, 85000,00, -120.50
Статьянетимя статьи словами: «Продукты», «Зарплата». Если такая статья в базе есть — запись встанет в неё; если нет — программа предложит создать её в отдельной ветке «Из выписок». Пусто — «Прочие расходы» или «Прочие поступления»
Описаниенетчто это было — попадёт в примечание записи. Колонка может называться и «Комментарий» или «Примечание»; «Статья» — ещё и «Категория», «Счёт» — «Счет», «Где» — «Магазин» или «Место», «Участник» — «Кто»
Времянетчч:мм — различает одинаковые покупки одного дня (см. про дубли ниже)
Счётнетметка счёта: «Карта», «Наличные». Если в файле несколько меток, программа предложит выбрать, какую загружать; связка «метка → счёт программы» запоминается
Переводнетлюбое непустое значение помечает строку как перевод между своими счетами — программа не даст посчитать его расходом дважды
Типнетнаправление словами, как в самодельных таблицах: Расход — сумма в файле положительная, это трата (минус в файле — возврат, то есть приход); Доход — как есть; Перевод — перевод между своими счетами; Долг и Возврат долга — расход и доход с пометкой в примечании (на счёт долга их переводят уже в программе). Без этой колонки направление задаёт знак суммы
Должникнеткому дали или кто вернул — попадёт в примечание записи вместе с типом
Гденетмагазин или место словами: «Пятёрочка». Программа найдёт его в своём справочнике — даже при разночтениях написания — или заведёт новое, и поставит записи в поле «Где»
Товарнетназвание товара — для передачи состава чека (см. ниже). Заполнен в строке самой записи — запись получит состав из одной позиции
Количествонетсколько куплено: 2 или 0,416. Имеет смысл вместе с «Товар»

Состав чека — для личной инфляции

Если ваша программа знает состав покупки, передайте его строками-позициями сразу после строки записи: у позиции пустая «Дата», в «Сумме» — сумма позиции (знак не важен), в «Товаре» — название, в «Количестве» — сколько куплено. Сумма позиций обязана сходиться с суммой записи — иначе состав будет отброшен с замечанием, а запись загрузится без него.

Дата;Сумма;Статья;Описание;Товар;Количество
21.08.2026;-345;Продукты;Лента;;
;160;;;Молоко 3,2%;2
;185;;;Хлеб дарницкий;1

Такая запись ляжет составным чеком, а названия и цены товаров попадут в отчёт «Личная инфляция» — он сравнивает цены реальной корзины человека между периодами.

Второй путь передать состав — чеки в формате ФНС (JSON): файлы из «Проверки чеков», личного кабинета и других программ-хранилок чеков программа принимает как есть — Реестр → «Загрузить…», можно пачкой. Чек найдётся в файле даже внутри обёрток вашего формата — по полям items и totalSum.

Пример

Скачайте и попробуйте: заполненный пример — откройте его в программе кнопкой «Загрузить…»; пустая заготовка — только строка заголовка, наполняйте своим.

Дата;Сумма;Статья;Описание;Время;Счёт;Перевод;Где
21.08.2026;-450;Продукты;у дома;18:32;Карта;;Пятёрочка
21.08.2026;-120,50;Кафе и рестораны;кофе с собой;;Карта;;
22.08.2026;85000;Зарплата;аванс;;Карта;;
22.08.2026;-5000;;на карту жены;;Карта;да;

Что произойдёт при загрузке

Человек открывает файл в программе: Реестр → кнопка «Загрузить…». Дальше работает мастер:

— статьи расставляются сами: сначала по памяти прошлых загрузок, затем по колонке «Статья»; новые имена собираются в группы, и человек одним экраном решает — принять, переименовать, выбрать свою статью или не грузить группу вовсе;

дубли не плодятся: у каждой строки считается отпечаток из даты, времени, суммы, описания и метки счёта. Повторная загрузка того же файла — или пересекающегося периода — узнаёт уже загруженное и пропускает. Поэтому ваше приложение может смело выгружать «все записи с начала месяца» каждый раз: новое добавится, старое не задвоится. Если у вас две настоящие одинаковые операции в одну минуту — они различатся порядком строк в файле, храните его постоянным;

— решения человека запоминаются: статьи, счёт для метки, «эту группу не грузить» — вторая загрузка проходит в два нажатия.

Правила хорошего файла

Пишите строки в постоянном порядке (например, по дате и времени создания). Не меняйте задним числом уже выгруженные строки — изменённая строка выглядит для программы новой операцией. Суммы — в валюте счёта, в рублях с копейками. Формат менять будем только добавлением необязательных колонок — файлы, написанные по этой странице, продолжат читаться.

Нужно больше?

У программы есть и полный формат обмена — пакет .дфп: записи со справочниками, вложениями и отчётом о конфликтах при приёме. Если вы делаете приложение и простого CSV мало — напишите на info@lab-1m.ru, расскажем и поможем. Файлы выписок банков, которых программа пока не знает, тоже присылайте — поддержка добавляется по живым образцам.