> For the complete documentation index, see [llms.txt](https://docs.npck.kz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.npck.kz/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/inicializaciya-perevodov-denezhnykh-sredstv/inicializaciya-perevoda-deneg-mezhdu-svoimi-schetami-m2m2.md).

# Инициализация перевода денег между своими счетами (M2M2)

Данный сценарий описывает инициализацию перевода денег клиентом (Отправитель денег) со своего счета в одном БВУ (Банк отправителя денег) на свой счет в другой БВУ (Банк бенефициара, т.е. банк, обслуживающий счет клиента, на который переводятся деньги). Причем, перевод инициируется в приложении Банка отправителя денег.

Для реализации данного сценария в приложении Банка отправителя денег должно быть реализовано получение информации о счетах клиента (Отправителя денег), чтобы была возможность выбора счета клиента, на который переводятся деньги в другом банке. Подробное описание того, как получить информацию о счетах клиента из других банков приведено в документе «Руководство разработчика. Получение информации о счетах клиента».

## Методы API (endpoint), которые необходимо реализовать&#x20;

{% hint style="info" %}
При реализации участниками информационного взаимодействия данные API должны быть идемпотентны (получив повторный запрос с теми же параметрами, должен выдаваться в ответе результат исходного запроса).
{% endhint %}

Схему успешного сценария процесса «Инициализация перевода денег между своими счетами (M2M2)» отображает рисунок ниже.

<figure><img src="/files/JPlAFZN0JfTtVIij5Yxi" alt=""><figcaption><p>Схема процесса «Инициализация перевода денег между своими счетами (M2M2)»</p></figcaption></figure>

{% hint style="info" %}
*Примечание: На схеме темно-зелеными квадратами отображены методы (endpoint), которые должны быть реализованы на стороне соответствующего участника для реализации данного сценария. Описание методов приведено  в электронном формате в* [*https://transfers-openapi.npck.kz/*](https://transfers-openapi.npck.kz/)*.*
{% endhint %}

Методы API (endpoint), которые необходимо реализовать каждому участнику на своей стороне в рамках процесса «Инициализация перевода денег между своими счетами (M2M2)», приведены в таблице ниже.

| Метод API (endpoint)                                                                                | Банк отправителя денег | Банк бенефициара |
| --------------------------------------------------------------------------------------------------- | ---------------------- | ---------------- |
| <p>Запрос на перевод денег </p><p> (POST /v1/transfers/iso20022/pacs.008.001.11)</p>                | <p><br></p>            | +                |
| <p>Статус обработки запроса перевода денег </p><p>(POST /v1/transfers/iso20022/pacs.002.001.13)</p> | +                      | +                |

## Взаимосвязь идентификаторов сообщений

Процесс «Инициализация перевода денег между своими счетами (M2M2)» построен на обмене сообщениями, основанными на стандарте ISO20022, которые логически связаны между собой.

<figure><img src="/files/EW5EB1dR6YNhZ5T3Qnuw" alt=""><figcaption><p>Логическая схема взаимосвязи идентификаторов сообщений</p></figcaption></figure>

## Описание процесса

{% hint style="warning" %}
***Обязательное предусловие:***

*Для реализации данного сценария в приложении Банка отправителя денег должно быть реализовано получение информации о счетах клиента (Отправителя денег), чтобы была возможность выбора счета клиента, на который переводятся деньги в другом банке. Подробное описание того, как получить информацию о счетах клиента из других банков приведено в документе «Руководство разработчика. Получение информации о счетах клиента».*
{% endhint %}

Описание успешного сценария процесса «Инициализация перевода денег между своими счетами (M2M2)»:

1. Банк отправителя денег проводит проверку счета клиента на:

* валидность статуса для его дебетования&#x20;
* отсутствие наложенного ПТП/ РПРО/ ареста и т.п.&#x20;
* достаточности средств для списания суммы операции

<details>

<summary>Возможные неуспешные сценарии</summary>

* **Проверка счета не прошла успешно:**

1. Банк отправителя денег уведомляет клиента о невозможности проведения операции.&#x20;
2. Процесс завершается неуспешно.

</details>

2. Банк отправителя денег блокирует сумму операции по счету клиента и формирует платежное поручение (pacs.008).
3. Банк отправителя денег направляет Платформе запрос на перевод денег (сообщение pacs.008), подписав его своим ЭЦП.

> В сообщении передается:
>
> * в теге \<Document::GrpHdr:MsgId> – сгенерированный уникальный идентификатор нового сообщения
> * в теге \<Document::PmtId:EndToEndId> – сгенерированный уникальный идентификатор, который будет выступать в качестве сквозного идентификатора для всей цепочки сообщений в рамках данной операции перевода
> * в поле \<Document::PmtId:TxId> – сгенерированный уникальный идентификатор новой транзакции
> * указывается  IBAN для счета Отправителя денег
> * указывается  идентификатор Платформы (OBID) для счета Бенефициара

<details>

<summary>Возможные неуспешные сценарии</summary>

* **Платформа не отвечает:**

1. Если Платформа не направляет ответ,  то Банк отправителя денег должен считать, что запрос не доставлен.
2. Банк отправителя денег выполняет попытку повторной отправки корректного запроса в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)).

