# Самозанятые

# Точки входа

Боевое (production) окружение для авторизации: https://accounts.mandarinbank.com/ (opens new window)
Боевое (production) окружение для запросов: https://api.psp.io/ (opens new window)

# Аутентификация запросов

Каждый запрос должен быть аутентифицирован с помощью токена (access_token), полученного в соответствии с протоколом OAuth 2.0 для приложений. Токен действует в течение 36 000 секунд (10 часов). Если срок действия истек, токен нужно запросить еще раз.

Обратитесь в Службу поддержки (opens new window), чтобы узнать ваш client_id и client_secret, чтобы получить access_token.

Запрос на получение токена

Включает в себя обязательные form-data параметры, которые передаются в теле запроса (параметры application.client_id и application.client_secret неизменны для приложения и хранятся на стороне клиента).

Параметр Описание Пример
grant_type Грант авторизации (всегда равен client_credentials). client_credentials
client_id Идентификатор клиента (равен значению application.client_id, предоставленному Mandarin). VvPtlhcyldKtkuoUWY42 pErdrj4er2AwFoBWrn8n
client_secret Секретный ключ-пароль клиента (равен значению application.client_secret, предоставленному Mandarin). uQfOIMsltZYL8x3XMqUGP5 iFM59PyFnKlN0UmD3Ihre2 Ry3AGazUAv5jPdUI4dBJqV 0Of6b9GFvWvzGahYnq2aVV xkxn9n4qWF57FP0C01Kp6l EtajhfYv3UZ2f4pAZ7
scope Запрашиваемые скоупы (области доступа):
например, self-employed:cheques.register - "Регистрация".
Разделитель - пробел.
Запрашивать можно любой список скоупов, при этом в ответе вернется тот список запрошенных скоупов, который может быть предоставлен для данного приложения.
self-employed:cheques.register self-employed:tin.bind self-employed:cheques.cancel

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

curl --location --request POST 'https://accounts.mandarinbank.com/oauth/token/' \
--form 'grant_type=client_credentials' \
--form 'client_id=VvPtlhcyldKtkuoUWY42pErdrj4er2AwFoBWrn8n' \
--form 'client_secret=uQfOIMsltZYL8x3XMqUGP5iFM59PyFnKlN0UmD3Ihre2Ry3AGazUAv5jPdUI4dBJqV0Of6b9GFvWvzGahYnq2aVVxkxn9n4qWF57FP0C01Kp6lEtajhfYv3UZ2f4pAZ7' \
--form 'scope=self-employed:cheques.register self-employed:tin.bind self-employed:cheques.cancel'

Ответ:

Параметр Описание Пример
access_token Токен (ключ доступа). VnuxZiW14mXBedDeZO7d W7GBmzPxMn
expires_in Срок действия токена (в секундах). Всегда равен 36 000 секунд (10 часов). 36000
token_type Тип токена (всегда равен Bearer). Bearer
scope Разрешенные скоупы (области доступа): например, self-employed:cheques.register - "Регистрация".
Разделитель - пробел.
Запрашивать можно любой список скоупов, при этом в ответе вернется тот список запрошенных скоупов, который может быть предоставлен для данного приложения.
self-employed:cheques.register
{
    "access_token": "VnuxZiW14mXBedDeZO7dW7GBmzPxMn",
    "expires_in": 36000,
    "token_type": "Bearer",
    "scope": "scope=self-employed:cheques.register self-employed:tin.bind self-employed:cheques.cancel"
}

Использование токена

Указывается в headers каждого запроса, в поле Authorization, после зарезервированного слова Bearer.

Authorization:Bearer VnuxZiW14mXBedDeZO7dW7GBmzPxMn

# Подключение

# Список статусов

Статус Описание
ACTIVE Является активным подтвержденным самозанятым
NOT_SELF_EMPLOYEE Не является самозанятым
REVOKED_EXPLICITLY Самозанятый отвязан
BINDING_IN_PROGRESS В процессе подтверждения статуса самозанятого и выдачи разрешения нашей системе в "Мой налог"
BINDING_IN_PROGRESS В процессе отзыва "статуса самозанятого" и разрешений нашей системе в "Мой налог"
INITIAL Пользователь системе не известен, операций по привязке этого пользователя ранее не производилось.
                                      |

# Подключение самозанятого по ИНН

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

Параметры запроса:

Параметр Обязательность Описание
inn Да Идентификационный номер налогоплательщика физического лица.
callback_url Да URL-адрес, на который будет отправлен ответ.

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

curl --location 'https://api.psp.io/self-employed/v1/tin/bind' \
--header 'MID: 1234' \
--header 'Authorization: Bearer Nwii9xFAfHjAWkk6PPOFUmpheFe123' \
--data '{
    "inn": "123456789012",
    "callback_url": "https://webhook.site/28b30c34-9fbd-4e98-b1b7-e20a999d530b"
}'

В случае успешного выполнения, ответ будет включать в себя:

  • id: уникальный идентификатор запроса.
  • inn: привязанный идентификационный номер налогоплательщика.

Синхронный ответ:

{
  "id": "3ab4e73d-a197-4a2f-9b92-69ef07468b04",
  "inn": "185796979287"
}

Callback:

ОБРАТИТЕ ВНИМАНИЕ!

Необходимо заранее сообщить url для отправки коллбэков в Mandarin!

{
   "id": "80cf6b02-795f-486f-a515-562a41a87429",
   "inn": "123456789012",
   "status": 0,
   "message": null
}

