Заявление о снятии с учета/переуступке контракта (кредитного договора)

Для обращения к ресурсу необходимо отправлять запрос на:

Ресурс /v1/contract-close-applications

Ресурс позволяет отправить в Банк Заявление о переуступке/снятии с учета контракта (кредитного договора).

Шаги:

1. Получить AccessToken.

2. Сформировать ЭП.

3. Отправить запрос.

4. Получить статус.

5. Получить документ

Для создания запроса необходимо отправить POST-запрос (/v1/contract-close-applications), в котором передать авторизационный токен к данным собственной/дочерней организации (Access Token) и реквизиты запроса переуступки/снятия валютного контракта. Авторизационный токен передается в параметре Authorization заголовка запроса.

Чтобы получить доступ к ресурсу, необходимо передать в scope сервис CONTRACT_CLOSE_APPLICATION.

Модель запроса и ответа

Наименование Описание
Параметры заголовка
Authorization String
Access token собственной/дочерней организации, полученный через SSO.
Пример: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1
Параметры запроса
ContractCloseApplication {
additionalInfo (string, optional) Дополнительная информация (комментарий) пользователя,
authPersonName (string) ФИО ответственного лица,
authPersonTelfax (string) Телефон ответственного лица,
bankComment (string, optional, read only) Банковский комментарий к статусу документа,
bankControlStatementType (string) Тип ВБК= [ON_CONTRACT, ON_CREDIT]
stringEnum:"ON_CONTRACT", "ON_CREDIT",
bankStatus (string, optional, read only) Статус документа,
bfAttachments (Array[BfAttachment], optional) Прикрепленные большие файлы,
closeReasonCode (string) Код основания для снятия контракта с учета,
contractBankNumber (string) Номер контракта (кредитного договора), установленный Банком,
contractDate (string, optional) Дата контракта (кредитного договора),
contractNumber (string, optional) Номер контракта (кредитного договора),
date (string) Дата составления документа,
digestSignatures (Array[Signature], optional) Электронные подписи по дайджесту документа,
externalId (string) Идентификатор документа в организации-партнере,
failReasons (Array[FailReason], optional, read only) Причины отказа в части данных контратка (кредитного договора),
number (string, optional) Номер документа,
otherBankInfo (string, optional) Наименование банка, в который переводится контракт,
reasonDocDate (string, optional) Дата документа, подтверждающего уступку,
reasonDocNumber (string, optional) Номер документа, подтверждающего уступку,
residentBuilding (string, optional) Корпус/строение организации-резидента,
residentCity (string, optional) Город организации-резидента,
residentDistrict (string, optional) Район организации-резидента,
residentFlat (string, optional) Номер офиса организации-резидента,
residentHouse (string, optional) Номер дома организации-резидента,
residentKpp (string, optional) КПП организации-резидента,
residentName (string, optional) Наименование организации-резидента,
residentOgrn (string, optional) ОГРН организации-резидента,
residentRegDate (string, optional) Дата внесения организации-резидента в государственный реестр,
residentSettlementName (string, optional) Населенный пункт организации-резидента,
residentState (string, optional) Субъект РФ организации-резидента,
residentStreet (string, optional) Улица организации-резидента,
residentTaxNumber (string, optional) ИНН организации-резидента
}BfAttachment {
fileId (string, optional) Уникальный идентификатор файла,
fileName (string, optional, read only) Имя файла
}Signature {
base64Encoded (string) Значение электронной подписи, закодированное в Base64,
certificateUuid (string) Уникальный идентификатор сертификата ключа проверки электронной подписи (UUID)
}FailReason {
docField (string, optional) Поле документа,
reasonComment (string, optional) Правило заполнения/замечания,
reasonId (string, optional) Код причины отказа,
returnComment (string, optional) Комментарий
}

Пример:

