Коды ошибок и решения

Ошибка −1

Текст: Request https://devkkm.webkassa.kz/api/v4/XReport response with error: code −1 — Неправильная попытка отправки повторного запроса. Порядковый номер запроса и токен имеют те же значения, что и в предыдущем запросе, но код команды отличается.

Решение: тестовая касса на протоколе 2.0.2. Рекомендуем создать новую кассу через кабинет интегратора и работать на ней.

Ошибка 2 — Срок действия сессии истёк

  • Используется старый токен после получения нового → выполнить запрос на получение нового токена: POST /api/v4/Authorize.
  • Истекла лицензия кассы (см. Ошибка 10).
  • Интегратор не реализовал обновление токена при ошибке авторизации и 1 раз в 24 часа.
  • Одна учётная запись сотрудника используется на нескольких кассах одновременно. Несколько касс могут работать под одним токеном по API; реализация синхронизации токена при получении нового — ответственность интегратора.

Ошибка 6 — касса не зарегистрирована

Текст: {"Errors":[{"Code":6,"Text":"Касса с заводским номером: SWKxXxXxX не зарегистрирована в системе"}]}

Решение: интегратор передаёт неверный идентификатор кассы в поле CashboxUniqueNumber — вместо ЗНК передаётся регистрационный номер кассы. Эти значения не равны и не взаимозаменяемы. В поле CashboxUniqueNumber всегда должен передаваться Заводской Номер Кассы (ЗНК), например SWK000112233.


Ошибка 8 — недостаточно наличности

Текст: {"Errors":[{"Code":8,"Text":"В кассе недостаточно наличности для проведения операции (В кассе: 38,700.000)"}]}

Решение: в кассе отсутствуют наличные для операции. Доработать ПО, чтобы проверка разницы изымаемых средств предварительно проходила локально; добавить средства в кассу запросом POST /api/v4/MoneyOperation.


Ошибка 9

  • 9-1. "Некорректно реализована интеграция. Запросы по кассе должны отправляться последовательно…" → доработать ПО, чтобы новый запрос по каждой отдельной кассе нельзя было отправить до получения ответа на предыдущий или таймаута.
  • 9-2. "Поле не является корректным email адресом" → реализовать проверку e-mail на стороне ПО на соответствие шаблону.
  • 9-3. "Сумма чека N больше суммы платежей X" → реализовать проверку платежей на стороне ПО (нередки ошибки с типами данных).  Price - размер возвращаемой суммы для каждой конкретной позиции (из решения кассира). Payments - сумма возврата по всем позициям (из сумм позиций в запросе на возврат). Total - общая сумма (из чека-основания продажи).
  • 9-4. "Необходимо заполнить данные чека основания" → некорректно заполнен блок ReturnBasisDetails. Версия протокола кассы для возвратов — не ниже 2.0.3, секцию ReturnBasisDetails нужно заполнять. ExternalCheckNumber не должен быть тем же, что в чеке-основании.
  • 9-5. "Позиция '...': Налог подсчитан неверно. (Текущее: 3120, Ожидалось: 2689.66)" → если стоимость 19500, то 19500 × 16 / 116 = 2689,65517; после математического округления (0~4=0, 5~9=10) до 2 знаков = 2689,66. Доработать ПО, чтобы использовало эту формулу. Также округляются количество товара (до 3 знаков) и стоимость товара (до 2 знаков).
  • 9-6. "Позиция 'Частичная оплата': ставка НДС 12% истекла или недоступна" → НДС передаётся 12% вместо 16% (например TaxPercent не указан при Tax > 0, TaxType != 0, или TaxPercent: 12). Изменить в ПО ставку на доступную из включённых в ЛК Webkassa: Программирование → Управление организацией → Профиль организации.


Ошибка 10 — касса не имеет активной лицензии

Текст: {"Errors":[{"Code":10,"Text":"Касса не имеет активной лицензии"}]}

  • Причина 10-1: лицензия кассы закончилась. → В тестовой среде лицензию можно продлить самостоятельно в ЛК: devkkm.webkassa.kz → Кабинет интегратора → троеточие → «Добавить лицензию», либо создать новую кассу. В боевой среде требуется оплата лицензии через обслуживающий клиента ЦТО.
  • Причина 10-2: смена не закрывалась более 24 часов. → Закрыть смену POST /api/v4/ZReport.
  • Причина 10-3: токен истёк. → Получить новый токен POST /api/v4/Authorize.


Ошибка 11 — смена превышает 24 часа

Текст: {"Errors":[{"Code":11,"Text":"Продолжительность смены превышает 24 часа. Произведите закрытие смены."}]}

