Kommo + Wave: автоматические инвойсы из воронки без ручного ввода
Менеджер закрывает сделку в Kommo и идёт в Wave создавать инвойс вручную. Вбивает имя клиента, реквизиты, сумму — данные, которые уже есть в CRM. Потом возвращается в Kommo и ставит задачу «проверить оплату». Эта последовательность повторяется при каждой продаже. Интеграция Kommo и Wave убирает ручной ввод: сделка перешла на этап -> инвойс создан в Wave -> клиент получил письмо -> статус оплаты зафиксирован в CRM автоматически.
Почему Zapier не закрывает этот сценарий
Wave — бесплатная бухгалтерская платформа, популярная у SaaS-компаний и фрилансеров. В отличие от Xero или FreshBooks, Wave использует GraphQL API, а не REST. Большинство no-code коннекторов (Zapier, Make, Albato) построены под REST-архитектуру и не имеют полноценной поддержки Wave GraphQL.
Официальный Wave-коннектор в Zapier существует, но ограничен: создать инвойс можно, но без логики «найди клиента или создай нового», без передачи кастомных полей из Kommo и без обратного потока статуса оплаты. Для полного сценария нужна кастомная интеграция через Wave GraphQL API.
Что передаётся из Kommo в Wave
Kommo -> Wave:
— Имя, email, телефон, компания контакта -> Customer в Wave (с дедупликацией по email)
— Сумма сделки и позиции (если ведутся в кастомных полях) -> строки инвойса
— Срок оплаты из кастомного поля -> due date инвойса
— ID инвойса и ссылка для оплаты -> кастомное поле в карточке сделки
Wave -> Kommo:
— Статус инвойса PAID -> обновление поля «статус оплаты» в сделке
— Перевод сделки на этап «Оплата получена»
— Закрытие задачи «Проверить оплату» (если была создана)
Архитектура интеграции
Kommo: сделка перешла на этап «Выставить инвойс»
↓ Webhook -> Backend
1. GET /api/v4/leads/{id} - детали сделки
2. GET /api/v4/contacts?lead_id={id} - контакт
3. Wave GraphQL: поиск клиента по email
-> найден: использовать существующего
-> не найден: customerCreate
4. Wave GraphQL: invoiceCreate -> invoiceSend
5. Kommo: обновить поля invoice_url, invoice_id в сделке
6. Kommo: задача «Проверить оплату» через N дней
Wave Webhook: invoice.paid
↓ Backend
1. Найти сделку в Kommo по invoice_id
2. Обновить поле payment_status = "paid"
3. Перевести на этап «Оплата получена»
Wave GraphQL: ключевые мутации
Wave API работает через GraphQL endpoint https://gql.waveapps.com/graphql/public. Авторизация — OAuth 2.0 с Bearer token.
Поиск клиента перед созданием:
query SearchCustomer($businessId: ID!, $name: String) {
business(id: $businessId) {
customers(name: $name) {
edges {
node { id name email }
}
}
}
}
Создание инвойса:
mutation CreateInvoice($input: InvoiceCreateInput!) {
invoiceCreate(input: $input) {
didSucceed
inputErrors { message code path }
invoice {
id
invoiceNumber
status
pdfUrl
}
}
}
Отправка клиенту:
mutation SendInvoice($input: InvoiceSendInput!) {
invoiceSend(input: $input) {
didSucceed
invoice { id status }
}
}
GraphQL позволяет создать инвойс и отправить его в двух запросах вместо цепочки REST-вызовов. Дедупликация клиентов обязательна: Wave не блокирует создание дублей — это задача интеграционного слоя.
Маппинг полей Kommo -> Wave
| Поле Kommo | Поле Wave | Примечание |
|---|---|---|
| contact.name | customer.name | Первый контакт сделки |
| contact.email | customer.email | Ключ дедупликации |
| contact.company | customer.address.countryCode | Или отдельное поле |
| lead.price | invoice.items[0].unitAmount | Если нет позиций |
| custom_field «Due Date» | invoice.dueDate | ISO 8601 |
| lead.name | invoice.items[0].description | Описание услуги |
Если в Kommo ведётся список товаров через кастомные поля — каждая позиция маппируется в отдельную строку инвойса. Если позиций нет — вся сумма сделки идёт одной строкой.
Реальный кейс
Digital-агентство (8 клиентов на ретейнере, ежемесячные инвойсы):
- До интеграции: каждый месяц менеджер вручную создавал 8 инвойсов в Wave — копировал данные из Kommo. 45–60 минут работы, периодические ошибки в суммах и реквизитах.
- После: триггер 1-го числа каждого месяца -> Kommo API выбирает активные сделки -> Wave GraphQL создаёт и отправляет инвойсы автоматически.
- Результат: 0 минут ручного труда на выставление счетов. Менеджер видит статус оплаты прямо в Kommo — Wave открывать больше не нужно.
Аналогичную логику автоматизации мы применяли в интеграции Kommo и FreshBooks и Kommo и Xero — архитектура схожая, разница в API-специфике каждой платформы.
Для кого актуально
Интеграция Kommo + Wave имеет смысл если:
— Wave — основная бухгалтерская система, менять её не планируется
— Инвойсы выставляются при переходе сделки на определённый этап воронки
— Важно видеть статус оплаты в CRM без переключения между системами
— Объём: от 10 инвойсов в месяц — при меньшем объёме ручной ввод быстрее настройки
Часто задаваемые вопросы
Wave бесплатный — зачем платить за интеграцию?
Wave бесплатен для инвойсинга. Интеграция с Kommo — разовая разработка. При 20+ инвойсах в месяц экономия (15–20 минут на инвойс × 20 = 5–7 часов ежемесячно) окупает разработку за 2–3 месяца. Плюс устранение ошибок ручного ввода.
Wave API платный?
Нет. Wave предоставляет GraphQL API бесплатно для всех бизнес-аккаунтов. Rate limit — 60 запросов в минуту. Для обычного объёма инвойсинга этого достаточно с большим запасом.
Что если клиент уже есть в Wave?
Интеграция ищет клиента по email перед созданием. Если найден — инвойс создаётся для существующего customer, дубли не появляются. Если email отличается (например, изменился домен компании) — создаётся новый customer, что требует отдельной логики нормализации.
Как передать несколько позиций из Kommo?
Через кастомные поля типа multilist или через отдельные поля «Позиция / Сумма» на каждую строку. Каждая позиция маппируется в строку invoice.items. Если позиций нет — вся сумма идёт одной строкой с названием сделки как описанием.
Wave работает с иностранными клиентами?
Да. Wave поддерживает инвойсинг в USD, EUR, CAD и других валютах. Платёжные функции (Wave Payments) доступны в США и Канаде. Для выставления счетов иностранным клиентам без встроенного эквайринга Wave подходит глобально.
Итого
- Wave использует GraphQL API — Zapier не закрывает полный двусторонний сценарий
- Кастомная интеграция: этап в Kommo -> инвойс в Wave -> отправка клиенту -> статус оплаты обратно в CRM
- Дедупликация клиентов по email — обязательный элемент
- Типовой срок разработки — 2–3 недели
- Актуально при 10+ инвойсах в месяц
Если вы используете Wave и Kommo и хотите убрать ручное создание инвойсов — опишите схему вашего процесса выставления счетов. Exceltic.dev разберёт маппинг полей и предложит архитектуру интеграции.