Финансы с участием
Семь продуктов, в которых доход происходит от результата реальной сделки или предприятия, а не от объявленной процентной ставки. Партнерство выплачивает то, что предприятие заработало. Распродажа в рассрочку зарабатывает наценку, согласованную один раз, при подписании, которая не растет со временем. Аренда зарабатывает арендную плату за использование вещи, которой фактически владеет арендодатель.
Они разделяют один уровень хранения и один набор арифметики, и они доступны в двух показаниях.
Два чтения одного и того же контракта
Каждый продукт имеет светское чтение и а Религиозное чтениеКонтракт, деньги, публикации в бухгалтерской книге и расписание идентичны — что отличается, так это словарный запас и требование к обзору.
| Продукт | Светская конечная точка (этот раздел) | Религиозное чтение |
|---|---|---|
| Партнерство | /api/v1/pfp/partnerships | Мушарака |
| Распродажи в рассрочку | /api/v1/pfp/installment-sales | Мурабаха |
| Аренда | /api/v1/pfp/leases | Иджара |
| Управляемые инвестиции | /api/v1/pfp/managed-investments | Мудараба |
| Сертификационные вопросы | /api/v1/pfp/certificate-issues | Сукук |
| Хранение депозитов | /api/v1/pfp/safekeeping-deposits | Вадиа |
| Инвестиционные депозиты | /api/v1/pfp/investment-deposits | Месторождение Мудараба |
Религиозное чтение живет в /api/v1/baas/islamic-banking/{product_type} и доступна операторам платформ и лицензированным банкам, а не партнерам. Исламский банкинг в клиентской документации.
Чем на самом деле отличаются показания:
| Светский | религиозный | |
|---|---|---|
| Префикс номера контракта | PRT, INS, LSE, MIV, CRT, SFK, IVD | MSH, MRB, IJR, MUD, SKK, WDA, MUDD |
| Обзор | Договор может быть профинансирован без одного | Финансирование недостижимо без заключения наблюдательного совета |
| Форма ответа | Список курируемых полей; суммы в виде строк | Сохраненная запись с пустыми полями упала; суммы как целые числа |
| Названия полей, арифметика, расписания, реестр | идентичный | идентичный |
Названия полей одинаковы в обоих чтениях. compliance_review, markup_rate, custody_type - потому что оба чтения пишут одни и те же колонки. Религиозная лексика живет в контрактных документах и в кабинете оператора, а не на проводе.
Контракт, заключенный в одном чтении, является не Две адресные семьи изолированы: запрос светского контракта по религиозному адресу возвращается 404И обратное тоже верно.
Доступ
Эти конечные точки требуют Финансы с участием Модуль должен быть активирован для вашей организации оператором платформы.
Если это не так, каждая конечная точка в этом разделе отвечает:
{
"error": "module_not_active",
"message": "Module 'participatory_finance' is not activated for this organization",
"details": { "module_id": "participatory_finance" }
}
с HTTP 403Свяжитесь с оператором вашей платформы, чтобы включить его.
аутентификация
Сеансовый токен, а не API Ключ. Эти конечные точки не читаются. x-api-key В отличие от них,
конечные точки оплаты, они сидят за конвейером сессии, поэтому один только ключ отклоняется. 401 no
Неважно, насколько он действителен. POST /api/v1/session (см.
аутентификацияМетод 2) и отправить его в качестве знака-носителя.
x-organization-id is необходимый Это не адресация — платформа решает ваши проблемы.
сеанс внутри организации имен заголовков и модульного шлюза перед этими конечными точками;
Отказывается от запроса без него до того, как заработает какая-либо бизнес-логика. Какой код вы получите, следует обычному
вилкаошибки): Токен партнера даже не разрешим без заголовка, так что
Он читается как неизвестный и возвращается. 401; токен администратора или клиента ** является разрешимым, поэтому отказ
более конкретный 400 organization_required.
curl https://4pay.online/api/v1/pfp/partnerships \
-H "Authorization: Bearer $TOKEN" \
-H "x-organization-id: 00000000-1111-2222-3333-444444444444"
База URL: https://4pay.online/api/v1/pfp
Конвенции
Деньги — это целые малые единицы, отправленные как строки.
Каждое денежное поле является целочисленное число малых единиц — копейки, центы, файлы — закодированные как JSON струна.
{ "total_value": "150000000", "currency": "RUB" }
Это так. 1 500 000,00 RUBНет. 150 000 000 RUBи не 1 500 000 RUB.
Следуют два правила, и оба кусают на практике:
- Умножьте на незначительную единицу валюты перед отправкой. Пользователь печатает
1500В форме означает 1 500 RUB, который является"150000"Отправляю по проводам."1500"пятнадцать рублей. - Не преобразуйте сумму в JavaScript number. Сумма может превысить
Number.MAX_SAFE_INTEGER, аparseFloat— незаметно округлить её. Сохраняйте строку или используйтеBigInt.
Большинство полей должно быть Строго позитивный (^[1-9]\d*$Исключения отмечены на конечную точку: счета хранения могут быть открыты с нулевым балансом, а задолженность по аренде принимается нулевой, чтобы устранить преступность.
Проценты являются целыми числами
| Полное поле | Подразделение | Пример |
|---|---|---|
profit_sharing_ratio | Целый процент, обе стороны должны суммировать до 100 | {"bank": 60, "customer": 40} |
markup_rate | базисные точки | 1500 means 15 % |
expected_yield, indicative_rate | Весь процент | 7 means 7 % |
bank_ownership_percent | Целый процент, производный — не установленный | 60 |
markup_rate Это тот, который ловит людей: он в базисных точках, так что 15 % is 1500Нет. 15.
Обе стороны являются bank и customer
В каждом продукте названы две стороны контракта. bank и customer в полезной нагрузке - сторона финансирования и ее контрагент. Названия являются историческими и не подразумевают банковскую лицензию: в кооперативе, bank является фондом и customer является членом.
Суммы в, суммы выводятся
Ответы также возвращают суммы в виде строк и null где поле никогда не было установлено. null сумма означает не указан; а "0" означает указанный и нулевой. Различие имеет значение для факультативных порогов - счета хранения с указанием "minimum_balance": null Не имеет минимума, один с "minimum_balance": "0" Имеет минимум ноль.
Номер контракта
Каждый контракт получает contract_number Творение, в форме PREFIX-REGION-YYYYMMDD-XXXXXX:
PRT-P-RU-20260823-4A7F1C
Префикс кодирует продукт и его чтение — PRT-P является постоянным партнерством в светском чтении, MSH-P один и тот же контракт в религиозном. Регион - это двухбуквенный контрактный регион, или XX Последняя группа — шесть случайных шестнадцатеричных цифр, а не счетчик: ею выделяются два контракта, созданные в один и тот же день в одном и том же регионе, и столкновение отвергается уникальным индексом, а не проходит незамеченным.
Число генерируется платформой и не может быть установлено или изменено.
окружающая среда
Каждая конечная точка принимает факультативный env параметр запроса, test or prodОн по умолчанию для prodКонтракты на проведение испытаний хранятся отдельно и никогда не публикуются в производственном реестре.
Общий жизненный цикл
Пять из семи продуктов следуют одной и той же последовательности открытия:
draft ──submit──> under_review ──review──> review_passed ──> (funding) ──> active
│
└──reject──> rejected
draft— созданный, редактируемый, ничего не двинулось.under_review— подается на утверждение; стороны согласовывают условия.review_passed- вывод был приложен. Деньги теперь могут двигаться.rejected- терминальное состояние. Отказ требуетreason.
После activeКаждый продукт расходится: продажи в рассрочку завершены или дефолтны, аренда возвращается или прекращается, партнерские отношения растворяются, выпуск сертификатов созревает и выкупается.
Два депозитных продукта не имеют стадии обзора — они начинаются с момента их создания. pending и открытые для activate.
Объект обзора
POST /{product}/{id}/review прикрепляет запись об утверждении. Она хранится в договоре как compliance_review.
{
"approved_by": "Investment Committee, minutes 14/2026",
"signed_at": "2026-08-01",
"document_ref": "IC-2026-014",
"note": "Approved subject to quarterly reporting"
}
approved_by is требуется и не должна быть пустой.Другие три поля свободны. В светском чтении рецензия необязательна - контракт может идти от draft прямо через финансирование без одного, но если вы приложите обзор, он должен назвать, кто одобрил.
Все пять контрактных продуктов также разоблачают POST /{product}/{id}/reject, который принимает a reason и является терминальным. Два депозитных продукта не имеют ни того, ни другого.
ошибки
Формат является стандартом платформы — см. Ошибка ссылка.
| Код | Значение в этом разделе |
|---|---|
400 | Деформированное тело или неразборчивое количество |
403 | The participatory_finance Модуль не является активным для вашей организации. |
404 | Никаких контрактов с этим ID В этом чтении Проверьте, что вы не обращаетесь к контракту на чтение религиозных текстов |
422 | Проверка провалилась. details Наименования поля: взносы, не суммирующиеся в общую стоимость, акции прибыли, не суммирующиеся в 100переход, не допускаемый из текущего состояния |
The details Карта несет собственные строки валидации платформы, а для этого семейства продуктов они на русском языке.Они предназначены для ваших журналов и для поддержки, а не для отображения конечному пользователю — нанесите на карту название поля, а не сообщение, когда вы всплывете ошибка в собственном интерфейсе.
Попытка перехода от неправильного статуса возвращается 422 с текущим статусом, названным:
{
"error": "unprocessable_entity",
"details": { "status": ["переход недоступен из стадии draft"] }
}
Куда пойти дальше
| Продукт | Используйте, когда |
|---|---|
| Партнерство | Две стороны вкладывают капитал в общее предприятие и делятся тем, что оно зарабатывает. |
| Распродажи в рассрочку | Покупатель нуждается в активе сейчас и оплачивает его с течением времени при фиксированной наценке. |
| Аренда | Пользователь нуждается в использовании актива; владелец сохраняет право собственности и затраты на владение. |
| Управляемые инвестиции | Одна сторона обеспечивает капитал, другая обеспечивает работу. |
| Сертификационные вопросы | Многие держатели пополняют один актив и делятся своим доходом. |
| Хранение депозитов | Счет спроса с гарантированным основным доходом и без обещанного возврата |
| Инвестиционные депозиты | Срочный депозит, доходность которого зависит от результатов, а не от ставки |