Skip to content

Процесс участия в инвестициях

Полный путь пользователя от обнаружения стратегии до активного управления инвестициями.

Обзор

Инвестиционный процесс включает:

  1. Обнаружение и изучение стратегий
  2. Инициация участия
  3. Многоэтапный процесс участия
  4. Оплата и подтверждение
  5. Управление портфелем
  6. Отслеживание доходности и обработка погашения

Основная диаграмма процесса


Детали этапов

1. Обнаружение стратегий

Эндпоинт: GET /strategies

Параметры запроса:

ПараметрТипОписание
categorystringSlug категории
riskLevelstringLOW, MEDIUM, HIGH, VERY_HIGH
minAmountnumberФильтр минимальной инвестиции
maxReturnnumberФильтр максимальной ожидаемой доходности
durationstringSHORT (< 6 мес), MEDIUM (6-12 мес), LONG (> 12 мес)
sortstringpopular, newest, return_desc, min_amount_asc
pagenumberНомер страницы
limitnumberЭлементов на страницу

Элемент списка стратегий:

json
{
  "id": "uuid",
  "name": "Commercial Real Estate Fund",
  "slug": "commercial-real-estate-fund",
  "shortDescription": "Diversified portfolio of commercial properties",
  "riskLevel": "MEDIUM",
  "minAmount": 50000.00,
  "expectedReturnMin": 12.0,
  "expectedReturnMax": 18.0,
  "durationMonths": 24,
  "imageUrl": "https://cdn.../strategy.jpg",
  "participantsCount": 245,
  "totalInvested": 15000000.00,
  "status": "ACTIVE"
}

2. Детали стратегии

Эндпоинт: GET /strategies/{slug}

Ответ:

json
{
  "id": "uuid",
  "name": "Commercial Real Estate Fund",
  "slug": "commercial-real-estate-fund",
  "shortDescription": "Diversified portfolio of commercial properties",
  "description": "Full HTML description with investment thesis...",
  "terms": "Full terms and conditions...",
  "riskLevel": "MEDIUM",
  "riskDisclosure": "Investment risks description...",
  "minAmount": 50000.00,
  "maxAmount": 5000000.00,
  "durationMonths": 24,
  "expectedReturnMin": 12.0,
  "expectedReturnMax": 18.0,
  "payoutSchedule": "QUARTERLY",
  "earlyWithdrawalAllowed": true,
  "earlyWithdrawalPenalty": 5.0,
  "documents": [
    {
      "name": "Investment Memorandum",
      "type": "PDF",
      "url": "https://cdn.../memorandum.pdf"
    },
    {
      "name": "Risk Disclosure Statement",
      "type": "PDF",
      "url": "https://cdn.../risk-disclosure.pdf"
    }
  ],
  "participationSteps": [
    {
      "stepNumber": 1,
      "title": "Select Investment Amount",
      "stepType": "FORM",
      "isRequired": true
    },
    {
      "stepNumber": 2,
      "title": "Review Terms & Risk Disclosure",
      "stepType": "CONFIRMATION",
      "isRequired": true
    },
    {
      "stepNumber": 3,
      "title": "Payment",
      "stepType": "PAYMENT",
      "isRequired": true
    }
  ],
  "category": {
    "id": "uuid",
    "name": "Real Estate",
    "slug": "real-estate"
  },
  "stats": {
    "participantsCount": 245,
    "totalInvested": 15000000.00,
    "averageInvestment": 61224.49
  },
  "status": "ACTIVE",
  "publishedAt": "2024-01-01T00:00:00Z"
}

3. Начало участия

Эндпоинт: POST /strategies/{id}/participate

Требования к участию:

ТребованиеПроверка
Пользователь авторизованВалидный JWT-токен
Email подтвержденuser.email_verified_at IS NOT NULL
KYC подтвержденkyc_verification.status = 'APPROVED'
Достаточный уровень KYCНа основе суммы инвестиции
Нет ожидающего участияДля той же стратегии

Требования к уровню KYC:

Уровень KYCМаксимальная инвестиция
BASICНе разрешено
STANDARD1,000,000 RUB
ENHANCEDБез ограничений

Ответ:

