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:
| Header | Value |
|---|---|
| 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:
| Header | Value |
|---|---|
| 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:
| Header | Value |
|---|---|
| Authorization | Bearer {{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:
| Header | Value |
|---|---|
| secret | {{token}} |
| companyid | {{companyId}} |
Body:
| Field | Description |
|---|---|
| person | Populates with the primary borrower on the loan |
| associatedUserId | The loan officer ID to assign. If empty, defaults to the current caller's user ID |
| search | The user's search. If empty, the pipeline won't map the search parameter to the loan |
| lineResult | The 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:
| Header | Value |
|---|---|
| secret | {{token}} |
| companyid | {{companyId}} |