Документация Merchant API
Публичный справочник маршрутов Merchant API. Показаны объяснения, примеры запросов, затем успешный и ошибочный ответы. Некоторые поля уникальны для мерчанта и возвращаются индивидуально для него.
BASE_URL
https://api.merchant.fastpay.business
POST
/v1/auth/login
Аутентификация пользователя мерчанта
Обменивает имя пользователя и пароль на краткоживущий JWT RS256. При ошибке возвращается общий ответ без указания неверного поля.
Аутентификация: NoneАутентификация
Пример запроса
curl -i -X POST 'https://api.merchant.fastpay.business/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.fastpay.business/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.fastpay.business/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.fastpay.business/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.fastpay.business/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.fastpay.business/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.fastpay.business/v1/payments' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"items": [
{
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "PENDING",
"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. Мерчант не выбирает банк. Дополнительные поля (webhookUrl, merchantRef, ttlSeconds) уникальны для мерчанта при наличии.
Аутентификация: Authorization: Bearer or X-Api-KeyПлатежи
- В запросе amount — десятичная сумма в основных единицах; в ответе amount — целые минорные единицы.
Пример запроса
curl -i -X POST 'https://api.merchant.fastpay.business/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": "PENDING",
"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",
"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.fastpay.business/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 платформы в опубликованной проекции PaymentIntegrationView.
Аутентификация: Authorization: Bearer or X-Api-KeyПлатежи
Пример запроса
curl -i -X GET 'https://api.merchant.fastpay.business/v1/payments/{paymentId}' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "PENDING",
"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",
"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.fastpay.business/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.fastpay.business/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": "ASSIGNED",
"amount": 1250,
"currency": "RUB",
"expiresAt": "2026-07-28T12:45:00.000Z",
"paidAt": null,
"createdAt": "2026-07-28T12:30:00.000Z",
"updatedAt": "2026-07-28T12:31:00.000Z",
"code": "8RTRFHKRJA5BO"
},
"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
Запустить платёж и получить реквизиты
Создаёт заказ у провайдера и выдаёт P2P-реквизиты. Требует Idempotency-Key. Банк назначает платформенная маршрутизация; query bank отклоняется. Всегда возвращает payment code для последующей отмены и оплаты.
Аутентификация: Authorization: Bearer or X-Api-KeyIdempotency-KeyПлатежи
- Start всегда выполняет P2P-выдачу после назначения банка платформой. Сохраните и используйте возвращённый code для отмены.
Пример запроса
curl -i -X POST 'https://api.merchant.fastpay.business/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
{
"operation": {
"intentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"state": "awaiting_payment",
"mode": "p2p_details",
"details": {
"code": "8RTRFHKRJA5BO",
"txId": "1785743999933012401",
"paymentUrl": "https://example.test/pay?code=8RTRFHKRJA5BO",
"owner": "EXAMPLE OWNER",
"cardNumber": "9860246614555802",
"phoneNumber": "998428590817",
"country": "UZB",
"bank": "octobank",
"selectedBank": 2,
"lockDatetime": "2026-08-03T08:00:00.726Z"
},
"hostedUrl": "https://example.test/pay?code=8RTRFHKRJA5BO",
"paymentCode": "8RTRFHKRJA5BO",
"expiresAt": "2026-08-03T08:00:00.726Z"
},
"payment": {
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "ASSIGNED",
"amount": 1250,
"currency": "RUB",
"expiresAt": "2026-07-28T12:45:00.000Z",
"paidAt": null,
"createdAt": "2026-07-28T12:30:00.000Z",
"updatedAt": "2026-07-28T12:31:00.000Z",
"code": "8RTRFHKRJA5BO"
},
"code": "8RTRFHKRJA5BO",
"paymentUrl": "https://example.test/pay?code=8RTRFHKRJA5BO",
"details": {
"code": "8RTRFHKRJA5BO",
"txId": "1785743999933012401",
"paymentUrl": "https://example.test/pay?code=8RTRFHKRJA5BO",
"owner": "EXAMPLE OWNER",
"cardNumber": "9860246614555802",
"phoneNumber": "998428590817",
"country": "UZB",
"bank": "octobank",
"selectedBank": 2,
"lockDatetime": "2026-08-03T08:00:00.726Z"
},
"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
Возвращает платёж по уникальному внешнему идентификатору мерчанта.
Аутентификация: Authorization: Bearer or X-Api-KeyПлатежи
Пример запроса
curl -i -X GET 'https://api.merchant.fastpay.business/v1/payments/by-external-id/{externalId}' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"paymentId": "df7a24d4-dc7f-46f1-b3bc-4096acee6d96",
"externalId": "order-42",
"status": "PENDING",
"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",
"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.fastpay.business/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.fastpay.business/v1/stats/payments' -H 'Authorization: Bearer <fictitious-jwt>'
Пример успешного ответа 200
{
"currencies": [
{
"currency": "RUB",
"countsByStatus": {
"PENDING": 3,
"ASSIGNED": 1,
"CONFIRMED": 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 и текущее время сервера.
Аутентификация: NoneСтатус
Пример запроса
curl -i -X GET 'https://api.merchant.fastpay.business/v1/status'
Пример успешного ответа 200
{
"availability": "available",
"apiVersion": "v1",
"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.fastpay.business/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.fastpay.business/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"
}