LendEasy/Docs
Get API keys
GuidesLoansAPR & disclosures

APR & disclosures

Reproduce a closed-end consumer APR from dated cash flows, classified charges, pinned conventions, and an immutable disclosure finalized at approval.

APR is a cash-flow result, not the contract’s nominal interest rate with a different label. For covered closed-end consumer credit, LendEasy applies the actuarial method described in Regulation Z, Appendix J, stores every input used, and fails closed when a fee or convention is unresolved.

This guide explains the product calculation and its audit controls. Your legal team owns product coverage, fee classifications, disclosure timing, and approved rounding and rendering policy.

The Harbor example

HARBOR · FICTIONAL EXAMPLE

Harbor Personal Loan

Fixed-rate installment loan

A regular monthly loan used to explain schedules, payments, payoff, APR, statements, and delinquency servicing.

Contract principal
$8,400.00
Nominal rate
13.25% fixed
Term
18 monthly payments
Prepaid origination fee
$252.00
Payment
$517.14
Disclosed APR
17.291%
Consummated and fundedAugust 12, 2026First payment dueSeptember 12, 2026Contract maturityFebruary 12, 2028

The fee is withheld from proceeds and classified as a finance charge, so the amount financed is $8,148.00 even though the contract principal is $8,400.00.

Harbor has a 13.25% nominal rate and a $252 origination fee withheld from proceeds. Its payment schedule amortizes $8,400, but the borrower receives $8,148. That difference is why the disclosed APR is higher than 13.25%.

Step 1: classify every charge

Classification lives on the charge definition itself. Every definition at /v1/charges carries an lmsConfig with a financeChargeFlag and a legalBasis citation, and the flag is immutable once set.

Axis Values Question answered
Finance-charge flag FINANCE_CHARGE, NOT_FINANCE_CHARGE, EXCLUDED Does the item enter the Regulation Z finance charge?
Cash-flow placement Prepaid, financed, or periodic—a fact of the contract Where does the item appear in this loan’s actual cash flows?

The placement is not configuration; it follows from what actually happened at funding and in the schedule. For Harbor, the origination fee is a finance charge collected prepaid: it is withheld from proceeds and reduces amount financed. A periodic fee classified outside the finance charge is removed from the disclosure payment stream before the APR solve. A financed finance charge remains in the contractual balance and payment stream but is subtracted from amount financed.

A charge definition without its classification reports configurationStatus: "MISSING" and can never be attached to a product or loan, so the calculation cannot encounter an unclassified fee. If the disclosure still cannot be produced—facts that do not reconcile, no valid rate root—the disclosure is FAILED and the loan cannot be approved. An unknown fee is never treated as excluded.

Step 2: derive the disclosure totals

Amount financed

contract balance at consummation     $8,400.00
− prepaid finance charges              $252.00
− financed finance charges                $0.00
                                      ─────────
amount financed                      $8,148.00
Result$8,148.00

Cash proceeds happen to equal amount financed in Harbor, but they are not universal synonyms. Non-finance-charge amounts paid to a third party on the consumer’s behalf may remain in amount financed even when the borrower does not receive that cash.

Total of payments and finance charge

total of payments = 18 × $517.14 = $9,308.52
finance charge    = $9,308.52 − $8,148.00
                  = $1,160.52

cross-check       = $908.52 scheduled interest
                  + $252.00 prepaid origination fee
                  = $1,160.52
Result$1,160.52 finance charge

The two finance-charge derivations must reconcile within the pinned monetary tolerance. If they do not, the disclosure fails rather than publishing totals that disagree.

Step 3: solve the actuarial equation

Harbor is a single-advance transaction with 18 equal monthly payments at equal intervals. Let i be the monthly unit-period rate. LendEasy solves:

Discounted cash-flow solve

                         18
$8,148.00 =              Σ   $517.14 / (1 + i)ᵏ
                         k=1

i = 0.0144092090279689 per month
APR = i × 12
    = 0.172910508335627
    = 17.2910508335627%
Result17.291% exact APR

The high-precision result is preserved in the disclosure record; the disclosed figure follows the product’s aprRounding policy—NEAREST_0_01_PERCENT_HALF_UP discloses Harbor at 17.29. A document renderer displays that approved format; the stored computation is not rerun from the rendered string.