{
   "actualDebtAmount":1.01,
   "amount":1.01,
   "bankComment":"string",
   "bankControlStatementChangeApplicationInfo":{
      "authPersonName":"Иванов Иван Иванович",
      "authPersonTelfax":"4955005550",
      "basisDocs":[
         {
            "date":"2018-12-31",
            "number":"2222222222"
         }
      ],
      "bfAttachments":[
         {
            "fileId":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6",
            "fileName":"SB_7718830000_40702810038290010000_T18.txt"
         }
      ],
      "contentInfo":"Изменение траншей и процентных платежей по кредитному договору",
      "contractExternalId":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6",
      "externalId":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6",
      "inUSRLE":false,
      "prolongation":false
   },
   "bankStatus":"string",
   "collateralAmount":1.01,
   "contractDate":"2018-12-31",
   "contractEndDate":"2018-12-31",
   "contractNumber":"123АБВ",
   "credRepayPayments":[
      {
         "condition":"АБВ123",
         "currencyCode":"840",
         "interestAmount":1.01,
         "interestDate":"2018-12-31",
         "principalAmount":1.01,
         "principalDate":"2018-12-31"
      }
   ],
   "creditAttractions":[
      {
         "amount":1.01,
         "interestCredit":1.01,
         "nonResidentCountryCode":"643",
         "nonResidentName":"Kazan"
      }
   ],
   "creditPayPeriodCode":"1",
   "currFixInterestRate":1.01,
   "currencyCode":"840",
   "currencyEarningsAmount":1.01,
   "date":"2018-12-31",
   "digestSignatures":[
      {
         "base64Encoded":"HlaeIHXXEcGT1bFxo1NlpAzpr+kJ2IQrcxVdvDTep6xjsmD1FDb+6NIyLT+/T24S0mPfVCU75sieOMt71TBS7w==",
         "certificateUuid":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6"
      }
   ],
   "hasDirectInvesting":false,
   "increaseRate":1.01,
   "liborRate":"Л06",
   "nonResidents":[
      {
         "countryCode":"643",
         "countryName":"РОССИЯ",
         "name":"Kazan"
      }
   ],
   "number":"1",
   "otherPayments":"АБВ123",
   "otherRateMethod":"АБВ123",
   "tranches":[
      {
         "amount":1.01,
         "currencyCode":"840",
         "entryDate":"2018-12-31",
         "periodCode":"1"
      }
   ],
   "transferAmount":1.01
}

Для получения значения параметра contractBankNumber необходимо выполнить запрос актуальной ВБК из Банка, используя ресурс /v1/bank-control-statements/reg-curr-contracts/{externalId}

Значения closeReasonCode

Значение Описание
6.1.1 Перевод из банка УК контракта (кредитного договора) на обслуживание в другой уполномоченный банк (включая перевод из одного филиала в другой филиал банка УК, из головного офиса банка УК в филиал банка УК, из филиала банка УК в головной офис банка УК), а также при закрытии резидентом всех расчетных счетов в банке УК.
6.1.2 Исполнение сторонами всех обязательств по контракту (кредитному договору), включая исполнение обязательств третьим лицом.
6.1.3 Уступка резидентом требования по контракту (кредитному договору) другому лицу - резиденту либо перевод долга резидентом по контракту (кредитному договору) на другое лицо - резидента.
6.1.4 Уступка резидентом требования по контракту (кредитному договору) нерезиденту либо перевод долга резидентом по контракту (кредитному договору) на нерезидента.
6.1.5 Исполнение (прекращение) обязательств по контракту (кредитному договору) по иным, не указанным в подпункте 6.1.2 пункта 6.1 Инструкции № 181-И, основаниям, предусмотренным законодательством Российской Федерации.
6.1.6 Прекращение оснований, требующих в соответствии с Инструкцией № 181-И постановки на учет контракта (кредитного договора), в том числе вследствие внесения соответствующих изменений и (или) дополнений в контракт (кредитный договор), а также в случае если контракт (кредитный договор) был ошибочно принят на учет при отсутствии в контракте (кредитном договоре) оснований, требующих его принятия на учет.

Передача электронной подписи вместе с документом

Для передачи ЭП под документом используется массив digestSignatures, в котором передаются элементы типа Signature (все поля обязательны):

Наименования поля Описания поля Пример
base64Encoded (string) Значение ЭП документа HlaeIHXXEcGT1bFxo1NlpAzpr+kJ2IQrcxVdvDTep6xjsmD1FDb+6NIyLT+/T24S0mPfVCU75sieOMt71TBS7w==
certificateUuid (string) Идентификатор сертификата, использованного при создании ЭП ( можно узнать, обратившись к ресурсу /v1/crypto) 22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6

