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

← Все статьи блога

ИИ написал код за день. Счёт клиенту - в Excel в конце месяца: как собрать маршрут биллинга

Автор: Алексей Доронин

Алексей Доронин: код в проде за день, счета в Excel - маршрут биллинга

Пятница, 18:47. Разработчик закрыл в Jira три задачи по клиенту «ООО Лента» - в Git уже merged. В понедельник менеджер открывает `счета_июль_final2.xlsx`, ищет часы в трекере, копирует реквизиты из прошлого месяца, забывает доп. работу по багфиксу и выставляет сумму на 40 000 руб. меньше. Клиент молчит две недели - не потому что не платит, а потому что счёт так и не ушёл.

Код и релизы с Cursor и ИИ уходят в прод за день, а биллинг остался «как в 2011»: Excel, копипаст и «спроси бухгалтерию в чате». Ниже - как собрать маршрут в n8n (это конструктор автоматизаций, где узлы соединяются стрелками, как блок-схема), чтобы после закрытия задачи в CRM появлялся черновик счёта и акта, менеджер подтверждал одним кликом, а статус оплаты не терялся в переписке.

TL;DR / Быстрый инсайт: Боль не в «ленивом менеджере», а в разрыве между трекером и деньгами. Один триггер «работа закрыта» → данные из CRM → PDF → approve → отправка → лог оплаты. Два workflow: A генерирует документ, B напоминает и сверяет оплату. Idempotency key не даст выставить два счёта за один этап.

В Wordstat узкий запрос «автоматизация выставления счетов» даёт 30 показов в месяц (июль 2026), а «автоматизация документооборота» - 2000. Люди ищут ЭДО, а не связку «закрытая задача → счёт»; на GitHub и n8n.io десятки пайплайнов под CRM-триггер.

Найдите щель: код в проде, счета в Excel в последнюю пятницу

ii-napisal-kod-schet-v-excel-inline-01 ИИ написал код за день. Счёт клиенту - в Excel в конце месяца: как собрать маршрут биллинга

Типичная ошибка IT-агентства и фриланс-команды: «истина» о выполненной работе живёт в Jira, YouTrack или Bitrix24, а «истина» о деньгах - в таблице, которую открывают раз в месяц. На практике часы в трекере не сходятся с суммой в Excel, этапы забывают, клиент ждёт документы неделю.

Сделайте аудит за 30 минут. Запишите в одну таблицу: где фиксируется «работа сдана» (задача Done, merge в main, стадия CRM), где лежат реквизиты клиента (ИНН, договор, ставка), кто собирает счёт и акт, сколько минут уходит на один пакет. Русскоязычный кейс Bitrix24 + n8n показывает ту же боль: часы тянут из задач, а не из ручной сводки.

Рекомендуем: не начинайте с выбора «ещё одного биллинг-SaaS». Сначала зафиксируйте, где рвётся цепочка «закрыли работу → клиент получил счёт». Лучше пилот на одном клиенте и одном типе этапа, например «спринт закрыт». Не стоит масштабировать, пока не убедитесь, что один этап даёт черновик в день закрытия.

Зафиксируйте один триггер «работа закрыта» - не созвон и не календарь

ii-napisal-kod-schet-v-excel-inline-02 ИИ написал код за день. Счёт клиенту - в Excel в конце месяца: как собрать маршрут биллинга

Биллинг на «помню на созвоне» или «в конце месяца сведём» всегда проигрывает скорости разработки. Нужен один объект, который запускает маршрут автоматически.

Триггер Когда брать Риск
Задача Done в трекере Оплата по часам или по закрытым тикетам Нужен API (REST через HTTP Request в n8n, если нет готовой ноды)
Стадия CRM «Работы приняты» Фикс за этап, аванс по вехе Менеджер должен переводить стадию дисциплинированно
Merge в main (webhook Git) Релиз = закрытие спринта Не каждый merge = платный этап - фильтруйте по меткам

