ym88659208ym87991671
Входящие платежные требования для холдингов | Документация для разработчиков

Входящие платежные требования

Обновлено 29 февраля 2024

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

  • Тестовый контур https://iftfintech.testsbi.sberbank.ru:9443

  • Промышленный контур https://fintech.sberbank.ru:9443

Создание заявления об отказе

Ресурс /v1/acceptance-letters позволяет создать заявление об отказе от акцепта входящего платежного требования.

Шаги

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

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

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

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

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

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

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

НаименованиеОписание
Параметры заголовка
Authorization (String)Access token, полученный через SSO
Пример: Bearer f8ad3141-b7e8-4924-92de-3de4fd0a464e-1
Параметры тела запроса
AcceptanceLetter {
amount (number)Сумма акцепта ,
bankComment (string, optional, read only)Банковский комментарий к статусу документа ,
bankStatus (string, optional, read only)Статус документа ,
date (string)Дата составления документа ,
digestSignatures (Array[Signature], optional)Электронные подписи по дайджесту документа ,
externalId (string)Идентификатор документа в организации-партнере (UUID) ,
nonAcceptReason (string)Причина отказа ,
number (string, optional)Номер документа ,
payReqAmount (number)Сумма платежного требования ,
payReqDate (string)Дата платежного требования ,
payReqExternalId (string)Идентификатор платежного требования ,
payReqLastDate (string)Дата окончания акцепта ,
payReqNumber (string)Номер платежного требования ,
payeeAccount (string)Счет получателя платежа ,
payeeBankBic (string)БИК получателя платежа ,
payeeBankCorrAccount (string)Корсчет банка получателя платежа ,
payeeInn (string)ИНН получателя платежа ,
payeeName (string)Полное наименование получателя платежа ,
payerAccount (string)Счет плательщика ,
payerBankBic (string)БИК банка плательщика ,
payerInn (string)ИНН плательщика ,
payerName (string)Полное наименование плательщика ,
type (string)Тип заявления = ['accept', 'nonAccept']
stringEnum:"accept", "nonAccept"
}Signature {
base64Encoded (string)Значение электронной подписи, закодированное в Base64 ,
certificateUuid (string)Уникальный идентификатор сертификата ключа проверки электронной подписи (UUID)
}

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

{
"amount":1.01,
"bankComment":"string",
"bankStatus":"string",
"date":"2018-12-31",
"digestSignatures":[
{
"base64Encoded":"HlaeIHXXEcGT1bFxo1NlpAzpr+kJ2IQrcxVdvDTep6xjsmD1FDb+6NIyLT+/T24S0mPfVCU75sieOMt71TBS7w==",
"certificateUuid":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6"
}
],
"externalId":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6",
"nonAcceptReason":"string",
"number":"1",
"payReqAmount":1.01,
"payReqDate":"2018-12-31",
"payReqExternalId":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6",
"payReqLastDate":"2018-12-31",
"payReqNumber":"2",
"payeeAccount":"40802810600000200000",
"payeeBankBic":"044525225",
"payeeBankCorrAccount":"30101810400000000225",
"payeeInn":"7707083893",
"payeeName":"Общество с ограниченной ответственностью \"Клиент\"",
"payerAccount":"40802810600000200000",
"payerBankBic":"044525225",
"payerInn":"7707083893",
"payerName":"Общество с ограниченной ответственностью \"Клиент\"",
"type":"accept"
}

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

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

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

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

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

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

При этом нельзя сочетать подпись, имеющую единственное полномочие, с подписью, имеющей первую или вторую подписи.

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

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

