API

Проверка чека

API для получения данных чека по фискальным параметрам.

  • Оплата происходит только за первый успешный запрос чека
  • Повторные запросы того же чека — бесплатны
  • Если баланс отсутствует — запрос не выполняется

Endpoint

POST /api/scan

Авторизация

Передавайте API-ключ в заголовке:

X-API-KEY: your_api_key

Параметры

Все поля являются обязательными:

{
	"fn": "...", // номер фискального накопителя
	"fd": "...", // номер документа
	"fp": "...", // фискальный признак
	"n": "...",  // тип операции
	"s": "...",  // сумма чека (в рублях, формат: 123.45)
	"t": "..."   // дата чека (YYYYMMDDTHHmm или YYYYMMDDTHHmmss)
}

Пример запроса (cURL)

curl -X POST https://prover-chek.ru/api/scan \
-H "X-API-KEY: your_api_key" \
-H "Content-Type: application/json" \
-d '{
	"fn": "1234567890",
	"fd": "12345",
	"fp": "67890",
	"n": "1",
	"t": "20240101T1230",
	"s": "100.50"
}'

Успешный ответ

{
	"success": true,
	"message": "Чек найден",
	"code": "OK",
	"raw": {
		"data": {
			"json": {
				"nds0": null,
				"user": "ООО Агроторг",
				"items": [
					{
						"nds": 1,
						"sum": 8999,
						"name": "Батончик BOUNTY ТРИО - 82,5г",
						"price": 8999,
						"quantity": 1,
						"paymentType": 4,
						"productType": 1,
						"providerInn": null,
						"providerData": null,
						"paymentAgentData": null
					}
				],
				"nds10": null,
				"nds18": 30,
				"ndsNo": null,
				"fnsSite": null,
				"userInn": "7825706086",
				"dateTime": "2026-04-07T07:45:00",
				"kktRegId": "0006558435004306",
				"nds10110": null,
				"nds18118": null,
				"operator": null,
				"totalSum": 17998,
				"creditSum": 0,
				"fiscalSign": "246033475",
				"prepaidSum": 0,
				"receiptCode": null,
				"retailPlace": "8603 2613-Пятерочка+",
				"shiftNumber": 204,
				"buyerAddress": null,
				"cashTotalSum": 0,
				"internetSign": null,
				"provisionSum": 0,
				"taxationType": 1,
				"ecashTotalSum": 179.97999999999996,
				"machineNumber": "0143240006113404",
				"operationType": 1,
				"requestNumber": 9,
				"paymentAgentType": null,
				"amountsReceiptNds": null,
				"fiscalDriveNumber": "7384440900750672",
				"messageFiscalSign": null,
				"retailPlaceAddress": "443001, Самарская область, г.о. Самара, вн.р-н Ленинский, г Самара, ул Молодогвардейская, д. 139",
				"fiscalDocumentNumber": 55491,
				"fiscalDocumentFormatVer": "4"
			}
		}
	},
	"cached": false,
	"request": {
		"fn": "...",
		"fd": "...",
		"fp": "...",
		"n": "...",
		"s": "...",
		"t": "..."
	}
}
  • cached — чек получен из базы (без запроса к ФНС)
  • raw — нормализованные данные чека
  • request — параметры исходного запроса

Ошибки

Авторизация

{
	"code": "API_KEY_REQUIRED", // 401 - API ключ не передан
	"code": "INVALID_API_KEY",  // 403 - неверный API ключ
}

Баланс

{
	"code": "NO_BALANCE" // 402 - недостаточно средств (запрос не выполнен)
}

Параметры

{
	"code": "MISSING_PARAMS", // 422 - не хватает параметров
	"code": "INVALID_CHECK"   // 422 - чек невалидный
}

Ограничения

{
	"code": "TOO_MANY_PARALLEL",  // 429 - слишком много параллельных запросов
	"code": "ALREADY_PROCESSING", // 429 - чек уже обрабатывается
	"code": "ALL_TOKENS_LIMITED", // 429 - лимит токенов исчерпан
	"code": "TOO_MANY_REQUESTS"   // 429 - превышен rate limit
}

Нет данных

{
	"code": "NO_DATA",      // 404 - чек не найден или еще не обработан ФНС
	"code": "CHECK_TOO_OLD" // 404 - чек слишком старый / недоступен
}

Ошибки ФНС

{
	"code": "FNS_HSM_ERROR",        // 502 - ошибка проверки подписи (возможно поддельный чек)
	"code": "FNS_UNKNOWN",          // 502 - неизвестный ответ (внутренняя ошибка ФНС)
	"code": "EMPTY_RESPONSE",       // 500 - нет ответа от ФНС
	"code": "INVALID_FNS_RESPONSE"  // 500 - некорректный ответ ФНС
}

Общие

{
	"code": "REQUEST_FAILED" // 500 - ошибка запроса
}

Особенности

Списание средств

  • Списание происходит только при первом получении чека
  • Если чек уже запрашивался этим API ключом — повторно не списывается

Ограничение запросов

Для защиты API применяются ограничения:

С API ключом:

  • 60 запросов в минуту на ключ
  • 120 запросов в минуту на IP
  • 1000 запросов в минуту глобально

Без ключа / неверный ключ:

  • 10 запросов в минуту на IP

Пример ошибки при превышении лимита:

{
	"success": false,
	"message": "Слишком много запросов",
	"code": "TOO_MANY_REQUESTS",
	"request": {
		"fn": "...",
		"fd": "...",
		"fp": "...",
		"n": "...",
		"s": "...",
		"t": "..."
	}
}

Формат ответа

{
	"success": boolean,
	"message": "string",
	"code": "string",
	"raw": {
		"data": {
			"json": {
				"nds0": number|null,
				"user": "string",
				"items": [
					{
						"nds": number,
						"sum": number,
						"name": "string",
						"price": number,
						"quantity": number,
						"paymentType": number,
						"productType": number,
						"providerInn": "string|null",
						"providerData": "object|null",
						"paymentAgentData": "object|null"
					}
				],
				"nds10": number|null,
				"nds18": number|null,
				"ndsNo": number|null,
				"fnsSite": "string|null",
				"userInn": "string",
				"dateTime": "string (ISO 8601)",
				"kktRegId": "string",
				"nds10110": number|null,
				"nds18118": number|null,
				"operator": "string|null",
				"totalSum": number,
				"creditSum": number,
				"prepaidSum": number,
				"fiscalSign": "string",
				"receiptCode": "string|null",
				"retailPlace": "string",
				"retailPlaceAddress": "string",
				"shiftNumber": number,
				"requestNumber": number,
				"cashTotalSum": number,
				"ecashTotalSum": number,
				"internetSign": number|null,
				"provisionSum": number,
				"taxationType": number,
				"operationType": number,
				"machineNumber": "string",
				"fiscalDriveNumber": "string",
				"fiscalDocumentNumber": number,
				"fiscalDocumentFormatVer": "string",
				"paymentAgentType": number|null,
				"amountsReceiptNds": "object|null",
				"messageFiscalSign": "string|null"
			}
		}
	},
	"cached": boolean,
	"request": {
		"fn": "string",
		"fd": "string",
		"fp": "string",
		"n": "string",
		"s": "string",
		"t": "string"
	}
}