Главная → Документация → Штрафы ГИС ГМП
Штрафы ГИБДД из ГИС ГМП: API по СТС, ВУ и номеру постановления
Неоплаченные штрафы ГИБДД с полными данными начисления: сумма к оплате, скидка и до какой даты она действует, сумма со скидкой, статья КоАП, дата, место и координаты нарушения, подразделение и реквизиты для оплаты. Запрос уходит через СМЭВ в ГИС ГМП и информационные системы ведомств. Поиск по СТС, водительскому удостоверению, номеру постановления (УИН), ИНН организации или ИП.
Откуда данные
Метод не хранит штрафы у себя: каждый запрос - живой поиск в государственных системах.
GET /fines-giscomplete - ответили ли все- СМЭВ - система межведомственного электронного взаимодействия, через неё государственные системы обмениваются данными.
- ГИС ГМП - Государственная информационная система о государственных и муниципальных платежах Федерального казначейства. Начисления в неё размещают сами ведомства, поэтому сумма, скидка и реквизиты в ответе те же, что увидит банк при оплате.
- Ведомства отвечают каждое в своё время. Сервис ждёт ответы и повторяет поиск, пока все не ответят, обычно 5-30 секунд, не дольше 60. Не успели все - в ответе
"complete": false, найденные штрафы при этом настоящие.
Что в ответе
- Деньги. Сумма к оплате, начислено по постановлению, частичная оплата, размер скидки, до какой даты она действует и сумма со скидкой.
- Нарушение. Статья КоАП, что нарушено, дата и время, место и координаты, подразделение.
- Оплата. Номер постановления (УИН), срок оплаты и реквизиты: получатель, ИНН, КПП, БИК, счёт, КБК, ОКТМО, назначение платежа.
Переход с Проверки штрафов
Параметры и прежние поля ответа совпадают с Проверкой штрафов: смените адрес /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 | одно постановление по номеру (УИН), в том числе оплаченное. Синоним: uin | 20 или 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 | сумма к оплате по неоплаченным, руб. (без учёта скидки) |
complete | true - ответили все ведомства; false - часть не успела, список может быть неполным |
checkedAt | дата и время проверки (ISO 8601) |
fines[].num_post | номер постановления (УИН), 20 или 25 цифр |
fines[].sum | сумма к оплате сейчас, руб., без учёта скидки |
fines[].date_post | дата постановления, YYYY-MM-DD |
fines[].division_name | подразделение, вынесшее постановление |
fines[].enable_discount | true - скидка действует на дату запроса |
fines[].date_discount | до какой даты действует скидка, YYYY-MM-DD |
fines[].paid | true - оплачен, 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, ключи остаются на месте. Повторы одного постановления убраны, свежие постановления первыми.
Как читать ответ
- Сколько платить. Пока
enable_discount: true, к оплатеsum_with_discountдо датыdate_discount; после неё - полная суммаsum.total_sumсчитается без скидки. - Полнота.
complete: false- не все ведомства успели ответить: найденные штрафы показывайте, но предупредите, что список может быть неполным, и повторите запрос позже. - Оплаченные. По СТС, ВУ и ИНН приходят начисления, ожидающие оплаты. Оплату конкретного постановления проверяйте по УИН (
numPost): у оплаченногоpaid: true. Сведения об оплате доходят до ГИС ГМП не мгновенно, поэтому только что оплаченный штраф может ещё какое-то время приходить в поиске. - Реквизиты в
payment- для платёжного поручения организации; при оплате по УИН в банке реквизиты подставляются сами. - Пустой список
fines: []приsuccess: 1- ведомства ответили, что неоплаченных штрафов нет. Это результат проверки.
Пример ответа: штрафов нет
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 | слишком много запросов с одного IP | 429 |
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.
Без программиста: кабинет, отчёт, пакет, мониторинг
- Проверка в кабинете. Раздел «Проверка»: введите СТС, ВУ или УИН и получите штрафы в читаемом виде, с реквизитами.
- Полный отчёт по машине. По госномеру, VIN или кузову: номер СТС берётся из истории регистрации, и штрафы проверяются сами.
- Пакетная проверка. Загрузите файл со списком машин и номерами СТС, результат придёт таблицей и в Excel.
- Мониторинг. Проверка автопарка каждый день или раз в неделю с уведомлением о новом штрафе, пока действует скидка.
MCP-сервер для ИИ-ассистентов
Подключите проверки к ИИ-ассистенту: Claude, Cursor, VS Code и другим клиентам с поддержкой MCP (Model Context Protocol). Ассистент сам вызывает нужный метод по вашему токену, и проверку можно запросить обычными словами: "есть ли неоплаченные штрафы по СТС 9900123456 и сколько платить со скидкой". Удобно бухгалтерии автопарка и менеджерам лизинга без программиста, а разработчику помогает быстро собрать прототип интеграции.
- Адрес сервера:
https://api.avtovincod.ru/mcp, авторизация тем же токеном (Authorization: Bearer ВАШ_ТОКЕН). - Этот метод в MCP - инструмент
fines_gis_check; всего инструментов 44. - Цены и списания как у API, в результате тоже есть блок
billing. Тестовые значения работают бесплатно. - Инструкция по подключению: avtovincod.ru/docs/mcp/
Для генераторов клиентов и ИИ-агентов: OpenAPI-спецификация метода (YAML). Все методы сразу: /openapi.yaml.
Смежные методы
- Проверка штрафов: прежний метод с теми же параметрами и базовыми полями.
- VIN по госномеру: VIN, кузов и номер СТС по госномеру, чтобы затем проверить штрафы.
- История регистрации: владельцы, характеристики и номер СТС по VIN.
- Исполнительные производства: долги, в том числе неоплаченные штрафы, переданные приставам.
Частые вопросы
Откуда берутся данные о штрафах?
Запрос уходит через СМЭВ (система межведомственного электронного взаимодействия) в ГИС ГМП, государственную информационную систему о государственных и муниципальных платежах Федерального казначейства, и в информационные системы ведомств. Начисления в ГИС ГМП размещают сами ведомства, поэтому сумма, скидка и реквизиты в ответе те же, что увидит банк при оплате.
Чем этот метод отличается от Проверки штрафов (/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). Для списка машин удобна пакетная проверка в личном кабинете, а для регулярного контроля новых штрафов - мониторинг.
Проверить без программиста
В личном кабинете есть консоль проверки: введите номер и получите ответ в читаемом виде, без кода.