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

Продажа в рассрочку

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

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

Следствием для вашей интеграции является последовательность, которую вы не можете пропустить: продавец должен фактически приобрести актив, прежде чем продавать его. API Он имеет четыре перехода для этой последовательности и обеспечивает их порядок.

Базовый путь: /api/v1/pfp/installment-sales · Религиозное чтение: Мурабаха


Статус​

draft ──submit──> under_review ──review──> review_passed
│ │ │
│ └──reject──> rejected │
│ │
└──────────────┬──────────────────────────────┘
│
order_asset│ (optional)
v
asset_ordered
│
purchase_asset │ ← also reachable directly from draft / review_passed
v
asset_purchased
│ deliver_asset
v
delivered
│ activate
v
active ──> completed
└──> defaulted
статусЗначение
draftЗаписанные термины, ничего не изменилось
under_reviewПредставлен на утверждение
review_passedЗаключение прилагается
rejectedТерминал. Требуется а reason
asset_orderedЗаказ от поставщика
asset_purchasedПродавец владеет активом
deliveredпереданы покупателю; право собственности передано
activeУстановки запущены
completedОплачивается полностью
defaultedНаписано

Создать контракт​

POST /api/v1/pfp/installment-sales
{
"customer_id": "8f2a1c44-0b6e-4d51-9a3f-1c8e5b7d2a90",
"region": "RU",
"currency": "RUB",
"asset_type": "vehicle",
"asset_description": "Lada Vesta SW Cross, 2026",
"purchase_price": "180000000",
"markup_rate": 1500,
"payment_months": 36,
"down_payment": "36000000",
"supplier_name": "AvtoDom Kazan",
"supplier_contact": "+7 843 000-00-00"
}
Полное полеТипТребуемыйЗаметки
customer_iduuid✅Покупатель
regionstring✅Контрактный регион
asset_descriptionstring✅Что продается
purchase_pricestring✅Незначительные единицы — сколько продавец платит поставщику
markup_rateinteger✅Базовые точки, 1–10000. 1500 is 15 %
payment_monthsinteger✅1–360 Периоды партии 30 дни
asset_typeenum—vehicle | real_estate | equipment | commodity | inventory
currencystring—ISO 4217
down_paymentstring—Небольшие подразделения. Должна быть меньше цены продажи
asset_specificationsobject—Спецификация свободной формы
supplier_name, supplier_contactstring—Также могут быть поставлены на order_asset
product_iduuid—Шаблон продукта
metadataobject—Возвращение нетронутых

Что представляет собой платформа​

markup_amount   = floor(purchase_price × markup_rate / 10000)
sale_price = purchase_price + markup_amount
financed_amount = sale_price − down_payment
monthly_payment = floor(financed_amount / payment_months)

Для запроса выше: разметка 270 000 RUBЦена продажи 2 070 000 RUBФинансируемый 1 710 000 RUBежемесячно 47 500 RUB.

Два отказа ожидать:

  • Разметьте эти этажи до нуля. Маленький purchase_price с низким markup_rate В контракте отказано — продажа по себестоимости — это беспроцентный кредит, а не продажа, и он пройдет проверку «ставка выше нуля» при продаже по цене покупки.
  • Авансовый платеж по цене продажи или выше. Отказался: при равном нечего финансировать, выше него график бы продавец платил покупателю.

Последовательность приобретения​

Продавец не может продать то, чем он не владеет. Четыре перехода, по порядку.

1Заказ от поставщика (факультативно)​

POST /api/v1/pfp/installment-sales/{id}/order_asset
{ "supplier_name": "AvtoDom Kazan", "supplier_contact": "+7 843 000-00-00" }

Оба поля здесь необязательны, если они были даны при создании. draft or review_passed → asset_ordered.

Этот шаг можно пропустить: purchase_asset заключает договор, который до сих пор draft or review_passedИспользуйте его, когда вы отслеживаете заказ поставщика как отдельное событие, опустите его, когда вы этого не делаете.

2Продавец покупает его​

POST /api/v1/pfp/installment-sales/{id}/purchase_asset
{
"asset_purchase_date": "2026-09-02",
"ownership_documents": ["invoice-4471.pdf", "title-transfer.pdf"]
}

asset_purchase_date Требуется.Доступный от asset_orderedа также непосредственно из draft or review_passed Если вы пропустили шаг заказа.

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

3Передай это.​

POST /api/v1/pfp/installment-sales/{id}/deliver_asset
{
"delivery_date": "2026-09-05",
"ownership_transfer_date": "2026-09-05"
}

