Loan Modifications

Update loan terms, change statuses, reset variable rates, convert construction loans to permanent financing, and track every change in the audit trail.

Status Changes

A loan's status controls whether interest accrues, payments can be recorded, and how the loan appears in reports. Use PATCH /api/v1/loans/:id/status to change a loan's status.

StatusInterest AccruesPayments AllowedDescription
PENDINGNoNoLoan has been created but not yet disbursed. Default status for new loans.
ACTIVEYesYesLoan is disbursed and performing. Interest accrues daily. Payments are accepted.
PAID_OFFNoNoLoan balance has been fully repaid. Terminal status.
DEFAULTNoYesBorrower has failed to meet obligations. Non-accrual. Payments are still accepted to recover balance.
CHARGED_OFFNoNoLoan has been written off as uncollectible. Balance removed from active portfolio.
CLOSEDNoNoLoan has been administratively closed. Used for cancelled or refinanced loans.
SUSPENDEDConfigurableNoLoan is temporarily frozen. Used for dispute resolution or compliance holds.

Pro Tip: Status transitions are validated by the backend. You cannot move directly from PENDING to PAID_OFF, for example. The system enforces a logical progression through the loan lifecycle.

Updating Loan Fields

Use PUT /api/v1/loans/:id to update loan fields. The endpoint accepts over 60 allowlisted fields. Only the fields you include in the request body are updated; all others remain unchanged.

Commonly Modified Fields

Term and Schedule

  • term_months -- Extend or shorten the term
  • maturity_date -- New maturity date
  • payment_frequency -- Change payment schedule
  • interest_rate -- New fixed rate

Borrower and Collateral

  • borrower_name -- Updated entity name
  • collateral_type -- Change collateral classification
  • collateral_value -- Updated appraisal
  • loan_officer -- Reassign loan officer

Late Fee Rules

  • late_fee_rate -- Percentage rate
  • late_fee_grace_days -- Grace period
  • late_fee_min / late_fee_max

Variable Rate Parameters

  • rate_index -- SOFR, PRIME, TREASURY
  • rate_margin -- Spread above index
  • rate_floor / rate_ceiling

Important: Any modification to a loan with a balance of $50,000 or more triggers the maker-checker approval workflow. The API returns HTTP 202 with an approval_id and the changes are held until a second authorized user approves them.

Variable Rate Resets

For loans with a variable interest rate, use POST /api/v1/loans/:id/rate-reset to apply a new rate based on the current index value plus the loan's margin.

  1. Determine the new index value: Look up the current SOFR, PRIME, or TREASURY rate from your rate source.
  2. Call the rate-reset endpoint: Pass the new index value. The system calculates: new_rate = index_value + rate_margin, bounded by rate_floor and rate_ceiling.
  3. Amortization recalculates: The schedule is regenerated from the reset date forward using the new rate. Past periods are not affected.
  4. Borrower notification: The rate change is logged in the audit trail and can be included in the borrower's next statement.

Example: A variable-rate loan with SOFR + 2.50%, floor 4.00%, ceiling 8.00%:

  • SOFR is currently 4.33%
  • New rate = 4.33% + 2.50% = 6.83%
  • 6.83% is within the floor (4.00%) and ceiling (8.00%)
  • Rate is updated to 6.83% effective immediately

Construction to Permanent Conversion

Construction loans in CEF Core can be converted to permanent financing once the building project is complete. Use POST /api/v1/loans/:id/convert to perform this conversion.

What the Conversion Does

  1. Changes the amortization type from INTEREST_ONLY to FULLY_AMORTIZING
  2. Sets the principal balance to the total drawn amount (not the original credit limit)
  3. Applies the permanent loan terms: new rate, term, payment frequency, and maturity date
  4. Generates a new amortization schedule starting from the conversion date
  5. Closes the draw facility -- no further draws can be made

Pro Tip: Schedule the conversion date to align with a payment date to avoid split-period interest calculations. The conversion endpoint accepts a conversion_date parameter for this purpose.

Audit Trail

Every loan modification is automatically logged in the immutable audit trail. CEF Core records the following for each change:

Audit FieldDescription
TimestampExact date and time of the modification (UTC)
User IDThe authenticated user who made the change
ActionType of modification (e.g., LOAN_UPDATED, STATUS_CHANGED, RATE_RESET)
Previous ValuesThe field values before the change (JSON diff)
New ValuesThe field values after the change (JSON diff)
Approval IDIf the change required maker-checker approval, the linked approval record ID

View the audit trail for any loan by opening the loan detail view and clicking the History tab. The audit log is stored in ops.audit_log and is append-only -- entries cannot be modified or deleted.

API Reference

MethodEndpointDescription
PUT/api/v1/loans/:idUpdate loan fields (60+ allowlisted fields)
PATCH/api/v1/loans/:id/statusChange loan status (validated transitions)
POST/api/v1/loans/:id/rate-resetApply new variable rate based on current index
POST/api/v1/loans/:id/convertConvert construction loan to permanent financing

All modification endpoints require JWT authentication. Changes to loans with balances of $50,000 or more return HTTP 202 and require maker-checker approval.

Common Modification Scenarios

Maturity Extension

A borrower requests an additional 12 months. Update term_months and maturity_date via PUT. The amortization schedule recalculates with the extended term, reducing the monthly payment amount.

Interest Rate Reduction

Board approves a rate reduction for a performing borrower. Update interest_rate via PUT. Future accrual uses the new rate. Past accrual is not retroactively adjusted.

Payment Frequency Change

A church switches from monthly to quarterly payments after a budget restructure. Update payment_frequency from MONTHLY to QUARTERLY. The schedule regenerates with fewer, larger payments.

Loan Suspension

A borrower disputes a charge. Change status to SUSPENDED via PATCH. Payments are blocked and accrual behavior is configurable. Resolve the dispute, then return to ACTIVE.

Explore Investor Notes

Now that you understand the complete loan lifecycle, learn how CEF Core manages the funding side with investor notes.

Creating Investor Notes