# Точка Банк API: Принять оплату по платёжной ссылке

Сценарий из mcp-everything. Актуально на 2026-10-13.

Сценарий для оплаты заказа картой, через СБП, T-Pay или «Долями». Метод возвращает `Data.paymentLink` для покупателя и `Data.operationId` для контроля операции.

1. Подключи интернет-эквайринг и получи токен с разрешениями `MakeAcquiringOperation`, `ReadAcquiringData` и `ReadCustomerData`.
2. Запроси GET /uapi/open-banking/v1.0/customers и возьми `customerCode` из объекта с `customerType: "Business"`.
3. Если торговых точек несколько, запроси GET /uapi/acquiring/v1.0/retailers с `customerCode` и выбери `merchantId` точки с `status: "REG"` и `isActive: true`.
4. Создай ссылку: POST /uapi/acquiring/v1.0/payments.
5. Перенаправь покупателя по `Data.paymentLink` и сохрани `Data.operationId`.
6. Дождись вебхука `acquiringInternetPayment` или проверь операцию: GET /uapi/acquiring/v1.0/payments/{operationId}. Успешной оплате соответствует `APPROVED`.

```bash
curl -L 'https://enter.tochka.com/uapi/acquiring/v1.0/payments' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Bearer <token>' \
  -d '{
    "Data": {
      "customerCode": "300000092",
      "amount": "1234.00",
      "purpose": "Перевод за оказанные услуги",
      "redirectUrl": "https://example.com",
      "failRedirectUrl": "https://example.com/fail",
      "paymentMode": [
        "sbp",
        "card",
        "tinkoff",
        "dolyame"
      ]
    }
  }'
```

## Базовые URL

- Боевой: `https://enter.tochka.com/uapi`
- Тестовый: `https://enter.tochka.com/sandbox/v2`
- OAuth 2.0: `https://enter.tochka.com/connect/token`
- В песочнице часть пути после  сохраняется: `/uapi`

## Авторизация

Тип: Bearer-токен

Для интеграции одной компании создай JWT-ключ в интернет-банке: «Сервисы» → «Интеграции и API» → «Создать JWT-ключ». Выбери срок и разрешения, сохрани токен и `client_id`, затем передавай `Authorization: Bearer <jwt_token>`. У JWT нет refresh-токена; после истечения срока ключ перевыпускается вручную.

Для сервиса, который работает от имени других компаний, используется OAuth 2.0: зарегистрируй приложение, получи служебный токен по `client_credentials`, создай consent, отправь клиента на подтверждение, обменяй `code` на `access_token` и `refresh_token`. `code` живёт 5 минут, `access_token` — 24 часа, `refresh_token` — 30 дней; при запросе данных конкретной компании дополнительно передавай её идентификатор в заголовке `customerCode`.

В песочнице используй `Authorization: Bearer sandbox.jwt.token`; отдельные ключи и доступы для неё не нужны.

## Методы сценария

### GET /uapi/open-banking/v1.0/customers — Get Customers List

Возвращает доступные компании и их `customerCode`; для банковских операций нужен объект с `customerType: "Business"`. Требуется разрешение `ReadCustomerData`.

Документация: https://developers.tochka.com/docs/tochka-api/api/get-customers-list-open-banking-v-1-0-customers-get

### GET /uapi/acquiring/v1.0/retailers — Get Retailers

Возвращает торговые точки, их статус, доступные способы оплаты и `merchantId`. Требуется разрешение `ReadAcquiringData`.

Документация: https://developers.tochka.com/docs/tochka-api/api/get-retailers-acquiring-v-1-0-retailers-get

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `customerCode` | query | string | да | Уникальный код клиента |

### POST /uapi/acquiring/v1.0/payments — Create Payment Operation

Создаёт платёжную ссылку и возвращает `operationId`. Требуется разрешение `MakeAcquiringOperation`.

