Skip to main content

Pricing Options & Configuration

This page covers common pricing configurations and how to use key fields in the multisearch request.


Pricing with a Past Date

By default the pricing engine uses the current date. To retrieve historical pricing (e.g. what rates were available last Tuesday), pass a date in the request body:

{
"date": "2026-02-15T00:00:00.000Z",
"companyId": "{{companyId}}",
"criteria": { ... }
}
FieldTypeDefaultDescription
datestring (date-time)nullISO 8601 date-time. When null, the search uses the current date. Set this to a past date to price against the rate periods that were active at that time.
note

The date must fall within a rate period that was active at that time. If no rate period covers the given date, no results will be returned.


loanType vs loanTypeCriteria

Both fields control the loan type, but they serve different purposes:

FieldLocationTypeValuesPurpose
loanTypeCriteriaRoot levelstring[]"Fixed", "Variable"Search-level filter. Determines which loan types to include in the search. Accepts multiple values to search across both at once.
criteria.loanTypeInside criteria (BorrowerCriteria)string"Fixed", "Variable"Borrower-level field. The specific loan type for the borrower's scenario. Can be left empty if loanTypeCriteria is provided.

The same pattern applies to loan purpose:

FieldLocationTypePurpose
loanPurposeCriteriaRoot levelstring[]Search filter — which purposes to include
criteria.loanPurposeInside criteriastringBorrower's specific loan purpose

In practice: Always set loanTypeCriteria (required). Set criteria.loanType to match if you're pricing a single scenario. Use multiple values in loanTypeCriteria (e.g. ["Fixed", "Variable"]) to search across both types in a single request.


maxListingPerRate

Controls how many line results are returned per rate in the response data map. Each key in resultMap.resultRates.data is a rate (e.g. "6.5"), and its value is an array of qualifying programs at that rate.

FieldTypeDefaultDescription
maxListingPerRateinteger-1Maximum number of program results per rate. -1 means unlimited (return all qualifying programs).

Examples:

"maxListingPerRate": 3

Returns at most 3 qualifying programs for each rate. Useful when you only need the top results and want a smaller response payload.

"maxListingPerRate": -1

Returns all qualifying programs for each rate (default behavior).

"maxListingPerRate": 1

Returns only the single best program per rate — useful for a summary view.


Self-Provided Mortgage Insurance

By default, when pmiType is set to "BPMI" or "LPMI", Lender Price calls its integrated MI providers (Arch MI, MGIC, NationalMI, Enact, Essent, Radian) to calculate the MI premium.

To bypass the live MI provider lookup and supply your own MI values, set miCriteria.miCompanyName to "SelfProvided":

"criteria": {
"pmiType": "BPMI"
},
"miCriteria": {
"miCompanyName": "SelfProvided",
"paymentPlan": "EZMonthly",
"paymentType": "Monthly",
"renewalType": "Constant"
}
FieldTypeDescription
criteria.pmiTypestring"None", "BPMI" (borrower-paid), or "LPMI" (lender-paid). Set to "None" to skip MI entirely.
miCriteria.miCompanyNamestringThe MI provider name. Set to "SelfProvided" to supply your own MI instead of calling a live provider. Other values: "Essent", "MGIC", "ArchMI", "NationalMI", "Enact", "Radian".
miCriteria.paymentPlanstring"EZMonthly", "SinglePremium", or "None"
miCriteria.paymentTypestring"Monthly", "Annually", "Single", or "Split"
miCriteria.renewalTypestring"Constant", "Amortizing", "Declining", or "Single"
tip

You can include miCriteria fields in every request. Lender Price only uses them when applicable (e.g. when LTV requires MI). Setting pmiType to "BPMI" with miCompanyName: null is safe — it will run MI only when the scenario requires it.


Closing Costs

By default, closing costs are not included in the pricing search. To enable closing cost calculations, set closingCost.useClosingCost to true:

"closingCost": {
"useClosingCost": true
}
FieldTypeDescription
closingCost.useClosingCostbooleanSet to true to include closing costs in the pricing results.
closingCost.useCompanyDefaultClosingCostbooleanSet to true to use the company's default closing cost configuration.
closingCost.useErnstCostbooleanSet to true to use Ernst closing cost data.

Closest to Target Value

Use brokerCriteria.closingCostRange.closestToTargetValue to return a single result per program/investor that is closest to the specified point value. This is not a true "closest to par" — it returns the rate closest to the target value for each program.

"brokerCriteria": {
"closingCostRange": {
"closestToTargetValue": 1
}
}
FieldTypeDescription
closingCostRange.closestToTargetValuenumberTarget point value. Returns one result per program/investor with the rate closest to this value.
closingCostRange.fromnumberMinimum closing cost range (accepts negative values for credits).
closingCostRange.tonumberMaximum closing cost range.

Compensation Plans

The compensation plan (comp plan) determines the loan officer's compensation. It can be set as a dollar amount or percentage of the loan.

Setting the Comp Plan

FieldDescription
BrokerCriteria.compPlanThe comp plan value
ClosingCost.maxCompensationMaximum compensation range
ClosingCost.minCompensationMinimum compensation range
BorrowerCriteria.borrowerComplanAmountBorrower comp plan amount
BorrowerCriteria.compensationTypeCompensation type

Overriding the Comp Plan

To override the comp plan value and provide different loan officer compensation, set BrokerCriteria.overrideExistingCompPlan to true.


Disqualified Products

By default, a pricing search only returns qualifying products. Disqualified products are returned as empty results.

FieldValueEffect
showDisqualifytrueShow disqualified products in results
showDisqualifyRulestrueInclude the reason(s) for disqualification
showUnmatchCompPlantrueInclude reason(s) a product did not match the comp plan