* **Валидация сообщения не прошла успешно:**

1. Валидация сообщения не проходит успешно, Платформа направляет Банку отправителя денег ответ с соответствующим ошибке HTTP статусом.&#x20;
2. Процесс завершается неуспешно.

</details>

3.1. Платформа, получив запрос, проводит его валидацию, в том числе:

* проверяет подпись Банка отправителя денег
* проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Платформа направляет ответ с HTTP статусом 200.&#x20;

4. Платформа обрабатывает  запрос на перевод денег (сообщение pacs.008), в том числе:&#x20;
   * выполняет проверку позиций участников и лимитов;
   * выполняет блокирование средств для проведения транзакции

<details>

<summary>Возможные неуспешные сценарии</summary>

* **Обработка запроса на перевод денег pacs.008 Платформой не проходит успешно:**

1. Платформа направляет статус обработки запроса перевода денег в Банк отправителя денег (сообщение pacs.002), подписав его ЭЦП Платформы, со статусом транзакции RJCT (отклонена).&#x20;
2. Процесс завершается неуспешно.

</details>

5. Платформа направляет в Банк бенефициара запрос на перевод денег (сообщение pacs.008), подписав его ЭЦП Платформы.

> В сообщении передается:
>
> * в теге \<Document::GrpHdr:MsgId> – сгенерированный уникальный идентификатор нового сообщения
> * в теге \<Document::PmtId:EndToEndId> – сквозной идентификатор из тега \<EndToEndId> сообщения pacs.008 Банка отправителя денег
> * в поле \<Document::PmtId:TxId> – идентификатор транзакции из тега \<TxId> из сообщения pacs.008 Банка отправителя денег
> * указывается  IBAN для счета Отправителя денег
> * указывается  идентификатор Платформы (OBID) для счета Бенефициара

<details>

<summary>Возможные неуспешные сценарии</summary>

* **Банк бенефициара не отвечает:**

1. Если Банк бенефициара не направляет ответ,  то Платформа должна считать, что запрос не доставлен.
2. Платформа выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)).
3. Платформа завершает процесс, не получив ответ в срок в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)).
4. Платформа направляет в Банк отправителя сообщение pacs.002 с ошибкой.
5. Банк отправителя денег завершает процесс, получив сообщение с информацией об ошибке.&#x20;
6. Процесс завершается неуспешно.

* **Валидация сообщения не прошла успешно:**

1. Валидация сообщения не проходит успешно, Банк бенефициара направляет ответ Платформе с соответствующим ошибке HTTP статусом.
2. Платформа устанавливает статус транзакции RJCT (отклонена).&#x20;
3. Платформа направляет в Банк отправителя сообщение pacs.002 с ошибкой.
4. Банк отправителя денег завершает процесс, получив сообщение с информацией об ошибке, устанавливает статус транзакции RJCT (отклонена).&#x20;
5. Процесс завершается неуспешно.

