Closing-cost computation: the fee set on a closing disclosure, comparison between successive disclosures, and buy-up and buy-down mechanics.
A caller sends the loan and the fees known so far and receives the computed closing-cost set, itemised into the sections the disclosure requires.
Comparison between two disclosures is a first-class operation rather than a diff left to the caller: the answer is whether a change is one the tolerance rules permit, which is a computation over the pair.
How it works
Buy-up and buy-down are handled as an adjustment to the rate-price pair rather than as a separate fee line, because that is what they are: paying points moves the price, and the fee schedule follows from it. Keeping the mechanic where the price lives is what keeps the disclosure consistent with the lock.
{
"message": "{'data': ['Missing data for required field.']}"
}
application/json
Invalid key for service
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
application/json
Setup API Triggered Successfully
{
"message": "Credentials not found"
}
application/json
The product has encountered an internal server error
{
"message": "The product has encountered an internal server error"
}
Parameters
1
Parameter
Type
Example
Description
x-api-keyrequired
stringheader
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Staircase Environment API Key
Response 200application/json
3 fields
Setup API Triggered Successfully
Field
Type
Description
username
string
Ernst username
password
string
Ernst password
title_provider_orderings
object
An object to set default title fees' provider list for states, counties and cities
default_ordering
string[]
Root default ordering for title fees' provider
states
object[]
States
state_code
string
State code
default_ordering
string[]
Default title provider ordering for the state
counties
object[]
Counties
county_name
string
County name
default_ordering
string[]
Default title provider ordering for the county
cities
object[]
Cities
Response 400application/json
1 fields
Request data failed validation
Field
Type
Description
message
string
Message
Response 403application/json
2 fields
Invalid key for service
Field
Type
Description
message
string
—
url
string
—
Response 404application/json
1 fields
Setup API Triggered Successfully
Field
Type
Description
message
string
Message
Response 500application/json
1 fields
The product has encountered an internal server error
Field
Type
Description
message
string
Error Message
POST/ernst/credentials
Set Ernst Credentials
setErnstCredentials
Set credentials to be used when Ernst is selected as Fees vendor.
Usage
You need to set your Ernst credentials to use Ernst as a vendor in Fees product.
username and password are required credentials.
For title fees Ernst works with three providers. You can choose the provider that is going to be used for the title fees.
There are three available providers: Stewart, Fidelity and First American.title_provider_orderings is an array field
that you can use to set your default provider choices for states, counties and cities.
Fees will first try Fidelity, and then First American, since this is the ordering for Riverhead, NY, according to configuration.
If the address in the request is in NY state but in Westchester County, Fees will first try Stewart, and then Fidelity
because that is the default ordering for NY according to configuration and there is no default ordering specified for Westchester County.
If the request has an address in TX state, the root ordering in title_provider_orderings will be used meaning that Fees will first try
Stewart , then Fidelity, and only if all of them fails First American will be tried.
{
"message": "{'data': ['Missing data for required field.']}"
}
application/json
Invalid key for service
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
The product has encountered an internal server error
{
"message": "The product has encountered an internal server error"
}
Parameters
1
Parameter
Type
Example
Description
x-api-keyrequired
stringheader
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Staircase Environment API Key
Request bodyapplication/json
3 fields
Field
Type
Description
username
string
Ernst username
password
string
Ernst password
title_provider_orderings
object
An object to set default title fees' provider list for states, counties and cities
default_ordering
string[]
Root default ordering for title fees' provider
states
object[]
States
state_code
string
State code
default_ordering
string[]
Default title provider ordering for the state
counties
object[]
Counties
county_name
string
County name
default_ordering
string[]
Default title provider ordering for the county
cities
object[]
Cities
Response 200application/json
1 fields
Setup API Triggered Successfully
Field
Type
Description
message
string
Message
Response 400application/json
1 fields
Request data failed validation
Field
Type
Description
message
string
Message
Response 403application/json
2 fields
Invalid key for service
Field
Type
Description
message
string
—
url
string
—
Response 404application/json
1 fields
Setup API Triggered Successfully
Field
Type
Description
message
string
Message
Response 422application/json
2 fields
Request data failed validation
Field
Type
Description
message
string
Message
error
string
Message
Response 500application/json
1 fields
The product has encountered an internal server error
Field
Type
Description
message
string
Error Message
Fees
GET/products/fees/info
Fees Info
Fees Info
Get Fees Product Info
Response
application/json
Request data failed validation
{
"message": "{'data': ['Missing data for required field.']}"
}
application/json
Invalid key for service
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
The product has encountered an internal server error
{
"message": "The product has encountered an internal server error"
}
Response 200application/json
1 fields
Setup API Triggered Successfully
Field
Type
Description
message
string
Message
Response 400application/json
1 fields
Request data failed validation
Field
Type
Description
message
string
Message
Response 403application/json
2 fields
Invalid key for service
Field
Type
Description
message
string
—
url
string
—
Response 422application/json
2 fields
Request data failed validation
Field
Type
Description
message
string
Message
error
string
Message
Response 500application/json
1 fields
The product has encountered an internal server error
Field
Type
Description
message
string
Error Message
Other responses
404
Workflow
POST/products/fees/invocations
Invoke Product Flow
InvokeSpecificProductFlow
This endpoint retrieves the fees that may arise during closing.
Usage
You can send a request in two different ways:
Using request_data: If you provide this parameter, flow invocation would use the data here as input. If you also provide a transaction_id in the request body, Response Collection would be created in the related Transaction object. If you don't provide a transaction_id we will automatically create a Transaction for you and Response Collection would be created in this new Transaction as well.
Using transaction_id and request_collection_id: If you already have a request collection, you can provide its details using these two parameters. Note that in this case Response Collection would be created in the provided Transaction.
Note: You cannot provide product_flow_name and vendor_name parameters together. When provided together, simply product_flow_name is used.
Show the rest
Retrieving the Invocation Result
After invocation, endpoint returns an invocation_id which you can poll for its status using /products/fees/invocations/{invocation_id} endpoint. Once the invocation is completed, the Response Collection is populated with these search results.
If you would rather receive a callback once the invocation is completed instead of polling it, you can set callback_url parameter in the request body.
Request Collection Description
Mortgage & Deed Recording Taxes & Fees
Each State requests specific information to calculate recording fees & taxes. Based on this information expected fees may increase or decrease. The set of questions asked by states change according to the loan purpose (purchase, refinancing or a modification).
Purchase, Refinancing, Modification Purposes
Following questions are answered for all loan purpose types:
First add a liability with 'heloc' type: liabilities[has_liability_type=heloc] then connect it to your borrower object by adding liability id to following field: people[@type=borrower].owes_liability
N/A
CA, NY
Parcel count related to property
First add parcel identifications to following container parcel_identifications then connect the parcels to your legal descriptions by adding their ids to following field: legal_descriptions[0].with_parcel_identification
N/A
FL
Land description count
First add land descriptions to the following containers identifications to following container unplatted_landsplatted_lands then reference them by adding their ids into the following field of related parsed_legal_descriptions parsed_legal_descriptions[*].with_unplatted_landparsed_legal_descriptions[0].platted_land
Has the mortgagor recorded any other mortgages against this property in the past 12 months, which had values of less than $500,000 but, when taken together with this mortgage, cumulatively total $500,000 or more?
Does this transaction involve an executory construction contract which is effective prior to, or contemporaneously with, the transfer of the title to the real estate?
In case of a refinancing, we also need to collect the information of the old loan. We do not support getting and processing old loan information yet. We will update here when this operation is available for the clients.
Modification Purpose
In case of a loan modification, Fees API expects there to be a modifications objects in the request collection. If there's no modifications object, this refinancing operation will not be regarded as a modification, and different fees and taxes may apply.
When the loan purpose is loan modification, following questions are answered:
Question
Provided In
Default
Impacting States
Is this a modification of an existing mortgage/deed of trust
Fees product returns title insurance fees including followings:
Lender and Owner Premium Calculations
Itemized Settlement Fees
Endorsements
Title Insurance Fees Providers
For title fees Ernst works with three providers. You can choose the provider that is going to be used for the title fees.
You can send your preference of the providers in the options field while invoking the product as following:
For the configuration above, Fees will first try to get title fees using First American. If Fees fails, Fees will use Stewart next. If Fees fails again, it finally will try to get title providers using Fidelity.
You can also set default title fees configurations for specific states, counties and cities.
Check Set Ernst Credentials
Endorsement Fees
By default, Fees return only default endorsement fees. Based on the property & loan parameters, the set of returned endorsements fees are updated.
If you'd like to calculate inspection fees along with recording & title insurance fees, you'll need to provide inspections array in the request collection.
{
"message": "{'data': ['Missing data for required field.']}"
}
application/json
403 invalid error
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
text/html
Resource not found
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
Internal server error
{
"message": "The product has encountered an internal server error. If you\nhave used a transaction_id to call our services, please submit it to\nStaircase support"
}
Parameters
1
Parameter
Type
Description
x-api-keyrequired
stringheader
Environment API Key.
Response 201application/json
7 fields
Successfully started flow invocation.
Field
Type
Description
invocation_id
string
Invocation ID.
invocation_status
string
The status of the invocation.STARTED
transaction_id
string
Transaction ID.
product_flow_name
string
Product flow name.ErnstFees
metadata
object
The metadata of the invoked product flow.
callback_url
string
Callback URL.
request_data
object
The data for the request collection.
Response 400application/json
1 fields
Request data failed validation
Field
Type
Description
message
string
Message
Response 403application/json
2 fields
403 invalid error
Field
Type
Description
message
string
Error message.
url
string
Error additional URL.
Response 404application/json
1 fields
Resource not found
Field
Type
Description
message
string
Message
Response 500application/json
1 fields
Internal server error
Field
Type
Description
message
string
Error message.
GET/products/fees/invocations/{invocation_id}
Retrieve Invocation Status
RetrieveProductFlowInvocationStatus
Retrieve status of a Product Flow Invocation
Retrieves the status of running Product flow invocation.
Response
application/json
Successfully returned status of the Product flow Invocation.
{
"message": "{'data': ['Missing data for required field.']}"
}
application/json
403 invalid error
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
text/html
Resource not found
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
Internal server error
{
"message": "The product has encountered an internal server error. If you\nhave used a transaction_id to call our services, please submit it to\nStaircase support"
}
Parameters
2
Parameter
Type
Example
Description
x-api-keyrequired
stringheader
—
Environment API Key.
invocation_idrequired
string (ulid)path
01F0KHKADN0HRFXMCQQXPA6AFZ
Product flow invocation identifier
Response 200application/json
9 fields
Successfully returned status of the Product flow Invocation.
{
"message": "Please provide one of valid return examples values:\ntrue, false"
}
text/html
Error
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
403 invalid error
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
Internal server error
{
"message": "The product has encountered an internal server error. If you\nhave used a transaction_id to call our services, please submit it to\nStaircase support"
}
Parameters
2
Parameter
Type
Description
x-api-keyrequired
stringheader
Environment API Key.
return_examples
booleanquery
If included and set to `true`, returns one or more pre-filled
examples that conform to the schema. Default to `false`
Response 200application/json
2 fields
Request schema (possibly with examples) is successfully returned.
Field
Type
Description
schemarequired
object
Schema for the Request Collection
examples
object
Each item in the dictionary corresponds to the name of the example and dictionary content is the
sample response.
Response 400application/json
1 fields
Error
Field
Type
Description
message
string
Message
Response 403application/json
2 fields
403 invalid error
Field
Type
Description
message
string
Error message.
url
string
Error additional URL.
Response 404application/json
1 fields
Resource not found
Field
Type
Description
message
string
Error Message.
Response 500application/json
1 fields
Internal server error
Field
Type
Description
message
string
Error message.
GET/products/fees/response-schema
Retrieve Response Schema
retrieveResponseSchema
Retrieve Response Schema returns the JSON schema for the response collection, created by an invocation.
If you would like to retrieve examples along with the schema, you can provide return_examples=True query parameter.
Response
application/json
Response schema (possibly with examples) is successfully returned.
{
"message": "Please provide one of valid return examples values:\ntrue, false"
}
text/html
Error
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
403 invalid error
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
Internal server error
{
"message": "The product has encountered an internal server error. If you\nhave used a transaction_id to call our services, please submit it to\nStaircase support"
}
Parameters
2
Parameter
Type
Description
x-api-keyrequired
stringheader
Environment API Key.
return_examples
booleanquery
If included and set to `true`, returns one or more pre-filled
examples that conform to the schema. Default to `false`
Response 200application/json
2 fields
Response schema (possibly with examples) is successfully returned.
Field
Type
Description
schemarequired
object
JSON-Schema as a single object
examples
object
A key-value pair for the examples. Keys are the example names, while values correspond to the
example values for the response collections you can retrieve.
Response 400application/json
1 fields
Error
Field
Type
Description
message
string
Message
Response 403application/json
2 fields
403 invalid error
Field
Type
Description
message
string
Error message.
url
string
Error additional URL.
Response 404application/json
1 fields
Resource not found
Field
Type
Description
message
string
Error Message.
Response 500application/json
1 fields
Internal server error
Field
Type
Description
message
string
Error message.
Platform
POST/transactions
Create Transaction
createTransaction
Create Transaction creates a transaction in Staircase.
Transactions in Staircase are containers for all the data related to an instance of a transaction type. They enable you to correlate the output of various products to a single transaction type, where the transaction type depends on your line of business.
Transactions are identified by a unique key called transaction_id. As you use different Staircase products to gather the data needed for a specific instance of your transaction type, and receive different sets of output from each product, use the same transaction_id to correlate all the outputs to the same transaction.
A transaction_id, when used properly, gives you a holistic view of the data related to the transaction you’ve assembled.
To access all collections associated with a given transaction_id, try out /transactions/{transaction_id}/collections
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
application/json
Internal server error
{
"message": "The product has encountered an internal server error. If you\nhave used a transaction_id to call our services, please submit it to\nStaircase support"
}
Staircase time string.Example 03/03/2021, 8:24:04 AM EST
Response 403application/json
2 fields
403 invalid error
Field
Type
Description
message
string
Error message.
url
string
Error additional URL.
Response 500application/json
1 fields
Internal server error
Field
Type
Description
message
string
Error message.
Other responses
400
POST/transactions/{transaction_id}/collections
Create Collection
createCollection
Create Collection creates a collection of data points required for product invocation. A collection contains a digital representation of the input or output data for the product and is identified by collection_id.
The Example below contains a sample collection that you can use to make the product invocation in /products/fees/invocations
{
"message": "Unable to create collection. Please check the collectionchr\ndata"
}
text/html
Error
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
403 invalid error
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
application/json
Resource not found
{
"message": "Unable to create collection. Please check the transaction\nID."
}
text/html
Resource not found
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
Internal server error
{
"message": "The product has encountered an internal server error. If you\nhave used a transaction_id to call our services, please submit it to\nStaircase support"
}
Parameters
2
Parameter
Type
Example
Description
x-api-keyrequired
stringheader
—
Environment API Key.
transaction_idrequired
string (ulid)path
01F0KHK7DN3H5JZ4QJKMYAM6GB
Staircase Transaction Identifier
Request bodyapplication/json
1 fields
Field
Type
Description
data
object
The data that is needed for invocation. It should follow the request schema
propertiesrequired
object[]
Add the Property related with the Loan in this container
Retrieve Collection returns the content of a given collection_id
associated with a transaction_id.
Response
application/json
403 invalid error
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
application/json
Resource not found
{
"message": "Unable to get collection. Please check the given ids"
}
application/json
Resource not found
{
"message": "Unable to get collections of given transaction. Please\ncheck the transaction id"
}
application/json
Internal server error
{
"message": "The product has encountered an internal server error. If you\nhave used a transaction_id to call our services, please submit it to\nStaircase support"
}
Parameters
3
Parameter
Type
Example
Description
x-api-keyrequired
stringheader
—
Environment API Key.
transaction_idrequired
string (ulid)path
01F0KHK7DN3H5JZ4QJKMYAM6GB
Staircase Transaction Identifier
collection_idrequired
string (ulid)path
01F0KHKADN0HRFXMCQQXPA6AFZ
Staircase collection_id
Response 200application/json
4 fields
Successfully Retrieved Collection
Field
Type
Description
transaction_idrequired
string
—
collection_idrequired
string
—
metadatarequired
object
—
created_atrequired
string
—
validationrequired
boolean
—
datarequired
object
—
Response 403application/json
2 fields
403 invalid error
Field
Type
Description
message
string
Error message.
url
string
Error additional URL.
Response 404application/json
1 fields
Resource not found
Field
Type
Description
message
string
Message
Response 500application/json
1 fields
Internal server error
Field
Type
Description
message
string
Error message.
Other responses
400
GET/transactions/{transaction_id}/collections
Retrieve Transaction Collections
RetrieveTransactionCollections
Retrieve Transaction Collections returns the content of a
given collection_id associated with a specific transaction_id.
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
403 invalid error
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
application/json
Resource not found
{
"message": "Unable to get collections of given transaction. Please\ncheck the transaction id"
}
application/json
Internal server error
{
"message": "The product has encountered an internal server error. If you\nhave used a transaction_id to call our services, please submit it to\nStaircase support"
}
Parameters
2
Parameter
Type
Example
Description
x-api-keyrequired
stringheader
—
Environment API Key.
transaction_idrequired
string (ulid)path
01F0KHK7DN3H5JZ4QJKMYAM6GB
Staircase Transaction Identifier
Response 200application/json
4 fields
Transaction collection retrieved successfully
Field
Type
Description
transaction_id
string (ulid)
Transaction ID.Example 01EZQ32PJQGKRA6HR8D72Q9FFF
collection_id
string (ulid)
Collection ID.Example 01EZQ32PJQGKRA6HR8D72Q9FFF
data
object
Data in Staircase language schema.
metadata
object
Metadata about collection, f.e version of used Staircase schema.
{
"description": "Error details.",
"message": "Unable to update collection. Please check the collection\ndata"
}
text/html
Error
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
403 invalid error
{
"message": "Please check the key you used to call this service",
"url": "https://staircase.stoplight.io/docs/api-reference/customer-account-manager-service.yml/paths/~1products~1refresh/post"
}
application/json
Resource not found
{
"message": "Unable to update collection. Please check the given ids"
}
text/html
Resource not found
<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body>\r\n<center><h1>400
Bad Request</h1></center>\r\n</body>\r\n</html>\r\n
application/json
Internal server error
{
"message": "The product has encountered an internal server error. If you\nhave used a transaction_id to call our services, please submit it to\nStaircase support"
}
Parameters
3
Parameter
Type
Example
Description
x-api-keyrequired
stringheader
—
Environment API Key.
transaction_idrequired
string (ulid)path
01F0KHK7DN3H5JZ4QJKMYAM6GB
Staircase Transaction Identifier
collection_idrequired
string (ulid)path
01F0KHKADN0HRFXMCQQXPA6AFZ
Staircase collection_id
Request bodyapplication/json
1 fields
Field
Type
Description
data
object
The data that is needed for invocation. It should follow the request schema
propertiesrequired
object[]
Add the Property related with the Loan in this container
{
"collection_id": "e4502ed2-8df8-4b8f-84bd-a1097e999a77",
"message": "When ready, data will be available under the following collection_id. Use this new collection_id to get the execution status."
}