Как создать приложение для выставления счетов
Приложение для выставления счетов ведёт список клиентов, позволяет создавать счета с позициями и налогом, присваивает каждому уникальный номер, формирует PDF или ссылку, которую может открыть клиент, и отслеживает, оплачен ли счёт. Первая версия — это прямолинейное приложение с базой данных, которое можно собрать с помощью ИИ за день-два. Детали, которые важны — нумерация, налог, блокировка счетов, статус оплаты, — отличают игрушку от инструмента, с которым можно работать с клиентами.
Определитесь, какой инструмент нужен
«Приложение для счетов» охватывает несколько разных вещей. Выберите одну до начала работы:
| Вид | Кто пользуется | Чем отличается |
|---|---|---|
| Личный генератор счетов | Фрилансер | Один бизнес, быстрый PDF, простой список тех, кто оплатил |
| Инструмент для бизнеса | Небольшая команда | Несколько пользователей, общий список клиентов, отчёты |
| Счета внутри большего приложения | Ваши клиенты или сотрудники | Счета создаются из заказов, записей или табелей, которые вы уже ведёте |
| Продукт для выставления счетов другим | Много компаний | У каждого аккаунта видны только его данные — это SaaS |
Третий вид — там, где собственная разработка принесёт больше всего пользы: если вы уже учитываете работы или часы, счёт можно создавать из этих данных и не перепечатывать вручную. Четвёртый — полноценный SaaS MVP с собственными задачами по аккаунтам и оплате.
Модель данных
Четыре таблицы покрывают большинство задач:
- Настройки бизнеса — ваше название, адрес, ИНН или номер НДС, логотип, банковские реквизиты, условия оплаты по умолчанию, ставка налога по умолчанию, валюта и следующий номер счёта.
- Клиенты — имя, компания, email, платёжный адрес, налоговый номер при необходимости и условия по умолчанию.
- Счета — номер, клиент, дата выставления, срок оплаты, статус, валюта, заметки и итоги (промежуточный, налог, всего).
- Позиции — счёт, описание, количество, цена за единицу, ставка налога и сумма по позиции.
Добавьте таблицу платежей, если клиенты платят частями или разными способами: счёт, дата, сумма, способ, номер операции.
Правила, которые важны
ИИ-конструкторы не выполнят их правильно, пока вы явно не попросите:
- Последовательные уникальные номера. Многие налоговые системы ожидают, что номера счетов уникальны и идут по порядку. Создавайте номер на сервере в момент выставления счёта, а не при создании черновика, чтобы брошенные черновики не оставляли пропусков.
- Блокируйте отправленные счета. Тихо менять счёт после того, как клиент его получил, — проблема. Разрешайте правки только для черновиков; для отправленного счёта аннулируйте его и выставите новый или выпишите корректировочный документ.
- Фиксируйте реквизиты клиента на момент счёта. Если клиент через год сменит адрес, счета прошлого года должны показывать старый. Копируйте реквизиты клиента в счёт при выставлении.
- Деньги как целые наименьшие единицы. Храните суммы в копейках (или центах), а не десятичными дробями, чтобы итоги не расходились из-за округления. Округляйте налог так, как этого ожидает налоговый орган: по позиции или по счёту.
- Статус, который отражает реальность. Черновик, отправлен, оплачен, частично оплачен, просрочен, аннулирован. «Просрочен» должен вычисляться по сроку оплаты, а не ставиться вручную.
PDF или страница счёта?
Клиенты ждут PDF, но веб-страницу легче держать в актуальном состоянии. Большинство инструментов предлагают оба варианта:
- Страница счёта для отправки с трудноугадываемой ссылкой, чтобы клиент мог смотреть счёт и платить без входа.
- Скачивание PDF, сформированное из тех же данных, с вашим логотипом и реквизитами.
Проверьте печатный макет и размер бумаги (A4 или US Letter). Длинные списки позиций должны аккуратно переходить на следующую страницу.
Оплата онлайн
Для многих бизнесов достаточно указать банковские реквизиты в счёте. Если вам нужна оплата картой, подключите платёжного провайдера:
- Stripe Checkout или ссылка на оплату на сумму счёта. Клиент нажимает «Оплатить» на странице счёта.
- Webhook от провайдера сообщает приложению, что оплата прошла, и приложение отмечает счёт оплаченным. Не отмечайте счёт оплаченным только потому, что клиент вернулся на страницу «спасибо»: на неё можно попасть, не заплатив. См. как добавить платежи в приложение.
- Сначала тестовый режим. Используйте тестовые ключи провайдера и тестовые карты, пока весь путь не заработает.
Стоит знать: Stripe также предлагает собственный продукт для выставления счетов с размещёнными страницами счетов, по состоянию на сентябрь 2026 года. Если вам нужно только отправить счёт и получить оплату, этого может хватить.
Напоминания
Автоматические письма «ваш счёт скоро к оплате» — одна из самых ценных функций и одна из самых легко испорченных. Вам понадобятся:
- Почтовый провайдер (Resend, Postmark, SendGrid и подобные) — см. как отправлять письма из приложения.
- Что-то, что запускается по расписанию и находит просроченные счета. Опубликованное веб-приложение, которое засыпает при простое, само не проснётся, поэтому спросите у конструктора, как будет запускаться проверка, например по расписанию из внешнего сервиса cron, который вызывает эндпоинт в вашем приложении.
- Журнал отправленных напоминаний, чтобы никто не получил одно и то же письмо дважды.
Начните с ручной кнопки «Отправить напоминание». Автоматизацию добавите позже.
Первый запрос, который работает
Создай приложение для выставления счетов для моего бизнеса веб-дизайна. Я вхожу в систему и веду клиентов (имя, компания, email, платёжный адрес, номер НДС). Я создаю счета с позициями (описание, количество, цена за единицу), для каждой позиции указываю ставку НДС, а подытог, НДС и итог пересчитываются сразу. Номера счетов последовательные (INV-0001, INV-0002) и присваиваются при отметке счёта как отправленного; черновики остаются редактируемыми, отправленные счета блокируются. У каждого счёта есть статус (черновик, отправлен, оплачен, просрочен) и срок оплаты; «просрочен» вычисляется по сроку оплаты. Каждый счёт получает приватную ссылку для отправки и PDF с моим логотипом и банковскими реквизитами. На дашборде — общая сумма неоплаченных и просроченных счетов. Суммы храним в пенсах. Только GBP. Всё храним в базе данных.
Шаги сборки
- Сначала настройки и клиенты. Заполните реквизиты бизнеса и список клиентов, потому что от них зависит каждый счёт.
- Редактор счетов. Позиции, налог и итоги. Проверьте на неудобных числах — например, 3 × £33,33 при НДС 20% — и сверьте итоги с калькулятором.
- Нумерация и блокировка. Выставьте три счёта, удалите один черновик, выставите ещё один. Номера должны идти по порядку без пропусков и дубликатов.
- Страница счёта и PDF. Откройте ссылку для клиента в приватном окне. Распечатайте PDF.
- Платежи. Подключите Stripe в тестовом режиме, оплатите счёт тестовой картой и убедитесь, что webhook отмечает его оплаченным.
- Проверка безопасности. Выйдите из системы и попробуйте открыть счёт другого клиента, поменяв ID в адресной строке. Работать должна только приватная ссылка, и она не должна раскрывать другие счета. Наш чек-лист безопасности содержит больше проверок.
- Экспорт. Добавьте CSV-экспорт счетов и платежей для бухгалтера.
Частые ошибки
- Деньги с плавающей точкой. Что 0,1 + 0,2 не равно 0,3 — настоящая ошибка в реальных приложениях. Храните целые минимальные единицы.
- Редактируемые отправленные счета. Изменение счёта после того, как клиент его получил, вызывает споры и бухгалтерские проблемы.
- Номера, присвоенные черновику. Создают пропуски и путаницу.
- Угадываемые ссылки на счета.
/invoice/42подсказывает попробовать/invoice/43. Используйте длинные случайные токены. - Предположение об одном налоговом правиле. Налоговые ставки, обратное начисление и обязательные формулировки различаются по странам и типам клиентов. Спросите у бухгалтера; не позволяйте ИИ угадывать.
- Нет резервных копий. Счета — это записи, которые вас могут обязать хранить годами. Регулярно экспортируйте их и, если тариф позволяет, храните код в GitHub.
Расходы и инструменты
| Что | Для чего | Примечания |
|---|---|---|
| Конструктор приложений / хостинг / база данных | Создание и работа приложения | В Mythex один баланс кредитов покрывает всё это — см. цены |
| Платёжный провайдер | Оплата картой | Берёт комиссию с каждой операции; актуальные тарифы для вашей страны уточняйте у провайдера |
| Почтовый провайдер | Отправка счетов и напоминаний | Многие имеют бесплатные тарифы при небольшом объёме |
| Домен | Профессиональные ссылки на счета | Необязательно, оплачивается раз в год |
Когда лучше готовое ПО для выставления счетов
Собственное приложение лучше, когда выставление счетов — часть вашего процесса, когда вам нужен инструмент, сформированный под то, как вы выставляете счета, или когда вы добавляете счета в приложение, которое у вас уже есть. Выбирайте проверенную программу бухгалтерии или выставления счетов, если:
- Вам нужны бухгалтерия, банковские выписки, учёт расходов и налоговые декларации в одном месте.
- Ваша страна требует электронного счёта в определённом формате или через сертифицированный канал.
- Бухгалтеру удобнее работать в знакомом инструменте.
Частый компромисс: создать ту часть, которая специфична именно для вас (заказы, табели, клиентский портал, где клиенты видят свои счета), а цифры экспортировать в программу бухгалтерии. Собственная разработка или покупка ПО для малого бизнеса разбирает это решение.
Создание с Mythex
В Mythex вы описываете приложение для счетов в чате и наблюдаете, как оно формируется в живом превью. Когда приложению нужна база данных, она добавляется; ключи API, например секретный ключ Stripe, хранятся в секретах проекта; приложение публикуется по адресу, которым можно пользоваться сразу. Рецепт Stripe в документации показывает настройку со своими ключами. Для старта с запроса, который уже описывает основы, попробуйте шаблоны генератор счетов или счета для фрилансеров.
Вопросы
Какие функции нужны приложению для выставления счетов?
Список клиентов, счета с позициями, налогом и итогами, уникальные последовательные номера счетов, PDF или ссылка для клиента и статус каждого счёта (черновик, отправлен, оплачен, просрочен). Самые полезные следующие добавления — онлайн-оплата и напоминания.
Может ли приложение для счетов принимать оплату картой?
Да, через платёжного провайдера, например Stripe. Приложение создаёт ссылку на оплату или checkout на сумму счёта, а webhook от провайдера отмечает счёт оплаченным, когда платёж прошёл.
Законно ли пользоваться собственным приложением для счетов?
В целом да, но к счетам есть юридические требования к содержанию, которые зависят от страны: реквизиты продавца, налоговые номера, даты, разбивка налога. В некоторых странах обязателен электронный счёт в определённом формате. Прежде чем на это полагаться, уточните у бухгалтера, что относится к вам.
Нужно ли создавать приложение для счетов или использовать программу бухгалтерии?
Используйте программу бухгалтерии, если вам нужны учёт, налоговая отчётность или сверка банковских операций. Создавайте своё, когда выставление счетов связано с вашим собственным процессом — заказами, табелями, проектами — или когда вам нужен простой инструмент без платы за пользователя.