С документом «Переуступка/Снятие с учета Валютного контракта» можно передать одну или две электронных подписей (или не передавать при отсутствии ЭП) вместе с реквизитами создаваемого документа.
Если ЭП передана/ы в API, то они сохраняются вместе с документом, а сам документ продвигается дальше по своему жизненному циклу.
Если ЭП не была/и передана/ы, то документ сохраняется в своем начальном статусе и ожидает дальнейшего подписания в интерфейсе СББОЛ.

Документ может быть подписан следующими наборами подписей:

  • одна (единственная) подпись;
  • первая и вторая подписи.

При этом подписант, обладающий полномочием единственной подписи, не может «сочетаться» с подписантом, владеющим первой или второй подписью.

Очередность наложения ЭП при наложении первой и второй подписей не имеет значения, состав полей дайджеста не изменяется. Тип подписи указывается в настройках криптопрофиля, когда пользователь Партнера создается в Банке.

Формирование электронной подписи (ГОСТ 2012)

Теги дайджеста должны быть отсортированы по алфавиту. В таблице bfAttachments UUID-ы сортируются по возрастанию.
В дайджесте не указываются значения number и блок linkedDocs.

Формат дайджеста

Наименование поля Описание поля Пример
additionalInfo Дополнительная информация (комментарий) пользователя Доп. инфо
authPersonName ФИО ответственного лица Петров Петр Иванович
authPersonTelfax Телефон ответственного лица 79263689379
bankControlStatementType Тип ВБК ON_CONTRACT
ON_CONTRACT - контракт
ON_CREDIT - кредитный договор
reasonDocDate Дата документа, подтверждающего услугу 27.03.2019
reasonDocNumber Номер документа, подтверждающего услугу 123АБВ
date Дата документа 27.03.2019
externalId Идентификатор документа в организации-партнере 550e8400-e29b-41d4-a716-446655440000
closeReasonCode Причина снятия с учета (в блоке только одна из причин (reason6XX) может принимать значение true) 06.01.2003
contractBankNumber Номер контракта (кредитного договора), установленный Банком 19060009/1481/1948/3/1
contractDate Дата контракта (кредитного договора) 27.03.2018
contractNumber Номер контракта (кредитного договора) АБВ123
residentName Наименование организации-резидента "Общество с ограниченной ответственностью"Воронежская Компания""
otherBankInfo Наименование банка, в который переводится контракт АО "Альфа Банк"
residentKpp КПП организации-резидента 772201001
residentOgrn ОГРН организации-резидента 1,09775E+12
residentRegDate Дата внесения в государственный реестр 27.03.2019
residentTaxNumber ИНН организации-резидента 7,72722E+11
residentHouse Корпус/строение 1
residentCity Город организации-резидента Воронеж
residentDistrict Район организации-резидента Воронежский
residentFlat Номер офиса организации-резидента 1
residentBuilding Корпус/строение организации-резидента 2
residentSettlementName Населенный пункт Воронеж
residentState Субъект РФ Воронежская область
residentStreet Улица Воронежская
Table=BfAttachments Значение указывается при наличии UUID-ов больших файлов
fileId UUID больших файлов 31663ef5-7975-4016-b0f3-f1d70a4e9c22
# Разделитель значений UUID-ов больших файлов

Пример:

additionalInfo=Дополнительная информация
authPersonName=Иванов Иван Иванович
authPersonTelfax=4955005550
bankControlStatementType=ON_CONTRACT
closeReasonCode=6.1.3
contractBankNumber=120123A0/1234/GU23/1/2
contractDate=2019-11-11
contractNumber=123123
date=2019-11-11
externalId=c6553f90-e6e0-403e-82b6-697c85fd7c43
reasonDocDate=2019-11-11
reasonDocNumber=1
residentBuilding=1
residentCity=Воронеж
residentDistrict=Воронежский
residentFlat=1
residentHouse=2
residentKpp=222201001
residentName=Общество с ограниченной ответственностью "Клиент"
residentOgrn=380123456789012
residentRegDate=2019-11-11
residentSettlementName=Воронеж
residentState=Воронежская область
residentStreet=Воронежская
residentTaxNumber=7707083893
TABLES
Table=BfAttachments
fileId=dd6c4236-78dd-452f-b3f7-773682195a50
#

