Постановление N 33 от 16.02.2026 oб утверждении Функциональных и технических требований к интерфейсам поставщиков платежных услуг, оказывающих услуги по управлению счетом
НАЦИОНАЛЬНЫЙ БАНК МОЛДОВЫ
ПОСТАНОВЛЕНИЕ
об утверждении Функциональных и технических требований к интерфейсам
поставщиков платежных услуг, оказывающих услуги по управлению счетом
№ 33 от 16.02.2026
(в силу 20.03.2026)
Мониторул Офичиал ал Р. Молдова № 88-91 ст. 137 от 20.02.2026
* * *
На основании ст.524 ч.(7) Закона № 114/2012 о платежных услугах и электронных деньгах (Официальный монитор Республики Молдова, 2012 г., № 193-197, ст.661), с последующими изменениями, а также п.65 Регламента о строгой аутентификации клиентов и открытом, общем и безопасном стандарте связи между поставщиками платежных услуг, утвержденного Постановлением Исполнительного комитета № 12/2024 (Официальный монитор Республики Молдова, № 36-39, ст.90), Исполнительный комитет Национального банка Молдовы
ПОСТАНОВЛЯЕТ:
1. Утвердить Функциональные и технические требования к интерфейсам поставщиков платежных услуг, оказывающих услуги по управлению счетом (прилагаются).
2. Поставщикам платежных услуг, предусмотренных ст.5, ч.(1), п.a)-c) Закона № 114/2012 о платежных услугах и электронных деньгах, обеспечить соответствие требованиям 4 и 5 из таблицы № 3 Функциональных и технических требований к интерфейсам поставщиков платежных услуг, оказывающих услуги по управлению счетом, в течение 8 месяцев с даты вступления в силу настоящего постановления.
3. Настоящее постановление вступает в силу через один месяц после даты его опубликования в Официальном мониторе Республики Молдова.
| ПРЕДСЕДАТЕЛЬ | |
| ИСПОЛНИТЕЛЬНОГО КОМИТЕТА | Анка-Дана ДРАГУ |
| № 33. Кишинэу, 16 февраля 2026 г. | |
Приложение
к Постановлению Исполнительного комитета
Национального банка Молдовы
№ 33 от 16 февраля 2026
Функциональные и технические требования к интерфейсам поставщиков
платежных услуг, оказывающих услуги по управлению счетом
Глава I
ОБЩИЕ ПОЛОЖЕНИЯ
Раздел 1
Предмет и цель
1. Функциональные и технические требования к интерфейсам поставщиков платежных услуг, оказывающие услуги по управлению счетом (далее – "Требования"), устанавливают функциональные, технические и безопасные условия для реализации Open Banking поставщиками платежных услуг, оказывающих услуги по управлению счетом (ASPSP), в соответствии с применимыми национальными нормативами и международными стандартами.
2. Требования представляют собой национальный стандарт для Open Banking, направлены на обеспечение соответствия положений Закона № 114/2012 о платежных услугах и электронных деньгах (далее – "Закон № 114/2012") и Регламента о строгой аутентификации клиентов и открытом, общем и безопасном стандарте связи между поставщиками платежных услуг, утверждённого Постановлением Исполнительного комитета № 12/2024 (далее – "Регламент № 12/2024"), а также на содействие совместимости с поставщиками платежных услуг третьих сторон и создание безопасной и стандартизированной платформы для пользователей.
Раздел 2
Основные понятия
3. Понятия и выражения, используемые в настоящих Требованиях, имеют значение, предусмотренное в Законе № 114/2012 и нормативных актах Национального банка Молдовы (далее – "НБМ"), изданных на основании Закона № 114/2012.
4. В дополнение, в контексте настоящих Требований применяются следующие понятия:
4.1. Строгая аутентификация клиентов – аутентификация, основанная на использовании двух или более элементов из категории знаний (то, что известно только пользователю), владения (то, что находится только в распоряжении пользователя) и свойства (то, что является характеристикой пользователя). Указанные элементы являются независимыми, и компрометация одного элемента не приводит к снижению надежности остальных элементов. Кроме того, эти элементы разработаны таким образом, чтобы защищать конфиденциальность данных аутентификации;
4.2. Berlin Group – рабочая группа, которая определяет технические стандарты для внедрения Open Banking в соответствии с Директивой (ЕС) 2015/2366 Европейского парламента и Совета от 25 ноября 2015 года о платежных услугах на внутреннем рынке, с внесением изменений в Директивы 2002/65/ЕС, 2009/110/ЕС и 2013/36/ЕС и Регламент (ЕС) № 1093/2010, а также с отменой Директивы 2007/64/ЕС (Текст, имеющий отношение к ЕЭЗ);
4.3. Специфические интерфейсы – набор интерфейсов, реализованных поставщиками платежных услуг, оказывающих услуги по управлению счетом, в соответствии с единым, общим и безопасным открытым стандартом коммуникации, которые обеспечивают безопасный и стандартизированный обмен информацией между участниками, а также инициирование финансовых операций от имени пользователей с соблюдением Требований;
4.4. Поставщик услуг третьей стороны – уполномоченное лицо, которое с явного согласия пользователей может получать доступ к финансовой информации на их счетах или инициировать платежи от их имени;
4.5. Метод Redirect – способ аутентификации и авторизации в рамках Open Banking, при котором пользователь перенаправляется из приложения поставщика услуг третьей стороны в приложение поставщика платежных услуг, оказывающий услуги по управлению счетом, для проведения строгой аутентификации клиента и для авторизации платежа или доступа к данным;
4.6. Dashboard – представляет собой унифицированный цифровой интерфейс, предоставляемый пользователю поставщиком платежных услуг, оказывающим услуги по управлению счетом, который позволяет просматривать, контролировать и управлять всеми разрешениями, предоставленными поставщикам услуг третьей стороны для доступа к финансовым данным пользователя;
4.7. SCA – Строгая аутентификация клиентов;
4.8. API – Специфические интерфейсы;
4.9. ASPSP – Поставщик платежных услуг, оказывающий услуги по управлению счетом;
4.10. AISP – Поставщик услуг по информированию о счетах;
4.11. PISP – Поставщик услуг по инициированию платежей;
4.12. TPP – Поставщик услуг третьей стороны;
4.13. AIS – Услуга по информированию о счетах;
4.14. PIS – Услуга по инициированию платежа;
4.15. Open Banking – Открытый, общий и безопасный стандарт связи между поставщиками платежных услуг в смысле ст.524 п.(7) Закона № 114/2012 и п. 3 Регламента № 12/2024;
4.16. PSU – Пользователь платежных услуг;
4.17. URI – Унифицированный идентификатор ресурсов;
4.18. CAS – Центральный сервис адресации в Системе мгновенных платежей.
Глава II
МОДЕЛЬ ФУНКЦИОНИРОВАНИЯ И ВИДЫ УСЛУГ,
ДОСТУПНЫЕ В OPEN BANKING
5. Модель функционирования Open Banking обеспечивает безопасный и контролируемый доступ к финансовой информации пользователей и инициирование платежей от их имени с явного согласия держателя счета. Взаимодействие между участвующими сторонами осуществляется через стандартизированные API, которые обеспечивают совместимость, безопасность и защиту данных пользователей.
6. В Open Banking доступны следующие виды услуг:
6.1. AIS – услуга позволяет TPP получать доступ и консолидировать финансовые данные по счетам пользователей у различных поставщиков платежных услуг.
6.2. PIS – услуга позволяет TPP инициировать платежи со счетов пользователей с их согласия через API, предоставляемые ASPSP, у которых они имеют счета. Пользователи авторизуют транзакции с помощью механизмов аутентификации, установленных соответствующим поставщиком, в соответствии с требованиями SCA.
7. ASPSP предоставляет доступ к услугам AIS и PIS, TPP которые:
7.1. зарегистрированы для предоставления услуг по информированию о счетах или имеют лицензию на предоставление услуги по инициированию платежа в соответствии с положениями Закона № 114/2012;
7.2. используют сертификаты открытых ключей для аутентификации и электронной подписи в соответствии с положениями Закона № 124/2022 о электронной идентификации и доверительных услугах (далее – "Закон № 124/2022").
8. При внедрении Open Banking, ASPSP учитывает следующие функции:
8.1. услуги Open Banking доступны физическим лицам;
8.2. доступ к Open Banking осуществляется через мобильные приложения поставщиков платежных услуг;
8.3. платежные счета ведутся в национальной валюте (MDL) в соответствии с Законом № 114/2012;
8.4. платежные продукты, доступные в Open Banking, включают платежи типа внутри страны A2A (domestic-payments) и мгновенные платежи типа P2P (instant-payments), предоставляемые в рамках единой платежной услуги ("payments") по инициированию платежей по отдельности;
8.5. авторизация согласий и аутентификация пользователей осуществляется с помощью метода redirect.
Глава III
ФУНКЦИОНАЛЬНЫЕ И ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ
Раздел 1
Функциональные требования и требования по интерфейсам
9. Внедрение Open Banking со стороны ASPSP должен обеспечивать оптимальный опыт для PSU, гарантируя безопасность, доступность и прозрачность, а требования из Таблиц № 1, № 2 и № 3 должны быть сосредоточены на интуитивном взаимодействии PSU с приложениями ASPSP, а также на соответствии стандартам безопасности и применимым нормативным актам в соответствии с положениями Регламента № 12/2024.
10. ASPSP должен обеспечивать интуитивный дизайн интерфейсов Open Banking в мобильном приложении, последовательный и удобный для навигации, позволяющий пользователям быстро находить необходимую информацию.
11. ASPSP должен соблюдать требования к AIS, указанные в Таблице № 1.
|
Таблица № 1 |
|
| Требование 1 | ASPSP должен применять SCA для доступа к данным счета, за исключением случаев, когда применяется исключение, предусмотренное в соответствии с положениями Регламента № 12/2024. |
| Требование 2 | Процесс аутентификации в мобильном приложении ASPSP должен быть эквивалентен процессу, который PSU проходит при прямом доступе к мобильному приложению (биометрия, PIN-код, учетные данные), без дополнительных шагов. |
| Требование 3 | Приложение ASPSP должен поддерживать перенаправление "приложение-к-приложению" (app-to-app), обеспечивая безопасный и прозрачный переход между AISP и ASPSP. |
| Требование 4 | ASPSP должен отображать промежуточный экран, показывающий состояние запроса и информирующий PSU о перенаправлении в приложение AISP. После подтверждения согласия перенаправление должно выполняться автоматически на том же устройстве. |
| Требование 5 | ASPSP должен информировать PSU о сроке действия и дате истечения согласия, предоставленного для доступа к данным платежного счета. |
| Требование 6 | ASPSP должен позволять одновременный доступ к нескольким счетам, принадлежащим PSU, без ограничения их количества. |
| Требование 7 | ASPSP должен обеспечивать, чтобы предоставлялись только активные счета; заблокированные или закрытые счета не могут быть переданы TPP. |
| Требование 8 | В случае закрытия или блокировки счета, который предоставляется TPP на основании действующего согласия, предоставленного PSU, ASPSP должен применять следующие правила: Согласие, предоставленное PSU для одного счета, который был закрыт или заблокирован: согласие автоматически аннулируется ASPSP, и по запросу TPP ASPSP сообщает, что доступ был отозван, а ресурс (счет) больше не существует. Согласие, предоставленное PSU для нескольких счетов, при этом один из этих счетов закрыт или заблокирован: согласие остается действительным для оставшихся активных счетов, а по закрытому или заблокированному счету информация больше не предоставляется. В случае повторного открытия или разблокировки счета для него потребуется новое согласие. |
| Требование 9 | ASPSP должен передавать AISP запрашиваемые данные (например, остаток на счете, транзакции) только в пределах действующего согласия, предоставленного PSU. |
| Требование 10 | ASPSP должен обрабатывать случаи неудачи (неуспешная аутентификация, отсутствие согласия, технические ошибки, неправильный IBAN) и передавать соответствующие ответы TPP. |
| Требование 11 | ASPSP должен обеспечивать быструю обработку запросов на аутентификацию и авторизацию (желательно в течение нескольких секунд) для поддержания доверия пользователей и обеспечения плавного опыта, особенно при инициации платежей или потдверждении транзакций. |
| Требование [TECH] 12 | ASPSP должен ограничивать количество запросов от одного и того же AISP максимум 4 вызовами в течение 24 часов без явного действия со стороны PSU. |
| Требование [TECH] 13 | ASPSP должен корректно обрабатывать адрес (URI), на который PSU будет перенаправлен обратно в приложение AISP после завершения аутентификации или предоставления согласия. |
12. ASPSP должен соблюдать требования к PIS, указанные в Таблице № 2.
|
Таблица № 2 |
|
| Требование 1 | ASPSP должен применять SCA. В порядке исключения SCA не применяется в случае, когда возникают исключения, предусмотренные Регламентом № 12/2024. |
| Требование 2 | Если у PSU установлено приложение ASPSP на том же устройстве, перенаправление должно вызывать приложение ASPSP только для аутентификации, без отображения дополнительных экранов. |
| Требование 3 | Аутентификация в приложении ASPSP не должна включать больше шагов, чем при прямом доступе PSU к приложению (биометрия, PIN-код, учетные данные и т.д.). |
| Требование 4 | После успешной аутентификации PSU должен быть перенаправлен непосредственно на страницу с деталями платежа (сумма, торговец, комиссия, если применимо) для подтверждения или отклонения платежа. |
| Требование 5 | В случае, если запрос на платеж не содержит счет дебитора и/или другие данные, необходимые для его проведения, ASPSP должен предоставить PSU возможность выбрать счет, с которого будет осуществлен платеж, и/или заполнить другую информацию. |
| Требование 6 | ASPSP должен проверять все данные платежа, предоставленные PISP, и корректно обрабатывать ошибки (неправильный IBAN, недействительные данные, заблокированный счет и т.д.), предоставляя соответствующий ответ PISP. |
| Требование 7 | ASPSP должен отображать промежуточный экран, показывающий статус запроса и информировать PSU о том, что он будет автоматически перенаправлен обратно к PISP, без необходимости дополнительных действий. |
| Требование 8 | Подтверждение платежа PISP и PSU должно быть мгновенным, включая уникальный идентификатор и текущий статус платежа (в ожидании, принят, отклонен). |
| Требование 9 | Платежи должны обрабатываться в соответствии с положениями Закона № 114/2012 и нормативными актами НБМ, изданными на основании Закона № 114/2012, включая соблюдение времени cut-off, валютную конверсию при необходимости и отчетность перед компетентными органами |
| Требование 10 | ASPSP должен обеспечивать отслеживание статуса платежа в режиме реального времени, доступное как через интерфейс PSU, так и через интерфейс PISP. Рекомендуется отправка уведомлений о успешной или неудачной обработке платежа для обеспечения прозрачности. |
| Требование 11 | В случае инициирования PISP мгновенного платежа ASPSP должен запрашивать счет по умолчанию и другие данные в CAS на основе alias, указанного в поле creditorAccount. |
| Требование 12 [TECH] | Все соответствующие действия (аутентификация, проверка платежа, подтверждение/отклонение) должны быть зарегистрированы для полной прослеживаемости и проведения аудита. |
13. ASPSP должен соблюдать требования и рекомендации для PIS и AIS (включенные в Dashboard), указанные в Таблице № 3.
|
Таблица № 3 |
|
| Требование 1 | ASPSP должен предоставить PSU централизованный Dashboard, доступный через каналы, предоставленные ASPSP (веб-приложение и/или мобильное приложение), на котором отображаются все активные согласия. Для каждого TPP Dashboard должен показывать: наименование TPP, затронутые счета, тип предоставленного доступа (например, остаток, транзакции), заявленную цель доступа и срок действия согласия. |
| Требование 2 | Информация, отображаемая в Dashboard, должна обновляться в режиме реального времени. Любое действие по отзыву или изменению согласия должно отображаться немедленно. |
| Требование 3 | PSU должен иметь возможность отозвать предоставленный доступ TPP с помощью простой и интуитивной операции, при этом отзыв должен вступать в силу мгновенно. |
| Требование 4 | После отзыва ASPSP должен предоставить PSU четкое подтверждение, содержащее наименование TPP, дату и время, когда был произведен отзыв. |
| Требование 5 | PSU должен быть заранее уведомлен, когда срок действия согласия подходит к концу, чтобы он мог принять решение о его продлении или об окончании срока действия. |
| Рекомендация 6 | Рекомендуется, чтобы Dashboard также включал детальную историю доступа TPP, показывающую дату предоставления, изменения или отзыва согласия, а также типы данных, к которым TPP имел доступ в соответствующий период. |
Раздел 2
Технические требования
14. ASPSP должен обеспечивать техническую инфраструктуру, способную обеспечивать совместимость с авторизованными TPP, соблюдая настоящие Требования. Внедренные системы должны гарантировать защиту данных PSU, целостность транзакций и непрерывность предоставляемых услуг.
15. ASPSP должен соблюдать технические требования, указанные в Таблице № 4.
|
Таблица № 4 |
|
| Требование 1 | Соответствие стандартам API – в рамках Open Banking в Молдове ASPSP обязано разрабатывать и поддерживать API в соответствии с Приложением № 1 к настоящим Требованиям. Эти API должны своевременно обновляться для обеспечения совместимости и постоянного соблюдения установленных требований. |
| Требование 2 | Аутентификация и управление идентификацией – ASPSP должен внедрить механизмы аутентификации и идентификации TPP в соответствии с положениями Закона № 124/2022, включая использование сертификатов открытого ключа, где это применимо, а также процедуры подписания и шифрования передаваемых данных. |
| Требование 3 | Защита данных и конфиденциальность – ASPSP несет ответственность за применение усиленных мер безопасности, строгих политик контроля доступа и механизмов предотвращения утечек или несанкционированного использования конфиденциальной информации. |
| Требование 4 | Управление и отчетность по инцидентам – ASPSP должен располагать эффективной системой выявления, управления и отчетности по инцидентам информационной безопасности, уведомляя компетентные органы и, при необходимости, затронутых PSU. В зависимости от характера инцидента ASPSP использует формы и способы уведомления, предусмотренные применимой нормативной базой. |
| Требование 5 | SCA – ASPSP несет ответственность за применение SCA во всех соответствующих процессах, за исключением случаев, предусмотренных в соответствии с положениями Регламента № 12/2024. Внедренные механизмы должны обеспечивать высокий уровень безопасности и защиту от мошенничества, используя методы аутентификации, эквивалентные тем, которые доступны в собственных каналах (например, биометрия, код доступа, пароль). |
| Требование 6 | Производительность и масштабируемость – техническая инфраструктура ASPSP должна быть спроектирована таким образом, чтобы эффективно обрабатывать большие объемы одновременных запросов от TPP, обеспечивая надлежащее время отклика и непрерывную доступность услуг. |
| Требование 7 | Тестирование, аудит и сертификация информационных систем, используемых для внедрения Open Banking, осуществляются в соответствии с требованиями к критически важным ИКТ-системам/услугам, предусмотренными Регламентом о минимальных требованиях по управлению рисками, связанными с информационно-коммуникационными технологиями, информационной безопасностью и обеспечением непрерывности деятельности, утвержденным Постановлением Исполнительного комитета Национального банка Молдовы № 29/2025. |
16. ASPSP должен соблюдать применимые на национальном уровне нормативные требования, касающиеся предоставления платежных услуг, интеграции в рамках Open Banking и защиты персональных данных.
Раздел 3
Специфические интерфейсы
17. ASPSP обязан предоставлять TPP специализированные интерфейсы, предназначенные для безопасного и контролируемого доступа к данным счетов PSU, а также для инициирования платежей от имени PSU на основании явного согласия PSU.
18. API должны соответствовать Приложению № 1 к настоящим Требованиям, которое разработано на основе стандарта Berlin Group и адаптировано к применимой нормативной и операционной базе Республики Молдова.
19. Детали методов API, которые должны быть предоставлены ASPSP, структура данных и необходимые параметры для интеграции указаны в Приложении № 1 к настоящим Требованиям; типы ответов и стандартизированные коды ошибок указаны в Приложении № 2 к настоящим Требованиям; механизм проверки вызовов TPP со стороны ASPSP, указан в Приложении № 3 к настоящим Требованиям.
Раздел 4
Список обязательных методов
20. Методы, которые должны быть разработаны ASPSP для предоставления согласий, указаны в Таблице № 5.
|
Таблица № 5 |
|||
| Endpoint | Метод | Условие | Описание |
| consents | POST | Обязательно | Этот метод позволяет TPP запросить согласие PSU на доступ к информации о счете. Согласие создается в информационной системе ASPSP и указывает счета и предоставленные разрешения. |
| consents/{consentId} | GET | Обязательно | Этот метод предоставляет детали существующего согласия, идентифицированного по consentId. |
| DELETE | Обязательно | Этот метод позволяет TPP отозвать активное согласие на основе соответствующего действия, инициированного PSU, лишая TPP доступа к данным счета PSU. | |
| consents/{consentId}/status | GET | Обязательно | Этот метод возвращает текущий статус согласия. |
21. Методы, которые должны быть разработаны ASPSP для AIS, указаны в Таблице № 6.
|
Таблица № 6 |
|||
| Endpoint | Метод | Условие | Описание |
| accounts | GET | Обязательно | Этот метод предоставляет список всех счетов, к которым PSU предоставил доступ TPP. Список включает основные сведения, такие как IBAN, валюта и тип счета. |
| accounts/{account-id} | GET | Обязательно | Этот метод предоставляет подробную информацию о конкретном счете, идентифицированном по account-id, включая тип счета, IBAN и валюту. |
| accounts/{account-id}/balances | GET | Обязательно | Этот метод предоставляет информацию о балансе конкретного счета, включая доступный баланс, зарегистрированный баланс и оценочный баланс. |
| accounts/{account-id}/transactions | GET | Обязательно | Этот метод предоставляет список транзакций для конкретного счета с возможностью фильтрации по временному интервалу или типу транзакции (например, зарегистрированные, ожидающие). |
22. Методы, которые должны быть разработаны ASPSP для PIS, указаны в Таблице № 7.
|
Таблица № 7 |
|||
| Endpoints | Метод | Условие | Описание |
| payments/{payment-product} | POST | Обязательно | Этот метод инициирует платеж с использованием указанного платежного продукта (например, domestic payments или instant payments). |
| payments/{payment-product}/{paymentId} | GET | Обязательно | Этот метод предоставляет подробную информацию о конкретном платеже, идентифицированном по paymentId, включая статус платежа, сумму и получателя. |
| payments/{payment-product}/{paymentId}/status | GET | Обязательно | Этот метод предоставляет текущий статус конкретного платежа, например, ожидающий, принятый или отклонённый. |
Глава IV
ЦИФРОВОЙ РЕЕСТР OPEN BANKING
23. Для реализации Open Banking, НБМ разработал и управляет Цифровым реестром Open Banking – цифровой платформой, обеспечивающей интероперабельность и доступ через API, которая ведет учет и управление участниками экосистемы Open Banking.
24. Цифровой реестр Open Banking предназначен как для ASPSP, так и для TPP; API предоставляет данные о каждом участнике, способствуя прозрачности и безопасности системы.
25. Поставщики платежных услуг, участвующие в Open Banking, получают соответствующую информацию в зависимости от своей роли следующим образом:
25.1. ASPSP получают список TPP, лицензированных и зарегистрированных НБМ. Этот список включает такие сведения, как номер лицензии, серийный номер сертификата открытого ключа (в шестнадцатеричном формате), используемого TPP, а также другую информацию, необходимую для проверки их доступа.
25.2. TPP получают список ASPSP, интегрированных в экосистему Open Banking, вместе с деталями доступных API-эндпоинтов для получения данных.
26. Для обеспечения соблюдения требования, предусмотренного в п.7, ASPSP может обращаться к Цифровому реестру Open Banking в соответствии с техническими деталями подключения, предоставленными НБМ. Для проверки информации о TPP в реальном времени на основе Цифрового реестра Open Banking, ASPSP будет осуществлять запросы к Цифровому реестру Open Banking с периодичностью от 1 до 10 минут. В интервале между двумя последовательными запросами ASPSP может использовать сохранённую версию (кэш) реестра до проведения следующего обновления. В случае недоступности Цифрового реестра Open Banking ASPSP может использовать данные из последней сохранённой версии.
27. ASPSP должен непрерывно контролировать состояние сертификатов открытого ключа, связанных с TPP, и отказывать в доступе любому сертификату, который истёк, был скомпрометирован или отозван.
28. В случае, если в ходе проверок ASPSP выявит несоответствия между имеющейся у него информацией о TPP и информацией, представленной в запросе TPP, рекомендуется, чтобы ASPSP заблокировал доступ и уведомил НБМ об этом по электронной почте open.banking@bnm.md. После получения уведомления НБМ рассматривает информацию в соответствии со своими внутренними процедурами и информирует ASPSP о результатах рассмотрения в течение 5 рабочих дней.
29. В случае, если ASPSP выявляет необходимость дополнительных функций или технических изменений существующих, он направляет официальный запрос в НБМ. НБМ имеет право отклонить запрос, если по результатам анализа он не соответствуют (в совокупности) следующим критериям:
29.1. запрос не противоречит положениям нормативных актов;
29.2. запрос необходим и соответствует функционалу Open Banking.
|
Приложение № 1 к Функциональным и техническим требованиям к интерфейсам поставщиков платежных услуг, оказывающие услуги по управлению счетом Методы API, которые должны быть предоставлены ASPSP, структура данных и параметры, необходимые для интеграции 1. Consents Endpoints Метод: Create Consent Тип метода: POST/v1/consents Описание: Этот метод позволяет создать согласие на доступ, связанное с PSU. Согласие необходимо для того, чтобы авторизовать TPP на доступ к информации о счете (AIS). [TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. Обязателен для проверки уникальности ASPSP. |
| PSU-IP-Address | String | Обязательный | IP-адрес PSU. |
| PSU-Device-ID | String | Обязательный | Уникальный ID устройства, используемого PSU. |
| PSU-Device-Name | String | Обязательный | Название/ модель (общая) устройства, с которого подключается конечный пользователь (PSU). |
| PSU-Geo-Location | String | Опциональный | Географическое местоположение, переданное в соответствующем HTTP-запросе между PSU и TPP, если оно доступно. |
| TPP-Redirect-URI | String | Обязательный | URI для перенаправления к TPP после завершения согласия. |
| TPP-Nok-Redirect-URI | String | Опциональный | URI для перенаправления в случае ошибки. ASPSP имеет право игнорировать это поле. |
| Date | Datetime | Обязательный | Дата и время выполнения запроса (RFC 7231 D, dd M YYYY HH:mm:ss GMT). |
| Content-Type | String | Обязательный | Указывает формат тела запроса – application/json. |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. Рекомендуется вычислять дайджест после применения JSON Minify (эта рекомендация применяется на протяжении всего документа). |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. Для заполнения поля формируется "signing string" согласно параметрам "algorithm" и "headers", подписывается приватным ключом, связанным с "keyId", после чего результат, закодированный в base64, вставляется в "signature". Этот способ заполнения поля "Signature" применяется на протяжении всего настоящего документа. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
[TPP] Request Header Sample: |
|
POST https://api.provider.com/v1/consents Content-Type: application/json X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X PSU-Geo-Location: GEO: 47.014434;28.493426 TPP-Redirect-URI: https://tpp-example.md/redirect TPP-Nok-Redirect-URI: https://tpp-example.md/redirect-failure Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=VYe+GLeBVnBVH8A50NP0Cawtg1xwkfe+XufPzmVGGMA= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD", algorithm="rsa-sha256", headers="digest date x-request-id tpp-redirect-uri", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFiM9 Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8 MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXq+FXWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7 AkDPylQtD/kTxM+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2Fq Nzdsq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ==", |
|
Где "signing string" представляет собой: digest: SHA-256=VYe+GLeBVnBVH8A50NP0Cawtg1xwkfe+XufPzmVGGMA= date: Wed, 11 Sep 2024 12:34:56 GMT x-request-id: 123e4567-e89b-12d3-a456-426614174000 tpp-redirect-uri: https://tpp-example.md/redirect [TPP] Request Body Sample for Consent Request on Dedicated Accounts (detailed consent – support by ASPSP is mandatory): |
|
{ "access": { "accounts": [ { "iban": "MD21AAA000000022553456789" } ], "balances": [ { "iban": "MD21AAA000000022553456789" } ], "transactions": [ { "iban": "MD21AAA000000022553456789" } ] }, "recurringIndicator": true, "validUntil": "2024-12-31", "frequencyPerDay": 4 } |
|
[TPP] Request Body Sample for Consent on Account List of Available Accounts (global consent - support by ASPSP is mandatory): |
|
{ "access": { "availableAccounts": "allAccounts" }, "recurringIndicator": true, "validUntil": "2025-08-06", "frequencyPerDay": 4 } |
|
[TPP] Request Body Sample for Consent on Account List or without Indication of dedicated Accounts (bank offered consent - support by ASPSP is mandatory): |
|
{ "access": { "balances": [], "transactions": [] }, "recurringIndicator": true, "validUntil": "2025-11-01", "frequencyPerDay": 4 } |
|
[TPP] Request Body Parameters: |
| Название | Тип | Условие | Описание |
| access | Object | Обязательный | Определяет доступ к счетам, балансам и транзакциям. |
| access.accounts | Array | Опциональный | Список IBAN-ов счетов, к которым TPP будет иметь доступ. |
| access.balances | Array | Опциональный | Список IBAN-ов, по которым TPP может получать балансы. |
| access.transactions | Array | Опциональный | Список IBAN-ов, по которым TPP может получать детали транзакций. |
| recurringIndicator | Boolean | Обязательный | Указывает, является ли доступ повторяющимся или разовым. Если true – доступ повторяющийся. Если false – доступ разовый. |
| validUntil | String | Обязательный | Дата истечения согласия (формат: YYYY-MM-DD). |
| frequencyPerDay | Integer | Обязательный | Максимальное количество обращений в день к данным счета без участия PSU (AIS). Возможные значения: 1, 2, 3 или 4. |
|
[ASPSP] Response Header sample: |
|
Content-Type: application/json X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 ASPSP-SCA-Approach: REDIRECT Date: Wed, 11 Sep 2024 12:34:58 GMT Location: "/v1/consents/ a7c3e9f8-1a44-4cd3-83ab-4f29d1f9e8c7" |
|
[ASPSP] Response Body Sample (Success - 201 Created): |
|
{ "consentStatus": "received", "consentId": "d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f", "_links": { "scaRedirect": { "href": "www.mybankapp.com//authentication/ a7c3e9f8-1a44-4cd3-83ab-4f29d1f9e8c7" }, "status": { "href": "/v1/consents/ a7c3e9f8-1a44-4cd3-83ab-4f29d1f9e8c7 /status" }, "scaStatus": { "href": "/v1/consents/ a7c3e9f8-1a44-4cd3-83ab-4f29d1f9e8c7 /authorisations/123auth567" } } } |
|
[ASPSP] Response Header Parameters: |
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
| Location | String | Обязательный | Местоположение созданного ресурса. |
| ASPSP-SCA-Approach | String | Обязательный | Тип метода SCA, используемого ASPSP. На данный момент – только REDIRECT. |
| Date | Datetime | Обязательный | Дата и время выполнения запроса (RFC 7231). |
| Content-Type | String | Обязательный | Указывает, что формат тела ответа – application/json. |
|
[ASPSP] Parameters of Success Response: |
|||
| Название | Тип | Условие | Описание |
| consentStatus | String | Обязательный | Статус согласия (valid, expired и т. д.). |
| consentId | String | Обязательный | Уникальный идентификатор созданного согласия. |
| _links | String | Обязательный | Список ссылок, относящихся к согласию. |
|
[ASPSP] Response Sample (Error - 400 Bad Request): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "FORMAT_ERROR", "text": "string", "path": "string" } ] } |
|||
|
[ASPSP] Parameters of Error Response: |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (ex: FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например: "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
Метод: Get Consent Тип метода: GET /v1/consents/{consentId} Описание: Этот метод позволяет TPP получить подробную информацию о ранее созданном согласии. Идентификатор согласия (consentId) передается в URL. TPP может проверить статус согласия и связанные с ним данные, такие как счета и срок действия. [TPP] Path Parameters: |
|||
| Название | Тип | Условие | Описание |
| consentId | String | Обязательный | Уникальный идентификатор созданного согласия. |
|
[TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
| Date | Datetime | Обязательный | Дата и время выполнения запроса. (RFC 7231) |
| PSU-IP-Adress | String | Обязательный | IP-адрес PSU. В случае вызова без участия PSU TPP указывает 0.0.0.0. |
| PSU-Device-ID | String | Обязательный | Уникальный ID устройства, используемого PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Device-Name | String | Обязательный | Название/модель (общая) устройства, с которого подключается PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Geo-Location | String | Опциональный | Географическое местоположение, переданное в соответствующем HTTP-запросе между PSU и TPP, если оно доступно. |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
[TPP] Request Header Sample: |
|||
|
GET https://api.provider.com/v1/consents/d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 Date: Wed, 11 Sep 2024 12:34:56 GMT PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X PSU-Geo-Location: GEO: 47.014434;28.493426 Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFiM9 Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8Mjbb Jff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXq+FXWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPyl QtD/kTxMo+4t7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzdsq2+LfsAk5c DBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ==", |
|||
|
[ASPSP] Response Header sample: |
|||
| X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 | |||
|
[ASPSP] Response Body Sample (Success - 200 OK): |
|||
|
{ "access": { "accounts": [ { "iban": "MD21AAA000000022553456789", "currency": "MDL" } ], "balances": [ { "iban": "MD21AAA000000022553456789", "currency": "MDL" } ], "transactions": [ { "iban": "MD21AAA000000022553456789", "currency": "MDL" } ] }, "recurringIndicator": true, "validUntil": "2024-12-31", "frequencyPerDay": 4, "consentStatus": "valid", "_links": { "account": { "href": "/v1/accounts" } } } |
|||
|
[ASPSP] Response Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
|
[ASPSP] Parameters of Success Response: |
|||
| Название | Тип | Условие | Описание |
| consentStatus | String | Обязательный | Статус согласия (valid, expired etc.). |
| access | Object | Обязательный | Определяет доступ к счетам, балансам и транзакциям. |
| access.accounts | Array | Опциональный | Список IBAN-ов счетов, к которым TPP будет иметь доступ. |
| access.balances | Array | Опциональный | Список IBAN-ов, по которым TPP может получать балансы. |
| access.transactions | Array | Опциональный | Список IBAN-ов, по которым TPP может получать детали транзакций. |
| currency | String | Опциональный | Валюта счета. |
| validUntil | String | Обязательный | Дата истечения согласия. |
| recurringIndicator | Boolean | Обязательный | Указывает, является ли доступ повторяющимся или разовым. |
| frequencyPerDay | Integer | Обязательный | Максимальное количество обращений в день. |
| _links | Object | Опциональный | Указывает последующие шаги, которые могут быть выполнены через интерфейс. |
|
[ASPSP] Response Sample (Error - 400 Bad Request): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "FORMAT_ERROR", "text": "string" "path": "string" } ] } |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (например: FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например: "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
Метод: Delete Consent Тип метода: DELETE /v1/consents/ {consentId} Описание: Этот метод позволяет TPP отозвать существующее согласие, используя consentId. После отзыва согласие больше не будет предоставлять доступ к счетам PSU. Это действие необходимо для прекращения/блокировки доступа к данным счетов или для прерывания повторяющегося доступа. [TPP] Path Parameters: |
|||
| Название | Тип | Условие | Описание |
| consentId | String | Обязательный | Уникальный идентификатор созданного согласия. |
|
[TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. Обязателен для проверки уникальности ASPSP. |
| PSU-IP-Adress | String | Обязательный | IP-адрес PSU. |
| PSU-Device-ID | String | Обязательный | Уникальный ID устройства, используемого PSU. |
| PSU-Device-Name | String | Обязательный | Название/модель (общая) устройства, с которого подключается PSU. |
| PSU-Geo-Location | String | Опциональный | Географическое местоположение, переданное в соответствующем HTTP-запросе между PSU и TPP, если оно доступно. |
| Date | String | Обязательный | Дата и время выполнения запроса. (RFC7231) |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
[TPP] Request Header Sample: |
|||
|
DELETE https://api.provider.com/v1/consents/d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X PSU-Geo-Location: GEO: 47.014434;28.493426 Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFiM9 Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8Mjbb Jff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPylQtD/kTx Mo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzdsq2+LfsAk 5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ==" |
|||
|
[ASPSP] Response Header sample: |
|||
| X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 | |||
|
[ASPSP] Response Body Sample (Success - 204 No Content): В теле ответа не возвращается никакая информация, только статус 204 No Content, который подтверждает успешное выполнение отзыва. [ASPSP] Response Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
|
[ASPSP] Response Sample (Error - 400 Bad Request): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "FORMAT_ERROR", "text": "string", "path": "string" } ] } |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (например: FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например: "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
Метод: Consent status Тип метода: GET /v1/consents/{consentId}/status Описание: Этот метод позволяет TPP получить текущий статус согласия, идентифицируемого по consentId. Статус согласия показывает, действителен ли он, истёк, отозван, отклонён или находится на начальной стадии – получен, предоставляя важную информацию о состоянии предоставленного согласия. [TPP] Path Parameters: |
|||
| Название | Тип | Условие | Описание |
| consentId | String | Обязательный | Уникальный идентификатор созданного согласия. |
|
[TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
| PSU-IP-Adress | String | Обязательный | IP-адрес PSU. В случае вызова без участия PSU TPP указывает 0.0.0.0. |
| PSU-Device-ID | String | Обязательный | Уникальный ID устройства, используемого PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Device-Name | String | Обязательный | Название/модель (общая) устройства, с которого подключается PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Geo-Location | String | Опциональный | Географическое местоположение, переданное в соответствующем HTTP-запросе между PSU и TPP, если оно доступно. |
| Date | String | Обязательный | Дата и время выполнения запроса (RFC 7231). |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
[TPP] Request Header Sample: |
|||
|
GET https://api.provider.com/v1/consents/d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f/status X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X PSU-Geo-Location: GEO: 47.014434;28.493426 Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C-MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/o3pzUNrzzTyAdIQ8Mjbb Jff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXq+FXWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkD PylQtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2Fq Nzdsq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ==" |
|||
|
[ASPSP] Response Header sample: |
|||
| X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 | |||
|
[ASPSP] Response Body Sample (Success - 200 OK): |
|||
|
{ "consentStatus": "valid" } |
|||
|
[ASPSP] Response Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
|
[ASPSP] Parameters of Success Response: |
|||
| Название | Тип | Условие | Описание |
| consentStatus | String | Обязательный | Текущий статус согласия (valid, expired, revoked, rejected т.д.). |
|
[ASPSP] Response Sample (Error - 400 Bad Request): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "FORMAT_ERROR", "text": "string", "path": "string" } ] } |
|||
|
[ASPSP] Parameters of Error Response: |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (например: FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например: "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
2. Accounts Endpoint Метод: Read account list Тип метода: GET /v1/accounts Описание: Этот метод позволяет TPP получить список счетов, принадлежащих PSU, для которых существует действующее согласие. Возвращаемые данные включают основную информацию о каждом счете, такую как IBAN, валюта и другие сведения о счете. Этот метод является ключевым в контексте услуг доступа к информации о счетах (AIS). [TPP] Query Parameters: |
|||
| Название | Тип | Условие | Описание |
| withBalance | Boolean | Опциональный | Если параметр включён, он должен иметь значение true или false. Если параметр равен true, функция вернёт список доступных платёжных счетов, включая баланс счета, в той мере, в какой это было разрешено PSU через согласие и доступно со стороны ASPSP. Если параметр равен false или не предоставлен, список счетов возвращается без балансов. |
|
[TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
| Consent-ID | String | Обязательный | Уникальный идентификатор согласия, на основании которого TPP имеет доступ к счетам. |
| PSU-IP-Address | String | Обязательный | IP-адрес PSU. В случае вызова без участия PSU TPP указывает 0.0.0.0. |
| PSU-Device-ID | String | Обязательный | Уникальный ID устройства, используемого PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Device-Name | String | Обязательный | Название/модель (общая) устройства, с которого подключается PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Geo-Location | String | Опциональный | Географическое местоположение, переданное в соответствующем HTTP-запросе между PSU и TPP, если оно доступно. |
| Date | Datetime | Обязательный | Дата и время выполнения запроса (RFC 7231). |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
[TPP] Request Header Sample: |
|||
|
GET https://api.provider.com/v1/accounts X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 Consent-ID: d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C-MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ 8MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPyl QtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzd sq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ==" |
|||
|
[ASPSP] Response Header sample: |
|||
| X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 | |||
|
[ASPSP] Response Body Sample (Success - 200 OK): |
|||
|
{ "accounts": [ { "resourceId": "acc-123456789", "iban": "MD21AAA000000022553456789", "currency": "MDL", "product": "Cont Curent", "cashAccountType": "CACC", "_links": { "balances": { "href": "/v1/accounts/ acc-123456789/balances" }, "transactions": { "href": "/v1/accounts/ acc-123456789/transactions" } } }, { "resourceId": "acc-987654321", "iban": "MD21BBB000000022553456999", "currency": "MDL", "product": "Cont de Economii", "cashAccountType": "SVGS", "_links": { "balances": { "href": "/v1/accounts/ acc-987654321/balances" } } } ] } |
|||
|
[ASPSP] Response Body Sample withBalance (Success - 200 OK): |
|||
|
{ "accounts": [ { "resourceId": "acc-123456789", "iban": "MD21AAA000000022553456789", "currency": "MDL", "product": "Cont MDL", "cashAccountType": "CACC", "balances": [ { "balanceType": "interimAvailable", "balanceAmount": { "currency": "MDL", "amount": "99999.99" }, "lastChangeDateTime": "2024-08-25T00:00:00Z" } ], "_links": { "transactions": { "href": "/v1/accounts/acc-123456789/transactions" } } } ] } |
|||
|
[ASPSP] Response Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
|
[ASPSP] Parameters of Success Response: |
|||
| Название | Тип | Условие | Описание |
| accounts | Array | Обязательный | Список счетов, принадлежащих PSU. |
| resourceId | String | Обязательный | Уникальный идентификатор, связанный с каждым счётом. |
| iban | String | Обязательный | IBAN счёта. |
| currency | String | Обязательный | Валюта счёта (например MDL). |
| product | String | Обязательный | Тип продукта, связанного со счётом (например Current Account). |
| cashAccountType | String | Обязательный | Тип счёта (например, CACC для текущего счёта, SVGS для сберегательного счёта). |
| balances | Array | Обязательный (if withBalance) | Список балансов, связанных со счётом. |
| balanceType | String | Обязательный (if withBalance) | Тип баланса (например interimAvailable, expected). |
| balanceAmount | Object | Обязательный (if withBalance) | Подробности о сумме на счёте. |
| balanceAmount.currency | String | Обязательный (if withBalance) | Валюта счёта (например MDL). |
| balanceAmount.amount | String | Обязательный (if withBalance) | Доступная сумма на счёте. |
| lastChangeDateTime | String | Обязательный (if withBalance) | Дата и время последнего изменения баланса. |
| _links | Object | Опциональный | Указывает последующие шаги, которые могут быть выполнены через интерфейс. |
|
[ASPSP] Response Sample (Error - 400 Bad Request): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "CONSENT_INVALID", "text": "string" "path": "string" } ] } |
|||
|
[ASPSP] Parameters of Error Response: |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (например: FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например: "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
Parametrii cashAccountType (exemple conform ISO 20022): |
|
| Код | Описание |
| CACC | Текущий счёт (Current Account). Используется для ежедневных операций. |
| SVGS | Сберегательный счёт (Savings Account). Используется для накопления средств. |
| CASH | Наличный счёт (Cash Account). Используется для отражения наличных счетов, которые не являются явно "текущими" или "сберегательными". |
| TDEP | Счёт срочного депозита (Term Deposit Account). Используется для депозитных счетов с фиксированным сроком. |
| LOAN | Кредитный счёт (Loan Account). Счет, используемый для управления займами. |
| SLRY | Счета для выплаты заработной платы (Payroll Accounts). |
|
Метод: Read account details Тип метода: GET /v1/accounts/{account-id} Описание: Этот метод позволяет TPP получить детали конкретного счёта PSU, идентифицируемого по accountId. Возвращаемые данные включают основную информацию о счёте, такую как IBAN, валюта и другие релевантные сведения. Этот метод является ключевым для предоставления услуг по доступу к информации о счёте (AIS). [TPP] Path Parameters: |
|||
| Название | Тип | Условие | Описание |
| account-id | String | Обязательный | Уникальный идентификатор счёта, присвоенный через resourceId. |
|
[TPP] Query Parameters: |
|||
| Название | Тип | Условие | Описание |
| withBalance | Boolean | Опциональный | Если параметр включён, он должен иметь значение true или false. Если параметр установлен в true, функция вернёт список доступных платёжных счетов, включая баланс счёта, в той мере, в какой это было разрешено PSU через согласие и доступно со стороны ASPSP. Если параметр установлен в false или не предоставлен, список счетов возвращается без балансов. |
|
[TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
| Consent-ID | String | Обязательный | Уникальный идентификатор согласия, на основании которого TPP имеет доступ к счетам. |
| PSU-IP-Address | String | Обязательный | IP-адрес PSU. В случае вызова без участия PSU TPP указывает 0.0.0.0. |
| PSU-Device-ID | String | Обязательный | Уникальный ID устройства, используемого PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Device-Name | String | Обязательный | Название/модель (общая) устройства, с которого подключается PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Geo-Location | String | Опциональный | Географическое местоположение, переданное в соответствующем HTTP-запросе между PSU и TPP, если оно доступно. |
| Date | Datetime | Обязательный | Дата и время выполнения запроса (RFC 7231). |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
[TPP] Request Header Sample: |
|||
|
GET https://api.provider.com/v1/accounts/acc-123456789 X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 Consent-ID: d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8 MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXq+FXWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7 AkDPylQtD/kTxMo+4toD+oLlo7mDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzd sq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+MBuLKgg1Pv9WgfWHi5BQ==" |
|||
|
[ASPSP] Response Header sample: |
|||
| X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 | |||
|
[ASPSP] Response Body Sample (Success - 200 OK): |
|||
|
{ "resourceId": "acc-123456789", "iban": "MD21AAA000000022553456789", "currency": "MDL", "product": "Cont Curent", "cashAccountType": "CACC", "_links": { "balances": { "href": "/v1/accounts/ acc-123456789/balances" }, "transactions": { "href": "/v1/accounts/ acc-123456789/transactions" } } } |
|||
|
[ASPSP] Response Body Sample withBalance (Success - 200 OK): |
|||
|
{ "resourceId": "acc-123456789", "iban": "MD21AAA000000022553456789", "currency": "MDL", "product": "Cont MDL", "cashAccountType": "CACC", "balances": [ { "balanceType": "interimAvailable", "balanceAmount": { "currency": "MDL", "amount": "99999.99" }, "lastChangeDateTime": "2024-08-25T00:00:00Z" } ], "_links": { "transactions": { "href": "/v1/accounts/acc-123456789/transactions" } } } |
|||
|
[ASPSP] Response Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
|
[ASPSP] Parameters of Success Response: |
|||
| Название | Тип | Условие | Описание |
| resourceId | String | Обязательный | Уникальный идентификатор, связанный с каждым счётом. |
| iban | String | Обязательный | IBAN счёта. |
| currency | String | Обязательный | Валюта счёта (напримерMDL, USD). |
| product | String | Обязательный | Тип продукта, связанного со счётом (например Current Account). |
| cashAccountType | String | Обязательный | Тип счёта (например, CACC для текущего счёта, SVGS для сберегательного счёта). |
| balances | Array | Обязательный (if withBalance) | Список балансов, связанных со счётом. |
| balanceType | String | Обязательный (if withBalance) | Тип баланса (например interimAvailable, expected). |
| balanceAmount | Object | Обязательный (if withBalance) | Подробности о сумме на счёте. |
| balanceAmount.currency | String | Обязательный (if withBalance) | Валюта счёта (например MDL, USD). |
| balanceAmount.amount | String | Обязательный (if withBalance) | Доступная сумма на счёте. |
| lastChangeDateTime | String | Обязательный (if withBalance) | Дата и время последнего изменения баланса. |
| _links | Object | Опциональный | Указывает последующие шаги, которые могут быть выполнены через интерфейс. |
|
[ASPSP] Response Sample (Error - 400 Bad Request): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "CONSENT_INVALID", "text": "The consent provided is invalid or expired.", "path": "string" } ] } |
|||
|
[ASPSP] Parameters of Error Response: |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (например FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например: "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
Метод: Read Balance Тип метода: GET /v1/accounts/{account-id}/balances Описание: Этот метод позволяет TPP получить балансы, связанные с конкретным счётом, идентифицируемым по accountId. Возвращаемые данные включают доступные балансы, бухгалтерские балансы (booked) и другие сведения, связанные с балансом счёта. Этот метод является ключевым для предоставления услуг по доступу к информации о счёте (AIS). [TPP] Path Parameters: |
|||
| Название | Тип | Условие | Описание |
| account-id | String | Обязательный | Уникальный идентификатор счёта, присвоенный через resourceId. |
|
[TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
| Consent-ID | String | Обязательный | Уникальный идентификатор согласия, на основании которого TPP имеет доступ к счетам. |
| PSU-IP-Address | String | Обязательный | IP-адрес PSU. В случае вызова без участия PSU TPP указывает 0.0.0.0. |
| PSU-Device-ID | String | Опциональный | Уникальный ID устройства, используемого PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Device-Name | String | Обязательный | Название/модель (общая) устройства, с которого подключается PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Geo-Location | String | Опциональный | Географическое местоположение, переданное в соответствующем HTTP-запросе между PSU и TPP, если оно доступно. |
| Date | Datetime | Обязательный | Дата и время выполнения запроса (RFC 7231). |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
[TPP] Request Header Sample: |
|||
|
GET https://api.provider.com/v1/accounts/acc-123456789/balances X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 Consent-ID: d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8 MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkXq+FXWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7 AkDPylQtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2 FqNzdsq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ==" |
|||
|
[ASPSP] Response Header sample: |
|||
| X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 | |||
|
[ASPSP] Response Body Sample (Success - 200 OK): |
|||
|
{ "account": { "iban": "MD21AAA000000022553456789" } "balances": [ { "balanceType": "interimAvailable", "balanceAmount": { "currency": "MDL", "amount": "1000.00" }, "lastChangeDateTime": "2024-09-11T12:34:56Z" }, { "balanceType": "expected", "balanceAmount": { "currency": "MDL", "amount": "200.00" }, "lastChangeDateTime": "2024-09-10T15:00:00Z" } ] } |
|||
|
[ASPSP] Response Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
|
[ASPSP] Parameters of Success Response: |
|||
| Название | Тип | Условие | Описание |
| balances | Array | Обязательный | Список балансов, связанных со счётом. |
| balanceType | String | Обязательный | Тип баланса (например interimAvailable, expected). |
| balanceAmount | Object | Обязательный | Подробности о сумме на счёте. |
| balanceAmount.currency | String | Обязательный | Валюта счёта (например MDL). |
| balanceAmount.amount | String | Обязательный | Доступная сумма на счёте. |
| lastChangeDateTime | String | Обязательный | Дата и время последнего изменения баланса. |
|
[ASPSP] Response Sample (Error - 400 Bad Request): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "CONSENT_INVALID", "text": "string", "path": "string" } ] } |
|||
|
[ASPSP] Parameters of Error Response: |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (ex: FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
Метод: Read transaction list of an account Тип метода: GET /v1/accounts/ {account-id}/transactions Описание: Этот метод позволяет TPP получить список транзакций, связанных с конкретным счётом, идентифицируемым по accountId. Возвращаемые транзакции включают как проведённые (booked), так и ожидающие (pending) транзакции. Этот метод является ключевым для предоставления услуг по доступу к информации о счёте (AIS). Для определения типа платежа, является ли он входящим (поступление) или исходящим (совершённый платёж), используется следующая информация: • Наличие поля creditorAccount → исходящий платёж (деньги уходят к кредитору) → платёж типа Debit • Наличие поля debtorAccount → входящий платёж (деньги приходят от дебитора) → платёж типа Credit [TPP] Path Parameters: |
|||
| Название | Тип | Условие | Описание |
| account-id | String | Обязательный | Уникальный идентификатор счёта, присвоенный через resourceId. |
|
[TPP] Query Parameters: |
|||
| Название | Тип | Условие | Описание |
| dateFrom | ISODate | Опциональный | Дата начала для фильтрации транзакций (формат: YYYY-MM-DD). |
| dateTo | ISODate | Опциональный | Дата окончания для фильтрации транзакций (формат: YYYY-MM-DD). |
| bookingStatus | String | Обязательный | Статус транзакций, которые должны быть возвращены (booked, pending или both). |
| withBalance | Boolean | Опциональный | Если значение установлено в true, ответ также будет включать баланс счёта. |
|
[TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
| Consent-ID | String | Обязательный | Уникальный идентификатор согласия, на основании которого TPP имеет доступ к счетам. |
| PSU-IP-Address | String | Обязательный | IP-адрес PSU. В случае вызова без участия PSU TPP указывает 0.0.0.0. |
| PSU-Device-ID | String | Обязательный | Уникальный ID устройства, используемого PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Device-Name | String | Обязательный | Название/модель (общая) устройства, с которого подключается PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Geo-Location | String | Опциональный | Географическое местоположение, переданное в соответствующем HTTP-запросе между PSU и TPP, если оно доступно. |
| Date | String | Обязательный | Дата и время выполнения запроса. |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
[TPP] Request Header Sample: |
|||
|
GET / https://api.provider.com/v1/accounts/acc-123456789/transactions?dateFrom=2024-01-01&dateTo=2024-09-01&bookingStatus=booked X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 Consent-ID: d6f9b8f4-4b10-4b9e-933b-ff9a24b5641f PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ 8MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkD PylQtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2Fq Nzdsq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ==" |
|||
|
[ASPSP] Response Header sample: |
|||
|
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 Content-Type: application/json |
|||
|
[ASPSP] Response Body Sample (Success - 200 OK): |
|||
|
{ "account": { "iban": "MD21AAA000000022553456789", "currency": "MDL" }, "transactions": { "booked": [ { "transactionId": "tx-123", "creditorName": " Ion Popescu ", "creditorAccount": { "iban": "MD21AAA000000022553456789" }, "transactionAmount": { "currency": "MDL", "amount": "500.00" }, "bookingDate": "2024-09-01", "valueDate": "2024-09-01", "remittanceInformationUnstructured": "Plată Factura 123" }, { "transactionId": "tx-1234", "debtorName": "Petru Popescu", "debtorAccount": { "iban": "MD32AAA000000022663456789" }, "transactionAmount": { "currency": "MDL", "amount": "2500.00" }, "bookingDate": "2024-09-15", "valueDate": "2024-09-18", "remittanceInformationUnstructured": "P2P" } ], "pending": [ { "transactionId": "tx-456", "creditorName": " Ion Popescu ", "creditorAccount": { "iban": "MD21AAA000000022553456789" }, "transactionAmount": { "currency": "MDL", "amount": "200.00" }, "valueDate": "2024-09-01", "remittanceInformationUnstructured": "Plată Factura 123" } ] } } |
|||
|
[ASPSP] Response Body Sample withBalance (Success - 200 OK): |
|||
|
{ "account": { "iban": "MD21AAA000000022553456789", "currency": "MDL" }, "transactions": { "booked": [ { "transactionId": "tx-123", "creditorName": "Ion Popescu", "creditorAccount": { "iban": "MD21AAA000000022553456789" }, "transactionAmount": { "currency": "MDL", "amount": "500.00" }, "bookingDate": "2024-09-01", "valueDate": "2024-09-01", "remittanceInformationUnstructured": "Plată Factura 123" } ] }, "balances": [ { "balanceType": "interimAvailable", "balanceAmount": { "currency": "MDL", "amount": "99499.99" }, "lastChangeDateTime": "2024-09-01T12:00:00Z" } ] } |
|||
|
[ASPSP] Response Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
| Content-Type | String | Обязательный | Указывает, что формат тела ответа – application/json. |
|
[ASPSP] Parameters of Success Response: |
|||
| Название | Тип | Условие | Описание |
| account | Object | Обязательный | Информация о счёте, связанном с транзакциями . |
| account.iban | String | Обязательный | IBAN счёта. |
| account.currency | String | Обязательный | Валюта счёта . |
| transactions | Object | Обязательный | Информация о транзакциях из параметров запроса. |
| transactions.booked | Array | Обязательный | Проведённые транзакции (booked). |
| transactions.pending | Array | Обязательный | Ожидающие транзакции (pending). |
| transactionId | String | Обязательный | Уникальный идентификатор транзакции. |
| bookingDate | String | Обязательный | Дата регистрации транзакции. |
| valueDate | String | Обязательный | Дата совершения транзакции. |
| transactionAmount | Object | Обязательный | Содержит сумму и валюту транзакции. |
| transactionAmount.currency | String | Обязательный | Валюта транзакции. |
| transactionAmount.amount | String | Обязательный | Сумма транзакции. |
| creditorName | String Max70Text |
Обязательный (если Debit) | Имя кредитора. |
| creditorAccount | Object | Обязательный (если Debit и принадлежит ASPSP) | Счёт кредитора. |
| creditorAccount.iban | String | Обязательный (если Debit и принадлежит ASPSP) | IBAN кредитора. |
| debtorName | String | Обязательный (если Credit) | Имя дебитора. |
| debtorAccount | Object | Обязательный (если Credit и принадлежит ASPSP) | Счёт дебитора. |
| debtorAccount.iban | String | Обязательный (если Credit и принадлежит ASPSP) | IBAN дебитора. |
| remittanceInformationUnstructured | String Max420Text [0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35} |
Обязательный | Неструктурированная информация о платеже (например, детали счёта-фактуры). Если ASPSP предоставляет такую информацию в своём приложении, он обязан предоставить её и TPP. |
| balances | Array | Обязательный (если содержит withBalance) | Список балансов, связанных со счётом. |
| balanceType | String | Обязательный (если содержит withBalance) | Тип баланса (например interimAvailable, expected). |
| balanceAmount | Object | Обязательный (если содержит withBalance) | Подробности о сумме на счёте. |
| balanceAmount.currency | String | Обязательный (если содержит withBalance) | Валюта счёта (например MDL, USD). |
| balanceAmount.amount | String | Обязательный (если содержит withBalance) | Доступная сумма на счёте. |
| lastChangeDateTime | String | Обязательный (если содержит withBalance) | Дата и время последнего изменения баланса. |
|
[ASPSP] Response Sample (Error - 400 Bad Request): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "FORMAT_ERROR", "text": "string", "path": "string" } ] } |
|||
|
[ASPSP] Parameters of Error Response: |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (например: FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например: "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
3. Payments Endpoint Метод: Payment initiation Тип метода: POST /v1/{payment-service}/{payment-product} Описание: Этот метод инициирует платёж в зависимости от выбранного типа продукта, который в настоящее время включает внутренние и мгновенные платежи, определённые национальной схемой Республики Молдова. Каждый тип платежа указывается через {payment-product}. [TPP] Path Parameters: |
|||
| Название | Тип | Условие | Описание |
| payment-service | String | Обязательный | Тип платёжной услуги (может быть: payments, bulk-payments, periodic-payments). |
| payment-product | String | Обязательный | Тип используемого продукта (например domestic-credit-transfers-md sau instant-credit-transfers-md). |
|
[TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. Обязателен для проверки уникальности ASPSP. |
| Content-type | String | Обязательный | Указывает формат тела запроса – application/json. |
| PSU-IP-Address | String | Обязательный | IP-адрес PSU. |
| PSU-Device-ID | String | Обязательный | Уникальный ID устройства, используемого PSU. |
| PSU-Device-Name | String | Обязательный | Название/модель (общая) устройства, с которого подключается PSU. |
| PSU-Geo-Location | Geo Location | Обязательный | Географическое положение PSU. |
| TPP-Redirect-URI | String | Обязательный | URI для перенаправления к TPP после завершения согласия. |
| TPP-Nok-Redirect-URI | String | Опциональный | URI для перенаправления в случае ошибки. |
| Date | Datetime | Обязательный | Дата и время выполнения запроса (RFC 7231). |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
Пример инициации платежа через продукт: domestic-credit-transfers-md [TPP] Request Header Sample: |
|||
|
GET https://api.provider.com/v1/payments/domestic-credit-transfers-md X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 Content-Type: application/json PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Geo-Location: GEO:47.046399;28.762064 TPP-Redirect-URI: https://tpp-example.md/redirect TPP-Nok-Redirect-URI: https://tpp-example.md/redirect-failure Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=i/AwfzfBZztOinTJq+ANgtvyxF4ukmQjGM+Ae+5Twhs= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFiM9Do5slD Do7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8MjbbJff7c DwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPylQtD/kTx Mo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzdsq2+Lfs Ak5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ==" |
|||
|
[TPP] Request body Sample: |
|||
|
{ "endToEndIdentification": "cc5a8022-5e71-460e-82fa-ab0be1997a5", "instructedAmount": { "currency": "MDL", "amount": "1000.00" }, "debtorAccount": { "iban": "MD12AA000001100032130935" }, "creditorName": "Comerciant X", "creditorId": "2002002002002", "creditorOrgId": "ABCDEFGHI1ABCDFD1212", "creditorCtryOfRes": "MD", "creditorAccount": { "iban": "MD24AA000001100032130935" }, "instructionPriority": "NORM", "remittanceInformationUnstructured": "Plata facturii #123" } |
|||
|
[TPP] Parameters of body request: |
|||
| Название | Тип | Условие | Описание |
| endToEndIdentification | String Max35Text |
Обязательный | Уникальный идентификатор платежа от TPP для его отслеживания. |
| debtorAccount | Object | Опциональный | Информация о счёте дебитора. |
| debtorAccount.iban | String | Опциональный | IBAN счёта дебитора. |
| instructedAmount | Object | Обязательный | Сумма, назначенная для перевода. |
| instructedAmount.currency | String | Обязательный | Валюта счёта (например MDL). |
| instructedAmount.amount | String | Обязательный | Сумма платежа. |
| creditorName | String Max70Text |
Обязательный | Имя получателя/кредитора. |
| creditorId | String Max35Text |
Обязательный | Идентификатор получателя (IDNP/IDNO или идентификатор нерезидента). |
| creditorOrgId | String Max20Text [A-Z0-9] |
Опциональный | Идентификатор юридического лица (LEI) – уникальный 20-символьный буквенно-цифровой код, основанный на стандарте ISO 17442, присваиваемый юридическому лицу. |
| creditorCtryOfRes | String Text [A-Z]{2,2} |
Обязательный | Код страны получателя (ISO 3166-1). |
| creditorAccount | Oject | Обязательный | Информация о счёте кредитора. |
| creditorAccount.iban | String | Обязательный | IBAN счёта кредитора. |
| instructionPriority | String | Обязательный | Тип перевода с указанием режима перевода. NORM – для обычных платежей URGT – для срочных платежей |
| remittanceInformationUnstructured | String Max420Text [0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35} |
Опционально (в случае A2A обязательно со стороны ASPSP). | Дополнительная информация о платеже (свободный текст). |
|
Пример инициации платежа через продукт: instant- credit-transfers-md [TPP] Request Header Sample: |
|||
|
GET https://api.provider.com/v1/payments/instant-credit-transfers-md X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 Content-Type: application/json PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X PSU-Geo-Location: GEO:47.046399;28.762064 TPP-Redirect-URI: https://tpp-example.md/redirect TPP-Nok-Redirect-URI: https://tpp-example.md/redirect-failure Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=+8pwEuPygqm1u33m0Y0LCSlsU8UhTgYDhMZhoi871rU= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFiM9Do5slD Do7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8MjbbJff7c DwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPylQtD/kTx Mo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzdsq2+Lfs Ak5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ==", |
|||
|
[TPP] Request body Sample: |
|||
|
{ "endToEndIdentification": "d14c3e75-8a2f-4e93-b3ca-ec4fd7128b9e", "instructedAmount": { "currency": "MDL", "amount": "1000.00" }, "debtorAccount": { "iban": "MD12AA000001100032130935" }, "creditorAccount": { "msisdn ": "37399000000" }, "purposeCode": "201", "remittanceInformationUnstructured": "Transfer P2P" } |
|||
|
[TPP] Parameters of body request: |
|||
| Название | Тип | Условие | Описание |
| endToEndIdentification | String Max35Text |
Обязательный | Уникальный идентификатор платежа со стороны TPP для отслеживания. |
| debtorAccount | Object | Опциональный | Информация о счёте дебитора. |
| debtorAccount.iban | String | Обязательный | IBAN счёта дебитора. |
| instructedAmount | Object | Обязательный | Сумма, указанная для перевода. |
| instructedAmount.currency | String | Обязательный | Валюта счёта (например MDL). |
| instructedAmount.amount | String | Обязательный | Сумма платежа. |
| creditorAccount | Object | Обязательный | Информация о счёте кредитора. |
| creditorAccount.msisdn | String | Обязательный | Alias счёта кредитора. |
| purposeCode | String | Обязательный | Код TCC согласно документации НБМ. В настоящее время используется только TCC 201 для P2P-платежей. |
| remittanceInformationUnstructured | String Max420Text [0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35} |
Опциональный | Дополнительная информация о платеже (свободный текст). |
|
[ASPSP] Response Header sample: |
|||
|
Content-Type: application/json X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 ASPSP-SCA-Approach: REDIRECT Date: Wed, 11 Sep 2024 12:34:58 GMT Location: "/v1/payments/ domestic-credit-transfers-md/MD123456789" |
|||
|
[ASPSP] Response Sample (201 Created): |
|||
|
{ "transactionStatus": "RCVD", "paymentId": "MD123456789", "_links": { "scaRedirect": { "href": "www.mybankapp.md//authentication/a7c3e9f8-1a44-4cd3-83ab-4f29d1f9e8c7" }, "self": { "href": "/v1/payments/MD123456789" }, "status": { "href": "/v1/payments/ MD123456789/status" } } } |
|||
|
[ASPSP] Parameters of Success Response: |
|||
| Название | Тип | Условие | Описание |
| transactionStatus | String | Обязательный | Статус транзакции. |
| paymentId | String | Обязательный | Уникальный идентификатор платежа. |
| _links | String | Обязательный | Ссылка на детали инициированной транзакции. |
|
[ASPSP] Response Sample (Error or Warning): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "FORMAT_ERROR", "path": "string", "text": "string" } |
|||
|
[ASPSP] Parameters of Error Response: |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (например: FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например: "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
Метод: Get payment information Тип метода: GET /v1/{payment-service}/{payment-product}/{paymentId} Описание: Этот метод позволяет просмотреть детали инициированного платежа, используя уникальный идентификатор платежа ({paymentId}) для указанного типа платежа ({payment-product}). [TPP] Path Parameters: |
|||
| Название | Тип | Условие | Описание |
| payment-service | String | Обязательный | Тип платёжной услуги (может быть: payments, bulk-payments, periodic-payments). |
| payment-product | String | Обязательный | Тип используемого продукта (например domestic-credit-transfers-md sau instant-credit-transfers-md). |
| paymentId | String | Обязательный | Идентификатор инициированного платежа. |
|
[TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
| PSU-IP-Address | String | Обязательный | IP-адрес PSU. В случае вызова без участия PSU TPP указывает 0.0.0.0. |
| PSU-Device-ID | String | Обязательный | Уникальный ID устройства, используемого PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Device-Name | String | Обязательный | Название/модель (общая) устройства, с которого подключается PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Geo-Location | Geo Location | Опциональный | Географическое местоположение, переданное в соответствующем HTTP-запросе между PSU и TPP, если оно доступно. |
| Date | Datetime | Обязательный | Дата и время выполнения запроса (RFC 7231). |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
[TPP] Request Sample: |
|||
|
GET https://api.provider.com/v1/payments/domestic-credit-transfers-md/MD123456789 X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ 8MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkD PylQtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2Fq Nzdsq2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ==", |
|||
|
[ASPSP] Response Sample (200 OK) (domestic-credit-transfers-md): |
|||
|
{ "paymentId": "MD123456789", "debtorAccount": { "iban": "MD12AA000001100032130935" }, "instructedAmount": { "currency": "MDL", "amount": "1000.00" }, "creditorAccount": { "iban": "MD24AA000001100032130935" }, "creditorName": "Nume Beneficiar", "remittanceInformationUnstructured": "Plata facturii #123", "transactionStatus": "ACCP", "transactionFees": { "currency": "MDL", "amount": "5.00" } } |
|||
|
[ASPSP] Parameters of Success Response (domestic-credit-transfers-md): |
|||
| Название | Тип | Условие | Описание |
| paymentId | String | Обязательный | Уникальный идентификатор платежа. |
| transactionStatus | String | Обязательный | Текущий статус платежа. |
| debtorAccount | Object | Обязательный | Счёт дебитора. |
| debtorAccount.iban | String | Обязательный | IBAN счёта дебитора. |
| instructedAmount | Object | Обязательный | Сумма, назначенная для платежа (валюта и значение). |
| instructedAmount.currency | String | Обязательный | Валюта счёта (например MDL). |
| instructedAmount.amount | String | Обязательный | Сумма платежа. |
| creditorAccount | Object | Обязательный | Счёт кредитора. |
| creditorAccount.iban | String | Обязательный | IBAN счёта кредитора. |
| creditorName | String Max70Text |
Обязательный | Имя получателя платежа. |
| remittanceInformationUnstructured | String Max420Text [0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35} |
Опциональный | Дополнительная информация о платеже. |
| transactionStatus | String | Обязательный | Статус платежа. |
| transactionFees | Object | Опциональный | Комиссии, связанные с транзакцией. |
| transactionFees.currency | String | Опциональный | Валюта комиссии (например MDL) |
| transactionFees.amount | String | Опциональный | Сумма комиссии. |
|
[ASPSP] Response Sample for instant-credit-transfers-md (200 OK): |
|||
|
{ "paymentId": " MD123456789", "debtorAccount": { "iban": "MD12AA000001100032130935" }, "instructedAmount": { "currency": "MDL", "amount": "1000.00" }, "creditorAccount": { "msisdn": "37399000000" }, "remittanceInformationUnstructured": "Plata P2P", "transactionStatus": "ACTC", "transactionFees": { "currency": "MDL", "amount": "5.00" } |
|||
|
[ASPSP] Parameters of Success Response (domestic-credit-transfers-md): |
|||
| Название | Тип | Условие | Описание |
| paymentId | String | Обязательный | Уникальный идентификатор платежа. |
| transactionStatus | String | Обязательный | Текущий статус платежа. |
| debtorAccount | Object | Обязательный | Счёт дебитора. |
| debtorAccount.iban | String | Обязательный | IBAN счёта дебитора. |
| instructedAmount | Object | Обязательный | Сумма, назначенная для платежа (валюта и значение). |
| instructedAmount.currency | String | Обязательный | Валюта счёта (например MDL). |
| instructedAmount.amount | String | Обязательный | Сумма платежа. |
| creditorAccount | Object | Обязательный | Счёт кредитора. |
| creditorAccount.iban | String | Обязательный | IBAN счёта кредитора. |
| creditorName | String Max70Text |
Обязательный | Имя получателя платежа. |
| remittanceInformationUnstructured | String Max420Text [0-9a-zA-Z/\-\?:\(\)\.,'\+ ]{1,35} |
Опциональный | Дополнительная информация о платеже. |
| transactionStatus | String | Обязательный | Статус транзакции. |
| transactionFees | Object | Опциональный | Комиссии, связанные с транзакцией. |
| transactionFees.currency | String | Опциональный | Валюта комиссии (например MDL). |
| transactionFees.amount | String | Опциональный | Сумма комиссии. |
|
[ASPSP] Response Sample (Error or Warning): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "FORMAT_ERROR", "text": "string", "path": "string", } |
|||
|
[ASPSP] Parameters of Error Response: |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (например: FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например: "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
Метод: Get payment status Тип метода: GET /v1/{payment-service}/{payment-prodyuct}/{paymentId}/status Описание: Этот метод возвращает текущий статус инициированного платежа, идентифицируемого по {paymentId}, для указанного типа платёжного продукта ({payment-product}). [TPP] Path Parameters: |
|||
| Название | Тип | Условие | Описание |
| payment-service | String | Обязательный | Тип платёжной услуги (может быть: payments, bulk-payments, periodic-payments). |
| payment-product | String | Обязательный | Тип используемого продукта (например. domestic-credit-transfers-md sau instant-credit-transfers-md). |
| paymentId | String | Обязательный | Идентификатор инициированного платежа |
|
[TPP] Request Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
| PSU-IP-Address | String | Обязательный | IP-адрес PSU. В случае вызова без участия PSU TPP указывает 0.0.0.0. |
| PSU-Device-ID | String | Обязательный | Уникальный ID устройства, используемого PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Device-Name | String | Обязательный | Название/модель (общая) устройства, с которого подключается PSU. В случае вызова без участия PSU TPP указывает no-psu-involved. |
| PSU-Geo-Location | Geo Location | Опциональный | Географическое положение PSU. |
| Date | Datetime | Обязательный | Дата и время выполнения запроса (RFC 7231). |
| Digest | String | Обязательный | Включается только в случае, если элемент "Signature" присутствует в заголовке запроса. |
| Signature | String | Обязательный | Подписание запроса TPP на уровне приложения. |
| TPP-Signature-Certificate | String | Обязательный | Сертификат, используемый для подписания запроса, в кодировке base64. Должен быть включён, если имеется подпись. |
|
[TPP] Request Header Sample: |
|||
|
GET https://api.provider.com/v1/payments/domestic-credit-transfers-md/MD123456789/status X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 PSU-IP-Address: 192.168.0.10 PSU-Device-ID: device-12345 PSU-Device-Name: ModelDevice X Date: Wed, 11 Sep 2024 12:34:56 GMT Digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= Signature: keyId="SN= 4000000010FC01D520258AB15EAF, CA=CN=D-eSystemTrustIB, O=IP STISC 1003600096694, C=MD", algorithm="rsa-sha256", headers="digest date x-request-id", signature="Base64(RSA-SHA256(signing string))" TPP-Signature-Certificate: "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzKzT+I32ygAqDdZVfKYtDkWVZT7ySP54ZXgH8dEUM6d9fKhs6DFi M9Do5slDDo7YwLjXU8Iq7C4eONHp+7u0z5LmvMyYnxgD0h1S7F6T5gqaOQz3Qkm9bW2QY5M6Fh8/FivYpno3pzUNrzzTyAdIQ8 MjbbJff7cDwDpwnFVgbQ6ZTxYm2CccovJQJuyfwO7ICtVjkkWmZTfl2AfQwvMFuPRTlxjDLDBMOwDsYMBVBym8vSdzY7AkDPyl QtD/kTxMo+4toD+oLlo7mMtpTeDs/qhvZXMnRPvE/JIE58xsiCBvUe36V1ht+WLidqk9iYxeAwTbF7kZgxXjUGBYDrz/B4fqa2FqNzds q2+LfsAk5cDBshXq1t/vmhty7TK09KPBrbDAjm9uDbf6zA0ZSczX4rh7tBf3rc5BC+Mv9WgfWHi5BQ==" |
|||
|
[ASPSP] Response Header sample: |
|||
| X-Request-ID: 123e4567-e89b-12d3-a456-426614174000 | |||
|
[ASPSP] Response Body Sample (200 OK): |
|||
|
{ "transactionStatus": "ACCP" } |
|||
|
[ASPSP] Response Header Parameters: |
|||
| Название | Тип | Условие | Описание |
| X-Request-ID | UUID | Обязательный | Уникальный ID, создаваемый TPP для идентификации запроса. |
|
[ASPSP] Parameters of Success Response: |
|||
| Название | Тип | Условие | Описание |
| transactionStatus | String | Обязательный | Текущий статус платежа. |
|
[ASPSP] Response Sample (Error or Warning): |
|||
|
{ "tppMessages": [ { "category": "ERROR", "code": "FORMAT_ERROR", "path": "string", "text": "string" } |
|||
|
[ASPSP] Parameters of Error Response: |
|||
| Название | Тип | Условие | Описание |
| tppMessages | Array | Обязательный | Список сообщений об ошибках, сгенерированных сервером. |
| tppMessages.category | String | Обязательный | Категория сообщения (ERROR, WARNING). |
| tppMessages.code | String | Обязательный | Код ошибки (например: FORMAT_ERROR). |
| tppMessages.text | String | Обязательный | Подробное описание ошибки (например: "Invalid IBAN format"). |
| tppMessages.path | String | Опциональный | Указывает точное место возникновения ошибки. |
|
Приложение № 2 к Функциональным и техническим требованиям к интерфейсам поставщиков платежных услуг, оказывающие услуги по управлению счетом Типы ответов и стандартизированные коды ошибок 1. Consent Status |
|
| Код | Описание |
| received | Данные согласия получены и технически корректны. Данные ещё не авторизованы. |
| rejected | Данные согласия отклонены, например, из-за отсутствия успешной авторизации. |
| partiallyAuthorised | Согласие требует многоуровневой авторизации, но не все обязательные авторизации ещё выполнены. |
| valid | Согласие принято и действительно для GET-запросов данных счёта и других действий, указанных в объекте согласия. |
| revokedByPsu | Согласие было отозвано PSU у ASPSP. |
| expired | Срок действия согласия истёк. |
| terminatedByTpp | Соответствующий TPP отозвал согласие, применив метод DELETE ресурса согласия. |
|
2. Account Access |
||
| Атрибут | Тип | Описание |
| accounts | Array | Запрос на получение деталей счёта. |
| balances | Array | Запрос на получение балансов счётов. |
| transactions | Array | Запрос на получение транзакций счётов. |
| additionalInformation | Structurat | Запрос на получение дополнительных структурированных данных. |
| availableAccounts | String | Допустимые значения: "allAccounts" и "allAccountsWithOwnerName". |
| availableAccountsWithBalance | String | Допустимые значения: "allAccounts" и "allAccountsWithOwnerName". |
|
3. Account Reference |
||
| Атрибут | Тип | Описание |
| iban | IBAN | IBAN идентификатор счёта. |
| bban | BBAN | Код BBAN, используемый для счетов, у которых нет IBAN. |
| pan | PAN | Номер счёта для карт, используемый вместо IBAN или BBAN, где это применимо. |
| maskedPan | Masked PAN | Маскированный PAN, используемый для частичного отображения номера карты. |
| msisdn | MSISDN | Номер MSISDN, используемый для идентификации alias при мгновенных платежах. |
| currency | Cod valutar | Код валюты счёта. |
|
4. Account Details |
||
| Атрибут | Тип | Описание |
| resourceId | String | Элемент данных, используемый для доступа к данным с выделенного счёта. |
| iban | IBAN | Ссылка IBAN на счёт. |
| bban | BBAN | Код BBAN, используемый для счетов без IBAN. |
| pan | PAN | Номер счёта для карт, используемый вместо IBAN или BBAN. |
| maskedPan | Masked PAN | Маскированный PAN для частичного отображения номера карты. |
| msisdn | MSISDN | Номер MSISDN для идентификации alias при мгновенных платежах. |
| currency | Cod Valutar | Код валюты счёта (ISO 4217). |
| ownerName | Max140Text | Имя законного владельца счёта. |
| name | Max70Text | Название счёта, присвоенное ASPSP совместно с держателем счёта для дополнительной идентификации. |
| displayName | Max70Text | Название счёта, как оно определено PSU в онлайн-каналах. |
| product | Max35Text | Название продукта, связанного с этим счётом. |
| cashAccountType | Cash Account Type | Код типа счёта в соответствии с ISO 20022. |
| status | String | Статус счёта ("enabled" – доступен, "deleted" – закрыт, "blocked" – заблокирован по юридическим причинам). |
| bic | BICFI | BIC код, связанный со счётом. |
| linkedAccounts | Max70Text | Название счёта, связанного с ожидающими транзакциями по картам. |
| usage | Max4Text | Указывает использование счёта (PRIV – личный, ORGA – профессиональный). |
| details | Max500Text | Дополнительная информация о характеристиках счёта или соответствующей карты. |
| creditLimit | Amount | Кредитный лимит PSU для всех карт, связанных с этим счётом. |
| balances | Array of Balances | Указывает балансы счёта. |
| _links | Links | Прямые ссылки для доступа к подробной информации о счёте, балансах или транзакциях. |
|
5. Links |
|
| Атрибут | Описание |
| scaRedirect | Ссылка к ASPSP, где выполняется SCA в рамках подхода Redirect SCA. |
| scaOAuth | Ссылка указывает на JSON-документ, который определяет OAuth-параметры сервера авторизации ASPSP. |
| confirmation | Ссылка, определяющая URL ресурса, который должен быть обновлён кодом подтверждения или токеном доступа в зависимости от процесса аутентификации (Redirect или OAuth). |
| startAuthorisation | Ссылка на endpoint, где авторизация транзакции или её отмена инициируется методом POST. Дополнительные данные не требуются. |
| startAuthorisationWithPsuIdentification | Ссылка на endpoint, где авторизация транзакции начинается с предоставления идентификации PSU. |
| updatePsuIdentification | Ссылка на ресурс инициации платежа или информации о счёте, который требует обновления данными идентификации PSU, если они ещё не были предоставлены. |
| startAuthorisationWithProprietaryData | Ссылка на endpoint, где авторизация транзакции начинается с предоставления собственных специфических данных согласно документации ASPSP. |
| updateProprietaryData | Ссылка на ресурс, который требует обновления собственными данными. |
| startAuthorisationWithPsuAuthentication | Ссылка на endpoint, где авторизация начинается с аутентификации PSU. |
| updatePsuAuthentication | Ссылка на ресурс, который требует обновления паролем PSU и, при необходимости, идентификацией PSU, если она ещё не была предоставлена. |
| updateAdditionalPsuAuthentication | Ссылка на ресурс, который требует обновления дополнительным паролем PSU. |
| startAuthorisationWithEncryptedPsuAuthentication | Ссылка на endpoint, где авторизация начинается с предоставления зашифрованных аутентификационных данных PSU. |
| updateEncryptedPsuAuthentication | Ссылка на ресурс, который требует обновления зашифрованным паролем PSU и, при необходимости, идентификацией PSU. |
| updateAdditionalEncryptedPsuAuthentication | Ссылка на ресурс, который требует обновления дополнительным зашифрованным паролем PSU. |
| startAuthorisationWithAuthenticationMethodSelection | Ссылка на endpoint, где авторизация начинается с выбора метода SCA. |
| selectAuthenticationMethod | Ссылка на ресурс, где TPP может выбрать применимый для PSU метод аутентификации. |
| startAuthorisationWithTransactionAuthorisation | Ссылка на endpoint, где авторизация транзакции и передача данных ответа на вызов (challenge) выполняются одновременно. |
| authoriseTransaction | Ссылка на ресурс инициации платежа или согласия, куда отправляется запрос на авторизацию транзакции. |
| self | Ссылка на ресурс инициации платежа, созданный по запросу. Может использоваться для проверки статуса транзакции. |
| status | Ссылка для проверки статуса ресурса транзакции. |
| scaStatus | Ссылка для проверки статуса авторизации или отмены авторизации. |
| account | Ссылка на ресурс, предоставляющий детали по конкретному счёту. |
| balances | Ссылка на ресурс, предоставляющий баланс конкретного счёта. |
| transactions | Ссылка на ресурс, предоставляющий историю транзакций по конкретному счёту. |
| cardAccount | Ссылка на ресурс, предоставляющий детали по карточному счёту. |
| cardTransactions | Ссылка на ресурс, предоставляющий историю транзакций по карточному счёту. |
| transactionDetails | Ссылка на ресурс, предоставляющий детали по конкретной транзакции. |
| first | Навигационная ссылка для постраничных отчётов по счетам. |
| next | Навигационная ссылка для следующего постраничного отчёта. |
| previous | Навигационная ссылка для предыдущего отчёта. |
| last | Навигационная ссылка для последнего постраничного отчёта. |
| download | Ссылка для загрузки больших пакетов данных AIS. |
|
6. SCA Status |
|
| Код | Описание |
| received | Ресурс авторизации был успешно создан. |
| psuIdentified | PSU был идентифицирован для ресурса авторизации. |
| psuAuthenticated | PSU был идентифицирован и аутентифицирован. |
| scaMethodSelected | Процедура SCA была выбрана PSU/TPP. |
| started | Процедура SCA была начата. |
| unconfirmed | SCA технически успешно завершена, но требует подтверждения от TPP. |
| finalised | Процедура SCA была успешно завершена. |
| failed | Процедура SCA завершилась неудачно. |
|
7. Transaction Status |
|
| Код | Описание |
| ACCC | Расчёт (settlement) по счёту кредитора завершён. |
| ACCP | Проверка профиля клиента прошла успешно. |
| ACSC | Расчёт (settlement) по счёту дебитора завершён. |
| ACSP | Инициация платежа принята к исполнению. |
| ACTC | Техническая валидация принята. |
| ACWC | Инструкция принята, но будет внесено изменение. |
| RCVD | Инициация платежа получена принимающим агентом. |
| PDNG | Инициация платежа или транзакция находится в ожидании. |
| RJCT | Инициация платежа или транзакция отклонена PSU на стороне ASPSP. |
| CANC | Инициация платежа была отменена до исполнения по запросу TPP через API. |
|
8. Balance Type |
|
| Тип баланса | Описание |
| closingBooked | Остаток по счёту на конец согласованного отчётного периода. Включает все проведённые по счёту записи. |
| expected | Остаток по счету, рассчитанный на основе проведённых записей и ожидающих операций, с прогнозом остатка на конец дня. |
| openingBooked | Остаток по счёту на начало отчётного периода, идентичный конечному остатку предыдущего отчёта. |
| interimAvailable | Доступный остаток, рассчитанный в течение рабочего дня и подлежащий последующим изменениям в течение дня |
| interimBooked | Остаток по счету, рассчитанный в течение дня на основе кредитовых и дебетовых записей, выполненных до указанного момента. |
| forwardAvailable | Доступный остаток авансом по счету, который владелец счёта может использовать на указанную дату. |
| nonInvoiced | Только для карточных счетов, находится в стадии определения. |
|
9. HTTP Response |
|
| Cod Status | Descriere |
| 200 OK | Код ответа для запросов PUT, GET, указывающий, что запрос выполнен успешно. |
| 201 Created | Ответ POST для корректно выполненного запроса на инициацию платежа или согласия. |
| 202 Accepted | Код ответа для метода DELETE, используемый, когда платёж может быть отменён, но требует дополнительной авторизации. |
| 204 No Content | Код ответа для метода DELETE, указывающий, что ресурс согласия был успешно удалён/отозван. Запрос обработан, но ответ не содержит содержимого (no content). |
| 400 Bad Request | Ошибка валидации, например, неверный синтаксис запроса или некорректные данные в payload. |
| 401 Unauthorized | TPP или PSU не авторизован должным образом для выполнения запроса. |
| 403 Forbidden | Ресурс существует, но недоступен для TPP или PSU. |
| 404 Not Found | Указанный ресурс или endpoint не существует или не может быть найден. |
| 405 Method Not Allowed | HTTP-метод не поддерживается на конкретном endpoint. |
| 408 Request Timeout | Сервер работает корректно, но время ожидания запроса истекло. |
| 409 Conflict | Запрос не выполнен из-за конфликта с текущим состоянием целевого ресурса. |
| 415 Unsupported Media Type | TPP указал тип медиа (Content-Type), который ASPSP не поддерживает. |
| 429 Too Many Requests | Запрос отклонён из-за слишком большого количества запросов за короткий промежуток времени. |
| 500 Internal Server Error | Общая ошибка сервера ASPSP, указывающая на внутреннюю проблему. |
| 503 Service Unavailable | Сервис временно недоступен, как правило, из-за технического обслуживания или перегрузки сервера. |
|
10. HTTP Error Codes |
|||
| Code | HTTP code | Описание | Еndpoint Метод |
| FORMAT_ERROR | 400 | Формат некоторых полей в запросе не соответствует требованиям. | /consents, /accounts, /payments |
| PARAMETER_NOT_CONSISTENT | 400 | Параметры, отправленные TPP, неконсистентны (только для query-параметров). | /consents, /accounts, /payments |
| PARAMETER_NOT_SUPPORTED | 400 | Параметр не поддерживается API ASPSP. | /consents, /accounts |
| SERVICE_INVALID | 400 (если проблема в payload)/ 405 (если проблема в HTTP-методе). |
Запрашиваемая услуга недействительна для запрошенных ресурсов. | /consents, /accounts, /payments |
| RESOURCE_UNKNOWN | 400 (если проблема в payload)/ 403 (если другой ресурс в path)/ 404 (если account-id в path). |
Запрошенный ресурс не может быть найден в контексте TPP. | /consents, /accounts, /payments |
| RESOURCE_EXPIRED | 400 (если проблема в payload)/ 403 (если проблема в path). |
Срок действия запрошенного ресурса истёк, и он больше недоступен. | /consents, /accounts, /payments |
| RESOURCE_BLOCKED | 400 | Доступ к запрошенному ресурсу невозможен, так как он заблокирован, например, в корзине подписания (signing basket). | /consents, /accounts, /payments |
| TIMESTAMP_INVALID | 400 | Время не входит в допустимый период. | /consents, /accounts, /payments |
| PERIOD_INVALID | 400 | Запрошенный временной период превышает допустимые пределы. | /consents, /accounts, /payments |
| SCA_METHOD_UNKNOWN | 400 | Метод SCA, указанный в запросе на выбор метода аутентификации, неизвестен или не может быть сопоставлен ASPSP с PSU. | /consents, /accounts, /payments |
| CONSENT_UNKNOWN | 400 (если проблема в header)/ 403 (если проблема в path). |
Consent-ID не может быть найден ASPSP в контексте TPP. | /consents, /accounts, /payments |
| SESSIONS_NOT_SUPPORTED | 400 | Индикатор комбинированной услуги не может использоваться с этим ASPSP. | /consents, /accounts, /payments |
| PAYMENT_FAILED | 400 | POST-запрос на инициацию платежа не выполнен. ASPSP предоставит детали ошибки. | /payments |
| EXECUTION_DATE_INVALID | 400 | Запрошенная дата исполнения недействительна для ASPSP. | /payments |
| CERTIFICATE_INVALID | 401 | Содержимое сертификата подписи не соответствует требованиям или недействительно. | /consents, /accounts, /payments |
| ROLE_INVALID | 403 | TPP не имеет необходимой роли. | /consents, /accounts |
| CERTIFICATE_EXPIRED | 401 | Сертификат подписи просрочен. | /consents, /accounts, /payments |
| CERTIFICATE_BLOCKED | 401 | Сертификат подписи заблокирован. | /consents, /accounts, /payments |
| CERTIFICATE_REVOKED | 401 | Сертификат подписи отозван. | /consents, /accounts, /payments |
| CERTIFICATE_MISSING | 401 | Сертификат подписи не был предоставлен в запросе, но обязателен для соответствующей услуги. | /consents, /accounts, /payments |
| CERTIFICATE_UNKNOWN | 401 | Сертификат подписи отсутствует в Цифровом реестре Open Banking. | /consents, /accounts, /payments |
| SIGNATURE_INVALID | 401 | Подпись, применённая для аутентификации TPP, недействительна. | /consents, /accounts, /payments |
| SIGNATURE_MISSING | 401 | Подпись, применённая для аутентификации TPP, необходима, но отсутствует. | /consents, /accounts, /payments |
| CORPORATE_ID_INVALID | 401 | PSU-Corporate-ID не может быть найден ASPSP. | /consents, /accounts, /payments |
| PSU_CREDENTIALS_INVALID | 401 | PSU-ID не может быть найден ASPSP, или заблокирован, или пароль/OTP некорректны. | /consents, /accounts, /payments |
| CONSENT_INVALID | 401 | Согласие, созданное TPP, недействительно для запрашиваемой услуги/ресурса. | /consents, /accounts, /payments |
| CONSENT_EXPIRED | 401 | Согласие, созданное TPP, истекло и должно быть обновлено. | /consents, /accounts, /payments |
| TOKEN_UNKNOWN | 401 | OAuth2-токен не может быть найден ASPSP в контексте TPP. | /consents, /accounts, /payments |
| TOKEN_INVALID | 401 | OAuth2-токен связан с TPP, но недействителен для запрашиваемой услуги/ресурса. | /consents, /accounts, /payments |
| TOKEN_EXPIRED | 401 | OAuth2-токен истёк и должен быть обновлён. | /consents, /accounts, /payments |
| SERVICE_BLOCKED | 403 | Услуга недоступна PSU из-за блокировки, не зависящей от канала, со стороны ASPSP. | /consents, /accounts, /payments |
| PRODUCT_INVALID | 403 | Запрашиваемый платёжный продукт недоступен для PSU. | /payments |
| PRODUCT_UNKNOWN | 404 | Запрашиваемый платёжный продукт не поддерживается ASPSP. | /payments |
| CANCELLATION_INVALID | 405 | Адресные платежи не могут быть отменены из-за ограничения по времени или юридических ограничений. | /payments |
| REQUESTED_FORMATS_INVALID | 406 | Форматы, указанные в заголовке Accept, не соответствуют форматам, предоставляемым ASPSP. | /consents, /accounts |
| STATUS_INVALID | 409 | Запрашиваемый ресурс не допускает дополнительных авторизаций. | /consents, /accounts, /payments |
| ACCESS_EXCEEDED | 429 | Доступ к счёту превысил согласованную кратность без участия PSU за день. | /consents, /accounts |
|
Приложение № 3 к Функциональным и техническим требованиям к интерфейсам поставщиков платежных услуг, оказывающие услуги по управлению счетом Механизм проверки запросов TPP со стороны ASPSP 1. Генерация запроса TPP Шаг 1. Вычисление hash для поля Digest 1.1. TPP формирует тело запроса (например, JSON с данными о транзакции или согласии). 1.2. TPP-ul применяет алгоритм SHA-256 к телу запроса для генерации уникального hash. 1.3. Полученный Hash кодируется в формате Base64 и помещается в заголовок запроса Digest. Шаг 2. Создание строки подписи (signing string) 2.1. TPP подготавливает строку подписи (signing string) на основе определённых полей из заголовка запроса. 2.2. Строка подписи формируется путём конкатенации значений подписанных заголовков в определённом формате. 2.3. Порядок значений заголовков имеет значение и соответствует спецификациям. Шаг 3. Подписание строки подписи 3.1. TPP использует приватный ключ RSA, связанный с его сертификатом, для генерации электронной подписи. 3.2. Подпись применяется к строке подписи с использованием алгоритма RSA-SHA256. 3.3. Полученная электронная подпись кодируется в формате Base64 и помещается в заголовок Signature. Шаг 4. Добавление сертификата в заголовок TPP-Signature-Certificate 4.1. TPP включает свой публичный сертификат в заголовок запроса TPP-Signature-Certificate. 4.2. Сертификат выдан доверенным центром сертификации (CA) и содержит публичный ключ TPP. Шаг 5. Отправка запроса в ASPSP 5.1. TPP-ul отправляет полный запрос, включая заголовки Digest, Signature și TPP-Signature-Certificate, на endpoint ASPSP. 2. Проверка запроса ASPSP Шаг 1. Проверка сертификата TPP 1.1. ASPSP проверяет сертификат TPP, включённый в заголовок TPP-Signature-Certificate. Этапы проверки: 1.1.1. Проверка цепочки доверия сертификата до доверенного центра сертификации (CA). 1.1.2. Проверка, что сертификат действителен (не просрочен и не отозван). 1.1.3. ASPSP должен убедиться, что представленный TPP сертификат выдан и действителен для использования в рамках услуг Open Banking, предназначен для электронной подписи и аутентификации, и что он точно соответствует TPP, зарегистрированному или лицензированному НБМ (путём проверки в Цифровом реестре Open Banking НБМ, если ASPSP использует его для верификации TPP), включая проверку серийного номера сертификата, эмитирующего центра (CA уровня 2 или root CA) и поля Signature. Результат: Если сертификат действителен, идентичность TPP подтверждена. Шаг 2. Проверка hash из Digest 2.1. ASPSP вычисляет собственный hash SHA-256 тела полученного запроса. 2.2. Вычисленный hash сравнивается со значением в заголовке Digest. Результат: Если оба hash совпадают, целостность тела запроса подтверждена. Шаг 3. Проверка подписи из Signature 3.1. ASPSP извлекает значения заголовков, включённых в "signing string", на основе информации из заголовка Signature. 3.2. ASPSP воссоздаёт строку подписи в том же формате, который использовал TPP. 3.3. ASPSP использует публичный ключ, извлечённый из сертификата в заголовке TPP-Signature-Certificate, для проверки подписи из Signature. Результат: Если подпись действительна, подлинность запроса подтверждена. Шаг 4. Авторизация запроса 4.1. Если все проверки пройдены (роль, целостность, подпись и сертификат), ASPSP обрабатывает запрос. 4.2. В противном случае запрос отклоняется с сообщением об ошибке (например, 401 Unauthorized или 403 Forbidden). 3. Дополнительные детали. Как ASPSP проверяет подпись из Signature? 1. Извлечение публичного ключа из сертификата TPP-Signature-Certificate: 1.1. ASPSP получает сертификат (TPP-Signature-Certificate) из заголовка запроса. 1.2. Из этого сертификата ASPSP извлекает публичный ключ TPP. 2. Воссоздание signing string: 2.1. ASPSP анализирует заголовок Signature, чтобы определить подписанные поля (например Digest, X-Request-ID, Date и т.д.). 2.2. ASPSP воссоздаёт signing string из фактических значений этих заголовков в указанном порядке. 3. Декодирование подписи: 3.1. ASPSP декодирует значение из поля signature заголовка HTTP Signature (т.е. Signature.signature), представляющее электронную подпись, сгенерированную TPP. Декодирование выполняется с использованием публичного ключа из сертификата TPP-Signature-Certificate и алгоритма, указанного в Signature.algorithm (ex.: RSA-SHA256). 4. Сравнение полученного hash: 4.1. В процессе декодирования ASPSP получает hash, рассчитанный TPP во время подписи. 4.2. ASPSP сравнивает этот hash с hash, сгенерированным внутренне из воссозданного signing string. 5. Возможные результаты: 5.1. Если hash совпадают, подпись действительна. 5.2. Если hash не совпадают, подпись недействительна, и запрос отклоняется. |