网贷利率合规检测
借款年化利率 (APR)
% / 年当前 1 年期 LPR
% / 年(2024 数据)4 倍 LPR 红线 + 是否合法判定
借款年化利率 (APR)
% / 年当前 1 年期 LPR
% / 年(2024 数据)· 最高法司法保护上限:年化 24%(受司法保护)以下;24%-36% 自然债务区间;超 36% 无效
· 2020 民间借贷新规:上限 LPR 1Y × 4 倍(2024 ≈ 13.8%)— 适用于民间借贷
· 持牌金融机构(银行、消金公司)按 24% 监管底线
· 网贷平台费率必须公示 APR(实际年化),违法砍头息 / 复合利息 / 超高滞纳金均不合法
了解工具定位 · 使用场景 · 对比优势
借款人收到网贷平台发来的电子合同,年化利率标注为 15.6%,但包含服务费、担保费、信息费等隐性成本。本工具输入合同所列全部费用(本金、分期数、每期还款额、服务费),自动计算实际综合年化利率,并与 4 倍 LPR(当前约 13.8%)比对,直接判定是否超过法定红线,帮助借款人在签合同前识别非法高利贷。
已陷入多笔网贷逾期的用户,面对催收方主张的利息和违约金,需要确认对方收费是否合法。本工具输入每笔借款的本金、已还期数、剩余欠款,自动计算历史已付利息是否超过 4 倍 LPR,并给出超出部分的法律依据(《民间借贷司法解释》第 25 条),为协商减免或诉讼提供量化证据。
同时收到 A、B、C 三个平台的借款邀请,A 平台宣称日息万 2,B 平台月费率 0.6%,C 平台年化 18%。本工具将不同表述的利率统一换算为年化 APR,并与 4 倍 LPR 红线比对,标红超出平台,帮助借款人在 3 分钟内筛选出合法且利率最低的方案,避免被营销话术误导。
亲友间借贷常口头约定月息 1 分或 2 分,但未明确是否超过法定上限。本工具输入本金、约定利率、借款期限,自动计算 4 倍 LPR 对应的合法月息上限(当前约 1.15%),并显示超出的利息金额,帮助出借人调整约定利率至合规范围,避免因利率过高被法院认定为无效或调整。
背负 3 笔网贷、总欠款 12 万、月还款压力超过收入 50% 的用户,想通过债务重组(延长分期、降低利率)减轻负担。本工具输入每笔欠款的原始利率和拟重组后的利率,自动判断重组后是否仍超过 4 倍 LPR 红线,并计算重组后月供和总利息变化,帮助用户判断重组方案是否真正合法有效。
| 维度 | 本工具 | 竞品 A(民间借贷计算器) | 传统方法(人工计算) |
|---|---|---|---|
| 数据隐私 | 纯浏览器端计算,原始数据不上传任何服务器 | 需在第三方网站输入借款金额、利率等敏感信息 | 依赖借款人向他人或机构提供完整的借贷合同信息 |
| 处理速度 | 输入即出结果,无网络延迟 | 需加载页面、提交表单、等待服务器响应,约 3-8 秒 | 需查阅 LPR 公告、手动计算、核对,耗时 10-30 分钟 |
| 离线可用 | 完全离线,断网环境下仍可使用 | 必须联网,断网无法访问 | 完全离线,依赖纸质公告和计算器 |
| 计算准确性 | 内置最新 LPR 数据,自动比对 4 倍上限,无人工误差 | 数据更新可能有延迟,需用户自行判断利率是否在 4 倍 LPR 内 | 极易因查阅的 LPR 公告版本错误或计算失误导致结果偏差 |
| 操作复杂度 | 仅需输入年利率,一键判定 | 需手动填写多个字段(金额、期限、利率等),操作步骤多 | 需自行查找 LPR 公告、理解 4 倍规则、进行乘法运算和比较 |
| 结果呈现 | 直接给出“合法/不合法”判定及红线利率参考值 | 仅展示计算后的利息总额,不直接判定合法性 | 需用户自行对比计算结果与 4 倍 LPR 上限,结论不直观 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| 借款本金:100000元,年利率:15.4%,期限:12个月 | 年利率 15.4% ≤ 4倍LPR(当前LPR=3.85%,4倍=15.4%),合法 | 典型场景:刚好卡在4倍LPR红线上 |
| 借款本金:50000元,年利率:24%,期限:6个月 | 年利率 24% > 4倍LPR(当前LPR=3.85%,4倍=15.4%),超出部分(8.6%)不受法律保护 | 常见高利贷场景:超出红线部分无效 |
| 借款本金:20000元,年利率:10%,期限:3个月 | 年利率 10% ≤ 4倍LPR(当前LPR=3.85%,4倍=15.4%),合法 | 常规合法借贷:利率低于红线 |
| 借款本金:0元,年利率:15%,期限:12个月 | 错误:借款本金必须大于0 | 边界case:本金为0的无效输入 |
| 借款本金:10000元,年利率:36%,期限:1个月 | 年利率 36% > 4倍LPR(当前LPR=3.85%,4倍=15.4%),超出部分(20.6%)不受法律保护 | 边界case:极高利率(36%为旧标准上限) |
| 借款本金:500000元,年利率:15.4%,期限:36个月 | 年利率 15.4% ≤ 4倍LPR(当前LPR=3.85%,4倍=15.4%),合法 | 边界case:大额长期借贷仍合规 |
| 借款本金:10000元,年利率:15.5%,期限:12个月 | 年利率 15.5% > 4倍LPR(当前LPR=3.85%,4倍=15.4%),超出部分(0.1%)不受法律保护 | 易错case:仅超0.1%也属违规 |
| 借款本金:10000元,年利率:15.4%,期限:0个月 | 错误:期限必须大于0 | 边界case:期限为0的无效输入 |
合同写月利率 1.5%,直接输入 18%将月利率 1.5% 换算为年化利率:(1+0.015)^12 - 1 ≈ 19.56% 再输入网贷常用等额本息/等本等息,名义月利率 ≠ 实际年化利率。工具判定的是实际年化利率是否超 4 倍 LPR,需按 IRR 口径换算。
借款 10 万,分 12 期还 12 万,输入 120000输入实际年化利率(如 20%)或通过 IRR 计算器先反推年化利率工具输入字段是「年化利率」,不是「总还款金额」。总还款额需结合本金、期限、还款方式才能算出利率,直接输入金额会导致判定结果完全错误。
2024 年 12 月 LPR 为 3.1%,仍用 3.85% 计算 4 倍红线(15.4%)使用工具自动获取的最新 LPR(每月 20 日更新),或手动查询央行官网后输入LPR 每月调整,4 倍红线 = 4 × 当月 1 年期 LPR。用过期 LPR 算出的合法利率门槛可能偏高或偏低,导致误判。
用 5 年期以上 LPR(4.2%)计算民间借贷 4 倍红线民间借贷利率保护上限使用 1 年期 LPR(如 3.1%)× 4 = 12.4%最高法民间借贷司法解释明确引用「一年期贷款市场报价利率」。5 年期 LPR 用于房贷等长期贷款,二者数值不同,混用导致红线计算偏差。
合同利率 12%,另收 3% 服务费,认为合法(12% < 4 倍 LPR)将服务费、保险费、担保费等所有费用折算进年化利率,如总成本 = 12% + 3% = 15% 再判定《最高人民法院关于审理民间借贷案件适用法律若干问题的规定》第 30 条:所有费用(利息、服务费、管理费、保险费等)合计超过 4 倍 LPR 的部分不予保护。
借款 10 万,等本等息每月还 8333 本金 + 1000 利息,认为年利率 12%用 IRR 计算实际年化利率:等本等息 12% 名义利率 ≈ 实际年化 21.5%等本等息每期按全额本金计息,实际资金占用逐月递减,真实利率约等于名义利率 × 1.8 倍。直接输入名义利率会严重低估实际成本。
合同 12 期,第 3 期提前还清,仍用 12 期计算年化利率按实际占用资金天数计算年化利率:IRR(每期现金流,实际天数/365)提前还款缩短了资金占用时间,实际年化利率可能高于合同利率。工具判定需基于「实际借款期限」而非「合同期限」。
2024 年 7 月借款,LPR 在 6 月已从 3.45% 降至 3.35%,仍用 3.45%以借款合同成立时的最新 LPR 为准,或使用工具自动获取的当月 LPRLPR 每月 20 日发布,借款合同成立日所属月份的 LPR 即为基准。使用过时 LPR 会导致红线计算偏差 0.1-0.4 个百分点。
公式推导 · 流程图解 · 依据出处
年化利率 ≤ 4 × LPR(一年期)
年化利率 — 贷款合同约定的年化综合利率(%)LPR(一年期) — 中国人民银行授权发布的一年期贷款市场报价利率(%)2025年3月一年期 LPR 为 3.10%。4 倍 LPR = 4 × 3.10% = 12.40%。若某网贷合同年化利率为 15%,则 15% > 12.40%,超出红线,属于高利贷,超出部分利息不受法律保护。
适用于民间借贷及网贷利率司法保护上限判定(最高人民法院《关于审理民间借贷案件适用法律若干问题的规定》第 25 条)。不适用于金融机构贷款(如银行信用卡、消费金融公司),其利率上限另有规定。
3 种主流语言 · 复制即用
import requests
# 获取最新 LPR(贷款市场报价利率)
def get_lpr():
# 中国人民银行授权全国银行间同业拆借中心公布
url = "https://www.chinamoney.com.cn/ags/ms/cm-u-bk-currency/SddsCurrChrt"
try:
resp = requests.get(url, timeout=10)
resp.raise_for_status()
data = resp.json()
# 假设返回结构:{"records": [{"lpr1Y": "3.45"}]}
lpr = float(data["records"][0]["lpr1Y"])
return lpr
except Exception as e:
print(f"获取 LPR 失败: {e}")
return None
# 判定贷款利率是否合法
def check_loan_legal(annual_rate: float, lpr: float) -> str:
threshold = 4 * lpr
if annual_rate <= threshold:
return f"合法(年利率 {annual_rate:.2f}% ≤ 4×LPR {threshold:.2f}%)"
else:
return f"非法(年利率 {annual_rate:.2f}% > 4×LPR {threshold:.2f}%)"
# 示例
lpr = get_lpr()
if lpr:
print(check_loan_legal(15.4, lpr)) # 假设 LPR=3.85%,15.4% 刚好等于 4 倍红线
print(check_loan_legal(20.0, lpr)) # 超过红线package main
import (
"encoding/json"
"fmt"
"io"
"net/http"
)
// LPRResponse 模拟中国人民银行 API 返回结构
type LPRResponse struct {
Records []struct {
LPR1Y string `json:"lpr1Y"`
} `json:"records"`
}
// getLPR 获取最新一年期 LPR
func getLPR() (float64, error) {
url := "https://www.chinamoney.com.cn/ags/ms/cm-u-bk-currency/SddsCurrChrt"
resp, err := http.Get(url)
if err != nil {
return 0, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return 0, err
}
var data LPRResponse
if err := json.Unmarshal(body, &data); err != nil {
return 0, err
}
if len(data.Records) == 0 {
return 0, fmt.Errorf("no LPR data")
}
var lpr float64
if _, err := fmt.Sscanf(data.Records[0].LPR1Y, "%f", &lpr); err != nil {
return 0, err
}
return lpr, nil
}
// checkLoanLegal 判定贷款利率是否超过 4 倍 LPR 红线
func checkLoanLegal(annualRate, lpr float64) string {
threshold := 4 * lpr
if annualRate <= threshold {
return fmt.Sprintf("合法(年利率 %.2f%% ≤ 4×LPR %.2f%%)", annualRate, threshold)
}
return fmt.Sprintf("非法(年利率 %.2f%% > 4×LPR %.2f%%)", annualRate, threshold)
}
func main() {
lpr, err := getLPR()
if err != nil {
fmt.Println("获取 LPR 失败:", err)
return
}
fmt.Println(checkLoanLegal(15.4, lpr)) // 假设 LPR=3.85%
fmt.Println(checkLoanLegal(20.0, lpr))
}// 获取最新 LPR(浏览器环境示例,实际需处理 CORS)
async function getLPR() {
const url = 'https://www.chinamoney.com.cn/ags/ms/cm-u-bk-currency/SddsCurrChrt';
try {
const resp = await fetch(url);
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const data = await resp.json();
// 假设返回结构:{ records: [{ lpr1Y: "3.45" }] }
return parseFloat(data.records[0].lpr1Y);
} catch (err) {
console.error('获取 LPR 失败:', err);
return null;
}
}
// 判定贷款利率是否合法
function checkLoanLegal(annualRate, lpr) {
const threshold = 4 * lpr;
if (annualRate <= threshold) {
return `合法(年利率 ${annualRate.toFixed(2)}% ≤ 4×LPR ${threshold.toFixed(2)}%)`;
}
return `非法(年利率 ${annualRate.toFixed(2)}% > 4×LPR ${threshold.toFixed(2)}%)`;
}
// 示例
(async () => {
const lpr = await getLPR();
if (lpr !== null) {
console.log(checkLoanLegal(15.4, lpr)); // 假设 LPR=3.85%
console.log(checkLoanLegal(20.0, lpr));
}
})();8 个高频疑问