Наименование поляОписание поляПример
externalIdИдентификатор документа в организации-партнере (UUID)550e8400-e29b-41d4-a716-446655440000
dateДата составления документа2019-09-20
typeТип заявленияaccept
amountСумма акцепта100.01
payeeAccountСчет получателя платежа40702810500000006103
payeeBankBicБИК получателя платежа044525411
payeeBankCorrAccountКорсчет банка получателя платежа30101810400000000225
payeeInnИНН получателя платежа222201236445
payeeNameПолное наименование получателя платежаОбщество с ограниченной ответственностью "Получатель
payerAccountСчет плательщика40702810500000006109
payerBankBicБИК банка плательщика044525411
payerInnИНН плательщика222201236449
payerNameПолное наименование плательщикаОбщество с ограниченной ответственностью "Плательщик"
payReqNumberНомер платежного требования2
payReqDateДата платежного требования2019-09-20
payReqAmountСумма платежного требования100.01
payReqLastDateДата окончания акцепта2019-09-21

Пример дайджеста

externalId=550e8400-e29b-41d4-a716-446655440000
date=2019-09-20
type=accept
amount=100.01
payeeAccount=40702810500000006103
payeeBankBic=044525411
payeeBankCorrAccount=30101810400000000225
payeeInn=222201236445
payeeName=Общество с ограниченной ответственностью "Получатель"
payerAccount=40702810500000006109
payerBankBic=044525411
payerInn=222201236449
payerName=Общество с ограниченной ответственностью "Плательщик"
payReqNumber=2
payReqDate=2019-09-20
payReqAmount=100.01
payReqLastDate=2019-09-21

Получение статуса запроса

Ресурс /v1/acceptance-letters/{externalId}/state позволяет получить статус отправленного запроса на создание заявления об акцепте/отказе от акцепта входящего платежного требования.

Шаги

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

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

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

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

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

НаименованиеОписание
Параметры заголовка
Authorization (String)Access token полученный через SSO
Пример: Bearer daf9a14c-821d-4bde-9c10-0e56e63d54a0-1
Параметры запроса
externalId (String)Идентификатор документа, присвоенный клиентом

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

curl -X GET --header 'Accept: application/json' --header
'Authorization: Bearer daf9a14c-821d-4bde-9c10-0e56e63d54a0-1'
'https://iftfintech.testsbi.sberbank.ru:9443/fintech/api/v1/acceptance-letters/
1550ff04-07d6-427b-8c25-27484e8cc830/state'

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

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

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

{
"bankStatus":"DELIVERED",
"bankComment":null,
"channelInfo":null
}

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

Код состояние документаНаименование статусаНазначение кода состояния
DELIVEREDДоставленПромежуточный/Продолжать опрашивать
VALIDEDSЭП/АСП вернаПромежуточный/Продолжать опрашивать
INVALIDEDSЭП/АСП не вернаКонечный/Прекратить опрашивать
REQUISITEERRORОшибка реквизитовКонечный/Прекратить опрашивать
TRIEDПроверенПромежуточный/Продолжать опрашивать
DELAYEDПриостановленПромежуточный/Продолжать опрашивать
CORRESPONDENT_APPROVE_WAITINGОжидает подтверждения контрагентаПромежуточный/Продолжать опрашивать
EXPORTEDВыгруженПромежуточный/Продолжать опрашивать
IMPLEMENTEDИсполненУспешный конечный/Прекратить опрашивать
REFUSEDBYABSОтказан АБСКонечный/Прекратить опрашивать
ACCEPTEDПринятПромежуточный/Продолжать опрашивать
ACCEPTED_BY_ABSПринят АБСПромежуточный/Продолжать опрашивать
CARD2Картотека №2Промежуточный/Продолжать опрашивать
SIGNED_BANKПодписан БанкомПромежуточный/Продолжать опрашивать
SIGNEDПодписанПромежуточный/Продолжать опрашивать
UNABLE_TO_RECEIVEОшибка при приеме?Промежуточный/Продолжать опрашивать
CREATEDСозданПромежуточный/Продолжать опрашивать
IMPORTEDИмпортированПромежуточный/Продолжать опрашивать
PARTSIGNEDЧастично подписанПромежуточный/Продолжать опрашивать
CHECKERRORОшибка контроляКонечный/Прекратить опрашивать
TEMPLATEШаблон документаПромежуточный/Продолжать опрашивать
REFUSEDBYBANKОтвергнут БанкомКонечный/Прекратить опрашивать
RECALLОтозванКонечный/Прекратить опрашивать