Параметры Callback:

Параметр Тип Описание
id uuid Идентификатор запроса
inn string ИНН
status integer Статус ответа от СМЗ, возможные варианты:
0 - успех;
1 - завершен с ошибкой;
8 - окончен срок перманентного запроса в ФНС;
408 - ошибка timeout (долгий ожидание ответа от ФНС)
message string Текст ошибки на статусы: 1, 8, 408

# Отключение самозанятого

Метод позволяет отменить привязку идентификационного номера налогоплательщика (ИНН) самозанятого.

Параметры запроса:

Параметр Обязательность Описание
inn Да Идентификационный номер налогоплательщика физического лица.
callback_url Да URL-адрес, на который будет отправлен ответ.

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

curl --location 'https://api.psp.io/self-employed/v1/tin/unbind' \
--header 'MID: 1234' \
--header 'Authorization: Bearer Nwii9xFAfHjAWkk6PPOFUmpheFe123' \
--data '{
    "inn": "123456789012",
    "callback_url": "https://webhook.site/28b30c34-9fbd-4e98-b1b7-e20a999d530b"
}'

Синхронный ответ:

{
  "id": "1b45f664-337c-4441-8f9b-ad018a9508c6",
  "inn": "185796979287"
}

Callback:

{
    "id": "9a79c2a6-d9f7-4613-a1ae-c31981e61eb9",
    "inn": "185796979287",
    "status": "REVOKED_EXPLICITLY"
}

Параметры ответа

  • id: идентификатор процесса отмены привязки.
  • inn: идентификационный номер налогоплательщика.
  • status: статус самозанятого

# Проверка статуса самозанятого

Метод позволяет получить сведения о самозанятых на основе идентификационного номера налогоплательщика (ИНН).

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

curl --location -g 'https://api.psp.io/self-employed/v1/tin/123456789012' \
--header 'MID: 1234' \
--header 'Authorization: Nwii9xFAfHjAWkk6PPOFUmpheFe123' \
--data ''

Синхронный ответ:

{
  "id": "9a79c2a6-d9f7-4613-a1ae-c31981e61eb9",
  "inn": "123456789012",
  "status": "ACTIVE"
}

Параметры ответа:

  • id - идентификатор процесса отмены привязки.
  • inn - идентификационный номер налогоплательщика.
  • status - статус самозанятого.

# Чеки

# Формирование чека

Метод для создания чека в сервисе СМЗ.

Параметры запроса:

Параметр Обязательность Описание
inn Да ИНН (идентификационный номер налогоплательщика), связанный с чеком.
цена Да Цена товара/услуги
title Да Название товара/услуги в чеке

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

curl --location 'https://api.psp.io/self-employed/v1/receipts' \
--header 'MID: 1234' \
--header 'Authorization: Bearer Nwii9xFAfHjAWkk6PPOFUmpheFe123' \
--data '{
    "inn": "123456789012",
    "price": 100,
    "title": "Оплата заказа №1234"
}'

Синхронный ответ:

{
  "cheque_id": "20172zyc8z",
  "inn": "123456789012",
  "message": "",
  "session_id": "edccadd7-e5f9-4de2-8088-64e6adf0959b",
  "status": "success",
  "url": "https://lknpd.nalog.ru/api/v1/receipt/623406197779/20172zyc8z/print",
  "title": "Оплата заказа №1234"
}

Параметры ответа

  • cheque_id - уникальный идентификатор созданного чека.
  • inn - ИНН, связанный с чеком.
  • message - дополнительная информация или сообщение об ошибке.
  • session_id - id созданного чека.
  • status - статус запроса, см. список статусов ниже.
  • url - URL-адрес для печати созданного чека.
  • title - Название товара/услуи, указанные в запросе.

Список статусов:

Статус Описание
success Чек успешно создан
failed Не удалось создать чек. Подробности ошибки можно проверить в полученном ответе (message).

# Аннулирование чека

Метод для отмены созданного чека.

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

curl --location --request PATCH 'https://api.psp.io/self-employed/v1/receipts' \
--header 'MID: 1234' \
--header 'Authorization: Bearer Nwii9xFAfHjAWkk6PPOFUmpheFe123' \
--data '{
    "cheque_id": "20172zyc8z",
    "inn": "123456789012",
    "code": "REFUND"
}'

Синхронный ответ

{
  "cheque_id": "20172zyc8z",
  "inn": "123456789012",
  "status": "cancelled",
  "url": "https://lknpd.nalog.ru/api/v1/receipt/623406197779/20172zyc8z/print"
}

# Получение информации по чеку

Запрос данных чека по его ID, который был получен при создании.

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

GET https://api.psp.io/self-employed/v1/receipts/<cheque_id> 

Синхронный ответ:

{
    "cheque_id": "test-123456789012-cheque-id",
    "inn": "123456789012",
    "message": null,
    "session_id": "0c518aea-2807-406a-830d-959b55a05c3e",
    "status": "success",
    "url": null,
    "title": "Оплата заказа №1234"
}

Ответ в случае, если чек не найден:

{
    "errors": [
        {
            "error_code": "NOT_FOUND",
            "parameter": "cheque_id",
            "description": "R\ne\nc\ne\ni\np\nt\n \nn\no\nt\n \nf\no\nu\nn\nd\n \nt\ne\ns\nt\n-\n1\n2\n3\n4\n5\n6\n7\n8\n9\n0\n1\n2\n-\nc\nh\ne\nq\nu\ne\n-\ni\nd"
        }
    ]
}