json
{
  "participationId": "uuid",
  "strategyId": "uuid",
  "currentStep": 1,
  "totalSteps": 3,
  "status": "IN_PROGRESS",
  "nextStep": {
    "stepNumber": 1,
    "title": "Select Investment Amount",
    "stepType": "FORM",
    "config": {
      "minAmount": 50000,
      "maxAmount": 5000000,
      "currency": "RUB",
      "suggestedAmounts": [50000, 100000, 250000, 500000]
    }
  }
}

4. Шаг 1: Выбор суммы

Эндпоинт: POST /participations/{id}/steps/1

Запрос:

json
{
  "amount": 100000.00,
  "currency": "RUB"
}

Правила валидации:

ПравилоОграничение
Сумма>= strategy.min_amount
Сумма<= strategy.max_amount (если задан)
Сумма<= лимит уровня KYC пользователя
ВалютаДолжна совпадать с валютой стратегии

Сценарии ошибок:

СценарийКод ошибкиСообщение
Ниже минимумаBELOW_MINIMUM"Минимальная инвестиция X RUB"
Выше максимумаABOVE_MAXIMUM"Максимальная инвестиция X RUB"
Превышен лимит KYCKYC_LIMIT_EXCEEDED"Повысьте уровень KYC для больших инвестиций"

5. Шаг 2: Ознакомление с условиями

Эндпоинт: POST /participations/{id}/steps/2

Запрос:

json
{
  "acceptTerms": true,
  "acceptRiskDisclosure": true,
  "acknowledgeNoGuarantee": true,
  "confirmOwnFunds": true
}

Обязательные подтверждения:

ПолеОписание
acceptTermsПринять условия инвестирования
acceptRiskDisclosureПодтвердить ознакомление с рисками
acknowledgeNoGuaranteeПонимать, что доходность не гарантирована
confirmOwnFundsПодтвердить использование собственных средств

Записываемые данные:

json
{
  "termsAcceptedAt": "2024-01-15T10:30:00Z",
  "riskDisclosureAcceptedAt": "2024-01-15T10:30:00Z",
  "ipAddress": "192.168.1.1",
  "userAgent": "Mozilla/5.0..."
}

6. Шаг 3: Оплата

Создание платежного намерения: POST /participations/{id}/payment/intent

Ответ:

json
{
  "paymentIntentId": "pi_xxx",
  "clientSecret": "pi_xxx_secret_xxx",
  "amount": 100000.00,
  "currency": "RUB",
  "paymentMethods": ["card", "bank_transfer"]
}

Обработка оплаты:

  1. Frontend создает форму Stripe Elements
  2. Пользователь вводит платежные данные
  3. Frontend вызывает stripe.confirmPayment()
  4. Stripe отправляет webhook на backend
  5. Backend обновляет статус участия

Подтверждение оплаты:

  • Статус меняется на PENDING_APPROVAL
  • Устанавливается submitted_at участия
  • Пользователь получает email подтверждения

7. Подтверждение и активация

Методы одобрения:

МетодКритерии
Автоматическое одобрениеСумма < 100,000 RUB, пользователь имеет предыдущие инвестиции
Ручное одобрениеСумма >= 100,000 RUB или первый инвестор

Создаваемая запись портфеля:

json
{
  "id": "uuid",
  "userId": "user-uuid",
  "participationId": "participation-uuid",
  "strategyId": "strategy-uuid",
  "investedAmount": 100000.00,
  "currentValue": 100000.00,
  "totalReturns": 0.00,
  "currency": "RUB",
  "status": "ACTIVE",
  "startDate": "2024-01-15",
  "maturityDate": "2026-01-15"
}

Запуск комиссии:

  • Задание комиссии ставится в очередь для MLM-обработки
  • Реферальный партнер получает комиссию
  • Смотрите Жизненный цикл комиссии

8. Дашборд портфеля

Эндпоинт: GET /users/me/portfolio

Ответ:

json
{
  "summary": {
    "totalInvested": 350000.00,
    "currentValue": 378500.00,
    "totalReturns": 28500.00,
    "overallReturnPercent": 8.14,
    "currency": "RUB"
  },
  "investments": [
    {
      "id": "portfolio-uuid",
      "strategyName": "Commercial Real Estate Fund",
      "strategySlug": "commercial-real-estate-fund",
      "investedAmount": 100000.00,
      "currentValue": 108500.00,
      "totalReturns": 8500.00,
      "returnPercent": 8.5,
      "status": "ACTIVE",
      "startDate": "2024-01-15",
      "maturityDate": "2026-01-15",
      "daysToMaturity": 365,
      "nextPayoutDate": "2024-04-15",
      "nextPayoutEstimate": 3000.00
    }
  ],
  "recentActivity": [
    {
      "type": "RETURN_CREDITED",
      "amount": 3000.00,
      "date": "2024-01-01",
      "portfolioId": "portfolio-uuid"
    }
  ]
}