Получение поручения за дату

Ресурс /v1/payment-requests/incoming позволяет получить входящие платежные поручения за указанную дату.

Шаги

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

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

Для получения входящих платежных поручений необходимо отправить GET-запрос (/v1/payment-requests/incoming), в котором необходимо передать авторизационный токен к данным собственной (дочерней) организации (Access Token), дату и номер страницы . Авторизационный токен передается в параметре Authorization заголовка запроса.

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

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

НаименованиеОписание
Параметры заголовка
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://iftfintech.testsbi.sberbank.ru:9443/fintech/api/v1/payment-requests/incoming?
date=ffffffff-fffa-458e-ad92-ff9497303ba&page=1'

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

НаименованиеОписание
PaymentRequestsInInfo {
_links (Array[Link], optional)Ссылки на связанные ресурсы ,
paymentsRequestIn (Array[PaymentRequestsIn], optional)Входящие платежные требования
}Link {
href (string)Абсолютный или относительный адрес ,
rel (string)Отношение ссылки к текущей сущности (next, prev)
}PaymentRequestsIn {
acceptLastDate (string, optional)Дата окончания акцепта ,
acceptanceTerm (string, optional)Срок для акцепта (поле 36) ,
amount (number, optional)Сумма платежа ,
bankComment (string, optional, read only)Банковский комментарий к статусу документа,
bankStatus (string, optional, read only)Статус документа ,
date (string)Дата составления документа ,
deliveryKind (string, optional)Вид платежа ,
externalId (string, optional)Идентификатор документа, присвоенный партнером (UUID) ,
number (string, optional)Номер документа ,
operationCode (string, optional)Код операции ,
payeeAccount (string, optional)Счет получателя платежа ,
payeeBankBic (string, optional)БИК получателя платежа ,
payeeBankCorrAccount (string, optional)Корсчет банка получателя платежа ,
payeeInn (string, optional)ИНН получателя платежа ,
payeeName (string, optional)Полное наименование получателя платежа ,
payerAccount (string, optional)Счет плательщика ,
payerBankBic (string, optional)БИК банка плательщика ,
payerBankCorrAccount (string, optional)Корсчет банка плательщика ,
payerInn (string, optional)ИНН плательщика ,
payerName (string, optional)Полное наименование плательщика ,
paymentCondition (string, optional)Условие оплаты (поле 35). Указывается цифра "1" -заранее данный акцепт плательщика или цифра "2" - требуется получение акцепта плательщика.
priority (string, optional)Очередность платежа ,
purpose (string, optional)Назначение платежа ,
vat (Vat, optional)Данные НДС
}Vat{
amount (number, optional)Сумма НДС ,
rate (string, optional)Ставка НДС ,
type (string)Способ расчета НДС = [INCLUDED, NO_VAT, MANUAL]
stringEnum:INCLUDED, NO_VAT, MANUAL
}

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

{
"_links":[
{
"href":"?accountNumber=40702810500006103990&statementDate=2018-03-15&page=3",
"rel":"next"
}
],
"paymentsRequestIn":[
{
"acceptLastDate":"2018-12-31",
"acceptanceTerm":"20",
"amount":1.01,
"bankComment":"string",
"bankStatus":"string",
"date":"2018-12-31",
"deliveryKind":"электронно",
"externalId":"22a6dd81-103a-4d3a-8e9b-0ba4b527f5f6",
"number":"1",
"operationCode":"01",
"payeeAccount":"40802810600000200000",
"payeeBankBic":"044525225",
"payeeBankCorrAccount":"30101810400000000225",
"payeeInn":"7707083893",
"payeeName":"Общество с ограниченной ответственностью \"Клиент\"",
"payerAccount":"40802810600000200000",
"payerBankBic":"044525225",
"payerBankCorrAccount":"30101810400000000225",
"payerInn":"7707083893",
"payerName":"Общество с ограниченной ответственностью \"Клиент\"",
"paymentCondition":"1",
"priority":"5",
"purpose":"Оплата заказа №123. НДС нет.",
"vat":{
"amount":1.01,
"rate":"7",
"type":"NO_VAT"
}
}
]
}

