Доставка для интернет-магазина: гайд для ИП и малого бизнеса
Как выбрать доставку для интернет-магазина: гайд для ИП и малого бизнеса
Введение
Если вы открыли этот гайд, скорее всего, вы только запускаете интернет-магазин или хотите наконец разобраться с доставкой — без лишних созвонов с менеджерами и непонятных условий. Хорошая новость: подключить СДЭК реально за 1–2 дня, даже без опыта работы с API.
Здесь собраны все шаги — от регистрации до первого реального заказа. Актуальные условия для интернет-магазинов смотрите на cdek-reg.ru.
Базовое подключение за 1–2 дня
Зарегистрируйтесь в личном кабинете СДЭК → подпишите оферту → установите модуль для вашей CMS → протестируйте в sandbox → отправьте первый заказ.
Как заключить договор с СДЭК и получить доступ
Первый шаг — регистрация и получение учётных данных. Звучит скучно, но на практике занимает несколько часов.
Выберите тип договора: публичная оферта (быстро, онлайн) или индивидуальный договор (для объёмов от 100+ отправлений/мес, с персональными тарифами).
Подпишите документы электронно или через менеджера.
Активируйте личный кабинет — данные придут на e-mail в течение 1 рабочего дня.
Запросите доступ к sandbox через тикет в поддержку или раздел «Интеграции» в ЛК.
Параметр;Публичная оферта;Индивидуальный договор
Срок активации;Несколько часов;1–3 рабочих дня
Минимальный объём;Нет;Обычно от 100 отправлений/мес
Тарифы;Стандартные по прайс-листу;Персональные (ниже при объёме)
Скидки;Нет;По договорённости
Для кого;ИП, старт, нерегулярные отправки;Малый бизнес с ростом объёма
Кейс: ИП, продающий одежду на WooCommerce, активировал аккаунт за 4 часа через оферту, получил sandbox-доступ по тикету в тот же день и отправил тестовый заказ к вечеру.
Дисклеймер: сроки и условия зависят от региона и статуса проверки документов.
Где взять Account/Password или API-токен
После активации войдите в личный кабинет и найдите учётные данные по пути: Настройки → Интеграции → API.
Тип доступа;Где используется;Формат;Примечание
Account + Password;Старые модули CMS, legacy API;Строки;Выдаются при регистрации
OAuth 2.0 токен;Новый API v2, кастомные интеграции;Bearer-токен (JWT);Рекомендуется для новых проектов
Тестовые ключи (sandbox);Разработка и отладка;Отдельная пара;Не действуют в бою
Не коммитьте ключи в Git — используйте .env-файлы, добавьте их в .gitignore
В production — переменные окружения сервера или секрет-менеджер (Vault, AWS Secrets Manager)
Для каждой среды (dev / staging / prod) — отдельная пара ключей
Ротация ключей раз в 6–12 месяцев или при подозрении на компрометацию
Документация по аутентификации — на официальном портале api-docs.cdek.ru (раздел «Авторизация»).
Настройка способов и тарифов СДЭК в магазине
Выбор способов: ПВЗ, курьер, постаматы
Нет смысла показывать все способы доставки всем покупателям — это путает и снижает конверсию. Лучше настроить фильтры и показывать то, что реально подходит для конкретного заказа.
Способ;Когда показывать;Вес / Габариты;Ориентир по экономии
Курьер до двери;Тяжёлое, хрупкое, дорогое / клиент не хочет идти в ПВЗ;До 30 кг;—
ПВЗ СДЭК;Лёгкие заказы до 2 кг / регионы;До 30 кг;−15–25% vs курьер
Постамат СДЭК-Локер;Мелкие форматы / клиент с нестандартным графиком;До 36×36×60 см, 30 кг;−20–30%
Экспресс;Срочно / Москва, СПб, миллионники;До 30 кг;+20–40% к стандарту
Эконом (межгород);Нечувствительные к срокам; дальние регионы;До 30 кг / −10–20%
По данным СДЭК, для лёгких товаров до 2 кг (одежда, аксессуары) конверсия в выкуп через ПВЗ в среднем выше — клиент сам приходит за заказом в удобное время.
Правила фильтрации тарифов:
ПВЗ и постаматы — только для заказов до 30 кг
Постаматы — скрывать, если любой габарит > 36 см
Удалённые регионы (зоны 4–5) — только Эконом и ПВЗ
Корзина > 10 000 ₽ — рекомендовать курьера со страховкой
Допуслуги: страхование и наложенный платёж
Две опции, которые влияют и на стоимость, и на доверие покупателей — особенно если вы работаете с регионами:
Услуга;Как включить;Ориентировочная стоимость;Влияние на сроки
Объявленная ценность (страхование);Поле declared_value в API / галочка в модуле;~0,5–1% от суммы (мин. 30–50 ₽);Нет
Наложенный платёж (COD);Параметр payment → cod в API / опция в модуле;1,5–3% (мин. 30 ₽);+Т+3 дня до зачисления
Примерка / частичный выкуп;Параметр services → TRYING в API;Доплата по тарифу;+0,5–1 день
Повторная попытка доставки;Авто при невыкупе или вручную;По тарифу доп. попытки;+1 день
Чётко написанные сроки — это не мелочь. Покупатель, который знает, когда ждать посылку, реже пишет в поддержку и реже отказывается от выкупа.
Простая формула для отображения сроков: ETA (для покупателя) = срок из API + 1 день (зоны 1–2) / + 2 дня (зоны 3–5)
Направление;Срок из API;Буфер;Что показывать
Москва / МО (курьер);D+1;+0;«Завтра или послезавтра»
Москва / МО (ПВЗ);D+1;+0;«Завтра»
Города-миллионники;D+2–D+3;+1;«3–4 рабочих дня»
Регионы (зона 3–4);D+4–D+6;+1–2;«5–8 рабочих дней»
Дальний Восток / ЯНАО;D+7–D+12;+2;«9–14 рабочих дней»
Скачайте модуль из официального репозитория или маркетплейса CMS.
Установите через административную панель.
Введите учётные данные из личного кабинета: Account + Password или API-токен.
Настройте единицы: вес в кг, габариты в см.
Включите карту ПВЗ (виджет) в чекауте.
Кэширование списка ПВЗ: 4–12 часов (точки обновляются редко).
Проверьте тестовый расчёт в sandbox.
Переключите на боевые ключи — сделайте тестовый заказ на небольшую сумму.
Перед каждым обновлением модуля проверяйте совместимость версий PHP и CMS в changelog. Зафиксируйте рабочую версию в системе контроля версий.
Кастомная интеграция по API
Если у вас кастомный сайт или нестандартная логика — подключайтесь напрямую через REST API v2. Это даёт полный контроль.
Последовательность запросов при оформлении заказа:
Покупатель вводит адрес или выбирает ПВЗ → GET /v2/deliverypoints.
Расчёт стоимости и сроков → POST /v2/calculator/tarifflist.
Фильтрация по ограничениям и отображение тарифов.
Покупатель подтверждает заказ.
Создание отправления → POST /v2/orders (после оплаты).
Трек-номер и ярлык → GET /v2/orders/{uuid}, POST /v2/print/orders.
Что обязательно валидировать перед отправкой в API:
Вес > 0 кг и не превышает лимит тарифа
Все три габарита > 0 см
Код города или ПВЗ — только из справочника СДЭК
Телефон получателя в формате +7XXXXXXXXXX
Как сделать интеграцию надёжной:
Таймаут к API — 3–5 секунд, фоллбэк: кэш или скрыть СДЭК
Retry при 5xx: 3 попытки с backoff 1 с → 2 с → 4 с
4xx — не ретраить, логировать и уведомлять администратора
Идемпотентный ключ при создании отправления — защита от дублей
Документация: api-docs.cdek.ru. Зафиксируйте версию API и подпишитесь на changelog.
Диагностика ошибок и нулевая цена
Нулевая стоимость или ошибка калькулятора — пожалуй, самая частая боль при интеграции. Вот как с этим разобраться за 5 минут:
Симптом;Частая причина;Решение
Стоимость = 0;Тариф недоступен для данного направления;Запросите tarifflist и проверьте доступность нужного
Ошибка 400;Ноль в габаритах или неверный код города,Валидируйте данные; коды — только из справочника
Ошибка 401;Неверные учётные данные или истёк токен;Переполучите токен через OAuth
Ошибка 422;Вес превышает лимит тарифа;Фильтруйте тарифы по ограничениям на своей стороне
Таймаут / нет ответа;Сбой API или проблема с сетью;Retry + фоллбэк, проверьте статус api.cdek.ru
Цена сильно занижена;Не учтён объёмный вес или допуслуги;Объёмный вес: Д×Ш×В / 5000
Автоматическая передача заказов в СДЭК — это большая экономия времени и исключение ошибок. Главное — настроить триггеры правильно.
Когда передавать заказ в СДЭК:
Статус «Оплачен» — для предоплатных заказов
Статус «Подтверждён» — для COD
Контактные данные получателя заполнены и корректны
Адрес доставки или ПВЗ указаны
Не передавать в статусе «В обработке» или «Ожидает оплаты»
Статус в СДЭК;Что означает;Действие в CMS
CREATED;Зарегистрирован в системе;Сохранить uuid отправления
ACCEPTED;Принят на складе СДЭК;Обновить статус заказа
SENDER_SEND;Отправитель передал посылку;Уведомить покупателя
DELIVERY;В процессе доставки;Показать трекинг в ЛК покупателя
DELIVERED;Вручено;Закрыть заказ, отправить запрос отзыва
NOT_DELIVERED;Не вручено, возврат;Уведомить менеджера
CANCELLED;Отменён;Снять бронь, вернуть остатки
5xx от СДЭК: 3 попытки с задержкой 1 / 2 / 4 минуты
4xx: не ретраить — фиксировать ошибку и уведомить администратора
Идемпотентный ключ (order_id магазина) — защита от дублей
Печать ярлыков/ТТН и бронирование ПВЗ
После создания отправления нужно напечатать ярлык — и убедиться, что выбранный ПВЗ всё ещё работает.
Печать ярлыков:
PDF или ZPL: POST /v2/print/orders/{uuid}
Формат A6 (термоэтикетка) — стандарт для большинства складов
ZPL — для термопринтеров Zebra при объёмах от 50 отправлений/день
Пакетная печать: несколько uuid в одном запросе — один PDF со всеми ярлыками
Работа с ПВЗ:
Проверяйте актуальность ПВЗ перед бронированием: GET /v2/deliverypoints
Убедитесь, что ПВЗ принимает нужные габариты: allowed_max_weight, size_limits
Проверяйте часы работы — особенно при отправке в пятницу
Кейс: при отправке 20 посылок за один раз пакетная печать ярлыков занимает 1–2 минуты вместо 30+. Обязательно проверьте ПВЗ за 1–2 часа до сдачи.
Вызов курьера и переоформление/отмена
Для курьерского забора посылок нужно отдельно создать заявку — это не происходит автоматически при создании отправления.
Создайте заявку: POST /v2/intakes (адрес склада, временное окно, количество мест, общий вес).
Получите номер забора и ожидаемое время — СДЭК подтвердит.
Подготовьте посылки с ярлыками до прихода курьера.
При необходимости — измените заявку через PATCH /v2/intakes/{uuid} не позднее чем за 2 часа.
Что важно помнить:
Минимальное время подачи заявки: за 2–4 часа до нужного окна
Изменение веса или количества мест — обновите заявку, иначе возможен доп. сбор
Отмена позднее чем за 2 часа — возможен штраф за выезд курьера
Дисклеймер: условия отмены и штрафы зависят от договора и региона.
Отслеживание СДЭК: статусы и уведомления клиенту
Получение трек-номера и отображение в ЛК
Трек-номер (cdek_number) появляется в ответе на GET /v2/orders/{uuid} — обычно в течение нескольких минут после создания отправления. Управлять отправлениями удобно и через личный кабинет.
Что делать с трек-номером:
Сохраните uuid (внутренний ID) и cdek_number (трек) в БД магазина
Показывайте покупателю в личном кабинете: ссылка https://www.cdek.ru/ru/tracking?order_id={cdek_number}
В email-уведомлении — ссылка на трекинг и краткий статус
Маскируйте персональные данные (показывайте только город и инициалы)
Вебхуки, email/SMS и частота опроса
Вебхуки — это лучший способ получать обновления статусов. Они быстрее опроса и не нагружают API лишними запросами.
Реализуйте идемпотентность: одно событие может прийти дважды.
Резервный опрос (если вебхуки не настроены):
CRON раз в 30–60 минут для активных отправлений
При финальном статусе (DELIVERED, NOT_DELIVERED, CANCELLED) — исключить из опроса
Триггеры уведомлений покупателю:
Событие;Канал;Текст (шаблон)
ACCEPTED (принят на складе);Email;«Ваш заказ №XXXXXX передан в СДЭК. Трек: [ссылка]»
DELIVERY (в пути);Push / Email;«Заказ в пути! Ожидайте [дата]»
Прибыл в ПВЗ;SMS + Email;«Заказ ждёт в ПВЗ: [адрес]. Код: [код]. До [дата]»
DELIVERED (вручено);Email;«Заказ доставлен! Оцените доставку: [ссылка]»
NOT_DELIVERED;Email + SMS;«Не удалось доставить. Выберите новую дату: [ссылка]»
SMS могут тарифицироваться через вашего провайдера. Согласие на рассылку — получайте при оформлении заказа (152-ФЗ).
Документация API СДЭК и работа в песочнице
Где найти спецификации и примеры
Официальный портал разработчика — api-docs.cdek.ru. Там всё: эндпоинты, примеры запросов, описание полей и changelog.
Раздел API;Эндпоинт;Что делает
Авторизация;POST /v2/oauth/token;Получение Bearer-токена
Калькулятор тарифов;POST /v2/calculator/tarifflist;Расчёт стоимости и сроков
Справочник ПВЗ;GET /v2/deliverypoints;Список пунктов выдачи с фильтрами
Справочник городов;GET /v2/location/cities;Коды городов для расчёта
Создание отправления;POST /v2/orders;Регистрация нового заказа
Инфо по заказу;GET /v2/orders/{uuid};Статус, трек-номер, детали
Печать ярлыков;POST /v2/print/orders;PDF/ZPL ярлыков
Заявка на забор;POST /v2/intakes;Вызов курьера для забора
400;Ошибка валидации данных;Проверить тело запроса по спецификации
401;Неавторизован / истёк токен;Переполучить токен через OAuth
403;Прав недостаточно;Проверить права учётных данных в ЛК
404;Ресурс не найден;Проверить uuid заказа / ПВЗ
422;Бизнес-ошибка (вес, тариф);Прочитать поле errors в ответе и исправить
429;Превышен лимит запросов;Задержка + очередь запросов
500–503;Временный сбой на стороне СДЭК;Retry с backoff, смотрите status.cdek.ru
Sandbox может незначительно отличаться от production. Всегда проводите финальный тест на реальных данных с небольшим пилотным объёмом.
Сколько стоит подключить СДЭК и на каких условиях
Подключение, абонплата и скидки
Хорошая новость: подключение бесплатно, абонентской платы нет. Платите только за реальные отправления.
Параметр;Публичная оферта;Индивидуальный договор
Стоимость подключения;Бесплатно;Бесплатно
Абонентская плата;Нет;Нет
Минимальный объём;Нет;Обычно от 100 отпр./мес
Скидки;Нет;Есть при объёме
Персональный менеджер;Нет;Есть
Постоплата;Нет;Возможна при объёме
Когда есть смысл переходить на индивидуальный договор:
Объём от 300–500 отправлений/месяц — повод запросить персональные тарифы
Высокая доля ПВЗ (>60%) — аргумент для снижения ставки
Стабильный поток заказов важнее разовых пиков при переговорах
Актуальные условия для интернет-магазинов — на cdek-reg.ru. Там же можно оставить заявку на консультацию с менеджером.
Цифры ориентировочные — зависят от региона, направлений и оборота.
Наложенный платёж и сверка
COD — особенно популярен в регионах и среди новых покупателей, которые ещё не доверяют онлайн-оплате. Главное — настроить сверку, чтобы не потерять деньги в хаосе реестров.
Сценарии приёма COD:
Курьер до двери: принимает наличные или оплату картой, выдаёт чек (54-ФЗ)
Выдача в ПВЗ: оператор принимает оплату
Постамат: только банковской картой
Сверка реестров:
Выгружайте реестры перечислений из ЛК СДЭК еженедельно
Сверяйте с заказами в CMS по трек-номеру и сумме
Автоматическая сверка: GET /v2/payment/report
При расхождениях — обращайтесь в поддержку с актом сверки в течение 30 дней
Поддержка СДЭК: каналы связи и диагностика
Куда писать по интеграции
По техническим вопросам API — не звоните на общую горячую линию. Используйте профильные каналы:
Канал;Когда использовать;SLA (ориентир)
Тикет-система в ЛК;Вопросы по API, ошибки, sandbox;4–8 часов (будни)
Email техподдержки;Технические вопросы по документации;1 рабочий день
Телефон (общая линия);Срочные операционные вопросы (не API);Быстро, но не для технических вопросов
Чат в ЛК;Простые вопросы по ЛК и статусам;10–30 минут
Шаблон обращения в техподдержку (скопируйте и заполните):
Номер договора / Account
Среда: sandbox или production
Эндпоинт и метод запроса
Тело запроса (без персональных данных)
Полный ответ API: код, тело
Дата и время запроса с часовым поясом
Что ожидали и что получили
Шаблон обращения в техподдержку (скопируйте и заполните):
Номер договора / Account
Среда: sandbox или production
Эндпоинт и метод запроса
Тело запроса (без персональных данных)
Полный ответ API: код, тело
Дата и время запроса с часовым поясом
Что ожидали и что получили
Чек-листы диагностики и типовые проблемы
Большинство проблем решаются за 5–15 минут, если знать, куда смотреть:
Проблема;Причина;Решение
Калькулятор даёт 0 или ошибку;Неверный код города, ноль в габаритах, недоступный тариф;Проверить справочники, валидировать данные
Заказ не создаётся (422);Неполный адрес или несовместимые параметры;Читать поле errors в ответе, исправить
Статусы не обновляются;Вебхуки не настроены или URL недоступен снаружи;Проверить HTTPS-URL, IP allowlist, подпись
Трек-номер не появляется;Заказ ещё не принят на складе;Подождать 30–60 минут, GET /v2/orders/{uuid}
COD не зачисляется;Задержка по договору;Проверить реестр в ЛК, запросить акт сверки
Дубли заказов;Повторный запрос без идемпотентного ключа;Передавать order_id магазина как ref
Ярлык не печатается;Заказ не подтверждён или неверный uuid;Проверить статус перед запросом печати
Что делать, если система СДЭК недоступна и статусы не обновляются?
Настройте резервный периодический опрос статусов раз в 30–60 минут — в дополнение к основным уведомлениям о событиях. Сохраняйте рассчитанные тарифы в кэш — корзина продолжит работать при кратких сбоях. В панели администратора держите кнопку ручного обновления статуса. Следите за страницей статуса системы СДЭК.
2
Как не запутаться с наложенным платежом и не потерять деньги?
Включайте оплату при получении только как явную опцию, а комиссию закладывайте в правила ценообразования магазина. Настройте автоматическую еженедельную сверку реестров выплат с заказами в вашей системе. При расхождениях обращайтесь в поддержку в течение 30 дней.
3
Расчёт стоимости выдаёт ноль или ошибку — с чего начать?
Последовательно проверьте: коды городов из справочника СДЭК (не вручную), ненулевые размеры, вес в граммах, а не килограммах, доступность выбранного тарифа между этими двумя точками, актуальность учётных данных. Если в тестовой среде работает, а в боевой нет — сравните ключи и адрес системы.
4
Статусы не приходят в магазин — как настроить трекинг?
Проверьте настройку уведомлений о событиях: адрес вашего сервера должен быть доступен из интернета по защищённому протоколу. Добавьте адреса серверов СДЭК в список разрешённых на вашем хостинге. Ведите журнал входящих уведомлений. Добавьте резервный периодический опрос.
5
Подключение СДЭК — это сложно и долго, правда?
Нет. Готовый модуль для популярной платформы настраивается за 1–2 часа. Тестовая среда бесплатна и доступна сразу после регистрации. Абонентской платы нет — платите только за реальные отправления. Разработку через программный интерфейс можно делать постепенно, не останавливая продажи.
6
У меня мало заказов — есть ли смысл подключать СДЭК?
Да. Минимального объёма нет — платите за каждое отправление по тарифу. Пункты выдачи и постаматы помогают предложить покупателям удобную доставку даже при небольших оборотах. По мере роста переходите на индивидуальный договор. Подробности — для интернет-магазинов на cdek-reg.ru.
7
Где взять ключи для программного интерфейса и как включить тестовую среду?
Зарегистрируйтесь, подпишите оферту, войдите в личный кабинет → Настройки → Интеграции → Программный интерфейс. Для тестовой среды — тикет в поддержку или тот же раздел. Для каждой среды — отдельная пара ключей.
8
Как добавить варианты доставки СДЭК в корзину на сайте?
Активируйте нужные тарифы в настройках модуля или через запрос к системе расчёта. Включите карту пунктов выдачи с фильтрами по размеру. Задайте правила показа тарифов по весу, региону и сумме корзины. Добавьте дополнительные опции — страховку, наложенный платёж — с влиянием на итоговую стоимость.