Подписание запроса транспортной подписью (JWS)

Коды возврата

Ресурс /v1/contract-close-applications/{externalId}/state

Ресурс позволяет получить статус ранее отправленного заявления.

Шаги:

1. Получить AccessToken.

2. Отправить запрос

Для получения статуса необходимо отправить GET-запрос (/v1/contract-close-applications/{externalId}/state), в котором передать авторизационный токен к данным собственной/дочерней организации (Access Token) и идентификатор документа (externalId). Авторизационный токен передается в параметре Authorization заголовка запроса.

Чтобы получить доступ к ресурсу, необходимо передать в scope сервис CONTRACT_CLOSE_APPLICATION.

Модель запроса

Наименование Описание
Параметры заголовка
Authorization String
Access token, полученный через SSO.
Пример: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1
Параметры запроса
externalId String Идентификатор документа, присвоенный пользователем

Пример:

curl -X GET --header "Accept: /" --header
'Authorization: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1'
'http://edupirfintech.sberbank.ru:9443/fintech/api/v1/contract-close-applications/
ffffffff-fffa-458e-ad92-fff9497303ba/state'

Модель ответа

Наименование Описание
DocState
bankComment (string, optional, read only) Банковский комментарий к статусу документа,
bankStatus (string, optional) Статус документа,
channelInfo (string, optional, read only) Комментарий, специфичный для документа, полученного по данному каналу,

Пример:

{
    "bankStatus":"CHECKERROR",
    "bankComment":"Загрузите документы, подтверждающие выбранное основание\n",
    "channelInfo":null
}

Возможные статусы

Код состояние документа Наименование статуса Назначение
Промежуточные статусы/Продолжать опрашивать
ACCEPTED Принят Электронный документ принят на стороне Банка
ACCEPTED_BY_ABS Принят АБС Электронный документ был принят к обработке в АБС Банка
CREATED Создан Документ записан в БД, проверки не выполнялись
DELIVERED Доставлен Запрос доставлен в ДБО и взят в обработку
EXPORTED Выгружен Документ выгружен в АБС для дальнейшей обработки
TRIED_BY_CFE Проверяется ВК Электронный документ на проверке Валютного контроля
Окончательные статусы/Прекратить опрос
INVALIDEDS ЭП/АСП не верна Проверки документа привели к неуспешному результату
REQUISITEERROR Ошибка реквизитов Логические проверки документа привели к неуспешному результату
REFUSEDBYABS Отказан АБС Запрос доставлен в ДБО и не прошел проверку
REFUSED_BY_CFE Отказан ВК Электронный документ был отклонен Валютным контролем
Окончательные(Успешные) статусы/Прекратить опрос
ACCEPTED_BY_CFE Принят ВК Электронный документ был принят Валютным контролем

Коды возврата

Ресурс /v1/contract-close-applications/{externalId}

Ресурс позволяет получить атрибуты ранее отправленного заявления.

Шаги:

1. Получить AccessToken.

2. Отправить запрос.

Для получения документа необходимо отправить GET-запрос (/v1/contract-close-applications/{externalId}), в котором необходимо передать авторизационный токен к данным собственной/дочерней организации (Access Token) и внешний идентификатор поручения. Авторизационный токен передается в параметре Authorization заголовка запроса.

Чтобы получить доступ к ресурсу, необходимо передать в scope сервис CONTRACT_CLOSE_APPLICATION.

Модель запроса и ответа

Наименование Описание
Параметры заголовка
Authorization String
Access token, полученный через SSO.
Пример: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1
Параметры запроса
externalId String
Идентификатор документа, присвоенный сервисом

Пример:

curl -X GET --header "Accept: /" --header
'Authorization: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1'
'https://edupirfintech.sberbank.ru:9443/fintech/api/v1/
contract-close-applications/ffffffff-fffa-458e-ad92-fff9497303ba/state'

Модель ответа

Соответствует модели запроса и ответа /v1/contract-close-applications.

Подписание запроса транспортной подписью (JWS)

Дополнительная информация

Подписание запроса транспортной подписью

Content-Type может содержать одно из двух значений:

  • application/json – запрос без подписи
  • application/jose – запрос, подписанный транспортной подписью

