Skip to main content

Price and Create Quote

This page covers steps 1 through 4 of the lock-with-LOS workflow: pulling a loan pipeline from Encompass, retrieving loan details, searching for available pricing, and creating a price quote.


Step 1: Pull Loan Pipeline from Encompass

Retrieve the loan pipeline from your Encompass integration. Select a loan from the results and save its loan ID for the next step.

Endpoint: POST /rest/v1/integration/ellie/loan/pipeline

Headers:

HeaderValue
secret{{token}}
companyid{{companyId}}

Step 2: Get Loan Details

Pull the full details for the loan you selected from the pipeline.

Endpoint: GET /rest/v1/integration/ellie/loan/pipeline/getLoan/{{loanId}}

Headers:

HeaderValue
secret{{token}}
companyid{{companyId}}

Path Parameters:

  • {loanId} -- the loan ID from the pipeline response in Step 1

The response contains the loan details including borrower information, property data, and loan terms. These values are used to construct the pricing search in the next step.


Step 3: Get Pricing

Calculate possible prices for your selected loan. The pricing search is highly configurable -- users should familiarize themselves with the Pricing a Loan section before performing a search.

Endpoint: POST /rest/v1/lp-ppe-api/pricing/search?userIdToUse={{userId}}

Headers:

HeaderValue
AuthorizationBearer {{accessToken}}

Body:

The pricing search accepts over 200 fields to fine-tune results. Key sections include:

{
"accessCriteria": {
"companyIds": [],
"marketPlaceSearch": false,
"userContext": {
"groups": []
}
},
"brokerCriteria": {
"adjustments": [],
"rateTypes": [],
"sortView": "LenderPaid",
"leadSourceType": "Retail"
},
"criteria": {
"purchasePrice": 500000,
"loanAmount": 400000,
"computeApr": false,
"mortgageTypes": [],
"pmiType": "Monthly",
"loanPurpose": "Purchase",
"loanType": "Fixed"
},
"property": {
"state": "CA",
"county": "Los Angeles",
"propertyType": "SingleFamily",
"occupancyType": "PrimaryResidence",
"numberOfUnit": 1
},
"miCriteria": {
"miCompanyId": null,
"miCompanyName": null,
"loanType": null,
"duLpDecision": null
}
}

Response:

The response contains resultMap.resultRates.data with an array of lineResult objects. Save the lineResult you want to lock -- you will use it when creating the price quote.


Step 4: Create a Price Quote

Create a price quote from the selected search result. This stores the user's pricing search and selected line result in the system. The price quote becomes the container for the entire lock lifecycle.

Endpoint: POST /rest/v1/pipeline

Headers:

HeaderValue
secret{{token}}
companyid{{companyId}}

Body:

FieldDescription
personPopulates with the primary borrower on the loan
associatedUserIdThe loan officer ID to assign. If empty, defaults to the current caller's user ID
searchThe user's search. If empty, the pipeline won't map the search parameter to the loan
lineResultThe line result of the selected pricing. If not empty, a scenario will be created in the loan

None of these fields are mandatory.

Example Request:

curl --location -g --request POST '{{protocol}}{{domain}}/rest/v1/pipeline' \
--header 'secret: {{token}}' \
--header 'companyid: {{companyId}}' \
--data-raw '{
"name": "",
"note": "",
"person": {
"firstname": null,
"lastname": null,
"middlename": null,
"sex": null,
"birthDate": null,
"title": null,
"address": {
"street": "",
"streetCont": "",
"city": "",
"zip": "",
"state": ""
},
"contactDetails": {
"email": null,
"phone": null,
"fax": null,
"mobile": null
}
},
"associatedUserId": null,
"search": {
"titleVendorQuestions": [],
"useExternalFees": true,
"showTitleQuestion": true,
"criteria": {
"purchasePrice": 500000.0,
"loanAmount": 400000.0,
"rehabBudget": 0.0,
"totalLoanAmount": 0.0,
"computeApr": true,
"totalLoanAmountByMortgageType": {},
"subordinateLoanAmount": 0.0,
"pmiType": "None",
"monthlyIncome": 5000.0,
"monthlyDebt": 2150.0,
"lineAmount": 0.0,
"drawAmount": 0.0,
"appraisedValue": 0.0,
"isFirstLienSame": "",
"employeeLoan": "",
"loanYear": 30,
"loanPurpose": "Purchase",
"loanType": "Fixed",
"paymentInterestType": "FullPITI",
"mortgageTypes": [
"Conventional"
],
"mortgageLimitMapByYear": {},
"highBalanceCountyMappedByYear": {},
"mortgageLimit": "Conforming",
"fhaMortgageLimit": 625500.0,
"propertyUse": "PrimaryResidence",
"ownProperties": 0,
"veteranType": "Active_Or_Veteran",
"vaUsageType": "First_Use",
"ufmipFinanced": "YES",
"fundingFeeFinanced": "YES",
"guranteeFeeFinanced": "YES",
"propertyValuationType": "Full_Appraisal",
"calculatedfeeAmount": 0.0,
"calculatedFeeByMortgageType": {},
"affinityCode": "",
"affinityCodes": [],
"specialMortgageOptions": [],
"inclusive": false,
"varaiableLoanTypes": [],
"fico": 760,
"cemaIndicator": false,
"downPaymentAmount": 0.0,
"compensationType": "LenderCompPlan",
"totalLoanAmountByVaType": {},
"escrowWaiver": false,
"lenderFeeWaiver": false,
"highBalanceCounty": false,
"subordinate": false,
"ltv": 0.8,
"hcltvLineAmount": 0.8,
"hcltvDrawAmount": 0.8,
"cltv": 0.8,
"dti": 0.43,
"loanDownPayement": 0.0,
"loanDownPayment": 0.0,
"valueOfCollateral": 500000.0
},
"property": {
"address": {
"street": "",
"streetCont": "",
"city": "",
"zip": "",
"state": ""
},
"propertyType": "SingleFamily",
"attachmentType": "Attached"
},
"brokerCriteria": {
"searchContext": {},
"minimunCompensation": null,
"maxCompensation": null,
"overrideExistingComplan": false,
"compPlan": null,
"qmFilterLimit": 3,
"lockGroup": null,
"rateTypes": [],
"subRateTypes": [],
"view": "LenderPaid",
"businessSourceType": "BST_NA",
"divisionSourceType": null,
"leadSourceType": null,
"feeServicer": null,
"feeServicerList": [],
"adjustments": [],
"rangeComplan": {
"@class": "com.cre8techlabs.entity.range.DoubleRangeGeLe",
"from": null,
"to": null
},
"sortStrategy": "APR",
"priceBucketList": [],
"resultPerBucket": 1,
"pricingExceptionRate": null,
"lockExtensionCostRate": null,
"pricingExceptionAmount": null,
"qmTreshold": null,
"dayLocks": 30,
"dayLocksList": [
15,
30,
45,
60
],
"ausList": [
"None",
"GUS",
"MUW",
"LP",
"DU"
],
"ausIndicator": "",
"closingCostRange": {
"@class": "com.cre8techlabs.entity.broker.BrokerCriteria$RangeClosingCost",
"from": null,
"to": null,
"closestToPar": false,
"infinite": true
},
"displayConventionalRate": false,
"displayMultiple": null
},
"accessCriteria": {
"accessPortal": null,
"includeMonthlyPaymentDetail": false,
"dataLog": true,
"companyIds": [],
"companyMap": {},
"ratePeriodMap": {},
"overrideNode": 25,
"fieldsToRemove": []
},
"miCriteria": {
"miCompanyId": null,
"miCompanyName": null,
"amortizationType": "FullyAmmortized",
"loanType": "Fixed",
"duLpDecision": "DU_Approve_Eligible",
"buyDownPercent": "None",
"originationChannel": "Retail",
"loanProgram": null,
"renewalType": "Constant",
"paymentPlan": "EZMonthly",
"paymentType": "Monthly",
"coBorrowerFicoScore": null,
"varaiableLoanType": null,
"monthlyPlanRefundable": false,
"singlePlanRefundable": false,
"borrowerNonTraditionalCredit": false,
"coBorrowerNonTraditionalCredit": false,
"borrowerSelfEmployed": false,
"coBorrowerSelfEmployed": false,
"buydownUpfrontAmount": null,
"needCoBorrower": false,
"initialPremiumAtClosing": "Deferred",
"rateQuoteAllProductIndicator": false,
"rateQuoteProductComparisonIndicator": false,
"miPremiumFinancedIndicator": false,
"premiumRatePlanType": "Level",
"miRateSource": null,
"numberOfDeferredPayments": 0
},
"dynamicPropertiesMap": {},
"rateGridIds": [],
"rateProgramIds": [],
"ratePeriodIds": [],
"investors": [],
"investorIds": [],
"test": false,
"skipAdjustments": false,
"filter": {
"programNames": [],
"productCode": []
},
"globalGroupAdjustmentMap": {},
"showDisqualify": false,
"showDisqualifyRules": true,
"sortAscPoints": true,
"showUnmatchCompPlan": true,
"feeCriteria": {},
"closingCost": {
"closingCostGroup": [],
"settlementCost": {
"origination": {
"othersLabel": "Fee",
"others": 0.0,
"underwritingLabel": "Underwriting",
"underwriting": 0.0,
"administrationLabel": "Administration Fee",
"administration": null,
"lenderCreditLabel": "Lender Credit",
"lenderCredit": null,
"total": 0.0
},
"titleService": {
"overrideTitle": false,
"titleInsuranceLabel": "Title Insurance Cost",
"titleInsurance": null,
"borrowerTitlePaidPercentLabel": "Borrower Title Insurance Percent",
"borrowerTitlePaidPercent": 0.5,
"overrideEscrow": false,
"escrowCostLabel": "Escrow Cost",
"escrowCost": null,
"borrowerEscrowPaidPercentLabel": "Borrower Escrow Cost Percent",
"borrowerEscrowPaidPercent": 0.5,
"notarySignLabel": "Notary Sign",
"notarySign": 145.0,
"total": 145.0
},
"thirdPartyServices": {
"appraisalLabel": "Appraisal",
"appraisal": 500.0,
"taxServiceLabel": "Tax Service",
"taxService": 0.0,
"creditReportLabel": "Credit Report",
"creditReport": 0.0,
"floodCertificationLabel": "Floor Certification",
"floodCertification": 12.0,
"overnightLabel": "Overnight",
"overnight": 16.0,
"recordingLabel": "Recording",
"recording": 85.0,
"total": 613.0
},
"closingCostGroup": [],
"total": 758.0
},
"useClosingCost": false,
"useCompanyDefaultClosingCost": false,
"useErnstCost": false,
"allowErnstQuote": false,
"total": 758.0
},
"multiSearchClosingCostList": [],
"rates": [],
"rateRange": {
"@class": "com.cre8techlabs.entity.range.DoubleRangeLeGt",
"from": null,
"to": null,
"null": true
},
"maxListingPerRate": 15,
"showPayeeDetail": false,
"loanAmountCriteria": [],
"termsCriteria": [
30
],
"loanPurposeCriteria": [
"Purchase"
],
"loanTypeCriteria": [
"Fixed"
],
"varLoanTypeCriteria": [],
"titleVendors": []
}
}'

Response:

The response returns the created price quote with its ID. Save the id -- this becomes the priceQuoteId used throughout the lock lifecycle.

{
"id": "607dab84ee84153094f5bf9f",
"creationDate": "2021-04-19T16:10:44Z",
"modifiedDate": "2021-04-19T16:10:44Z",
"companyId": "55afea6ee4b04b10ed2d6a12",
"userId": "6065f028f0c1310001642413",
"loanApplicationVersion": "_2_3_1",
"name": "FLA_4A3SZX",
"note": "",
"newFile": false,
"hidden": false,
"search": {
"id": "607dab84ee84153094f5be55"
//search data
}
}

Retrieve an Existing Price Quote

You can also retrieve a price quote that has already been created.

Endpoint: GET /rest/v1/pipeline/{{priceQuoteId}}

Headers:

HeaderValue
secret{{token}}
companyid{{companyId}}