Интеграция Битрикс с МоёДело: обмен заказами

Представьте: каждый заказ из интернет-магазина на Битрикс нужно вручную завести в МоёДело — как реализацию, создать контрагента, выставить счёт. На это уходит 10–15 минут на заказ. При 50 заказах в день — до 12 часов рутины в месяц. Ошибки в реквизитах, неверный НДС, забытые платежи — типичные после
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Интеграция Битрикс с МоёДело: обмен заказами
Средний
~1-2 недели

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1442
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    1013
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    752
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    873
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    794
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1154

Представьте: каждый заказ из интернет-магазина на Битрикс нужно вручную завести в МоёДело — как реализацию, создать контрагента, выставить счёт. На это уходит 10–15 минут на заказ. При 50 заказах в день — до 12 часов рутины в месяц. Ошибки в реквизитах, неверный НДС, забытые платежи — типичные последствия. Мы автоматизируем этот процесс под ключ, сокращая время обработки на 80% и сводя ошибки к минимуму. Наш опыт интеграций с МоёДело — более 15 проектов, гарантируем стабильную синхронизацию 24/7. Оценим ваш проект бесплатно — напишите нам.

Какие проблемы решаем

Ручной ввод контрагентов

Каждый новый клиент — создание карточки в МоёДело: ИНН, название, адрес. При повторных заказах легко создать дубликат. Наш алгоритм автоматически ищет контрагента по email или ИНН и создаёт только при отсутствии.

Ошибки в расчёте НДС

Ставки НДС различаются: 0%, 10%, 20%. При ручном переносе легко ошибиться, что ведёт к расхождениям с налоговой. Интеграция берёт ставку из свойств товара в Битрикс — исключая человеческий фактор.

Потеря платежей

Оплаченный заказ не всегда отражается в МоёДело как поступление. Мы вешаем обработчик на событие OnSalePaymentPaid — оплата автоматически фиксируется как входящий платёж. Это особенно важно для 54-ФЗ и закрытия смен.

Как интегрировать Битрикс с МоёДело?

Мы используем публичный API МоёДело с авторизацией по токену. На стороне Битрикс пишем PHP-клиент на 8.1+, используем инфоблоки v2.0 и ORM. Каждый заказ проходит цепочку: контрагент → документ реализации → счёт (опционально) → платёж. Для возвратов создаём документ возврата.

Вот пример создания контрагента (фрагмент кода):

