Update a loan file

Updates only the fields you send. Leave a field out and it is left
alone. Send an explicit null and the field is cleared, where the
field allows that. You'll get a 404 if the loan is not on your
processing company's account.

What gets checked (anything refused comes back as
422 VALIDATION_FAILED, with error.fields naming the field and
the reason): the same checks as creating a loan, applied only to the
fields you actually send. A field you leave out is never checked.
When you do send them, fileType and loanProgram must be values
your company has set up — see GET /api/v4/loan-types and
GET /api/v4/loan-programs (or
GET /api/v4/loan-programs-internal). branchID, loanBrokerID
and loanOfficerID must each point to an active branch, broker or
loan officer on your account.

Updating a property? Name which one. Every entry in
properties[] needs the propertyId of the property it updates.
Leave the id out, or send 0, and the call is refused with
422 VALIDATION_FAILED keyed properties.{i}.propertyId. To add a
property rather than update one, use
POST /api/v4/loans/{id}/properties.

You can save a loan back exactly as you read it. This route
accepts the complete body that GET /api/v4/loans/{id} gave you —
every block, every explicit null, fileType in the list shape the
read produced, and each property's own propertyId. Fields marked
readOnly — the calculated amounts, the summary figures, the
display labels and the ids — are accepted and ignored rather than
refused, so you never have to strip them out first. A readOnly
value you send is not stored; read the loan again to see the
platform's own figure.

Moving the loan along the pipeline is primaryStatusId, the
id from GET /api/v4/loan-primary-statuses. An id that is
unknown, switched off, or belongs to another company is refused with
a 422 — the loan's status is never quietly reset. Leave the field
out, or send null, and the status stays as it is. The keys
loanStatus and primeStatusId are not accepted; sending either
gets you a 422 that points to primaryStatusId.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Path Params
integer
required

Numeric loan-file id (LMRId).

Body Params

Same shape as LoanCreate, every field optional (merge-patch). Move the pipeline status with primaryStatusId.

ONE EXCEPTION to "every field optional": every properties[] entry must carry propertyId. See PropertyUpdate.

integer

Branch the loan belongs to — must be an active branch in your company (else 422).

fileType
length ≥ 1

Loan types on the file — loan-type codes your company has set up (moduleCode) from GET /api/v4/loan-types. A file may legitimately carry more than one: the back office's own File Type control is a multi-select, and the codes persist as one row each. Send a list, or a bare string for the single-code case (identical in effect). Every code is checked against the loan types your company is subscribed to — an unknown one is rejected with 422 and named in the message, including one sent alongside valid codes. This is the same shape GET returns, so a record read from the API can be saved straight back.

Each code may appear only once. The list is a set, so sending the same code twice is rejected with 422 rather than merged — if you get that error, whatever built the list added a code twice. Codes are compared ignoring case for this check, so "HMLO" and "hmlo" count as the same code.

string

Lending program — a code your company has set up (STCode) from GET /api/v4/loan-programs (or /loan-programs-internal). Unknown values → 422.

integer

The loan's pipeline status, written by its stable id — the id from GET /api/v4/loan-primary-statuses. The id is the only way to set a status, because your own company can rename its status labels. An id that is unknown, switched off, or belongs to another company is refused with a 422. The keys loanStatus and primeStatusId are not accepted; sending either is a 422.

integer

Originating broker — must be an active broker in your company when provided (else 422). Optional: leave it out and the loan is given your company's placeholder broker to hold the slot. Reading the loan back then reports loanBrokerID as null, because the placeholder is not a broker anyone can be shown or assign.

integer

Assigned loan officer — must be an active loan officer in your company when provided (else 422). Optional.

string
length ≤ 50

Lead source label (optional, free text).

borrower
object
entity
object

Borrowing entity. Required (at least entityName) when borrowerType is an entity type.

properties
array of objects

Subject/collateral properties to UPDATE. Each entry must name the property it changes with propertyId. To ADD a property, use POST /api/v4/loans/{id}/properties.

properties
loan
object

Loan structure, rates, dates, and fees. Property valuation/income/expense fields are loan-level for now.

Every money field here has a ceiling, and a figure over it is refused rather than quietly rounded down. Go over and the whole request comes back 422 with the field named, so nothing is stored half-changed.

The limit counts the digits BEFORE the decimal point, which is why it is written as an exclusiveMaximum: anything below the figure shown fits, however many decimal places it carries. Most fields here stop below 10,000,000,000,000 and are not annotated individually. Fourteen stop sooner and each carries its own figure — among them three percentages, whose ceilings are low because the figure is kept to many decimal places rather than because the number itself is small (loanRehabFinancedPercent must stay under 1,000). The limits differ because the underlying figures are stored differently.

Responses

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json