Решение: доработать ПО, чтобы смену обязательно закрывали раз в сутки. Рекомендуем предварительно переавторизоваться по кассе.


Ошибка 12 — смена уже закрыта

Текст: {"Errors":[{"Code":12,"Text":"Смена уже закрыта"}]}

Решение: доработать ПО, чтобы оно (локально) не позволяло повторно закрыть смену, если она уже была закрыта без последующего открытия.


Ошибка 14 — дубликат внешнего номера чека

Текст: {"Errors":[{"Code":14,"Text":"Чек с внешним номером xxxxxxxxxxxxxx уже присутствует в системе."}]}

Решение: настроить на стороне ПО уникальность передаваемых внешних номеров чеков для любых операций по новым чекам.


Код

Ошибка

Что означает / причина

Решение

−1

Неправильная попытка отправки повторного запроса

Порядковый номер запроса и токен совпадают с предыдущим запросом, но код команды отличается. Ошибка актуальна для тестовых касс на протоколе 2.0.2.

Создать новую тестовую кассу через Кабинет интегратора и продолжить работу на ней.

2

Срок действия сессии истёк

Используется устаревший токен, истекла лицензия или не реализовано автоматическое обновление токена. Также проблема может возникать, если одна учётная запись используется на нескольких кассах без синхронизации токенов.

Получить новый токен: POST /api/v4/Authorize.
Проверить лицензию кассы (см. ошибку 10).
Реализовать обновление токена при ошибке авторизации и не реже 1 раза в 24 часа.
При работе нескольких касс реализовать синхронизацию токенов.

6

Касса не зарегистрирована

В CashboxUniqueNumber передаётся регистрационный номер вместо заводского номера кассы (ЗНК).

В CashboxUniqueNumber всегда передавать ЗНК, например SWK000112233.
ЗНК и регистрационный номер — разные значения.

8

Недостаточно наличности

В кассе недостаточно наличных средств для выполнения операции.

Реализовать локальную проверку остатка перед отправкой операции.
При необходимости пополнить кассу через
POST/api/v4/MoneyOperation.

9-1

Запросы по кассе должны отправляться последовательно

Новый запрос отправляется до получения ответа на предыдущий запрос либо до истечения таймаута.

Доработать ПО: следующий запрос по конкретной кассе отправлять только после ответа на предыдущий запрос или истечения таймаута.

9-2

Некорректный email

Передаётся e-mail в неверном формате.

Реализовать предварительную проверку e-mail на стороне ПО.

9-3

Сумма чека больше суммы платежей

Некорректно рассчитаны суммы платежей, в том числе возможны ошибки типов данных при возврате.

Реализовать проверку сумм на стороне ПО.
Price — сумма возврата по позиции.
Payments — сумма возврата по всем позициям.
Total — общая сумма чека-основания.

9-4

Необходимо заполнить данные чека-основания

Некорректно заполнен блок ReturnBasisDetails.

Для возвратов использовать протокол не ниже 2.0.3.
Заполнять ReturnBasisDetails.ExternalCheckNumber не должен совпадать с номером чека-основания.

9-5

Неверно рассчитан налог

НДС рассчитывается некорректно или не применяется необходимое округление.

Использовать формулу: Сумма × 16 / 116.
Например: 19500 × 16 / 116 = 2689,65517 → 2689,66.
Количество округлять до 3 знаков, стоимость — до 2 знаков.

9-6

Ставка НДС 12% недоступна

Передаётся ставка НДС 12% вместо актуальной ставки 16%.

Передавать ставку НДС, доступную для организации в ЛК Webkassa: Программирование → Управление организацией → Профиль организации.

10

Касса не имеет активной лицензии

10-1: лицензия закончилась

В тестовой среде продлить лицензию через Кабинет интегратора → ⋯ → Добавить лицензию или создать новую кассу.
В боевой среде — оплатить лицензию через ЦТО

10-2: смена не закрывалась более 24 ч.

Закрыть смену POST /api/v4/ZReport

10-3: истёк токен

Получить новый токен POST /api/v4/Authorize

11

Смена превышает
24 часа

Смена не была закрыта в течение 24 часов.

Доработать ПО, чтобы смена закрывалась не реже одного раза в сутки. Перед закрытием рекомендуется выполнить повторную авторизацию.

12

Смена уже закрыта

ПО повторно отправляет запрос на закрытие уже закрытой смены.

Реализовать локальную проверку состояния смены и не отправлять повторный запрос на закрытие до открытия новой смены.

14

Дубликат внешнего номера чека

Передаётся внешний номер, который уже использовался ранее.

Обеспечить уникальность внешнего номера для каждого нового чека/операции на стороне ПО.


Теги