# Сверка оплат в таблице без банковской интеграции: своя схема в 2026 году

> Ниже учебный сценарий: таблица сопоставляет заказы с платежами и показывает неоплаченные счета по каждой смене, а промпты помогают собрать её без написания кода.

Источник: https://vibeceh.ru/cases/sverka-oplat-v-tablice-kak-nahodit-neoplachennye-scheta-bez-bankovskoj-integracii
Автор: Сергей Мазур · опубликовано 2026-08-13

В конце смены я вижу три разных места: кассу, банковское приложение и чеки. Сверка оплат нужна мне, чтобы быстро понять, какой платёж уже нашёлся, а где осталось настоящее расхождение. Дальше я покажу ручную схему сверки оплат без подключения банка.

Делюсь этим с удовольствием. Ниже пошаговая инструкция: пять шагов, к каждому готовый промпт. Копируй их в помощника, описывай свою задачу словами и собирай таблицу для магазина, салона, автосервиса, клиники или небольшой студии. Если хочешь сначала посмотреть формат занятий, загляни в практикум по вайб-кодингу для предпринимателей.

А началась всё с вечерней сверки оплат.

Продажи у меня идут весь день небольшими суммами. Кто-то платит наличными, кто-то картой, кто-то переводом. К концу смены передо мной касса, банковское приложение и чеки. Мы с продавцом смотрим на эти три места и пытаемся понять, почему итог не совпал.

Сначала я думала, что проблема в невнимательности. Потом заметила: в сверке оплат расхождение почти никогда не лежит на поверхности. В одном месте сумма есть, но дата зачисления другая. В другом платёж уже найден, а комиссия банка визуально похожа на недостачу. Возврат тоже легко принять за ошибку, если смотреть только на общий итог.

Первый вариант такой сверки я пыталась держать в голове и в заметках. Он не сработал: таблице нужно правило, которое учитывает сумму платежа, канал поступления и дату.

Когда я описала помощнику свою смену и реальные платежи, стало понятнее, из чего складывается сверка оплат. Нужны два списка, ключ сопоставления и отдельная строка для каждого расхождения. Всё остальное можно добавлять потом.

## Как я нахожу неоплаченные счета без банковской интеграции?

Я загружаю список заказов или продаж на один лист, а выписку банка и другие поступления - на второй. Таблица ищет номер заказа, проверяет сумму и дату, учитывает канал оплаты и использует единый список статусов: Оплачен, Частично, Не оплачен, Переплата, Дубль и Нужно разобрать вручную. Я не подключаю банк: сама вставляю выписку отдельным списком.

В конце смены я сначала проверяю конкретные строки сверки оплат, а затем смотрю на общий остаток. У каждой продажи есть номер, сумма, дата и способ оплаты. У платежа есть свой идентификатор, дата зачисления, сумма и канал.

Так я вижу «неоплаченные счета» и причину, по которой строка туда попала. Платёж мог прийти переводом, хотя я искала его среди операций по карте. Деньги могли зачислиться позднее. Комиссия эквайринга могла уменьшить поступление, но это не означает, что в кассе недостача.

На листе с результатом достаточно видеть:

- номер заказа;
- сумму продажи;
- дату продажи;
- найденную сумму;
- дату зачисления;
- канал поступления;
- возврат;
- комиссию;
- статус;
- расхождение.

