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": { ... }
}
| Field | Type | Default | Description |
|---|---|---|---|
date | string (date-time) | null | ISO 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. |
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:
| Field | Location | Type | Values | Purpose |
|---|---|---|---|---|
loanTypeCriteria | Root level | string[] | "Fixed", "Variable" | Search-level filter. Determines which loan types to include in the search. Accepts multiple values to search across both at once. |
criteria.loanType | Inside 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:
| Field | Location | Type | Purpose |
|---|---|---|---|
loanPurposeCriteria | Root level | string[] | Search filter — which purposes to include |
criteria.loanPurpose | Inside criteria | string | Borrower'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.
| Field | Type | Default | Description |
|---|---|---|---|
maxListingPerRate | integer | -1 | Maximum 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"
}
| Field | Type | Description |
|---|---|---|
criteria.pmiType | string | "None", "BPMI" (borrower-paid), or "LPMI" (lender-paid). Set to "None" to skip MI entirely. |
miCriteria.miCompanyName | string | The 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.paymentPlan | string | "EZMonthly", "SinglePremium", or "None" |
miCriteria.paymentType | string | "Monthly", "Annually", "Single", or "Split" |
miCriteria.renewalType | string | "Constant", "Amortizing", "Declining", or "Single" |
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
}
| Field | Type | Description |
|---|---|---|
closingCost.useClosingCost | boolean | Set to true to include closing costs in the pricing results. |
closingCost.useCompanyDefaultClosingCost | boolean | Set to true to use the company's default closing cost configuration. |
closingCost.useErnstCost | boolean | Set 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
}
}
| Field | Type | Description |
|---|---|---|
closingCostRange.closestToTargetValue | number | Target point value. Returns one result per program/investor with the rate closest to this value. |
closingCostRange.from | number | Minimum closing cost range (accepts negative values for credits). |
closingCostRange.to | number | Maximum 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
| Field | Description |
|---|---|
BrokerCriteria.compPlan | The comp plan value |
ClosingCost.maxCompensation | Maximum compensation range |
ClosingCost.minCompensation | Minimum compensation range |
BorrowerCriteria.borrowerComplanAmount | Borrower comp plan amount |
BorrowerCriteria.compensationType | Compensation 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.
| Field | Value | Effect |
|---|---|---|
showDisqualify | true | Show disqualified products in results |
showDisqualifyRules | true | Include the reason(s) for disqualification |
showUnmatchCompPlan | true | Include reason(s) a product did not match the comp plan |