Документация: https://developers.tochka.com/docs/tochka-api/api/create-payment-operation-acquiring-v-1-0-payments-post

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `Data.customerCode` | body | string | да | Уникальный код клиента, 9 символов |
| `Data.amount` | body | number | да | Сумма платежа, больше 0 |
| `Data.purpose` | body | string | да | Назначение платежа, не более 140 символов |
| `Data.paymentMode` | body | array<string> | да | Способы оплаты: sbp, card, tinkoff, dolyame |
| `Data.redirectUrl` | body | string<uri> | нет | URL после оплаты |
| `Data.failRedirectUrl` | body | string<uri> | нет | URL после неуспешной оплаты |
| `Data.merchantId` | body | string | нет | Идентификатор торговой точки, 15 символов |
| `Data.preAuthorization` | body | boolean | нет | Создать платёж с двухэтапной оплатой |
| `Data.ttl` | body | integer | нет | Время жизни ссылки в минутах, от 1 до 44640; по умолчанию 10080 |
| `Data.paymentLinkId` | body | string | нет | Уникальный номер заказа, не более 45 символов |

### GET /uapi/acquiring/v1.0/payments/{operationId} — Get Payment Operation Info

Возвращает статус, сумму, способ оплаты и данные покупателя по одной операции. Требуется разрешение `ReadAcquiringData`.

Документация: https://developers.tochka.com/docs/tochka-api/api/get-payment-operation-info-acquiring-v-1-0-payments-operation-id-get

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `operationId` | path | string | да | Идентификатор платежа |

## Нюансы

- `Init Statement` работает асинхронно. Созданная выписка доступна 24 часа, затем удаляется; в неё попадают только операции в финальном статусе.
- В выписке `creditDebitIndicator: Credit` означает приход, `Debit` — расход. Если `transactionTypeCode` ещё содержит мемориальный ордер, документация советует через несколько секунд сформировать выписку повторно.
- Платёж, созданный через API, обязательно подписывает сотрудник в интернет-банке. Подписанный вне операционного времени или в выходной платёж отправится в ближайший рабочий день.
- Если платёж после создания через API отредактировали в интернет-банке, `Get Payment Status` перестаёт показывать актуальный статус и остаётся в `Created`.
- Если торговых точек несколько, для платёжной ссылки обязательно передавай `merchantId`. Рабочая торговая точка должна иметь `status: "REG"` и `isActive: true`.
- Возврат через API возможен только из статуса `APPROVED`. Оплату цифровым рублём через API вернуть нельзя; возврат оформляется вручную в интернет-банке.
- Вебхук приходит как строка JWT с `Content-Type: text/plain` и подписью RS256. Проверяй подпись публичным ключом `https://enter.tochka.com/doc/openapi/static/keys/public` до обработки данных.
- Вебхуки отправляются только об успешных операциях. Если события нет, проверь платёж через соответствующий метод статуса или выписку.
- При перевыпуске JWT меняются и токен, и `client_id`; старые значения удаляются. Обнови ключ в интеграции и настройки вебхуков.
- Песочница возвращает фиксированные ответы независимо от входных значений. Переход и реальная оплата по платёжной ссылке в ней недоступны.

## Другие сценарии

- [Получить остатки по всем счетам](https://mcp-everything.ru/integrations/tochka-bank-api/scenarios/poluchit-ostatki-po-vsem-schetam.md)
- [Получить выписку по счёту](https://mcp-everything.ru/integrations/tochka-bank-api/scenarios/poluchit-vypisku-po-schetu.md)
- [Подготовить и отправить исходящий платёж](https://mcp-everything.ru/integrations/tochka-bank-api/scenarios/podgotovit-i-otpravit-ishodyaschiy.md)
- [Вернуть оплату по платёжной ссылке](https://mcp-everything.ru/integrations/tochka-bank-api/scenarios/vernut-oplatu-po-platezhnoy-ssylke.md)
- [Получать уведомления о платежах](https://mcp-everything.ru/integrations/tochka-bank-api/scenarios/poluchat-uvedomleniya-o-platezhah.md)

---

Если этого недостаточно — официальная документация: https://developers.tochka.com/docs/tochka-api/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/tochka-bank-api.md