Если Content-Type имеет значение application/jose, то запрос должен содержать данные (реквизитный состав платежного документа) в виде компактной сериализации RFC 7515: JSON Web Signature (JWS).

JWS состоит из:

1. Заголовка (Header)
2. JSON-документа с реквизитным составом платежного поручения (Payload)
3. Подписи запроса (Signature)

Формирование компактной сериализации JWS

JWS формируется из трех составляющих:

Base64Url(Header) || ’.’ ||  Base64Url(Payload) || ’.’ || Base64Url(Signature)

Signature - это подпись данных приватной частью ключевой пары клиента (используется приватный ключ парный сертификату клиента с UUID, указанному в Заголовке (Header) в параметре kid).
Подпись вычисляется по алгоритму указанному в Заголовке (Header) в параметре alg, в данном случае gost34.10-2012, и вычисляется от исходных данных:

Base64Url(Header) || ‘.’ || Base64Url(Payload).

Формирование исходных данных для вычисления подписи описано в спецификации RFC 7515: JSON Web Signature (JWS).

Следует отметить, что при кодировании JWS используется преобразование Base64Url, отличающееся от Base64 преобразования.
Условно это преобразование можно представить следующим образом:

Base64Url(x) := Base64(x).Split(‘=’)[0].Replace(‘+’, ’-’).Replace(‘/’, ’_’)

здесь функция Split(x), разбивает строку на части ([i] означает взятие i–ой части), используя символ разделитель x, функция Replace(x,y) заменяет все вхождения символа x на символ y.

Преобразование BASE64URL, отличается от BASE64 преобразования:

BASE64URL BASE64
- (minus) +
_ (underline) /
  • В BASE64URL не используется (опускается) padding, т.е. не добавляются знаки ‘=’ на конце закодированного содержимого Padding of Encoded Data.

В ответе на запрос сервер возвращает JSON-документ, который содержит реквизитный состав подготовленного черновика рублевого платежного поручения в статусе Создан.

Коды возврата

Код возврата Описание кода возврата Причина возникновения
200 (GET-запрос) ОК
201 (POST-запрос) CREATED
Создан
400 DESERIALIZATION_FAULT
Неверный формат запроса Неверный формат запроса
WORKFLOW_FAULT
Для внешнего сервиса недоступны операции по счету: 40702810ХХХХХХХХХХХХ Для внешнего сервиса недоступны операции по счету:

счет не добавлен в список разрешенных в оферте;
внешний сервис заблокирован в СББОЛ;
счет указан неверно.

Отсутствует доступный открытый рублевый расчетный счет у организации плательщика
Документ с такими реквизитами уже существует Документ с такими реквизитами уже существует. Проверка по номер документа в течении года.
Не указан идентификатор сертификата подписи Не указан идентификатор сертификата подписи(параметр kid заголовка JWS)
Некорректный формат параметра kid заголовка JWS Некорректный формат параметра kid заголовка JWS(ожидается UUID)
VALIDATION_FAULT
Ошибка валидации Ошибка валидации данных запроса с указанием некорректных значений. Значения полей модели или параметров запроса не соответствуют допустимым и определенным в модели.
SIGN_CHECK_EXCEPTION
Подлинность подписи не установлена/Сертификат не обнаружен или не является активным Ошибка возникает, если не удалось установить подлинность подписи
401 UNAUTHORIZED
accessToken not found by value =хххххххх-хххх-хххх-хххх-хххххххххххх-х Указан некорректный или просроченный access_token.
403 ACTION_ACCESS_EXCEPTION
Операция не может быть выполнена: доступ к ресурсу запрещен У пользователя нет прав на использование соответствующего сервиса SberBusinessAPI, доступ к которому не предусмотрен настройками scope; У пользователя отсутствует оферта с внешним сервисом.
415 JWS_EXCEPTED
В соответствии с текущими настройками сервиса с clientId=%s необходимо использовать запрос в формате JWS Compact Serialization Ошибка возникает, если в настройках внешних сервисов выставлен флаг "Требуется подпись для внешнего сервиса"
500 UNKNOWN_EXCEPTION
Внутренняя ошибка сервера
503 UNAVAILABLE_RESOURCE_EXCEPTION
Сервис временно недоступен Проводятся технические работы

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней