Личный кабинет

Главная → Документация → Штрафы ГИС ГМП

Штрафы ГИБДД из ГИС ГМП: API по СТС, ВУ и номеру постановления

Неоплаченные штрафы ГИБДД с полными данными начисления: сумма к оплате, скидка и до какой даты она действует, сумма со скидкой, статья КоАП, дата, место и координаты нарушения, подразделение и реквизиты для оплаты. Запрос уходит через СМЭВ в ГИС ГМП и информационные системы ведомств. Поиск по СТС, водительскому удостоверению, номеру постановления (УИН), ИНН организации или ИП.

Метод GET /fines-gisПоиск СТС · ВУ · УИН · ИННИсточник ГИС ГМП через СМЭВОтвет обычно 5-30 секунд

Откуда данные

Метод не хранит штрафы у себя: каждый запрос - живой поиск в государственных системах.

Что в ответе

Переход с Проверки штрафов

Параметры и прежние поля ответа совпадают с Проверкой штрафов: смените адрес /fines на /fines-gis, остальное работает как было. Новые поля добавлены рядом со старыми.

БылоСтало
GET /fines?sts=...GET /fines-gis?sts=...
GET /fines?driverLicense=...GET /fines-gis?driverLicense=...
GET /fines?numPost=...GET /fines-gis?numPost=...
num_post, sum, date_post, division_name, enable_discount, date_discount, paid, found, unpaid, total_sumте же поля, тот же смысл и формат; новые поля в таблице ниже
нетпоиск по ИНН организации (org) и ИП (ipInn), признак полноты complete

Метод подключается отдельно, в личном кабинете. Токен тот же.

Аутентификация

Токен передаётся заголовком Authorization: Bearer <токен> либо параметром ?token=. Токен один для всех API, он выдаётся в личном кабинете сразу после регистрации.

Эндпоинт

GET https://api.avtovincod.ru/fines-gis

Параметры

Передайте один параметр поиска.

ПараметрЧто искатьФормат
stsштрафы машины по свидетельству о регистрации ТС10 цифр или 2 цифры + 2 буквы + 6 цифр: 9900123456, 77УХ123456. Латинские буквы-двойники заменяются сами
driverLicenseштрафы водителя по водительскому удостоверению. Синоним: dlтак же, как СТС: 10 знаков
numPostодно постановление по номеру (УИН), в том числе оплаченное. Синоним: uin20 или 25 цифр
orgштрафы организацииИНН (10 цифр) и КПП (9 знаков) подряд, 19 знаков
ipInnштрафы индивидуального предпринимателяИНН, 12 цифр

Передано несколько параметров - поиск идёт по первому из списка: numPost, sts, driverLicense, org, ipInn. По СТС, ВУ и ИНН возвращаются только штрафы ГИБДД; по УИН - начисление с этим номером.

Пример запроса

curl --max-time 75 -H "Authorization: Bearer $TOKEN" \
  "https://api.avtovincod.ru/fines-gis?sts=9900123456"

Ставьте таймаут на своей стороне не меньше 75 секунд: поиск по ведомствам занимает до 60.

Пример ответа: штраф найден

{
  "success": 1,
  "query": {
    "sts": "9900123456"
  },
  "found": 1,
  "unpaid": 1,
  "total_sum": 1500,
  "fines": [
    {
      "num_post": "18810177260928012345",
      "sum": 1500,
      "date_post": "2026-10-22",
      "division_name": "ЦАФАП ГИБДД ГУ МВД России по г. Москве",
      "enable_discount": true,
      "date_discount": "2026-11-11",
      "paid": false,
      "amount": 1500,
      "discount_percent": 50,
      "sum_with_discount": 750,
      "paid_sum": null,
      "article": "12.9.3 - Превышение установленной скорости движения на величину более 40, но не более 60 км/ч",
      "offense_name": "Превышение установленной скорости движения",
      "offense_date": "2026-10-20T08:41:00+03:00",
      "offense_place": "г. Москва, МКАД, 45 км, внешняя сторона",
      "coordinates": {
        "lat": 55.611,
        "lon": 37.489
      },
      "division_code": "1145449",
      "valid_until": "2027-01-10",
      "payment": {
        "payee": "УФК по г. Москве (ГУ МВД России по г. Москве)",
        "inn": "7707089101",
        "kpp": "770731005",
        "bik": "004525988",
        "account": "03100643000000017300",
        "corr_account": "40102810545370000003",
        "kbk": "18811601123010001140",
        "oktmo": "45379000",
        "purpose": "Штраф по постановлению 18810177260928012345"
      }
    }
  ],
  "complete": true,
  "checkedAt": "2026-11-03T12:00:00+03:00",
  "billing": {
    "charged": 10,
    "currency": "RUB",
    "billed": true,
    "balance": 990,
    "requestId": 1234567
  }
}

Номер СТС, постановление и суммы в примере условные; billing - списание за этот запрос (цифры условные).

Поля ответа

ПолеЗначение
queryпо какому параметру искали и значение, как его прислали (без пробелов и знаков)
foundсколько начислений найдено
unpaidсколько из них не оплачено
total_sumсумма к оплате по неоплаченным, руб. (без учёта скидки)
completetrue - ответили все ведомства; false - часть не успела, список может быть неполным
checkedAtдата и время проверки (ISO 8601)
fines[].num_postномер постановления (УИН), 20 или 25 цифр
fines[].sumсумма к оплате сейчас, руб., без учёта скидки
fines[].date_postдата постановления, YYYY-MM-DD
fines[].division_nameподразделение, вынесшее постановление
fines[].enable_discounttrue - скидка действует на дату запроса
fines[].date_discountдо какой даты действует скидка, YYYY-MM-DD
fines[].paidtrue - оплачен, false - нет
fines[].amountначислено по постановлению, руб.
fines[].discount_percentразмер скидки, %
fines[].sum_with_discountсумма к оплате со скидкой, руб.; null - скидка не действует
fines[].paid_sumуже оплачено частично, руб.; null - оплат не было
fines[].articleстатья КоАП и её содержание
fines[].offense_nameнарушение
fines[].offense_dateдата и время нарушения (ISO 8601)
fines[].offense_placeместо нарушения
fines[].coordinatesкоординаты места {"lat", "lon"}; null, если их нет
fines[].division_codeкод подразделения
fines[].valid_untilсрок, до которого начисление нужно оплатить, YYYY-MM-DD
fines[].paymentреквизиты для оплаты: payee (получатель), inn, kpp, bik, account (казначейский счёт), corr_account (единый казначейский счёт), kbk, oktmo, purpose (назначение платежа)
billingсписание за запрос: charged, billed, balance, requestId

Поля, которых нет у начисления, приходят null, ключи остаются на месте. Повторы одного постановления убраны, свежие постановления первыми.

Как читать ответ

Пример ответа: штрафов нет

HTTP 200, success: 1, found: 0. Проверка выполнена и оплачивается.

{
  "success": 1,
  "query": {
    "driverLicense": "9900123456"
  },
  "found": 0,
  "unpaid": 0,
  "total_sum": 0,
  "fines": [],
  "complete": true,
  "checkedAt": "2026-11-03T12:00:00+03:00",
  "billing": {
    "charged": 10,
    "currency": "RUB",
    "billed": true,
    "balance": 980,
    "requestId": 1234568
  }
}

Коды ошибок

КодЗначениеHTTP
INPUT_REQUIREDне передан ни один параметр поиска400
STS_INVALIDномер СТС не в формате400
DL_INVALIDномер водительского удостоверения не в формате400
UIN_INVALIDУИН не из 20 или 25 цифр400
ORG_INVALIDИНН и КПП организации не в формате: нужно 19 знаков подряд400
INN_INVALIDИНН ИП не из 12 цифр400
NO_TOKENтокен не передан401
TOKEN_INVALIDтокен недействителен или деактивирован401
INSUFFICIENT_BALANCEнедостаточно средств на балансе402
NOT_ALLOWEDметод не подключён вашему токену403
API_DISABLEDметод временно отключён403
IP_NOT_ALLOWEDзапрос с IP вне вашего белого списка403
RATE_LIMITпревышен лимит запросов в минуту429
RATE_LIMIT_IPслишком много запросов с одного IP429
PROVIDER_FAILведомства не ответили или ответили ошибкой; повторите через несколько минут200
SERVICE_UNAVAILABLEсервис временно недоступен, повторите позже503

Ошибка приходит в виде {"success": 0, "error": "...", "code": "..."} и никогда не тарифицируется. PROVIDER_FAIL приходит с HTTP 200: проверяйте поле success.

Примеры кода: PHP, Python, JavaScript, Go, Java, C#, Ruby, 1С

Примеры готовы к запуску: токен берётся из переменной окружения AVC_TOKEN, а в запросе стоит тестовое значение (sts=0000000000). По тестовым значениям приходит ответ-образец по схеме метода: бесплатно, без списания и даже при нулевом балансе, с полем "testMode": true. Так интеграцию можно собрать и проверить до первого платного запроса. Все тестовые значения.

curl -s --max-time 75 -G "https://api.avtovincod.ru/fines-gis" \
  --data-urlencode "sts=0000000000" \
  -H "Authorization: Bearer $AVC_TOKEN"
<?php
$url = 'https://api.avtovincod.ru/fines-gis?' . http_build_query(['sts' => '0000000000']);
$ch  = curl_init($url);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 75,
    CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('AVC_TOKEN')]]);
$d = json_decode(curl_exec($ch), true);
echo $d['success'] ? json_encode($d, JSON_UNESCAPED_UNICODE) : $d['code'] . ': ' . $d['error'];
import os, requests

r = requests.get("https://api.avtovincod.ru/fines-gis", params={"sts": "0000000000"},
                 headers={"Authorization": "Bearer " + os.environ["AVC_TOKEN"]}, timeout=75)
d = r.json()
print(d if d.get("success") else f'{d["code"]}: {d["error"]}')
// Node.js 18+, файл .mjs (await на верхнем уровне)
const url = "https://api.avtovincod.ru/fines-gis?" + new URLSearchParams({ sts: "0000000000" });
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AVC_TOKEN}` },
                               signal: AbortSignal.timeout(75000) });
const d = await res.json();
console.log(d.success ? d : `${d.code}: ${d.error}`);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
	"os"
	"time"
)

func main() {
	q := url.Values{}
	q.Set("sts", "0000000000")
	req, _ := http.NewRequest("GET", "https://api.avtovincod.ru/fines-gis?"+q.Encode(), nil)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AVC_TOKEN"))
	resp, err := (&http.Client{Timeout: 75 * time.Second}).Do(req)
	if err != nil {
		panic(err)
	}
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(resp.StatusCode, string(body))
}
// Java 11+
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.*;
import java.nio.charset.StandardCharsets;
import java.time.Duration;

public class AvtoVinCod {
    public static void main(String[] args) throws Exception {
        String q = "sts=" + URLEncoder.encode("0000000000", StandardCharsets.UTF_8);
        HttpRequest req = HttpRequest.newBuilder(URI.create("https://api.avtovincod.ru/fines-gis?" + q))
            .header("Authorization", "Bearer " + System.getenv("AVC_TOKEN"))
            .timeout(Duration.ofSeconds(75)).GET().build();
        HttpResponse<String> resp = HttpClient.newHttpClient()
            .send(req, HttpResponse.BodyHandlers.ofString());
        System.out.println(resp.statusCode() + " " + resp.body());
    }
}
// .NET 6+
using System.Net.Http.Headers;

using var http = new HttpClient { Timeout = TimeSpan.FromSeconds(75) };
http.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", Environment.GetEnvironmentVariable("AVC_TOKEN"));
var url = "https://api.avtovincod.ru/fines-gis?" + "sts=" + Uri.EscapeDataString("0000000000");
var resp = await http.GetAsync(url);
Console.WriteLine((int)resp.StatusCode + " " + await resp.Content.ReadAsStringAsync());
require "net/http"
require "json"

uri = URI("https://api.avtovincod.ru/fines-gis")
uri.query = URI.encode_www_form(sts: "0000000000")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer #{ENV["AVC_TOKEN"]}"
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true, read_timeout: 75) { |h| h.request(req) }
d = JSON.parse(res.body)
puts d["success"] == 1 ? d : "#{d["code"]}: #{d["error"]}"
Токен = "ВАШ_ТОКЕН";
Соединение = Новый HTTPСоединение("api.avtovincod.ru", 443, , , , 75, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/fines-gis?" + "sts=" + КодироватьСтроку("0000000000", СпособКодированияСтроки.КодировкаURL));
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Ответ = Соединение.Получить(Запрос);

Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку("UTF-8"));
Данные = ПрочитатьJSON(Чтение);
Чтение.Закрыть();

Если Данные.success = 1 Тогда
    Сообщить("Проверка выполнена");
Иначе
    Сообщить(Данные.code + ": " + Данные.error);
КонецЕсли;

Бесплатных тестовых периодов и долгих согласований нет: пополните баланс в личном кабинете и сразу проверяйте реальные машины. Токен выдаётся при регистрации, деньги списываются только по правилам метода (раздел "Тарификация"). Нужен доступ из ИИ-ассистента: MCP-сервер.

Примеры ответов: успешный, ошибка, источник недоступен

Успешный запрос

GET https://api.avtovincod.ru/fines-gis?sts=9900123456
Authorization: Bearer ВАШ_ТОКЕН

HTTP 200, success: 1. Списание по тарифу метода, сумма и остаток в блоке billing (цифры в примере условные).

{
  "success": 1,
  "query": { "sts": "9900123456" },
  "found": 1,
  "unpaid": 1,
  "total_sum": 1500,
  "fines": [ ... ],
  "complete": true,
  "billing": {
    "charged": 10,
    "currency": "RUB",
    "billed": true,
    "balance": 990,
    "requestId": 1234567
  }
}

Бесплатная проба без списания: https://api.avtovincod.ru/fines-gis?sts=0000000000 вернёт ответ-образец по этой же схеме с полем testMode: true и charged: 0. Тестовые значения есть и для driverLicense=0000000000 и numPost=18800000000000000000.

Неуспешный запрос

GET https://api.avtovincod.ru/fines-gis?sts=99001234
Authorization: Bearer ВАШ_ТОКЕН

Ошибка в параметрах: HTTP 400, код STS_INVALID, текст ошибки можно показать пользователю. Бесплатно.

{
  "success": 0,
  "error": "Неверный номер СТС. Пример: 5058794047 или 77УХ123456.",
  "code": "STS_INVALID"
}

Ведомства не ответили

Поиск через СМЭВ не дал ответа или ведомства ответили ошибкой: HTTP 200, PROVIDER_FAIL. Бесплатно, повторите через несколько минут.

{
  "success": 0,
  "error": "Проверка не выполнена, повторите позже",
  "code": "PROVIDER_FAIL"
}

Сервис недоступен

HTTP 503, SERVICE_UNAVAILABLE. Бесплатно, повторите запрос позже.

{
  "success": 0,
  "error": "Сервис временно недоступен, повторите позже",
  "code": "SERVICE_UNAVAILABLE"
}

Тарификация

Списание один раз за выполненную проверку (success: 1): и когда штрафы найдены, и когда их нет, потому что пустой список - это ответ ведомств. Ответ с complete: false тоже оплачивается: найденные в нём штрафы настоящие. Ошибки в параметрах, PROVIDER_FAIL, SERVICE_UNAVAILABLE и остальные ошибки бесплатны. Цена и подключение метода в личном кабинете.

В ответ добавляется блок billing: сколько списано за этот запрос (charged, в рублях), платный ли он (billed), остаток баланса после запроса (balance) и номер в истории запросов (requestId). Те же данные в заголовках X-Charged, X-Balance, X-Request-Id. Нет блока - запрос не списан. Подробнее о блоке billing.

Без программиста: кабинет, отчёт, пакет, мониторинг

MCP-сервер для ИИ-ассистентов

Подключите проверки к ИИ-ассистенту: Claude, Cursor, VS Code и другим клиентам с поддержкой MCP (Model Context Protocol). Ассистент сам вызывает нужный метод по вашему токену, и проверку можно запросить обычными словами: "есть ли неоплаченные штрафы по СТС 9900123456 и сколько платить со скидкой". Удобно бухгалтерии автопарка и менеджерам лизинга без программиста, а разработчику помогает быстро собрать прототип интеграции.

Для генераторов клиентов и ИИ-агентов: OpenAPI-спецификация метода (YAML). Все методы сразу: /openapi.yaml.

Смежные методы

Частые вопросы

Откуда берутся данные о штрафах?

Запрос уходит через СМЭВ (система межведомственного электронного взаимодействия) в ГИС ГМП, государственную информационную систему о государственных и муниципальных платежах Федерального казначейства, и в информационные системы ведомств. Начисления в ГИС ГМП размещают сами ведомства, поэтому сумма, скидка и реквизиты в ответе те же, что увидит банк при оплате.

Чем этот метод отличается от Проверки штрафов (/fines)?

Параметры и прежние поля ответа те же, поэтому для перехода достаточно сменить адрес /fines на /fines-gis. В ответе больше данных: размер скидки и сумма со скидкой, статья КоАП, дата, место и координаты нарушения, срок оплаты и реквизиты для платежа. Добавлен поиск по ИНН организации и ИП.

Что значит complete: false?

Часть ведомств не успела ответить за время запроса, поэтому список может быть неполным. Найденные штрафы в таком ответе настоящие. Повторите запрос позже, чтобы получить полный список.

Штрафов нет: за запрос спишут деньги?

Да. Пустой список при success: 1 - выполненная проверка: ведомства ответили, что неоплаченных штрафов нет. Бесплатны только ошибки: неверные параметры, PROVIDER_FAIL и SERVICE_UNAVAILABLE.

Почему по СТС не видно оплаченных штрафов?

По СТС, ВУ и ИНН ГИС ГМП отдаёт начисления, которые ждут оплаты. Проверить конкретное постановление, в том числе оплаченное, можно по номеру УИН (параметр numPost): у оплаченного paid: true.

Как узнать, действует ли скидка?

enable_discount: true значит, что скидка действует на дату запроса; размер в discount_percent, срок в date_discount, сумма к оплате со скидкой в sum_with_discount. Размер и срок скидки передаёт ведомство вместе с начислением; после срока платится полная сумма sum.

Можно ли проверить штрафы всего автопарка?

Да: по СТС каждой машины, по водительским удостоверениям или по ИНН и КПП организации (параметр org). Для списка машин удобна пакетная проверка в личном кабинете, а для регулярного контроля новых штрафов - мониторинг.

Проверить без программиста

В личном кабинете есть консоль проверки: введите номер и получите ответ в читаемом виде, без кода.

Открыть кабинет