Kommo + Wave: автоматические инвойсы из воронки без ручного ввода

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.namecustomer.nameПервый контакт сделки
contact.emailcustomer.emailКлюч дедупликации
contact.companycustomer.address.countryCodeИли отдельное поле
lead.priceinvoice.items[0].unitAmountЕсли нет позиций
custom_field «Due Date»invoice.dueDateISO 8601
lead.nameinvoice.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 разберёт маппинг полей и предложит архитектуру интеграции.

Ещё статьи

Все →