民间借贷利息计算
定位
依据中国民间借贷相关司法解释和《民法典》,计算借期内利息、逾期利息、违约金合并上限、砍头息、结息转本和还款冲抵,并输出结构化《民间借贷利息计算书》。
优先使用 scripts/calculate_interest.py。脚本只依赖 Python 标准库,适合本地命令行直接运行。
适用场景
- 计算民间借贷借期内利息
- 计算逾期利息与违约金合并后的受保护金额
- 判断约定利率是否超过 24% / 36% / LPR 四倍
- 分析砍头息、复利、职业放贷等风险
- 处理多笔还款的费用、利息、本金冲抵
- 生成正式利息计算书或庭审提交前的测算底稿
工作流程
第一步:采集案件事实
优先向用户确认以下信息:
| 要素 | 说明 |
|------|------|
| 实际到账本金 | 利息按实际出借金额计算 |
| 合同载明本金 | 如与实际到账金额不同,用于识别砍头息 |
| 借款日期 | YYYY-MM-DD |
| 借款到期日 | 如有约定则提供 |
| 截止计算日期 | 不提供时默认当天 |
| 借期内约定利率 | 年化百分比 |
| 逾期起算日 | 不提供时可按到期日处理 |
| 约定逾期利率 | 年化百分比,可留空 |
| 违约金/其他费用 | 可折算成年化百分比 |
| 还款记录 | JSON 列表或明细 |
还需确认是否存在:
- 砍头息
- 复利 / 结息转本
- 职业放贷
- 债权实现费用
信息不完整时,可先按现有信息测算,但必须在结果中标明假设条件。
第二步:确定法律时段
按借款成立时间自动判断适用规则:
借款日期 < 2015-09-01 → 旧民间借贷意见(银行同期贷款利率四倍)
2015-09-01 ≤ 借款日期 < 2020-08-20 → 2015年《民间借贷规定》(24% / 36%)
借款日期 ≥ 2020-08-20 → 合同成立时1年期LPR四倍
注意:
- 如果区间跨越
2020-08-20,必须分段计算。 2015-09-01前时段的上限依赖银行同期贷款利率。由于本 skill 未内置历史基准利率表,脚本要求显式传入--legacy-base-rate。
第三步:调用计算脚本
基础示例:
python3 scripts/calculate_interest.py \
--principal 100000 \
--loan-date 2024-06-15 \
--rate 12 \
--loan-end 2025-06-15 \
--as-of 2025-04-20
带逾期利息、违约金与还款记录:
python3 scripts/calculate_interest.py \
--principal 100000 \
--contract-principal 110000 \
--loan-date 2024-01-01 \
--rate 12 \
--loan-end 2024-07-01 \
--overdue-date 2024-07-01 \
--overdue-rate 18 \
--penalty-rate 3 \
--repayments @repayments.json \
--as-of 2025-04-20
旧规时段示例:
python3 scripts/calculate_interest.py \
--principal 100000 \
--loan-date 2014-06-01 \
--rate 18 \
--legacy-base-rate 6.0 \
--as-of 2015-06-01
支持参数:
| 参数 | 说明 |
|------|------|
| --principal | 实际到账本金,必填 |
| --contract-principal | 合同载明本金,用于识别砍头息 |
| --loan-date | 借款日期,必填 |
| --loan-end | 借款到期日 |
| --as-of | 计算截止日,默认当天 |
| --rate | 借期内年化利率 |
| --overdue-date | 逾期起算日 |
| --overdue-rate | 约定逾期年化利率 |
| --penalty-rate | 违约金或其他费用折算成年化利率 |
| --fees | 实现债权的有关费用余额 |
| --repayments | 还款记录 JSON 字符串或 @文件路径 |
| --compound-date | 一次性结息转本日期 |
| --legacy-base-rate | 2015-09-01 前银行同期贷款年利率 |
| --professional-lender | 标记职业放贷风险 |
还款记录 JSON 示例:
[
{"date": "2024-08-01", "amount": 20000, "note": "第一次还款"},
{"date": "2024-12-15", "amount": 30000, "note": "第二次还款"}
]
第四步:核对脚本输出
脚本会输出以下内容:
- 基础信息
- 法律适用
- 分段计算明细表
- 还款冲抵明细
- 截至某日的本金、利息、违约金、费用合计
- 风险提示与假设
重点核对:
- 是否正确跨
2020-08-20分段 - 是否按法定上限截断利率
- 是否将违约金与逾期利息合并审查
- 是否按 费用 → 利息 → 本金 顺序冲抵
- 是否将砍头息按实际到账金额处理
第五步:向用户解释风险点
输出结果时,优先解释以下问题:
- 约定利率超出法定保护上限的部分是否被截断
- 已付高息中是否存在超额部分可抵扣本金
- 违约金与逾期利息是否被合并压缩
- 是否存在职业放贷或复利效力风险
- 对 2015 年前案件是否使用了用户提供的银行同期贷款利率作为前提
核心规则速查
利率保护上限
| 时段 | 借期内上限 | 逾期与违约金合计上限 | |------|-----------|--------------------| | 2015-09-01前 | 银行同期贷款利率四倍 | 同左 | | 2015-09-01 至 2020-08-19 | 年利率 24% | 年利率 24% | | 2020-08-20起 | 合同成立时1年期LPR四倍 | 同左 |
无逾期利率约定时
| 场景 | 处理方式 | |------|---------| | 2015-09-01 至 2020-08-19,借期和逾期利率均未约定 | 按年利率 6% | | 2020-08-20后,借期和逾期利率均未约定 | 按逾期当时 1 年期 LPR | | 仅约定借期内利率 | 逾期后通常按借期内利率,但不得超过法定上限 |
还款冲抵顺序
依据《民法典》第 561 条:
- 实现债权的有关费用
- 利息
- 本金
参考文件
| 文件 | 用途 |
|------|------|
| references/legal_basis.md | 法律条文全文与核心规则摘要 |
| references/lpr_data.md | 1年期 LPR 数据表 |
| references/calculation_rules.md | 详细算法、边界情况和伪代码 |
脚本说明
| 脚本 | 用途 |
|------|------|
| scripts/calculate_interest.py | 核心利息计算脚本,输出正式计算书 |
使用注意
- 对
2015-09-01前案件,没有银行同期贷款利率数据就不要直接给出确定结论,需补--legacy-base-rate。 - 复利、展期、职业放贷等场景存在合同效力问题,脚本只做机械测算,仍需法律判断。
- 如果用户只给“合同本金”而未给“实际到账本金”,要主动追问是否存在砍头息。
- 对于自然人之间“利息约定不明”的情形,应优先按无息处理。
- 当脚本输出中包含“风险提示与假设”时,回答用户时必须同步说明,不要只报最终数字。
Scan to contact