Канонический шаблон на n8n.io (#14289): HubSpot Closed Won → сбор полей → PDF → лог → email → отложенная проверка оплаты. Для Bitrix24 есть community-нода с Deal/Task/Product Row - альтернатива сырому REST.

Советуем: выберите один триггер на пилот и запишите его в README процесса. Избегайте смешения «раз в месяц Excel» и webhook - иначе дубли и пропуски неизбежны. Важно: проверьте, что API трекера отдаёт часы и ставку без ручного экспорта.

Соберите шаблон счёта и акта из CRM - без копипаста из прошлого месяца

ii-napisal-kod-schet-v-excel-inline-03 ИИ написал код за день. Счёт клиенту - в Excel в конце месяца: как собрать маршрут биллинга

Счёт на оплату - это не первичный учётный документ; для услуг обязателен акт выполненных работ. Счёт-фактура - отдельная ветка, если вы на НДС. Типичная ошибка: обещать клиенту «один PDF закроет всё» и получить откат от бухгалтерии.

Минимальные поля из карточки клиента в CRM (не из Excel): ИНН, КПП, юр. адрес, номер договора, ставка, перечень работ или часы за этап, сумма, срок оплаты. Шаблон - HTML с плейсхолдерами или Google Docs → PDF через Gotenberg, PDFShift или аналог. Данные подставляет n8n Code node: totals, номер счёта, дата.

Модель данных (как в гайдах Samioda 2026): таблицы customers, invoices, events. Поля clientId, milestoneId, hours, rate, amount, status, sentAt, paidAt.

Делайте в маршруте два шага документов - счёт на оплату (опционально) и акт (обязателен для услуг). Не делайте копипаст реквизитов из файла прошлого месяца - только API CRM. Проверьте шаблон на тестовой карточке клиента до боевого триггера.

Соберите workflow A в n8n: задача Done → черновик → approve → отправка

Схема workflow A:

Триггер (Done / CRM / webhook) → Get task/deal → Code (сумма + номер) → Check idempotency → Generate PDF → Save (Drive/Sheets) → Notify manager → Gmail send

Idempotency key - это «отпечаток» этапа, чтобы не создать второй счёт за ту же работу. Формула: clientId + projectId + milestoneId в таблице invoices. Перед генерацией - узел IF: если запись есть, stop. Репозиторий n8n-pennylane-auto-invoicing на GitHub делает то же для webhook CRM.

На нестандартных сделках не обещайте «100% автоматизацию». LLM не выставляет счёт без API учётки - только текст письма; цифры и реквизиты из CRM. Slack или Telegram «approve» перед Send; без галочки PDF клиенту не уходит.

  1. Триггер: webhook при смене статуса задачи на Done или стадии CRM «Работы приняты».
  2. Get data: HTTP Request или нативная нода CRM - часы, ставка, реквизиты, email клиента.
  3. Code node: посчитать amount, присвоить invoice number, собрать JSON для шаблона.
  4. Idempotency: запрос в Sheets/Postgres - есть ли ключ этапа; если да - выход без PDF.
  5. Generate PDF: HTTP к сервису рендера или HTML → PDF внутри workflow.
  6. Save + notify: файл в Drive, менеджеру сообщение с кнопкой approve.
  7. Send: после approve - Gmail/SMTP клиенту, статус в CRM «отправлен».

Рекомендуем логировать ошибки workflow A в Slack/Gotify отдельным error workflow - иначе «тихий» сбой PDF снова вернёт вас к Excel в пятницу. Убедитесь, что approve стоит перед Send: без галочки клиент не получит пакет.

Настройте workflow B: напоминание и статус оплаты - один лог, не чат с бухгалтерией

Генерация счёта и сверка оплаты - разные workflow. Если PDF упал, напоминания не должны ломаться и наоборот. Шаблон #14289: Wait 7 дней → проверка стадии → reminder → эскалация. Репозиторий n8n-invoice-payment-followup-public: daily reminders, Stripe webhook останавливает цепочку при оплате.

Workflow B по расписанию: список unpaid → match payment (webhook банка, ручная отметка, Stripe) → update CRM → stop reminders. В CRM один статус: отправлен / просрочен / оплачен.

Лучше на старте B2B ограничиться email с PDF; ЭДО подключайте, когда объём вырос. Не стоит блокировать пилот ожиданием СЭД - результат пилота измеряйте днями до исходящего счёта, а не количеством интеграций.

Как понять, что маршрут работает

Критерии до FAQ - проверяемые, не «вроде автоматизировали». После закрытия задачи в трекере в CRM появляется черновик счёта с полями из карточки клиента. Менеджер подтверждает одним кликом, клиент получает PDF, в CRM виден статус «отправлен / оплачен». Повторный триггер за тот же этап не создаёт второй счёт. Итог: биллинг в день закрытия этапа, а не в последнюю пятницу месяца.

Чек-лист пилота на 14 дней: один клиент, один тип этапа, один этап → один черновик → один PDF → запись в лог.

Такие контуры мы собираем на стыке CRM, n8n и шаблонов документов - без ERP на полгода. Схема пилота одного процесса - на calmopsai.com. Смежный разбор, где счёт застревает в черновиках почты, - в материале про счёт ушёл, оплаты нет.

Что дальше

  1. Проведите аудит щели: трекер vs Excel vs CRM за 30 минут.
  2. Выберите один триггер и опишите модель customers/invoices/events.
  3. Соберите workflow A на тестовом клиенте с idempotency и approve.
  4. Добавьте workflow B для напоминаний и статуса оплаты.
  5. Через 14 дней сверьте success criteria и только потом масштабируйте ставки и НДС.

Проверка материала: Елена Ковалева, главный эксперт по SEO/GEO.
Источники цифр: Wordstat, июль 2026 (РФ): «автоматизация выставления счетов» - 30 показов/мес; «счет на оплату автоматически» - 454; «автоматизация документооборота» - 2000.

Частые вопросы

Нужен ли ЭДО на старте или хватит почты?

Для многих B2B-услуг на старте достаточно email с PDF счёта и акта. ЭДО добавляйте, когда контрагенты требуют юридически значимый обмен или вырос объём - не блокируйте пилот ожиданием СЭД.

Как не выставить два счёта за один этап?

Храните idempotency key clientId + projectId + milestoneId в таблице invoices. Перед Create PDF - узел IF: запись есть → stop. Повторный webhook за тот же этап не создаст дубль.

Чем маршрут отличается от «раз в месяц сводим Excel»?

Excel в конце месяца всегда отстаёт от трекера: забытые часы, дубли, задержка с клиентом. Маршрут срабатывает в день закрытия этапа, данные тянутся из CRM API, статус оплаты в одном логе.

Можно ли без n8n, только CRM?

Если в вашей CRM есть встроенная генерация счетов и webhook - используйте её. n8n нужен, когда связка «трекер + PDF + approve + напоминание» размазана по разным системам.

Кто должен нажимать approve перед отправкой?

Менеджер проекта или финансовый контролёр - один ответственный на пилот. Цель - отсечь нестандартные суммы и опечатки, не вернуть ручную сборку в Excel.

Что если бухгалтерия требует 1С?

Маршрут n8n закрывает «клиент получил пакет и оплатил». Выгрузку в 1С добавьте отдельным шагом после стабильного пилота - не смешивайте в первый день.

Telegram