Скип на основной контент

Финансы с участием

Семь продуктов, в которых доход происходит от результата реальной сделки или предприятия, а не от объявленной процентной ставки. Партнерство выплачивает то, что предприятие заработало. Распродажа в рассрочку зарабатывает наценку, согласованную один раз, при подписании, которая не растет со временем. Аренда зарабатывает арендную плату за использование вещи, которой фактически владеет арендодатель.

Они разделяют один уровень хранения и один набор арифметики, и они доступны в двух показаниях.


Два чтения одного и того же контракта​

Каждый продукт имеет светское чтение и а Религиозное чтениеКонтракт, деньги, публикации в бухгалтерской книге и расписание идентичны — что отличается, так это словарный запас и требование к обзору.

ПродуктСветская конечная точка (этот раздел)Религиозное чтение
Партнерство/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, IVDMSH, 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Деформированное тело или неразборчивое количество
403The participatory_finance Модуль не является активным для вашей организации.
404Никаких контрактов с этим ID В этом чтении Проверьте, что вы не обращаетесь к контракту на чтение религиозных текстов
422Проверка провалилась. details Наименования поля: взносы, не суммирующиеся в общую стоимость, акции прибыли, не суммирующиеся в 100переход, не допускаемый из текущего состояния
Валидационные сообщения не переводятся

The details Карта несет собственные строки валидации платформы, а для этого семейства продуктов они на русском языке.Они предназначены для ваших журналов и для поддержки, а не для отображения конечному пользователю — нанесите на карту название поля, а не сообщение, когда вы всплывете ошибка в собственном интерфейсе.

Попытка перехода от неправильного статуса возвращается 422 с текущим статусом, названным:

{
"error": "unprocessable_entity",
"details": { "status": ["переход недоступен из стадии draft"] }
}

Куда пойти дальше​

ПродуктИспользуйте, когда
ПартнерствоДве стороны вкладывают капитал в общее предприятие и делятся тем, что оно зарабатывает.
Распродажи в рассрочкуПокупатель нуждается в активе сейчас и оплачивает его с течением времени при фиксированной наценке.
АрендаПользователь нуждается в использовании актива; владелец сохраняет право собственности и затраты на владение.
Управляемые инвестицииОдна сторона обеспечивает капитал, другая обеспечивает работу.
Сертификационные вопросыМногие держатели пополняют один актив и делятся своим доходом.
Хранение депозитовСчет спроса с гарантированным основным доходом и без обещанного возврата
Инвестиционные депозитыСрочный депозит, доходность которого зависит от результатов, а не от ставки