Документация Merchant API
Публичный справочник маршрутов Merchant API. Показаны объяснения, примеры запросов, затем успешный и ошибочный ответы. Некоторые поля уникальны для мерчанта и возвращаются индивидуально для него.
BASE_URL
https://api.merchant.yes-pay.cc
POST
/v1/auth/login
Аутентификация пользователя мерчанта
Обменивает имя пользователя и пароль на краткоживущий JWT RS256. При ошибке возвращается общий ответ без указания неверного поля.
Аутентификация: NoneАутентификация
Пример запроса
curl -i -X POST 'https://api.merchant.yes-pay.cc/v1/auth/login' -H 'Content-Type: application/json' --data '{"username":"owner@example.test","password":"fictitious-password"}'
Пример успешного ответа 200
{
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.fictitious-token",
"role": "MERCHANT",
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
POST
/v1/auth/logout
Отзыв текущей сессии мерчанта
Отзывает JWT-сессию из заголовка Bearer. Последующие запросы с тем же токеном завершаются ошибкой аутентификации.
Аутентификация: Authorization: BearerАутентификация
Пример запроса
curl -i -X POST 'https://api.merchant.yes-pay.cc/v1/auth/logout' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"revoked": true,
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
POST
/v1/auth/password-recovery
Начать восстановление пароля
Запускает восстановление пароля для указанного пользователя. Ответ намеренно непрозрачен, чтобы нельзя было перечислять учётные записи.
Аутентификация: NoneАутентификация
Пример запроса
curl -i -X POST 'https://api.merchant.yes-pay.cc/v1/auth/password-recovery' -H 'Content-Type: application/json' --data '{"username":"owner@example.test"}'
Пример успешного ответа 202
{
"accepted": true,
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
POST
/v1/auth/password-recovery/confirmation
Завершить восстановление пароля
Завершает восстановление с помощью доказательства и нового пароля, соответствующего политике.
Аутентификация: NoneАутентификация
Пример запроса
curl -i -X POST 'https://api.merchant.yes-pay.cc/v1/auth/password-recovery/confirmation' -H 'Content-Type: application/json' --data '{"recoveryProof":"fictitious-recovery-proof-32chars-min","newPassword":"fictitious-new-password"}'
Пример успешного ответа 200
{
"reset": true,
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
GET
/v1/auth/session
Просмотр текущей сессии мерчанта
Возвращает пользователя, членства, выбранную организацию, роли, разрешения и срок действия сессии.
Аутентификация: Authorization: BearerАутентификация
Пример запроса
curl -i -X GET 'https://api.merchant.yes-pay.cc/v1/auth/session' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"user": {
"id": "244282ff-bc9b-4072-89cc-82167d9c94ee",
"accountState": "active"
},
"organizations": [
{
"merchantId": "c4cc938f-6174-4b90-b61e-d77472e3c861",
"status": "active"
}
],
"selectedOrganization": "c4cc938f-6174-4b90-b61e-d77472e3c861",
"roles": [
"owner"
],
"permissions": [
"payments_create",
"transactions_read",
"balances_read"
],
"expiresAt": "2026-07-28T13:30:00.000Z",
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
POST
/v1/auth/session/organization
Выбор организации мерчанта
Выбирает разрешённую организацию и возвращает обновлённый JWT в контексте этого мерчанта.
Аутентификация: Authorization: BearerАутентификация
Пример запроса
curl -i -X POST 'https://api.merchant.yes-pay.cc/v1/auth/session/organization' -H 'Authorization: Bearer <fictitious-jwt>' -H 'Content-Type: application/json' --data '{"merchantId":"00000000-0000-4000-8000-000000000002"}'
Пример успешного ответа 200
{
"token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.fictitious-token",
"role": "MERCHANT",
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 403
{
"error": {
"code": "permission_denied",
"message": "Permission denied"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
GET
/v1/payments
Список платежей
Возвращает платежи с курсорной пагинацией. Опциональные фильтры status и currency сопоставляются с поддерживаемыми состояниями бэкенда.
Аутентификация: Authorization: Bearer or X-Api-KeyПлатежи
Пример запроса
curl -i -X GET 'https://api.merchant.yes-pay.cc/v1/payments' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"items": [
{
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "CREATED",
"amount": 1250,
"currency": "RUB",
"expiresAt": "2026-07-28T12:45:00.000Z",
"paidAt": null,
"createdAt": "2026-07-28T12:30:00.000Z",
"updatedAt": "2026-07-28T12:30:00.000Z"
}
],
"nextCursor": null,
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
POST
/v1/payments
Создать платёжное намерение
Создаёт платёжное намерение с externalId, amount и опциональной currency. Мерчант не выбирает банк. Дополнительные неизвестные поля create игнорируются.
Аутентификация: Authorization: Bearer or X-Api-KeyПлатежи
- В запросе amount — десятичная сумма в основных единицах; в ответе amount — целые минорные единицы.
Пример запроса
curl -i -X POST 'https://api.merchant.yes-pay.cc/v1/payments' -H 'Authorization: Bearer <fictitious-jwt>' -H 'Content-Type: application/json' --data '{"externalId":"order-42","amount":1250,"currency":"RUB"}'
Пример успешного ответа 201
{
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "CREATED",
"amount": 1250,
"currency": "RUB",
"expiresAt": null,
"paidAt": null,
"createdAt": "2026-07-28T12:30:00.000Z",
"updatedAt": "2026-07-28T12:30:00.000Z",
"commissionForMerchant": 0,
"merchantGet": 1250,
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 422
{
"error": {
"code": "validation_failed",
"message": "Validation failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
POST
/v1/payments/{externalId}/cancel
Отменить платёж по внешнему ID
Отменяет подходящий платёж по внешнему ID мерчанта. В теле обязателен payment code из start. Для ASSIGNED сначала выполняется отмена у провайдера.
Аутентификация: Authorization: Bearer or X-Api-KeyПлатежи
Пример запроса
curl -i -X POST 'https://api.merchant.yes-pay.cc/v1/payments/{externalId}/cancel' -H 'Authorization: Bearer <fictitious-jwt>' -H 'Content-Type: application/json' --data '{"code":"8RTRFHKRJA5BO"}'
Пример успешного ответа 200
{
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "cancelled",
"amount": 1250,
"currency": "RUB",
"expiresAt": "2026-07-28T12:45:00.000Z",
"paidAt": null,
"createdAt": "2026-07-28T12:30:00.000Z",
"updatedAt": "2026-07-28T12:40:00.000Z",
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 409
{
"error": {
"code": "payment_state_conflict",
"message": "Payment state conflict"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
GET
/v1/payments/{paymentId}
Получить платёж
Возвращает платёж по UUID платформы. Если каталожные реквизиты назначены, включает ту же публичную проекцию details, что и start.
Аутентификация: Authorization: Bearer or X-Api-KeyПлатежи
Пример запроса
curl -i -X GET 'https://api.merchant.yes-pay.cc/v1/payments/{paymentId}' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "AWAITING_PAYMENT",
"amount": 1250,
"currency": "RUB",
"expiresAt": null,
"paidAt": null,
"createdAt": "2026-07-28T12:30:00.000Z",
"updatedAt": "2026-07-28T12:31:00.000Z",
"details": {
"beneficiaryName": "Fixture Holder",
"cardNumber": "4111111111111111",
"phoneNumber": "+70000000000",
"bankName": "Fixture Bank",
"bin": "411111",
"expiryDate": "2027-12-31"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 404
{
"error": {
"code": "resource_not_found",
"message": "Resource not found"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
GET
/v1/payments/{paymentId}/confirmation-claims
Список подтверждений оплаты
Возвращает подтверждения оплаты по платежу. Поля элементов claim уникальны для мерчанта и возвращаются индивидуально для него.
Аутентификация: Authorization: Bearer or X-Api-KeyПлатежи
Пример запроса
curl -i -X GET 'https://api.merchant.yes-pay.cc/v1/payments/{paymentId}/confirmation-claims' -H 'Authorization: Bearer <fictitious-jwt>' -H 'Idempotency-Key: 00000000-0000-4000-8000-000000000099'
Пример успешного ответа 200
Поля claim уникальны для мерчанта и возвращаются индивидуально для него; в примере показан общий каркас страницы.
{
"items": [],
"nextCursor": null,
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
POST
/v1/payments/{paymentId}/confirmation-claims
Отправить подтверждение оплаты
Отправляет неавторитетное подтверждение оплаты от мерчанта. Claim не переводит платёж в paid и не зачисляет баланс. Требует Idempotency-Key.
Аутентификация: Authorization: Bearer or X-Api-KeyIdempotency-KeyПлатежи
- Некоторые необязательные поля claim уникальны для мерчанта и возвращаются индивидуально для него.
Пример запроса
curl -i -X POST 'https://api.merchant.yes-pay.cc/v1/payments/{paymentId}/confirmation-claims' -H 'Authorization: Bearer <fictitious-jwt>' -H 'Idempotency-Key: 00000000-0000-4000-8000-000000000099' -H 'Content-Type: application/json' --data '{"claimed_paid_at":"2026-07-28T12:35:00.000Z","payer_transfer_reference":"payer-visible-reference"}'
Пример успешного ответа 201
{
"claimId": "6fed4dbb-86be-4918-b95b-1fa40dcb8fe3",
"claimStatus": "received",
"payment": {
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "AWAITING_PAYMENT",
"amount": 1250,
"currency": "RUB",
"expiresAt": null,
"paidAt": null,
"createdAt": "2026-07-28T12:30:00.000Z",
"updatedAt": "2026-07-28T12:31:00.000Z"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
POST
/v1/payments/{paymentId}/start
Запустить платёж и получить реквизиты
Назначает каталожные платёжные реквизиты через Main Backend. Требует UUID v4 Idempotency-Key. Query bank отклоняется. Возвращает статус AWAITING_PAYMENT и инструкции для плательщика.
Аутентификация: Authorization: Bearer or X-Api-KeyIdempotency-KeyПлатежи
- Start больше не вызывает Gateway Bridge и не возвращает Bridge payment code. Публичный integration_mode отражается в ответе, но не передаётся upstream.
Пример запроса
curl -i -X POST 'https://api.merchant.yes-pay.cc/v1/payments/{paymentId}/start' -H 'Authorization: Bearer <fictitious-jwt>' -H 'Idempotency-Key: 00000000-0000-4000-8000-000000000099' -H 'Content-Type: application/json' --data '{"integration_mode":"p2p_details"}'
Пример успешного ответа 200
{
"payment": {
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "AWAITING_PAYMENT",
"amount": 1250,
"currency": "RUB",
"expiresAt": null,
"paidAt": null,
"createdAt": "2026-07-28T12:30:00.000Z",
"updatedAt": "2026-07-28T12:31:00.000Z"
},
"integration_mode": "p2p_details",
"details": {
"beneficiaryName": "Fixture Holder",
"cardNumber": "4111111111111111",
"phoneNumber": "+70000000000",
"bankName": "Fixture Bank",
"bin": "411111",
"expiryDate": "2027-12-31"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 409
{
"error": {
"code": "payment_state_conflict",
"message": "Payment state conflict"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
GET
/v1/payments/by-external-id/{externalId}
Получить платёж по внешнему ID
Возвращает платёж по уникальному внешнему идентификатору мерчанта. Назначенные каталожные реквизиты включаются, если Main Backend их возвращает.
Аутентификация: Authorization: Bearer or X-Api-KeyПлатежи
Пример запроса
curl -i -X GET 'https://api.merchant.yes-pay.cc/v1/payments/by-external-id/{externalId}' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "AWAITING_PAYMENT",
"amount": 1250,
"currency": "RUB",
"expiresAt": null,
"paidAt": null,
"createdAt": "2026-07-28T12:30:00.000Z",
"updatedAt": "2026-07-28T12:31:00.000Z",
"details": {
"beneficiaryName": "Fixture Holder",
"cardNumber": "4111111111111111",
"phoneNumber": "+70000000000",
"bankName": "Fixture Bank",
"bin": "411111",
"expiryDate": "2027-12-31"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 404
{
"error": {
"code": "resource_not_found",
"message": "Resource not found"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
GET
/v1/profile
Получить профиль мерчанта
Возвращает профиль интеграции мерчанта для выбранной среды. Часть полей о комиссиях, лимитах и вебхуках уникальна для мерчанта и возвращается индивидуально для него.
Аутентификация: Authorization: Bearer or X-Api-KeyОбнаружение
Пример запроса
curl -i -X GET 'https://api.merchant.yes-pay.cc/v1/profile' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"id": "c4cc938f-6174-4b90-b61e-d77472e3c861",
"legalName": "Example Merchant Ltd",
"displayName": "Example Shop",
"externalReference": "merchant-42",
"status": "active",
"supportedCurrencies": [
"RUB"
],
"enforceUniqueOrderReference": true,
"version": 4,
"createdAt": "2026-07-01T09:00:00.000Z",
"updatedAt": "2026-07-28T10:00:00.000Z",
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
GET
/v1/stats/payments
Получить статистику платежей
Возвращает агрегированную статистику платежей мерчанта. Поля периода и актуальности данных уникальны для мерчанта и возвращаются индивидуально для него.
Аутентификация: Authorization: Bearer or X-Api-KeyОбнаружение
Пример запроса
curl -i -X GET 'https://api.merchant.yes-pay.cc/v1/stats/payments' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"currencies": [
{
"currency": "RUB",
"countsByStatus": {
"created": 3,
"awaiting_payment": 1,
"paid": 12,
"expired": 2,
"cancelled": 1
},
"verifiedGrossMinor": 1500000,
"totalCount": 19
}
],
"boundedAt": 200,
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
GET
/v1/status
Публичный статус сервиса
Публичный endpoint без аутентификации: доступность, мажорная версия API, версия релиза, настроенный BASE_URL и текущее время сервера.
Аутентификация: NoneСтатус
Пример запроса
curl -i -X GET 'https://api.merchant.yes-pay.cc/v1/status'
Пример успешного ответа 200
{
"availability": "available",
"apiVersion": "v1",
"version": "0.1.0",
"baseUrl": "https://api.example.test",
"currentTime": "2026-07-28T12:30:00.000Z",
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 429
{
"error": {
"code": "rate_limited",
"message": "Rate limited"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
GET
/v1/transactions
Список транзакций
Возвращает видимые мерчанту финансовые транзакции. Поля *Minor возвращаются целыми числами.
Аутентификация: Authorization: Bearer or X-Api-KeyФинансы
Пример запроса
curl -i -X GET 'https://api.merchant.yes-pay.cc/v1/transactions' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"items": [
{
"id": "5e66e3cd-8ad1-4600-a9e5-8e7ab744358e",
"sourceType": "payment_verification",
"sourceId": "9124d44f-8a49-4480-885d-c021fd406ac6",
"description": "Verified payment",
"reversalOfId": null,
"effectiveAt": "2026-07-28T12:35:00.000Z",
"createdAt": "2026-07-28T12:35:01.000Z",
"entries": [
{
"id": "70e8edca-352a-4810-a75f-1c14c25546ab",
"direction": "credit",
"amountMinor": 121875,
"currency": "RUB",
"effectiveAt": "2026-07-28T12:35:00.000Z"
}
]
}
],
"nextCursor": null,
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 401
{
"error": {
"code": "authentication_failed",
"message": "Authentication failed"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}
GET
/v1/transactions/{transactionId}
Получить транзакцию
Возвращает одну неизменяемую транзакцию без account ID и доказательств верификации.
Аутентификация: Authorization: Bearer or X-Api-KeyФинансы
Пример запроса
curl -i -X GET 'https://api.merchant.yes-pay.cc/v1/transactions/{transactionId}' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"id": "5e66e3cd-8ad1-4600-a9e5-8e7ab744358e",
"sourceType": "payment_verification",
"sourceId": "9124d44f-8a49-4480-885d-c021fd406ac6",
"description": "Verified payment",
"reversalOfId": null,
"effectiveAt": "2026-07-28T12:35:00.000Z",
"createdAt": "2026-07-28T12:35:01.000Z",
"entries": [
{
"id": "70e8edca-352a-4810-a75f-1c14c25546ab",
"direction": "credit",
"amountMinor": 121875,
"currency": "RUB",
"effectiveAt": "2026-07-28T12:35:00.000Z"
}
],
"requestId": "00000000-0000-4000-8000-000000000001"
}
Пример ошибки 404
{
"error": {
"code": "resource_not_found",
"message": "Resource not found"
},
"requestId": "00000000-0000-4000-8000-000000000001"
}