Выписку можно вставить обычным копированием. Для файла CSV или Excel подходит импорт через меню таблицы. Google прямо допускает копирование небольшого объёма данных и рекомендует импорт для большого файла: [инструкция Google Sheets](https://support.google.com/docs/answer/12236443?hl=ru).

Основная схема сверки оплат использует ручной импорт выписки: я сама загружаю нужный список платежей и вижу, когда он обновлён. Автозапуск и уведомления можно добавить позже, но для этой инструкции они не нужны.

## Почему своя таблица удобнее готового сервиса?

Своя таблица может подойти, если правило сверки связано с конкретной рутиной магазина. В неё можно добавить возвраты, комиссию эквайринга, переводы или новый канал поступления без перестройки всего учёта. Скорость запуска готового сервиса зависит от продукта и настройки, а его правила могут отличаться от того, как проходит твоя смена.

Для меня ценность сверки оплат не в том, что таблица умеет больше готовой системы. Наоборот, она умеет меньше, но именно нужное. В магазине важны смена, канал оплаты и расхождение. Сложный отчёт, которым никто не пользуется, только прячет нужную строку.

В готовом сервисе правила уже заданы. Своя таблица позволяет менять их под рабочую рутину:

- добавить отдельный канал для переводов;
- вынести возвраты в свою колонку;
- считать комиссию отдельным расходом;
- добавить проверку даты зачисления;
- разделить полную и частичную оплату;
- оставить ручную очередь для неоднозначных платежей.

Это не значит, что собственная сборка всегда лучше. Если нужны готовая банковская интеграция, поддержка, права доступа для большой команды и сложное распределение платежей, готовый сервис может оказаться разумнее.

Но для повторяющейся сверки небольшого магазина мне важнее другое. Я понимаю, какие данные лежат в таблице и почему конкретная строка стала красной. Не приходится подстраивать смену под чужие названия полей.

Если хочешь разобрать такую схему на своей задаче, пройди практикум по вайб-кодингу за 2 000 ₽.

## Из чего состоит рабочая таблица?

Я держу три листа: `Заказы`, `Платежи` и `Сверка`. В `Заказы` храню список продаж, в `Платежи` вставляю или импортирую выписку, а `Сверка` соединяет строки по номеру заказа, сумме, дате и каналу. В ручной схеме список платежей загружается отдельным импортом.

![Кот у трёх карточек показывает, как разделить заказы, платежи и сверку.](https://s3.regru.cloud/crossmark/statejnik/images/guides/sverka-oplat-v-tablice-kak-nahodit-neoplachennye-scheta-bez-bankovskoj-integracii/kadr-1.webp)

Я держу исходные списки отдельно. Это важное правило. Если формулы находятся прямо среди строк выписки, новая вставка может стереть расчёты. На листе `Сверка` формулы остаются в стороне от сырого импорта.

Минимальная структура выглядит так:

```text
Заказы:
номер заказа | дата | сумма продажи | канал продажи

Платежи:
ID платежа | номер заказа | дата зачисления | сумма | канал | комиссия | возврат

Сверка:
номер заказа | сумма продажи | найдено | оплачено | остаток | статус | расхождение
```

Ключом обычно становится номер заказа. Он должен быть устойчивым и не зависеть от номера строки. Если в назначении платежа номер записан в другом виде, сначала понадобится отдельное правило нормализации. Без такого правила автоматическое совпадение нельзя считать надёжным.

Для простой проверки наличия подойдёт `COUNTIF`. Google описывает эту функцию как подсчёт значений по одному условию: [документация COUNTIF](https://support.google.com/docs/answer/3093480?hl=en-GB).

```text
=IF(COUNTIF(Платежи!$B:$B; A2)>0; "Оплачен"; "Не найден")
```

Если нужна именно позиция платежа в списке, используется `MATCH` с точным режимом:

```text
=IF(ISNUMBER(MATCH(A2; Платежи!$B:$B; 0)); "Оплачен"; "Не найден")
```

Аргумент `0` задаёт точное совпадение. Это важно для похожих номеров, которые отличаются одной цифрой. Формула `MATCH` возвращает относительную позицию найденного значения: [документация MATCH](https://support.google.com/docs/answer/3093378?hl=en).

Сумму и дату можно подтянуть через `VLOOKUP`. При точном поиске используется `FALSE`:

```text
=IFERROR(VLOOKUP(A2; Платежи!$B:$D; 3; FALSE); "")
```

Но у этой формулы есть граница. Если один заказ оплачен несколькими платежами, `VLOOKUP` возьмёт первое совпадение. Для частичной оплаты и нескольких переводов нужна сумма всех найденных строк через `SUMIF` или `SUMIFS`. Документация Google отдельно указывает на поведение `VLOOKUP` при отсутствии точного совпадения: [документация VLOOKUP](https://support.google.com/docs/answer/3093318?hl=en).

Статус лучше считать не одним флагом. Я использую шесть состояний:

- `Оплачен`;
- `Частично`;
- `Не оплачен`;
- `Переплата`;
- `Дубль`;
- `Нужно разобрать вручную`.

Рядом остаётся сумма остатка. Тогда сумма неоплаченных счетов считается как сумма именно по строкам с положительным остатком, а не как количество красных ячеек.

## Что поставить перед сборкой таблицы?

Если хочешь собирать формулы и скрипты с помощником, можно использовать Visual Studio Code и Claude Code; для самой таблицы они не обязательны. Claude Code работает в терминале или поддерживаемой IDE, поэтому перед установкой проверь выбранную интеграцию в своей среде. Мне нужна подписка Claude Pro за $20 в месяц. Перед установкой проверь, доступен ли этот вариант у тебя: доступность Claude Code зависит от выбранного плана и региона.

Сам код я не пишу и не копирую. В редакторе вижу папку и файлы, а задачу описываю обычными словами. ИИ-агент создаёт формулы, скрипт и структуру таблицы, после чего объясняет, что сделал. Перед работой передай ему Контекст: правила сверки, поля заказов и ограничения по данным.

Нужны такие вещи:

1. **Установи Visual Studio Code.** Скачай редактор с официальной страницы и запусти установщик.
2. **Подключи Claude Code.** Открой редактор, установи помощника и войди в аккаунт Claude.
3. **Подготовь таблицу.** Создай [Google Таблицы](/concepts/google-tablicy) с листами `Заказы`, `Платежи` и `Сверка`. Для примера похожей рабочей таблицы можно посмотреть [отчёт о доходах и расходах](/guides/dohody-i-rashody-v-google-tablice-otchyot-bez-vecherney-sverki).
4. **Сделай обезличенный пример.** Для начала используй номера вроде `Заказ-1042`, даты и суммы без ФИО, телефонов и настоящей выписки.
5. **Подготовь импорт.** Платежи можно вставлять строками или загружать через `Файл → Импорт`.

Установка инструментов и сборка таблицы - разные вещи. Время установки Claude Code и первой настройки зависит от операционной системы, способа входа и выбранной интеграции; конкретный срок заранее не обещаю. Сборка всей таблицы займёт дольше и зависит от данных и правил. Полный срок сборки заранее не называю: он зависит от формата заказов, выписки и количества правил.

Подписка Claude Pro стоит $20 в месяц официально. Официальный эквивалент в рублях для России не найден. Цена относится к помощнику, которым собирается автоматизация, и становится постоянной статьёй расходов схемы.

## Как собрать сверку оплат по шагам?

Сначала опиши помощнику устройство магазина и попроси разобрать задачу без кода. Затем создай листы `Заказы`, `Платежи` и `Сверка`, задай заголовки, добавь точное сопоставление номеров, подтяни суммы и выдели расхождения. После каждого шага проверяй несколько строк глазами, а не принимай готовый результат на веру.

![Собака с поднятой лапой смотрит на три карточки с последовательностью сборки таблицы.](https://s3.regru.cloud/crossmark/statejnik/images/guides/sverka-oplat-v-tablice-kak-nahodit-neoplachennye-scheta-bez-bankovskoj-integracii/kadr-2.webp)

Создай папку проекта, открой её в редакторе и попроси помощника сначала задать вопросы, а не писать программу.

   

Помощник должен вернуть список полей и порядок работы. Если он сразу предлагает сложную банковскую интеграцию, останови его и напомни, что платежи будут вставляться или импортироваться отдельным списком.

Попроси помощника подготовить структуру с тестовыми обезличенными строками.

   

На выходе должны быть понятные названия колонок и отдельное место для сырого платежного списка. Если формулы появились на листе `Платежи`, попроси перенести их в `Сверка`.

Возьми небольшой обезличенный CSV или несколько строк из выписки и вставь их на лист `Платежи`.

   

Правильный результат виден по журналу. В нём есть дата загрузки, число строк и общая сумма. Повторная вставка одного и того же файла не должна удваивать платежи.

Сначала попроси помощника найти номер, потом подтянуть сумму. Не начинай с поиска по одной сумме.

   

После этого помощник должен создать отметки `Найден`, `Не найден` и `Дубль`. Номер с одной ошибочной цифрой не должен считаться найденным.

Для подтягивания суммы отправь второй запрос:

   

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

Сделай результат заметным без просмотра каждой формулы.

   

Google Sheets поддерживает пользовательские формулы для изменения цвета ячеек и строк по условию: [справка об условном форматировании](https://support.google.com/docs/answer/78413?hl=en-GB). В самой таблице после сборки должно быть видно, какая смена и какой канал дали расхождение.

Не проверяй только красные строки. Посмотри и на платежи, которые не связались ни с одним заказом. Такой платёж может означать ошибку в номере, возврат или продажу, которой нет в списке.

[Вайб-кодинг](/concepts/vajb-koding) здесь означает не обучение программированию: я описываю помощнику, как проходит моя сверка, а он помогает собрать таблицу и формулы по этим правилам. Важен порядок: сначала описать работу, потом проверять каждый результат на знакомых строках.

Я не стала просить помощника собрать всю сверку оплат одним сообщением. Так проще понять, на каком шаге появилась ошибка. Если первая версия таблицы не учитывает возврат или комиссию, исправляю именно это правило, а не переделываю всю сборку.

## Что появится в папке, когда всё заработает?

В проекте можно организовать файл или ссылку на рабочую таблицу, скрипт для повторяющихся действий, журнал запусков и резервную копию. Таблица нужна для работы, скрипт - для автоматизации, журнал - для контроля, резервная копия - для восстановления. В каждую строку кода вникать не нужно, но место хранения токенов и лимиты запусков знать необходимо.

После сборки я смотрю не на количество файлов, а на их роль:

- `Заказы` - список продаж или выставленных счетов;
- `Платежи` - импортированная выписка без формул;
- `Сверка` - расчёт статусов, остатков и расхождений;
- `Журнал` - история загрузок, ошибок и последнего успешного запуска;
- скрипт Apps Script - автоматический запуск проверки;
- резервная копия - сохранённая рабочая версия таблицы.

Автоматический запуск можно поставить по расписанию. Apps Script поддерживает time-driven triggers, в том числе повторный запуск через заданный интервал, но фактическое время может немного сдвигаться: [документация Google Apps Script](https://developers.google.com/apps-script/guides/triggers/installable).

Лимиты Apps Script зависят от типа аккаунта и сервиса и могут меняться. Перед настройкой проверь актуальные ограничения для своего сценария в разделе [квот Apps Script](https://developers.google.com/apps-script/guides/services/quotas?authuser=01&hl=en), включая время выполнения, число триггеров и суточное время запусков.

Токены и ключи нельзя прятать в открытой таблице или отправлять в общий чат. Если помощник добавил их в файл настроек, я проверяю права доступа и место хранения. Рабочая таблица тоже не должна открываться по ссылке «доступно всем, у кого есть ссылка».

## Что делать, если сверка показывает ошибку?

Сначала зафиксируй симптом, потом отправь помощнику короткую фразу с названием листа, примером строки и ожидаемым результатом. Не проси «починить всё». Проверь отдельно частичную оплату, дубль, дату, квоту, пропавшую формулу, OAuth и доставку уведомления. Финансовый статус подтверждай строкой платежа, а не сообщением в мессенджере.

![Хомяк внизу схемы тревожно реагирует на три типичные ошибки в платежах.](https://s3.regru.cloud/crossmark/statejnik/images/guides/sverka-oplat-v-tablice-kak-nahodit-neoplachennye-scheta-bez-bankovskoj-integracii/kadr-3.webp)

**Платёж подходит к нескольким счетам.** Один перевод может закрывать несколько счетов, особенно если номер не указан в назначении. Не выбирай один счёт автоматически.

**Частичная оплата стала полной неоплатой.** Одного поля «да или нет» мало. Нужны оплаченная сумма, остаток и процент оплаты.

**Повторная загрузка создала дубль.** Проверяй уникальность по `payment_id`, `transaction_id` или `event_id`. Дата, сумма и имя плательщика для этого не подходят.

**Дата попала в соседний день.** Платёж около полуночи может перейти на другую дату из-за часового пояса или формата даты.

**Автоматический запуск получил `429`.** Ручной запуск проходит, а запуск по расписанию останавливается с ошибкой `429: Too many requests`.

Google рекомендует уменьшать число обращений и применять exponential backoff при ошибке `429`: [лимиты Sheets API](https://developers.google.com/workspace/sheets/api/limits).

**Формула пропала после импорта.** Не размещай вычисляемые поля в сыром листе, куда добавляются новые строки. Перенеси их в `Сверка` или используй отдельную формулу для всего диапазона.

**OAuth перестал работать.** Таблица и триггер могут остаться на месте, а загрузка платежей прекратиться. Пустой результат нельзя принимать за ноль поступлений.

**Уведомление не дошло.** Сообщение в Telegram не подтверждает оплату. Если сообщение отправлено, это ещё не значит, что запись попала в таблицу или клиент его увидел.

Проверь актуальное поведение очереди обновлений и параметры webhook в [документации Telegram Bot API](https://core.telegram.org/bots/api), а сведения об ошибке доставки и очереди смотри через `getWebhookInfo`.

## Сколько стоит своя сверка и готовый сервис?

За саму таблицу я отдельно не плачу. Для описанного варианта сборки мне нужна подписка Claude Pro за $20 в месяц. Цены СберБизнеса, Контура и подрядчиков проверяй на страницах тарифов перед сравнением. Своя схема требует проверки и ручной работы с неоднозначными платежами.

| Вариант | Цена | Что получаешь |
|---|---:|---|
| Своя таблица | Claude Pro $20 в месяц | Правило и структура под свою смену |
| СберБизнес | цена указана на странице сервиса | Выставление счетов, сверка оплат и контроль дебиторской задолженности |
| Контур «Взаиморасчёты» | Цена на странице сервиса на момент проверки | Автоматическое сопоставление, расхождения и история сверок |
| Подрядчик Freerunce | цена указана на странице услуги | Google-таблица с формулами и скриптами |
| Подрядчик FL.ru | Цена на странице услуги на момент проверки | До пяти листов, формулы, скрипты и условное форматирование |

Стоимость готовых сервисов и услуг подрядчиков меняется, поэтому перед сравнением проверь актуальные условия на официальных страницах. Цена Контура: [тариф «Взаиморасчёты»](https://kontur.ru/akt-sverki/price). Примеры услуг подрядчиков: [Freerunce](https://freerunce.ru/catalog/razrabotka-i-it/3889098/razrabotka-i-vnedrenie-gugl-tablitsy/) и [FL.ru](https://www.fl.ru/uslugi-freelancera/4728/razrabotka-tablicy-google-sheets-gugl-tablicy.html).

Смотри не только на цену: готовый сервис может сократить настройку, а своя таблица оставляет проверку на тебе. Подрядчик отдаёт готовую работу, но изменения снова зависят от него. Своя таблица требует, чтобы я сама проверяла результат и понимала границы.

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

## Что сделать сегодня, если ты не про технологии?

Я бы начала с обезличенных данных и двух списков: заказов и платежей. Поставь Visual Studio Code и Claude Code, опиши помощнику свою рутину обычными словами, а результат проверь на нескольких строках. После проверки закрой доступ к таблице по ссылке и оставь права только нужным аккаунтам.

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

1. Возьми несколько тестовых строк с номерами вроде `Заказ-1042`, датами и суммами.
2. Отдельно подготовь список заказов и список платежей.
3. Удали ФИО, телефоны, email, полные реквизиты и содержимое платёжных документов.
4. Поставь инструменты и создай папку проекта.
5. Отправь помощнику первый промпт с описанием смены.
6. Проверь полную, частичную оплату, дубль и платёж без номера.
7. Закрой доступ к таблице и проверь, где хранятся резервная копия и журнал.

Персональные данные не стоит собирать в таблицу «на всякий случай». Закон требует, чтобы данные не были избыточными для заявленной цели: [статья 5 закона № 152-ФЗ](https://www.consultant.ru/document/cons_doc_LAW_61801/96fbc469f91f57235cc842a85e0516a99f23dc85/). Доступ тоже нужно ограничить: [статья 19 закона № 152-ФЗ](https://www.consultant.ru/document/cons_doc_LAW_61801/ca9e5658710519f09ab2fdb8196fcb3eb024a051/).

Такой подход можно проверить на учебном или обезличенном примере. Вайб-кодинг здесь означает сборку таблицы по описанию задачи и последующую проверку результата.

## Вопросы и ответы

Список неоплаченных счетов находится на листе `Сверка`, где каждая строка получает статус, сумму остатка и причину расхождения. Номер можно проверить точным совпадением, общую сумму - сложить по положительным остаткам, а частичную оплату - отделить от полной неоплаты. Платёж во вложении сначала загружается на лист `Платежи`, после чего проверяется по журналу импорта.

Загрузи заказы и платежи в разные листы. На листе `Сверка` проверь номер заказа через точное совпадение, подтяни сумму всех платежей и рассчитай остаток в сверке оплат. Статус рассчитывай по оплаченной сумме, возвратам и остатку; не используй только факт ненулевой найденной суммы. Если платёж не содержит номера или подходит к нескольким заказам, оставь ручную проверку.

Сначала сопоставь номер заказа с номером в платежах. Затем проверь дату зачисления, канал поступления и сумму. Фильтр покажет строки, которые по текущим данным не имеют подтверждённого полного платежа, включая счета неоплаченные покупателями. Сумма положительных остатков даст общий размер неоплаты и поможет собрать реестр неоплаченных счетов. По одной сумме искать рискованно: одинаковые суммы могут относиться к разным заказам.

Открой лист `Сверка` и включи фильтр по колонке `Статус`. Выбери `Не оплачен`, `Частично` и `Нужно разобрать вручную`, если нужен полный список проблемных строк. В соседней колонке останется сумма остатка, а в колонке `Расхождение` - причина, по которой результат отличается от продажи.

Сделай отдельный фильтр или представление на листе `Сверка`, чтобы получить реестр неоплаченных счетов. В нём будут строки, которые требуют проверки по текущим данным, включая счета неоплаченные покупателями. В него включи номер заказа, дату, сумму продажи, найденную сумму, остаток, канал оплаты и статус. Не переноси список в публичный файл: в нём могут оказаться персональные данные клиентов.

Открой лист `Сверка`: он соединяет поступления с заказами и показывает результат сверки оплат, счета без платежа или с неполной оплатой. Выписка отвечает на вопрос, какие деньги поступили.

Найди номер на листе `Заказы`, затем проверь его точным совпадением в колонке номера заказа на листе `Платежи`. Для `MATCH` используй режим `0`, а для `COUNTIF` - одно условие по номеру. Если номер встречается несколько раз, отметь дубль и проверь его вручную.

Не ограничивайся флагом `Да/Нет`. Используй статусы `Оплачен`, `Частично`, `Не оплачен`, `Переплата`, `Дубль` и `Нужно разобрать вручную`. Поставь условное форматирование, проверяй положительный остаток и отдельно смотри платежи, которые не связались ни с одним заказом.

Сделай нейтральное сообщение только по конкретному заказу: «По заказу № 1042 пока не найден платёж на 4 900 рублей. Если оплата уже прошла, пришли дату и сумму платежа». Проверь текст на обезличенном примере до отправки. Не добавляй скидку, акцию или предложение новой покупки без предварительного согласия на рекламу. Требования закона о рекламе приведены в [статье 18 закона № 38-ФЗ](https://www.consultant.ru/document/cons_doc_LAW_58968/f892dec1383709792452f18d36e7043306e2be0a/).

Подготовь единый список счетов компании и отдельный экспорт платежей за одинаковый период. Сопоставь номера, проверь даты зачисления, сумму и канал поступления. После этого отфильтруй статусы `Не оплачен` и `Частично`, а платежи без номера отправь в ручную очередь.

Проверь, не является ли строка частичной оплатой, возвратом, комиссией или платежом с другой датой зачисления. Затем сравни номер заказа, ID операции и файл, из которого загрузился платёж. Если однозначного совпадения нет, не меняй статус автоматически: оставь строку в очереди ручной проверки.

Сначала скачай CSV или Excel из письма и импортируй его на лист `Платежи`. Исходный файл сохрани отдельно, а после загрузки проверь количество строк, общую сумму, дату импорта и обязательные колонки. Формулы в импортированный лист не добавляй, чтобы новая загрузка их не стёрла.

Отфильтруй лист `Сверка` по статусу и посмотри две строки с положительным остатком. Затем проверь их номера в листе `Платежи`, включая варианты с частичной оплатой и дублями. Если два счета имеют одинаковую сумму, не выбирай платёж по сумме без номера заказа.

- [Импорт и вставка данных в Google Sheets](https://support.google.com/docs/answer/12236443?hl=ru)
- [COUNTIF в Google Sheets](https://support.google.com/docs/answer/3093480?hl=en-GB)
- [MATCH в Google Sheets](https://support.google.com/docs/answer/3093378?hl=en)
- [VLOOKUP в Google Sheets](https://support.google.com/docs/answer/3093318?hl=en)
- [Условное форматирование в Google Sheets](https://support.google.com/docs/answer/78413?hl=en-GB)
- [Устанавливаемые триггеры Apps Script](https://developers.google.com/apps-script/guides/triggers/installable)
- [Квоты Apps Script](https://developers.google.com/apps-script/guides/services/quotas?authuser=01&hl=en)
- [Лимиты Google Sheets API](https://developers.google.com/workspace/sheets/api/limits)
- [Тарифы Claude](https://support.claude.com/en/articles/8325606-what-is-the-pro-plan)
- [Контур «Взаиморасчёты»: тарифы](https://kontur.ru/akt-sverki/price)
- [Разработка и внедрение Google-таблицы](https://freerunce.ru/catalog/razrabotka-i-it/3889098/razrabotka-i-vnedrenie-gugl-tablitsy/)
- [Разработка Google Sheets на FL.ru](https://www.fl.ru/uslugi-freelancera/4728/razrabotka-tablicy-google-sheets-gugl-tablicy.html)
- [Статья 5 закона № 152-ФЗ](https://www.consultant.ru/document/cons_doc_LAW_61801/96fbc469f91f57235cc842a85e0516a99f23dc85/)
- [Статья 19 закона № 152-ФЗ](https://www.consultant.ru/document/cons_doc_LAW_61801/ca9e5658710519f09ab2fdb8196fcb3eb024a051/)
- [Статья 18 закона № 38-ФЗ](https://www.consultant.ru/document/cons_doc_LAW_58968/f892dec1383709792452f18d36e7043306e2be0a/)
- [Telegram Bot API](https://core.telegram.org/bots/api)

_Это собирательная история выпускников практикума, а не рассказ одного человека: это один из возможных сценариев организации такой работы._