For odd first periods, irregular payments, or multiple advances, the same principle applies to dated cash flows. Unit periods and fractional periods follow the pinned Appendix J conventions; LendEasy does not force them into a regular monthly approximation.

Why APR differs from common rates

Measure Harbor result What it represents
Nominal contract rate 13.25% Rate used by the loan’s interest calculation.
Exact disclosure APR 17.2910508…% Annualized unit-period rate that equates disclosed advances and payments.
Effective annual yield 18.7293795…% (1 + monthly rate)¹² − 1; not Harbor’s disclosed APR.
Purchased-amount multiple Not applicable A merchant-advance ratio, not an APR substitute.

Confusing the exact APR with effective annual yield would overstate Harbor’s disclosed figure. Confusing it with the nominal rate would omit the prepaid finance charge.

Finalized at approval, revalidated at disbursement

There are no disclosure endpoints to call. The disclosure is part of the loan lifecycle:

  • At approval, the disclosure is computed from the approved terms, schedule, and charge placements, then finalized automatically. If it cannot be produced, the approval itself fails—an APR-enabled product cannot approve a loan without a compliant disclosure.
  • At disbursement, the finalized disclosure is revalidated against the actual funding facts. If the facts changed—amount, date, or charge placement—the prior disclosure is marked SUPERSEDED and a new one is finalized in its place. The superseded record is retained.
  • Before approval, reading the summary computes a PREVIEW disclosure from the proposed terms. A preview is never persisted and never satisfies the approval gate.

Read the current disclosure in the loan summary’s aprDisclosure block:

curl "$BASE/v1/loans/7204/summary" \
  -H "Authorization: Bearer $TOKEN" \
  -H "LendEasy-Tenant: demo-lender"
{
  "aprDisclosure": {
    "status": "FINALIZED",
    "method": "REG_Z_ACTUARIAL_APPENDIX_J",
    "apr": "17.29",
    "financeCharge": "1160.52",
    "amountFinanced": "8148.00",
    "totalOfPayments": "9308.52",
    "currency": "USD",
    "toleranceApplied": "REGULAR",
    "finalizedAt": "2026-08-11T18:00:05Z"
  }
}
Status Meaning Safe handling
FINALIZED The stored, authoritative disclosure for the loan as approved or disbursed. Render and reference it.
PREVIEW Computed on read before approval; not persisted. Never present as the final disclosure.
FAILED The inputs cannot produce a compliant disclosure. Approval is blocked; correct the terms or charge facts.
NOT_APPLICABLE The product is not APR-enabled or not covered consumer credit. No disclosure is expected.
UNAVAILABLE The disclosure could not be computed or read at this moment. Treat as unknown; retry rather than rendering a blank.

What the finalized disclosure retains

The finalized record is self-contained and reproducible:

  • every advance and disclosure payment, with amount, date, and source fact;
  • each charge’s classification, legal basis, and actual placement;
  • amount-financed and finance-charge component calculations;
  • unit period, day-count and fractional-period conventions;
  • transaction regularity and the applicable accuracy tolerance; and
  • the monetary and rate rounding policies in force.

A later fee-policy change never rewrites a finalized disclosure. Only the disbursement-time revalidation supersedes one, and both records remain.

Accuracy classification is not rounding

§ 1026.22(a) describes a general accuracy tolerance of one-eighth of one percentage point for regular transactions and one-quarter point for qualifying irregular transactions. The product’s aprTolerancePolicy records the applicable class, and the summary echoes it as toleranceApplied. LendEasy tests the computed result against that tolerance but does not use it as permission to choose a convenient rate: it first solves the cash flows to the configured numerical convergence threshold.

An irregular first period or first/final payment alone does not automatically make the transaction irregular for this purpose. Multiple advances, irregular payment periods, or irregular payment amounts require a fact-specific classification under the rule and your policy.

Independent verification checklist

  1. Confirm the schedule payments and dates match the approved contract.
  2. Trace every charge to its immutable finance-charge flag and actual placement.
  3. Recalculate amount financed and total of payments from the disclosed components.
  4. Discount the payments at the exact unit-period rate and compare the present value with amount financed.
  5. Apply the annualization convention and the product’s aprRounding policy.
  6. Confirm the summary’s finalizedAt and status match the approval and disbursement history.

This lets an auditor reproduce Harbor’s APR without access to live configuration or mutable loan state.

Unified search across guides, recipes & the API referenceEsc