class MoeDeloClient { private string $apiKey; private string $baseUrl = 'https://api.moedelo.org'; public function request(string $method, string $endpoint, array $body = [], array $query = []): array { $url = $this->baseUrl . $endpoint; if ($query) { $url .= '?' . http_build_query($query); } $ch = curl_init($url); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => $method, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', "X-DM-Auth-Token: {$this->apiKey}", ], CURLOPT_POSTFIELDS => in_array($method, ['POST', 'PUT', 'PATCH']) ? json_encode($body) : null, ]); $json = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($httpCode >= 400) { throw new \RuntimeException("МоёДело API {$httpCode}: {$json}"); } return json_decode($json, true) ?? []; } } 

Контрагенты

При физлице (B2C-заказ без реквизитов) создаём контрагента с типом individual:

public function findOrCreateContragent(\Bitrix\Sale\Order $order): int { $props = $order->getPropertyCollection(); $email = $props->getUserEmail(); $name = $props->getBuyerName(); $phone = $props->getPhone(); $inn = $props->getItemByOrderPropertyCode('INN')?->getValue(); // Поиск по email $search = $this->client->request('GET', '/api/v1/counteragents', [], ['search' => $email]); foreach ($search['data'] ?? [] as $ca) { if ($ca['email'] === $email) { return $ca['id']; } } // Создание $isLegal = !empty($inn); $payload = $isLegal ? [ 'type' => 'legal_entity', 'name' => $props->getItemByOrderPropertyCode('COMPANY')->getValue(), 'inn' => $inn, 'kpp' => $props->getItemByOrderPropertyCode('KPP')?->getValue() ?? '', 'email' => $email, 'phone' => $phone, ] : [ 'type' => 'individual', 'fullname' => $name, 'email' => $email, 'phone' => $phone, ]; $result = $this->client->request('POST', '/api/v1/counteragents', $payload); return $result['id']; } 

Документ реализации (счёт-фактура / накладная)

public function createSaleDocument(\Bitrix\Sale\Order $order, int $contragentId): int { $items = []; foreach ($order->getBasket() as $basketItem) { // НДС из свойств товара $vatRate = $this->resolveVatRate($basketItem->getProductId()); $vatValue = round($basketItem->getPrice() * $basketItem->getQuantity() * ($vatRate / (100 + $vatRate)), 2); $items[] = [ 'name' => $basketItem->getField('NAME'), 'quantity' => $basketItem->getQuantity(), 'unit' => 'шт.', 'price' => $basketItem->getPrice(), 'total' => round($basketItem->getPrice() * $basketItem->getQuantity(), 2), 'vat_rate' => $vatRate, // 0, 10, 20 'vat_value' => $vatValue, ]; } // Скидка на уровне заказа $discount = $order->getField('PRICE_DELIVERY') > 0 ? [ 'name' => 'Доставка', 'amount' => $order->getField('PRICE_DELIVERY'), ] : null; $doc = $this->client->request('POST', '/api/v1/documents/sale', [ 'date' => date('Y-m-d'), 'number' => $order->getField('ACCOUNT_NUMBER'), 'counteragent_id' => $contragentId, 'items' => $items, 'shipping' => $discount, 'comment' => 'Заказ с сайта #' . $order->getField('ACCOUNT_NUMBER'), ]); return $doc['id']; } 

Счёт на оплату

Для B2B-заказов после создания документа реализации формируем счёт:

public function createInvoice(int $documentId, \Bitrix\Sale\Order $order): string { $invoice = $this->client->request('POST', '/api/v1/invoices', [ 'document_id' => $documentId, 'due_date' => date('Y-m-d', strtotime('+5 days')), ]); // Получаем PDF счёта и прикрепляем к заказу в Битрикс $pdfUrl = $invoice['pdf_url'] ?? ''; if ($pdfUrl) { $this->attachInvoicePdfToOrder($order->getId(), $pdfUrl); } return $invoice['number'] ?? ''; } 

Входящие платежи

AddEventHandler('sale', 'OnSalePaymentPaid', function(\Bitrix\Sale\Payment $payment) { $order = $payment->getOrder(); $docId = MoeDeloSyncTable::getDocumentId($order->getId()); if (!$docId) return; (new MoeDeloSyncService())->registerPayment($docId, $payment); }); public function registerPayment(int $docId, \Bitrix\Sale\Payment $payment): void { $this->client->request('POST', '/api/v1/payments/income', [ 'date' => date('Y-m-d'), 'amount' => $payment->getSum(), 'document_id' => $docId, 'type' => $payment->getPaySystem()->getField('CODE') === 'cash' ? 'cash' : 'bank', 'comment' => 'Оплата заказа #' . $payment->getOrder()->getField('ACCOUNT_NUMBER'), ]); } 

Автоматизация через события

Событие Битрикс Действие в МоёДело
Заказ создан (статус «Новый») Создать контрагента + документ реализации
Заказ оплачен Зафиксировать входящий платёж
Заказ отменён Создать документ возврата
Заказ «Ожидает оплату» Выставить счёт (для B2B)

Почему автоматизация лучше ручного ввода?

Автоматизация лучше ручного ввода: каждый заказ обрабатывается за 5 секунд вместо 10-15 минут — в 180 раз быстрее. Ошибки при ручном вводе достигают 5%, а при автоматизации — менее 0.1%. Исключены дубли контрагентов, документы всегда соответствуют требованиям ФНС. Интеграция окупается за 2–3 месяца за счёт сокращения ручного труда — вы получаете реальную экономию.

Параметр Ручной ввод Наша интеграция
Время на заказ 10–15 минут 3–5 секунд
Ошибки до 5% < 0.1%
Дубли контрагентов часты исключены
Работа 24/7 нет да

Что входит в работу

Мы подготавливаем полный пакет:

  • PHP-клиент МоёДело API
  • Поиск и создание контрагентов (физлица и юрлица)
  • Создание документов реализации и счетов
  • Регистрация платежей и возвратов
  • Таблица синхронизации, обработка ошибок и повторные попытки
  • Документация по интеграции и обучение вашего персонала
  • 3 месяца гарантийной поддержки

Что синхронизируется автоматически?

Помимо заказов, мы синхронизируем контрагентов (с поиском дублей), номенклатуру товаров (опционально), акты сверки (по запросу), возвраты и корректировки. Все данные проходят валидацию перед отправкой в МоёДело — это исключает ошибки формата.

Процесс работы

  1. Аудит — анализируем текущую конфигурацию Битрикс, схему заказов, требования к документам.
  2. Проектирование — согласовываем маппинг полей, сценарии ошибок.
  3. Реализация — пишем код, настраиваем события, тестируем на тестовом полигоне.
  4. Тестирование — прогоняем 100+ заказов, проверяем все сценарии (оплата, отмена, возврат).
  5. Деплой — выкатываем на бой, мониторим 2 недели, обучаем сотрудников.

Типичные ошибки при самостоятельной интеграции

Неверный формат даты (API принимает только YYYY-MM-DD), отсутствие повторных попыток при тайм-аутах (заказы теряются), игнорирование лимитов API (30 запросов в минуту — нужна очередь). Мы учитываем все эти нюансы, поэтому интеграция работает стабильно.

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