Заказ не попал в МойСклад: ошибки 429, 502, 503 в интеграции
МойСклад ответил 503 или 429, а интеграция промолчала, и заказ остался только на сайте. Разбираем три способа потерять заказ, очередь с повторами и ключом syncId, ежедневную сверку и вопросы, которые стоит задать исполнителю.
Заказ оплачен, а в МойСклад его нет
Покупатель оплатил, сайт написал «заказ принят», а у менеджера в МойСклад пусто. Вы узнаёте об этом через неделю по жалобе клиента. Резерв не встал, товар мог уйти другому, а сайт ошибок не присылал.
Так бывает, когда учёт недоступен, а интеграция не умеет ждать. По обсуждениям в публичном чате разработчиков МойСклад: 3 сентября 2026 представитель сервиса писал об атаке на серверы и таймаутах на запросах к API, а 22 сентября пользователи сообщали о 502 и таймаутах. Для связки с 1С есть статья про обмен 1С с сайтом.
Три способа потерять заказ
Коды ответов. Значения взяты из документации JSON API 1.2 на dev.moysklad.ru, проверено 2026-10-02. Колонка «Что с заказом» это мой вывод, в документации этого нет.
| Ответ | Значение по документации | Что с заказом |
|---|---|---|
| 429 | Превышен лимит количества запросов | Документ не создан, повторять после паузы |
| 502 | Сервис временно недоступен | Неизвестно, мог ли заказ создаться |
| 503 | Сервис временно отключен | Неизвестно |
| 504 | Превышен таймаут, повторите позднее | Неизвестно |
1. Один выстрел. Сайт отправил заказ, получил ошибку, записал её в журнал и пошёл дальше. Заказ есть только на сайте.
2. Отказ принят за «ничего нет». В разборе на Хабре от 25 сентября 2026 описан случай: учёт ответил 429 на поиск модификации, код счёл это «модификации нет», и позиция ушла на родительскую карточку. Резерв встал на карточку без остатка, заказ в учёте есть, а товар не защищён.
3. Повтор живёт в памяти. Скрипт пробует три раза и сдаётся, либо очередь лежит в оперативной памяти и пропадает при перезапуске сервера.
Очередь, повторы и защита от дублей
Сайт не пишет в МойСклад в момент оформления. Он кладёт заказ в таблицу очереди в своей базе со статусом «ждёт» и сразу отвечает покупателю. Отдельный обработчик берёт заказы по одному и отправляет в учёт.
Шаг 1. Ключ. При создании заказа сайт генерирует UUID и хранит его в очереди. По документации у заказа покупателя есть поле syncId: после заполнения оно не меняется, а повторная отправка с тем же syncId возвращает ранее созданный заказ вместо нового. Таймаут перестаёт быть вопросом «создалось или нет»: запрос повторяют. Как syncId ведёт себя на конкретном аккаунте, я не проверял, это нужно проверить на тестовом заказе до запуска.
Шаг 2. Лимит. На 429 ждут время из заголовка X-Lognex-Retry-After (миллисекунды), без него нарастающую паузу. Частить нельзя: по документации МойСклад отключает доступ пользователю, у которого в течение часа набралось более 200 запросов в минуту с ответом 429.
Шаг 3. Сбой сервиса. На 502, 503, 504 и таймаут заказ остаётся «ждёт», пауза растёт, попыток хватает на несколько часов, а не на три.
Шаг 4. Статус «доставлен» ставится только после успешного ответа с id документа. Если заказ ждёт дольше порога, он получает статус «застрял», и человеку приходит сообщение.
В моём боте часть этой механики есть. На ответ Telegram с retry_after отправка ждёт указанное число секунд плюс одну и пробует до трёх раз. Ограничение видно в коде: после третьей неудачи сообщение отбрасывается, а ключ отправки пишется до самой отправки, так что повтора при сбое не будет. Для заказа это недопустимо, поэтому в очереди порядок обратный: ключ едет вместе с запросом, отметка ставится после ответа.
Свежесть и ночная сверка
Очередь молчит и когда всё хорошо, и когда сломан обработчик. Нужны три сигнала.
Первый: возраст самого старого заказа со статусом «ждёт». Дольше N минут, и сообщение уходит в Telegram или MAX. Для магазина с заказами каждые несколько минут я бы начал с 30 минут в рабочее время, это моя оценка.
Второй: последний заказ в МойСклад не отстаёт от последнего заказа на сайте больше чем на N минут. У заказа покупателя есть фильтр по дате создания.
Третий: ночная сверка. Заказы за сутки из учёта сверяются со списком сайта по номеру (поля name и externalCode поддерживают фильтр на равенство). Итог приходит каждый день, в том числе «не доехало: 0», иначе тишину не отличить от поломки. Оповещать лучше вторым каналом, не тем, через который работает интеграция. Сторож в моём боте раз в 2 минуты проверяет метку планировщика (больше 180 секунд без обновления, и служба перезапускается) и не пишет об одной проблеме чаще раза в час, подробнее в статье про диагностику бота.
Что важно учесть
Лимиты меняются по расписанию. С 16 февраля 2026 они считаются отдельно для каждого пользователя и решения. Для интеграции по логину и паролю или токену пользователя вес запроса растёт: с 1 сентября 2026 это 15 запросов за 3 секунды, с 1 декабря 2026 станет 11. У токена решения 45. Параллельно допустимо до 5 запросов от пользователя и до 20 от аккаунта, превышение даёт 429 с ошибкой 1073.
Очередь не исправляет неверно собранные заказы, например с ошибочной модификацией. Таблицу очереди нужно включить в резервные копии, принцип в статье про копирование 1С.
Не проверено: что значит 502 или 504 для запроса на создание документа (в документации не нашёл), и статусная страница МойСклад.
Что можно сделать уже сейчас
1. Выгрузите заказы сайта за 30 дней и заказы покупателей из МойСклад за тот же период, сверьте номера. Расхождение покажет, что уже потеряно.
2. Узнайте, под каким доступом ходит интеграция: логин пользователя или токен. От этого зависит лимит после 1 декабря.
3. Задайте исполнителю вопросы. Где лежит заказ, если учёт не ответил: на диске или в памяти? Есть ли syncId или другой ключ против дублей? Сколько повторов и с какими паузами? Кто и через сколько минут узнаёт, что заказ застрял? Приходит ли ежедневная сверка?
4. Почему связки ломаются, рассказано в статье про поддержку интеграций, как делают интеграции на заказ, в статье про API. Доработка связки в разделе автоматизации бизнес-процессов.
Частые вопросы
Можно повторить запрос три раза без очереди?
На короткий сбой хватит. Если учёт лежит часами, как по сообщениям 22 сентября, после третьей попытки заказ теряется.
Не создаст ли повтор дубль заказа?
Без ключа может, если запрос дошёл, а ответ нет. С syncId, по документации, повтор вернёт уже созданный заказ.
Что делать с уже потерянными заказами?
Сверить период по номерам, как в первом пункте выше, и загрузить недостающие вручную или скриптом.
Коротко о главном
Заказы теряет не сам сбой МойСклад, а связка, которая не умеет ждать и не сообщает о застрявшем. Очередь на диске, ключ syncId, повторы по заголовку ответа и ежедневная сверка закрывают три способа потери.
Хотите, чтобы я посмотрел вашу связку сайта или маркетплейса с МойСклад, собрал очередь с повторами и сверкой, настроил оповещения в Telegram или MAX и поддерживал её по абонентской схеме? Напишите мне в Telegram слово «ОЧЕРЕДЬ».
Что я делаю для бизнеса
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»
12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.
Готовы обсудить вашу задачу?
Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