</details>

5.1. Банк бенефициара, получив запрос, проводит его обработку, в том числе:

* проверяет подпись Платформы
* проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Банк бенефициара направляет ответ с HTTP статусом 200.

6. Банк бенефициара проверяет счет бенефициара на возможность зачисления денег.
7. Банк бенефициара направляет статус обработки запроса перевода денег Платформе (сообщение pacs.002), подписав его своим ЭЦП.

> В сообщении передается:
>
> * \<Document::OrgnlEndToEndId> – сквозной идентификатор из тега \<EndToEndId> исходного запроса (pacs.008)
> * \<Document::OrgnlTxId> – идентификатор  транзакции из тега \<TxId> исходного запроса (из pacs.008)
> * Статус транзакции PDNG (в обработке)

<details>

<summary>Возможные неуспешные сценарии</summary>

* **Платформа не отвечает:**

1. Если Платформа не направляет ответ,  то Банк бенефициара должен считать, что запрос не доставлен.
2. Банк бенефициара выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)).

* **Валидация сообщения не прошла успешно:**

1. Валидация сообщения не проходит успешно, Платформа направляет ответ Банку бенефициара с соответствующим ошибке HTTP статусом. Банк бенефициара устанавливает статус транзакции RJCT (отклонена).
2. Платформа устанавливает статус транзакции RJCT (отклонена).&#x20;
3. Банк отправителя денег,  не получив ответ в срок в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)), устанавливает статус транзакции RJCT (отклонена).&#x20;
4. Процесс завершается неуспешно.

* **Транзакция отклонена (статус транзакции RJCT):**

1. Банк бенефициара направляет Платформе статус обработки запроса перевода денег (сообщение pacs.002) - RJCT (отклонена).
2. Платформа направляет статус обработки запроса перевода денег в Банк отправителя денег (сообщение pacs.002), подписав его ЭЦП Платформы, со статусом транзакции RJCT (отклонена).&#x20;
3. Процесс завершается неуспешно.

</details>

7.1. Платформа, получив запрос, проводит его валидацию, в том числе:

* проверяет подпись Банка бенефициара&#x20;
* проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Платформа направляет ответ с HTTP статусом 200.

8. Платформа направляет статус обработки запроса перевода денег в Банк отправителя денег (сообщение pacs.002), подписав его ЭЦП Платформы.

> В сообщении передается:
>
> * в теге \<Document::OrgnlEndToEndId> – сквозной идентификатор из тега \<EndToEndId> исходного запроса (pacs.008)
> * в теге \<Document::OrgnlTxId> – идентификатор  транзакции из тега \<TxId> исходного запроса (из pacs.008)
> * Статус транзакции PDNG (в обработке)

<details>

<summary>Возможные неуспешные сценарии</summary>

* **Банк отправителя денег не отвечает:**

1. Если Банк отправителя денег не направляет ответ,  то Платформа должна считать, что запрос не доставлен.
2. Платформа выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)).

</details>

8.1. Банк отправителя денег, получив запрос, проводит его валидацию, в том числе:

* проверяет подпись Платформы
* проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Банк отправителя денег направляет ответ с HTTP статусом 200.

9. Платформа успешно завершает транзакцию (commit transaction).
10. Платформа направляет в качестве уведомления об успешной транзакции в Банк бенефициара сообщение pacs.002 со статусом транзакции ACSC, подписав его ЭЦП Платформы.

<details>

<summary>Возможные неуспешные сценарии</summary>

* **Банк бенефициара не отвечает:**

1. Если Банк бенефициара не направляет ответ,  то Платформа должна считать, что запрос не доставлен.
2. Платформа выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)).

</details>

10.1. Банк бенефициара, получив сообщение pacs.002 со статусом транзакции, проводит его валидацию, в том числе:

* проверяет подпись Платформы
* проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Банк бенефициара направляет ответ с HTTP статусом 200.

