Сертификационные вопросы
Каждый сертификат является неделимой долей реальной вещи - арендованного здания, флота, портфеля продаж в рассрочку - а не претензией на эмитента за основной плюс проценты.
Различие проявляется в трех местах: API Принудительный:
- Этот вопрос должен быть подкреплён.
underlying_asset_valueне может быть меньше, чемtotal_valueВы не можете выпустить больше бумаги, чем есть за этим актив. - Распределение – это доход, а не купоны.
POST /profitСрок, который ничего не заработал, ничего не распределяет, и никаких начисленных обязательств не остается. - У неудачи есть имя. Пропущенное распределение не является бесшумно неотличимым от сделанного:
POST /defaultСуществует, и проблема по умолчанию говорит об этом.
Базовый путь: /api/v1/pfp/certificate-issues · Религиозное чтение: Сукук
Типы резервных копий
backing_type Наименование договора, доходы которого разделяют сертификаты:
| ценность | Сертификаты подкреплены |
|---|---|
lease | Доход от аренды арендованного актива |
managed_investment | Прибыль управляемого предприятия |
partnership | Доля в совместном предприятии |
installment_sale | Портфель дебиторской задолженности в рассрочку |
manufacturing | Актив, находящийся в стадии строительства, оплачивается поэтапно |
forward_purchase | Товары, оплаченные сейчас и доставленные позже |
Статус
draft ──submit──> under_review ──review──> review_passed
│ │ │
│ └──reject──> rejected │
│ │
└──────────── offering ───────────────────────┘
│
v
offering ──subscribe──> (holders record subscriptions)
│
close_subscription (optional)
v
subscribed
│ activate ← also reachable directly from offering
v
active ──mature──> matured ──redeem──> redeemed
│ │
│ └──default──> defaulted
├──redeem_early──> redeemed
└──default──> defaulted
| статус | Значение |
|---|---|
draft | Записанные термины |
under_review | Представлен на утверждение |
review_passed | Заключение прилагается |
rejected | Терминал. Требуется а reason |
offering | Окно подписки открыто |
subscribed | Окно закрыто, еще не размещено |
active | Размещаются; сертификаты являются выдающимися и зарабатывают |
matured | Дата зрелости уже наступила |
redeemed | Выкуплено обратно; все позиции закрыты |
defaulted | Обязательства не выполняются. reason |
В светском чтении offering досягаемости от draft а также как и review_passed.
Создать проблему
POST /api/v1/pfp/certificate-issues
{
"name": "Kazan Logistics Park — Series A",
"region": "RU",
"currency": "RUB",
"backing_type": "lease",
"underlying_asset": "Logistics complex, 12 400 m², Kazan, lease to Magnit until 2032",
"underlying_asset_type": "real_estate",
"underlying_asset_value": "1800000000",
"total_value": "1500000000",
"certificate_value": "1000000",
"expected_yield": 9,
"maturity_months": 60,
"min_subscription": 5,
"max_subscription": 300,
"profit_distribution_frequency": "quarterly",
"redemption_mode": "bullet",
"early_redemption_allowed": true,
"early_redemption_penalty": "20000"
}
| Полное поле | Тип | Требуемый | Заметки |
|---|---|---|---|
name | string | ✅ | Название номера |
region | string | ✅ | Регион проблем |
backing_type | enum | ✅ | Смотрите таблицу выше |
underlying_asset | string | ✅ | Описание, более длительный, чем 10 персонажи |
underlying_asset_value | string | ✅ | Небольшие подразделения. Должно быть, по крайней мере total_value |
total_value | string | ✅ | Небольшие подразделения. Должен делить на certificate_value точно |
certificate_value | string | ✅ | Незначительные единицы — номинальная стоимость одного сертификата |
expected_yield | integer | ✅ | Целый процент, 1–50 |
maturity_months | integer | ✅ | 1–360 |
min_subscription | integer | — | Минимальные сертификаты на одну заявку |
max_subscription | integer | — | Потолок на одного держателяво всех своих приложениях |
profit_distribution_frequency | enum | — | monthly | quarterly | semi_annually | annually |
redemption_mode | enum | — | bullet | amortizing | callable |
early_redemption_allowed | boolean | — | Ворота redeem_early |
early_redemption_penalty | string | — | Небольшие подразделения |
subscription_start, subscription_end | date | — | Также может быть установлен на offering |
originator_id, spv_id, product_id | uuid | — | |
underlying_asset_type, metadata | — | — |
certificates_total Производится как total_value / certificate_valueРазделение должно быть точным.
Код выпуска
Каждый вопрос получает isin Поле. Это не реально ISIN. Подлинный ISIN Выдается национальным нумерационным агентством; платформа не может изобрести и не претендует.Код здесь шестнадцать символов, где ISO 6166 Указывает ровно двенадцать, чтобы его нельзя было принять за идентификатор, выданный обменом:
RUCRT4A7F1C9E2B3
│ │ │ └── Luhn check digit
│ │ └── ten random hex characters
│ └── three characters naming the reading: CRT secular, SKK religious
└── two-character region code
Используйте его внутри. Если проблема указана, замените ее на реальную. ISIN от нумерационного агентства.
Запуск подписки
Откройте окно
POST /api/v1/pfp/certificate-issues/{id}/offering
{ "subscription_start": "2026-09-01", "subscription_end": "2026-10-15" }
Требуются обе даты. draft or review_passed → offering.
Запись подписки
POST /api/v1/pfp/certificate-issues/{id}/subscribe
{ "investor_id": "b7d1e044-92a3-4c58-8f10-3ea6c9d27b45", "certificates": 50 }
Проверяется шесть условий, в таком порядке:
certificatesдолжно быть положительным целым числом.- Проблема должна быть в
offering— проект, просроченный или погашенный выпуск не принимает подписки. - Сегодня он должен быть в окне подписки. Закрытое окно отклоняется.
certificatesдолжен быть по крайней мереmin_subscription.max_subscriptionпроверяется на общую позицию держателяДве заявки, каждая на потолке, отклоняются, потому что вместе они превышают его. Ошибка называет, сколько держатель уже держит.certificatesОн не должен превышать того, что еще не подписано.
Закройте окно (необязательно)
POST /api/v1/pfp/certificate-issues/{id}/close_subscription
Никакого тела. offering → subscribedОтказался, если никто не подписывался.
Этот шаг является факультативным — он существует, поэтому разрыв между сбором заявок и постановкой вопроса виден в отчетности. activate Принимает вопрос непосредственно от offering Тоже самое.
Поместите вопрос
POST /api/v1/pfp/certificate-issues/{id}/activate
{ "issue_date": "2026-10-20" }
issue_date Отказано, если нет подписки - проблема без держателей не может быть размещена. certificates_outstanding из того, что было подписано, и вычисляет дату погашения.
offering or subscribed → active.
Распределять доходы
POST /api/v1/pfp/certificate-issues/{id}/profit
{ "total_profit": "33750000", "period_end_date": "2026-12-31" }
Только от activeСумма делится на certificates_outstandingЗаписано и записано:
{
"profit_distributions": [
{
"date": "2026-12-31",
"total_profit": "33750000",
"per_certificate": "22500",
"certificates_outstanding": 1500
}
],
"total_profit_distributed": "33750000",
"actual_yield": 9,
"next_distribution_date": "2027-03-31"
}
actual_yield пересчитываются по каждому распределению: это то, что фактически оплатил выпуск, против expected_yield, на что надеялись при запуске. Оба целые проценты. Когда они расходятся, второе число - это то, что верно.
Отказываются нулевые и отрицательные суммы. period_end_date Это опционально и по умолчанию на сегодняшний день.
Прекращение проблемы
зрелость
POST /api/v1/pfp/certificate-issues/{id}/mature
Никакого тела. active → matured, **Но только в том случае, если срок действительно наступил.**Называть его рано - отказано.
искупление
POST /api/v1/pfp/certificate-issues/{id}/redeem
{ "redemption_date": "2031-10-20" }
Только от maturedЗакрывает позицию каждого держателя и устанавливает certificates_outstanding до нуля.
Раннее искупление
POST /api/v1/pfp/certificate-issues/{id}/redeem_early
{ "redemption_date": "2029-06-01" }
Только от activeи Только если early_redemption_allowed Он был создан для созданияИначе:
{
"error": "unprocessable_entity",
"details": {
"early_redemption_allowed": ["досрочный выкуп условиями не предусмотрен"]
}
}
по умолчанию
POST /api/v1/pfp/certificate-issues/{id}/default
{ "reason": "Lessee insolvent; no rental income since 2028-04" }
Доступный из active и от matured - вопрос может выйти из строя до истечения срока его действия или не уплатить при выкупе. metadata.default_reason.
Перечислить и прочитать
GET /api/v1/pfp/certificate-issues
| Параметр запроса | ценности |
|---|---|
status | любой статус выше |
region | региональный регион |
type | любой backing_type |
investor_id | uuid — вопросы, по которым у данного держателя есть подписка |
env | test | prod |
GET /api/v1/pfp/certificate-issues/{id}