9. Отслеживание доходности

Расписание расчета доходности:

  • Ежедневно: Обновление current_value на основе NAV стратегии
  • Ежеквартально: Начисление дохода на баланс пользователя (если график выплат QUARTERLY)

Эндпоинт истории доходности: GET /portfolio/{id}/returns

Ответ:

json
{
  "portfolioId": "uuid",
  "investedAmount": 100000.00,
  "currentValue": 108500.00,
  "totalReturns": 8500.00,
  "history": [
    {
      "period": "2024-Q1",
      "startValue": 100000.00,
      "endValue": 103000.00,
      "returnAmount": 3000.00,
      "returnPercent": 3.0,
      "paidOut": true,
      "paidDate": "2024-04-01"
    }
  ],
  "projectedAnnualReturn": 12.0
}

10. Обработка погашения

Проверка погашения: Запланированное задание выполняется ежедневно в 00:00 UTC

Опции при погашении:

Опция A: Вывод

json
POST /portfolio/{id}/withdraw
{
  "withdrawalMethod": "BANK_TRANSFER",
  "bankDetails": {
    "accountNumber": "40817810xxx",
    "bankName": "Sberbank",
    "bik": "044525225"
  }
}

Опция B: Реинвестирование

json
POST /portfolio/{id}/reinvest
{
  "strategyId": "same-or-different-uuid",
  "amount": "FULL",
  "additionalAmount": 0
}

Опции реинвестирования:

ОпцияОписание
Та же стратегияПродолжить в текущей стратегии
Другая стратегияПерейти в другую стратегию
Частичное реинвестированиеВывести часть, остальное реинвестировать

11. Досрочный вывод

Эндпоинт: POST /portfolio/{id}/early-withdraw

Правила досрочного вывода:

УсловиеШтраф
Стратегия разрешает досрочный выводstrategy.early_withdrawal_penalty (напр., 5%)
До 6 месяцевДополнительно 2% штрафа
До 3 месяцевДополнительно 5% штрафа

Запрос:

json
{
  "amount": "FULL",
  "withdrawalMethod": "BANK_TRANSFER",
  "acknowledgedPenalty": true
}

Ответ с расчетом штрафа:

json
{
  "currentValue": 108500.00,
  "penaltyPercent": 5.0,
  "penaltyAmount": 5425.00,
  "netWithdrawal": 103075.00,
  "confirmationRequired": true,
  "confirmationUrl": "/portfolio/{id}/early-withdraw/confirm"
}

Сценарии ошибок

Ошибки участия

СценарийHTTP-кодКод ошибкиСообщение
KYC не подтвержден403KYC_REQUIRED"Сначала пройдите верификацию личности"
Недостаточный уровень KYC403KYC_UPGRADE_REQUIRED"Повысьте уровень KYC для этой суммы инвестиции"
Стратегия закрыта422STRATEGY_CLOSED"Эта стратегия больше не принимает инвестиции"
Уже участвует409ALREADY_PARTICIPATING"У вас есть ожидающее участие"

Ошибки оплаты

СценарийHTTP-кодКод ошибкиСообщение
Оплата отклонена422PAYMENT_DECLINED"Оплата была отклонена"
Таймаут оплаты408PAYMENT_TIMEOUT"Сессия оплаты истекла"
Несоответствие суммы400AMOUNT_MISMATCH"Сумма оплаты не совпадает"

Ошибки вывода

СценарийHTTP-кодКод ошибкиСообщение
Досрочный вывод не разрешен403EARLY_WITHDRAWAL_DISABLED"Эта стратегия не разрешает досрочный вывод"
Уже обрабатывается409WITHDRAWAL_PENDING"Вывод уже в процессе"
Недостаточный баланс422INSUFFICIENT_BALANCE"Стоимость инвестиции недостаточна"

Связанные документы