{% hint style="warning" %}
*Примечание: Если Платформа направляет в Банк бенефициара сообщение pacs.002 со статусом транзакции ACSC, и им уже был получен такой же запрос (повторно отправлен pacs.002), то дополнительных действий Банк бенефициара не производит (не производит повторное зачисление денег на счет бенефициара и т.д.), а лишь отправляет ответ с HTTP статусом 200*
{% endhint %}

<details>

<summary>Возможные неуспешные сценарии</summary>

* **Банк бенефициара не получил сообщение pacs.002 с финальным статусом транзакции (ACSC или RJCT):**

1. Банк бенефициара ожидает получение сообщения pacs.002 с финальным статусом транзакции (ACSC или RJCT) в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)).
2. Не получив сообщения pacs.002 с финальным статусом транзакции (ACSC или RJCT), Банк бенефициара в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)) завершает транзакцию неуспешно (RJCT) по тайм-ауту, зачисление средств бенефициару не производится. Платформа производит откат транзакции, устанавливает статус транзакции - RJCT (неуспешно). Банк отправителя денег, получив статус транзакции RJCT (неуспешно), разблокирует средства Отправителя денег, списание средств не производится.

*Примечание: перед завершением транзакции Банк бенефициара может проверить статус транзакции на Платформе, отравив сообщение pacs.028 (см.* [Сервис получения статуса обработки транзакции](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/servis-polucheniya-statusa-obrabotki-tranzakcii.md)*)*

</details>

10.2. Банк бенефициара производит зачисление денег на счет бенефициара и уведомляет об этом бенефициара.

11. Платформа направляет в качестве уведомления об успешной транзакции в Банк отправителя денег сообщение pacs.002 со статусом транзакции ACSC, подписав его ЭЦП Платформы.

<details>

<summary>Возможные неуспешные сценарии</summary>

* **Банк отправителя денег не отвечает:**

1. Если Банк отправителя денег не направляет ответ,  то Платформа должна считать, что запрос не доставлен.
2. Платформа выполняет попытку повторной отправки запроса в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)).

</details>

11.1. Банк отправителя денег, получив сообщение pacs.002 со статусом транзакции, проводит его валидацию, в том числе:

* проверяет подпись Платформы
* проверяет корректность заполнения полей

Если валидация запроса проходит успешно, Банк отправителя денег направляет ответ с HTTP статусом 200.

{% hint style="warning" %}
*Примечание: Если Платформа направляет в Банк отправителя денег сообщение pacs.002 со статусом транзакции ACSC, и им уже был получен такой же запрос (повторно отправлен pacs.002), то дополнительных действий Банк отправителя денег не производит (не производит повторное списание денег со счета отправителя денег и т.д.), а лишь отправляет ответ с HTTP статусом 200*
{% endhint %}

<details>

<summary>Возможные неуспешные сценарии</summary>

* **Банк отправителя денег не получил сообщение pacs.002 с финальным статусом транзакции (ACSC или RJCT):**

1. Банк отправителя денег ожидает получение сообщения pacs.002 с финальным статусом транзакции (ACSC или RJCT) в соответствии с установленным регламентом (см. [Тайм-ауты и логика повторных запросов](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/taim-auty-i-logika-povtornykh-zaprosov.md)).
2. Не получив сообщения pacs.002 с финальным статусом транзакции (ACSC или RJCT), Банк отправителя денег  направляет запрос статуса транзакции Платформе (сообщение pacs.028, см. [Сервис получения статуса обработки транзакции](/mezhbankovskaya-mobilnykh-platezhei-msmp/mezhbankovskaya-sistema-mobilnykh-platezhei-msmp/servis-polucheniya-statusa-obrabotki-tranzakcii.md)), подписав его своим ЭЦП.&#x20;
3. Платформа, успешно выполнив обработку запроса, направляет ответ с HTTP статусом 200.
4. Платформа направляет в Банк отправителя денег сообщение pacs.002 со статусом транзакции, подписав его ЭЦП Платформы.

</details>

11.2. Банк отправителя денег производит списание денег со счета отправителя денег и уведомляет его о завершении операции.
