Source: https://guthlabs.ai/docs/instruments/invoice-late-fee-payment-terms-calculator/mechanism/

instrument mechanism / verified-clean

# Invoice Late Fee / Payment Terms Calculator mechanism

The inspectable method record for Invoice Late Fee / Payment Terms Calculator, kept separate from implementation and qualification.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Model scope

The formulas are conditionally standard, but the exact ambiguity is whether rate and disc% are entered as decimal fractions or percentage points, and whether 'effective annualized cost/benefit %' means the cost of foregoing the discount or the benefit of taking it. Retain the 'Educational estimate' label and state that the result does not determine contractual or legally permissible late fees.

- late_fee=balance*rate*days_late/365 is standard simple-interest accrual only when rate is an annual decimal rate and a 365-day convention applies; it does not model compounding, contractual grace periods, minimum fees, caps, or jurisdiction-specific rules.

- The discount formula is the standard simple annualized cost of foregoing a cash discount, not a compounded effective APR and not a benefit rate when the customer takes the discount. The output label must distinguish 'cost of not taking discount' from 'benefit of taking discount'.

- The specification does not state whether percentage inputs such as rate and disc% are supplied as decimals (0.12) or percentage points (12).

## Units and conventions

- balance is in the invoice currency.

- rate is an annual nominal rate represented as a decimal, such as 0.12 for 12% per year.

- days_late, discount_days, and net_days are nonnegative calendar-day counts.

- The late-fee formula uses a fixed 365-day year, including leap years.

- disc% is represented as a decimal, such as 0.02 for 2%.

- effective annualized cost is reported as a percentage after multiplying the decimal result by 100.

## Inspectable vector

One of 4 source-bound review vectors:

````
{
  "inputs": {
    "balance": 1200,
    "rate_decimal": 0.12,
    "days_late": 45,
    "discount_decimal": 0.02,
    "discount_days": 10,
    "net_days": 30
  },
  "expected_outputs": {
    "late_fee_usd": 17.75342466,
    "effective_annualized_cost_percent": 37.24489796
  },
  "working": "Late fee: 1200 × 0.12 = 144; 144 × 45 = 6480; 6480 ÷ 365 = 17.75342466. Discount cost: 0.02 ÷ (1 − 0.02) = 0.02 ÷ 0.98 = 0.02040816327; net interval = 30 − 10 = 20 days; 365 ÷ 20 = 18.25; 0.02040816327 × 18.25 = 0.3724489796; 0.3724489796 × 100 = 37.24489796%."
}
````

## Failure boundary

**BREAK_CLAIMED** · SELF_FLAGGED

The calculator encounters an undefined effective annualized discount cost when net_days equals discount_days. It also has a potential behavioral break at negative days_late: the raw formula returns a negative fee unless the implementation explicitly switches to an early/on-time branch and clamps the fee to zero.

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/invoice-late-fee-payment-terms-calculator/>)[03**Implementation**](<https://guthlabs.ai/docs/instruments/invoice-late-fee-payment-terms-calculator/implementation/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/invoice-late-fee-payment-terms-calculator/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
