Skip to content
bitzorcas
中EN

Concept

法律专业费率与利息计算引擎

深入解析 BitzOrcas.Platform.LegalCalculators 模块:诉讼费分段累退精算、财产保全费、执行加倍利息与 LPR 浮动基准计算引擎。

Last updated

法律专业费率与利息计算引擎 (Legal Calculators Engine)

在法律科技与司法业务管理中,费率计算具有极高的法理严谨性与确定性。例如:

  • 诉讼费计算:必须严格遵循《诉讼费用交纳办法》第十三条的财产案件分段超额累退比例法,不可有哪怕一分钱的浮点误差;
  • 财产保全费:按照标的额分段累计,同时受到法定 5,000 元上限绝对封顶;
  • 迟延履行利息:遵循《最高人民法院关于执行程序中计算迟延履行期间的债务利息若干问题的规定》,采用日万分之一点七五(0.0175%)日利率复合或按 LPR(贷款市场报价利率)浮动计算。

BitzOrcas.Platform.LegalCalculators 是一个零外部数据库依赖、具备 100% 确定性与高精度高并发运算能力的纯领域算法库。


1. 诉讼费超额累退算法设计

诉讼标的额计算严格采用 decimal 高精度定点数,坚决杜绝 double / float 造成的二进制浮点精度漂移:

using System;
namespace BitzOrcas.Platform.LegalCalculators;
/// <summary>
/// 诉讼费用精算结果
/// </summary>
public sealed record LitigationFeeCalculationResult(
decimal ClaimAmount,
decimal StandardCourtFee,
decimal SummaryProcedureFee,
decimal ConciliationFee
);
/// <summary>
/// 诉讼费用法定计算引擎
/// </summary>
public static class CourtLitigationFeeCalculator
{
/// <summary>
/// 根据争议标的额计算标准一审案件受理费
/// </summary>
/// <param name="claimAmount">诉讼标的金额(元)</param>
/// <returns>计算结果(含全额、简易程序减半与调解减半金额)</returns>
public static LitigationFeeCalculationResult CalculatePropertyCaseFee(decimal claimAmount)
{
if (claimAmount <= 0)
{
return new LitigationFeeCalculationResult(0, 0, 0, 0);
}
decimal fee = 0;
// 1. 不超过 1 万元:每件交纳 50 元
if (claimAmount <= 10000m)
{
fee = 50m;
}
// 2. 超过 1 万元至 10 万元:按 2.5% 交纳
else if (claimAmount <= 100000m)
{
fee = 50m + (claimAmount - 10000m) * 0.025m;
}
// 3. 超过 10 万元至 20 万元:按 2% 交纳
else if (claimAmount <= 200000m)
{
fee = 50m + 90000m * 0.025m + (claimAmount - 100000m) * 0.02m;
}
// 4. 超过 20 万元至 50 万元:按 1.5% 交纳
else if (claimAmount <= 500000m)
{
fee = 50m + 90000m * 0.025m + 100000m * 0.02m + (claimAmount - 200000m) * 0.015m;
}
// 5. 超过 50 万元至 100 万元:按 1% 交纳
else if (claimAmount <= 1000000m)
{
fee = 50m + 90000m * 0.025m + 100000m * 0.02m + 300000m * 0.015m + (claimAmount - 500000m) * 0.01m;
}
// 6. 超过 100 万元至 200 万元:按 0.9% 交纳
else if (claimAmount <= 2000000m)
{
fee = 50m + 90000m * 0.025m + 100000m * 0.02m + 300000m * 0.015m + 500000m * 0.01m + (claimAmount - 1000000m) * 0.009m;
}
// 7. 超过 200 万元至 500 万元:按 0.8% 交纳
else if (claimAmount <= 5000000m)
{
fee = 50m + 90000m * 0.025m + 100000m * 0.02m + 300000m * 0.015m + 500000m * 0.01m + 1000000m * 0.009m + (claimAmount - 2000000m) * 0.008m;
}
// 8. 超过 500 万元至 1000 万元:按 0.7% 交纳
else if (claimAmount <= 10000000m)
{
fee = 50m + 90000m * 0.025m + 100000m * 0.02m + 300000m * 0.015m + 500000m * 0.01m + 1000000m * 0.009m + 3000000m * 0.008m + (claimAmount - 5000000m) * 0.007m;
}
// 9. 超过 1000 万元至 2000 万元:按 0.6% 交纳
else if (claimAmount <= 20000000m)
{
fee = 50m + 90000m * 0.025m + 100000m * 0.02m + 300000m * 0.015m + 500000m * 0.01m + 1000000m * 0.009m + 3000000m * 0.008m + 5000000m * 0.007m + (claimAmount - 10000000m) * 0.006m;
}
// 10. 超过 2000 万元部分:按 0.5% 交纳
else
{
fee = 50m + 90000m * 0.025m + 100000m * 0.02m + 300000m * 0.015m + 500000m * 0.01m + 1000000m * 0.009m + 3000000m * 0.008m + 5000000m * 0.007m + 10000000m * 0.006m + (claimAmount - 20000000m) * 0.005m;
}
var standardFee = Math.Round(fee, 2, MidpointRounding.AwayFromZero);
var halfFee = Math.Round(standardFee / 2m, 2, MidpointRounding.AwayFromZero);
return new LitigationFeeCalculationResult(
ClaimAmount: claimAmount,
StandardCourtFee: standardFee,
SummaryProcedureFee: halfFee,
ConciliationFee: halfFee
);
}
}

2. 财产保全申请费算法(5000 元绝对封顶)

依据《诉讼费用交纳办法》第十四条第二项:

  • 财产数额不超过 1,000 元或者不涉及财产数额的,每件交纳 30 元;
  • 超过 1,000 元至 10 万元的部分,按照 1% 交纳;
  • 超过 10 万元的部分,按照 0.5% 交纳;
  • 最高不得超过 5,000 元。
public static decimal CalculatePreservationFee(decimal preservationAmount)
{
if (preservationAmount <= 0) return 0m;
if (preservationAmount <= 1000m) return 30m;
decimal fee;
if (preservationAmount <= 100000m)
{
fee = 30m + (preservationAmount - 1000m) * 0.01m;
}
else
{
fee = 30m + 99000m * 0.01m + (preservationAmount - 100000m) * 0.005m;
}
// 法定 5000 元封顶保护
return Math.Min(Math.Round(fee, 2, MidpointRounding.AwayFromZero), 5000m);
}

3. 执行迟延履行加倍利息计算引擎

根据法释〔2014〕19号,加倍部分债务利息计算公式:

法定加倍利息计算公式: 加倍部分债务利息 = 未清偿金钱债务 × 日利率 (0.0175%) × 迟延履行天数

public static decimal CalculateDelayedPerformanceInterest(
decimal principalAmount,
DateOnly startDate,
DateOnly endDate)
{
if (principalAmount <= 0 || endDate <= startDate)
{
return 0m;
}
var days = endDate.DayNumber - startDate.DayNumber;
const decimal dailyRate = 0.000175m; // 日万分之一点七五
var interest = principalAmount * dailyRate * days;
return Math.Round(interest, 2, MidpointRounding.AwayFromZero);
}

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%