Получение статуса платежного требования

Ресурс /v1/payment-requests/incoming/{externalId}/state позволяет получить статус входящего платежного требования.

Шаги

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

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

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

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

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

НаименованиеОписание
Параметры заголовка
Authorization (String)Access token полученный через SSO
Пример: Bearer daf9a14c-821d-4bde-9c10-0e56e63d54a0-1
Параметры запроса
externalId (String)Идентификатор документа,присвоенный клиентом

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

curl -X GET --header 'Accept: application/json' --header
'Authorization: Bearer daf9a14c-821d-4bde-9c10-0e56e63d54a0-1'
'https://iftfintech.testsbi.sberbank.ru:9443/fintech/api/v1/payment-requests/
incoming/1550ff04-07d6-427b-8c25-27484e8cc830/state'

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

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

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

{
"bankStatus":"DELIVERED",
"bankComment":null,
"channelInfo":null
}

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

Код статусаНаименованиеКомментарий
CREATEDСозданПромежуточный/Продолжать опрашивать
ACCEPTANCEАкцептованКонечный/Прекратить опрашивать
PARTACCEPTЧастично акцептованПромежуточный/Продолжать опрашивать
CARD2Картотека №2Промежуточный/Продолжать опрашивать
PROCESSERRORОтказанКонечный/Прекратить опрашивать
IMPLEMENTEDИсполненУспешный конечный/Прекратить опрашивать
PROCESSINGВ обработкеПромежуточный/Продолжать опрашивать
ONACCEPTANCEНа акцептПромежуточный/Продолжать опрашивать
READY_TO_SENDЖдет отправкиПромежуточный/Продолжать опрашивать
DELIVEREDДоставленПромежуточный/Продолжать опрашивать
REQUISITEERRORОшибка реквизитовКонечный/Прекратить опрашивать
CHECKERRORОшибка контроляПромежуточный/Продолжать опрашивать
TEMPLATEШаблон документаПромежуточный/Продолжать опрашивать
ACCEPTEDПринятПромежуточный/Продолжать опрашивать
ACCEPTEXPIREИстек срок акцептаКонечный/Прекратить опрашивать
NONEACCEPTANCEОтказ от акцептаКонечный/Прекратить опрашивать
PAIDОплаченоПромежуточный/Продолжать опрашивать

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

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

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

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

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

JWS состоит из трёх частей:

  1. Заголовок (Header) - определяет алгоритм подписи и тип токена
  2. Полезная нагрузка (Payload) - содержит данные, которые необходимо защитить
  3. Электронная подпись (Signature) - вычисляется с использованием приватного ключа клиента
Base64Url(Header) || ’.’ ||  Base64Url(Payload) || ’.’ || Base64Url(Signature)

Каждая часть ответа, разделенная точкой, должна декодироваться отдельно. Для декодирования следует воспользоваться алгоритмом Base64URL Encoding.

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

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

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

При кодировании JWS используется преобразование Base64Url. Преобразование можно представить следующим образом:

Base64Url(x) := Base64(x).Split(‘=’)[0].Replace(‘+’, ’-’).Replace(‘/’, ’_’)
  • функция Split(x), разбивает строку на части ([i] означает взятие i–ой части), используя символ разделитель x,
  • функция Replace(x,y) заменяет все вхождения символа x на символ y.

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

BASE64URLBASE64
- (minus)+
_ (underline)/

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

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