Обе даты требуются и регистрируются отдельно: физическая доставка и передача права собственности не всегда являются одним и тем же днем, и какой из них регулируется, зависит от юрисдикции. asset_purchased → delivered.

4Начните рассрочку​

POST /api/v1/pfp/installment-sales/{id}/activate
{ "first_payment_date": "2026-10-05" }

Факультативно, по умолчанию сегодня. Вот где формируется расписание. delivered → active.


Расписание платежей​

В результате активации в payment_scheduleОдин вход за период:

{
"payment_schedule": [
{
"payment_number": 1,
"due_date": "2026-10-05",
"amount": "4750000",
"remaining_balance": "166250000"
},
{
"payment_number": 2,
"due_date": "2026-11-04",
"amount": "4750000",
"remaining_balance": "161500000"
}
]
}

Две вещи, которые нужно знать об этом:

  • Периоды являются 30 дней, а не календарных месяцев. Сроки дрейфа относительно календаря: график, начинающийся 5 Октябрь стал вторым платежом 4 Ноябрь. Это преднамеренно и последовательно для всей семьи продуктов.
  • Остальная часть округления добавляется к окончательной партии. monthly_payment Это не в счет, так что последний платеж больше, чем тот, который выпал отделу. financed_amount Точно.

maturity_date Это первая дата оплаты плюс (payment_months − 1) × 30 Дни — дата последней партии, а не месяц после нее.


Зарегистрируйте платеж​

POST /api/v1/pfp/installment-sales/{id}/payment
{ "amount": "4750000" }

уменьшать outstanding_amount, увеличивается total_paid и payments_madeнаборы last_payment_dateКогда непогашенный баланс достигает нуля, контракт переходит к completed.

Переплата ограничена непогашенным балансом. Отправка большего, чем причитается, применяется только к тому, что остается; избыток не регистрируется как оплаченный. Возврат его через ваше собственное урегулирование, а не через эту конечную точку — в противном случае «оплаченный» перестает примиряться с «финансированным».


преступность​

POST /api/v1/pfp/installment-sales/{id}/delinquency
{ "days_past_due": 45, "overdue_amount": "9500000" }

days_past_due Это необходимо и может быть 0 Чтобы устранить преступность. overdue_amount необязательно.

Это фиксирует преступность; это делает не Если ваша юрисдикция разрешает просрочку платежа, который идет на благотворительность, а не на продавца, обработайте его за пределами этого контракта.


Перечислить и прочитать​

GET /api/v1/pfp/installment-sales
Параметр запросаценности
statusлюбой статус выше
regionКонтрактный регион
asset_typevehicle | real_estate | equipment | commodity | inventory
customer_iduuid
envtest | prod
GET /api/v1/pfp/installment-sales/{id}

Подробный ответ добавляет график, поставщика, документы о собственности и даты, обзор и разбивку денег:

{
"data": {
"id": "c41d8b90-3e77-4a12-b5f6-9e2d7a1c0843",
"contract_number": "INS-RU-20260823-9E4B02",
"status": "active",
"asset_type": "vehicle",
"asset_description": "Lada Vesta SW Cross, 2026",
"purchase_price": "180000000",
"markup_rate": 1500,
"markup_amount": "27000000",
"sale_price": "207000000",
"down_payment": "36000000",
"financed_amount": "171000000",
"monthly_payment": "4750000",
"outstanding_amount": "166250000",
"total_paid": "4750000",
"payments_made": 1,
"payment_months": 36,
"days_past_due": 0,
"overdue_amount": null,
"asset_purchase_date": "2026-09-02",
"delivery_date": "2026-09-05",
"ownership_transfer_date": "2026-09-05",
"first_payment_date": "2026-10-05",
"maturity_date": "2029-08-27",
"compliance_review": null
}
}

markup_rate Это единственное число в этом ответе, которое не денежная сумма и, следовательно, не строка: это базисные баллы.


Утверждение и отклонение​

POST /api/v1/pfp/installment-sales/{id}/submit
POST /api/v1/pfp/installment-sales/{id}/review
POST /api/v1/pfp/installment-sales/{id}/reject

submit Не берёт тело. review Запись о допущении - approved_by требуемый, signed_at, document_ref и note факультативно. reject требует reason и является терминальной.

reject движение under_review → rejected В светском чтении рецензия необязательна: order_asset и purchase_asset И то, и другое достижимо прямо из draftТаким образом, контракт, который никогда не проходит проверку, все еще может завершить полную последовательность.