跳到主要内容

业务规则 — 非常规摊还

本页汇总了管辖非常规摊还的创建、清算与取消的各项不变量。当端点页面引用某个错误码、字段或需要额外上下文的条件时,请查阅本页。

参考日期(reference_date)​

reference_date 由调用方在创建请求中提供,是本服务使用的唯一时间基准 — 系统从不使用 date.today()。所有依赖日期的逻辑(逾期分期的分类、现值的按比例折现、early_amortization 和 nominal_amount 可选分期的筛选)均以该字段为起点。向 security-service 查询现值时也会传入同一个 reference_date。

摊还类型​

支持的 7 种类型,以及每种类型如何在 installment_list 的分期之间分配 amount:

类型在所选分期之间的分配规则是否允许部分支付
equal_amount按现值比例分配,先逾期后未来否
first_installments依次应用于所选分期中(按到期日)的前 N 期,N = number_of_installments否
present_amount按分期显式指定;折扣顺序为利息 → 罚金 → 本金否
matured_installments仅限已到期的分期,按到期日顺序否
early_amortization单笔未来分期,金额不超过其现值是
nominal_amount未来分期按名义价值(本金 + 利息)结清,按到期日顺序,不折现到现值是
full_amortization按现值比例分配到所有所选分期,不做级联;每期全额结清否

installment_list(整数 installment_number 数组)对所有类型均为必填 — 省略时返回 EVC100002。服务会将每个 installment_number 解析为 security 中对应的分期,并逐期查询所选分期的现值;amortization_type 只决定 amount 在这些分期之间的分配方式。

提前摊还(early_amortization)​

early_amortization 允许部分支付(nominal_amount 同样允许)。以下所有条件均适用:

  • installment_list 中恰好 1 期分期 — 否则返回 EVC100015。
  • 目标分期不得已逾期 — 否则返回 EVC100016。
  • amount 必须小于等于该分期的现值 — 否则返回 EVC100017。
  • 允许部分支付。 paid_amount > 0 AND paid_amount < expected_amount 这一状态是从相关列派生出来的;并没有新增状态枚举值。pending_conciliation 同时表示"未支付"和"部分支付";只有当 total_paid_amount >= total_expected_amount - tolerance_amount 时才会转为 paid。

按名义价值摊还(nominal_amount)​

nominal_amount 按名义价值 — 到期日的本金加利息 — 结清未来分期,不将其折现到 reference_date 的现值。以下所有条件均适用:

  • installment_list 中所有分期的 due_date 必须不早于 reference_date — 已逾期的分期返回 EVC100030。
  • amount 按到期日顺序分配,依次按名义价值覆盖每期分期直至用尽;最后一期被覆盖的分期可能只收到部分金额。
  • amount 必须小于等于所选分期的名义价值之和 — 否则返回 EVC100031。
  • 清算时允许部分支付,派生状态与 early_amortization 所述相同。

全额结清(full_amortization)​

full_amortization 使用所声明的 amount 结清 installment_list 中的所有分期,与每期的现值无关:

  • amount 按各期在 reference_date 的现值比例分配,不做级联 — 没有任何分期会没有份额。
  • 每个 event_conciliation 创建时的 expected_amount 等于其份额,discount_amount 等于现值与份额之差。
  • amount 不能超过所选分期现值之和 — 否则返回 EVC100035。
  • 清算时,支付该份额会在 security-service 中全额结清该分期:已付金额记为已付,差额记为该分期的折扣。present_amount 同样适用。

amount 与分配结果的一致性​

分配 amount 之后,服务会对所有类型按以下顺序校验结果:

  1. amount 大于已分配分期的现值之和 → EVC100035(按现值定价的类型;early_amortization 和 nominal_amount 仍分别返回 EVC100017 和 EVC100031)。
  2. 任一所选分期的 expected_amount 将为零 → EVC100034。不会创建带有零金额子事件的事件;请只选择 amount 能覆盖的分期。
  3. 已分配的 expected_amount 之和与 amount 相差超过 R$ 0.01 → EVC100033。对于 present_amount,amount 必须等于现值之和减去 total_discount。

expected_amount 以分为单位存储,四舍五入的余数计入最后一期,因此事件的 total_expected_amount 始终等于其子事件之和。

清算流程​

内部编排。 非常规事件的清算在检测到付款时由 QI Tech(account-liquidation-api)执行 — 集成方在此环节无需调用任何端点,也不会收到专门针对状态转换的 webhook。以下规则描述的是内部行为,便于你理解创建之后发生了什么。

常规清算发出完整总额(规则 4)。 在 due_date 进行的常规清算仍会通过 SQS 发出该分期完整的 total_amount;不会扣减 paid_amount。该事件会在其自身的 early_amortization 引擎中对账部分已付状态。

取消与终结​

内部编排。 取消与终结由每日例行任务触发 — 集成方无需调用任何端点来取消或终结一笔非常规摊还,也不存在面向租户的专用 webhook。以下描述仅供参考。

另请参阅​