Introduction
The Sherman Calculation Engine is a lightweight suite of lending, depositing, compliance, and support modules that provides lenders with a lightning-fast API tool to meet all calculation needs.
The SCE is secure - neither receiving, retrieving, storing, or exporting any information particular to any individual. Being free of proprietary user information means being free of the security concerns associated with disclosing personal information to a 3rd party vendor. By focusing exclusively on the math, the SCE slims down to focus on computing quick calculations exclusively.
Getting Started
Each solution for the SCE has its own particular technical platform configurations. To assist your technical team get up and running, we offer:
- SCE Project History - A quick historical overview of the SCE project.
- API Overview - An overview of the structure common to the modules found implemented in the SCE JSON.
- SCE Sample Requests - An entire repository of sample requests you can send to the SCE, with comments to help explain the request structure.
Module Overview
Now that the SCE is up and running and queries can be run, get assistance on how to craft xml payloads to correctly represent your calculation request and review the result structures for consuming the solutions.
Loans
The SCE provides a broad spectrum of closed-end loan computation tools, which over the years has culminated with our flagship Loan module.
- The Loan module is designed to compute any loan from any lending market in any country. The particulars of a loan are added, element-by-element, to reflect precisely the particulars of that loan.
The modules that follow are all legacy modules for single advance, specific repayment structure loans.
- Equal Payment Loans - Compute an equal payment loan.
- Balloon Payment Loans - Specify the amortization term, regular payment or final balloon payment.
- Single Payment Notes - Term or Bridge Loans where one borrows cash and pays off the loan with a single payment at maturity.
- Interest Only Loans - Pay off interest only until the final payment.
- Fixed Principal Plus Interest Loans - Pay interest and specified amounts of principal.
- Skip, Pickup, and Irregular Payment Loans - Skip payments, or specify payments or specify additions to regular payments (Pickups) with these modules.
- Adjustable Rate Mortgages - Teaser Rate and Term precede an evolving interest rate.
- Construction Loans - For calculation of construction loans with no permanent loan attached.
Compliance Modules
Loans require specific sets of mandated disclosure quantities. The SCE comes with several modules to assist lenders to determine several critical quantities. These modules are as follows:
- APR Calculation & Verification - Compute the regulatory Annual Percentage Rate along with all relevant supporting data to prove compliance to an examiner.
- APY Calculation - Compute the annual percentage yield for a deposit.
- High Cost Mortgage (HCM) - Determine if the loan is a High Cost Mortgage plus the triggers causing it to be one.
- Higher Priced Mortgage Loans (HPML) - Determine if the loan is a High Priced Mortgage Loan with supporting data.
Deposit Modules
The SCE comes with several common deposit modules, broadening your suite of solutions. They are as follows:
- Certificates of Deposit - Compute CD payoffs and APY's.
- Individual Retirement Accounts - Compute retirement payments or the payment to produce a retirement income goal.
- Retirement Annuities - Streams of income paid in a series of regular monthly payments.
Utility Modules
- Account - Lists all available solutions represented by setup files currently operating with the SCEX, each solution represented by a positive Account integer.
- User Interface - The setup files for a given account solution are queried with this module, revealing all of the protection products and parameters active for that account. This reporting tool may be used by clients designing a responsive user interface to the particulars of a client solution.
- Version - Reports the version of the SCE being used.
Project History
The development and consulting team here at J. L. Sherman and Associates (JLS) has accumulated over fifty man-years of experience creating a comprehensive array of programs providing complex, accurate, and compliant loan calculations for our clients. All of this experience and expertise goes into our Sherman Calculation Engine (SCE), which is the most robust loan calculation and compliance library available on the market today.
The Sherman Calculation Engine
Prior to the development of the WinLoan32, our desktop based loan quotation software for the 32-bit Windows platform, several of our customers expressed an interest in having access to the calculation routines contained in the WinLoan16. Due to previous design decisions, this was not possible. With Winloan32, however, the powerful calculation engine that is the foundation of our end user loan quotation software (both WinLoan32 and eWinLoan) was developed as a separate product, which we call it the Sherman Calculation Engine (SCE).
The SCE was released as a product in the form of a 32-bit dynamic link library (DLL) for the Windows environment. Loan and insurance setup information is stored in text files that are created and maintained by Sherman's technical support team. Depending upon the level of support you desire, we can handle all of the steps in setting up a new account for you. This process involves gathering samples from the client and payment protection provider, and thoroughly testing to ensure that the final calculation results match what the client is expecting.
By separating the calculation logic from the user interface, we make available to our partners all of our applied knowledge and expertise. However, our new partners encountered three problems as they worked to interface directly with the SCE:
-
Initially, the user of the SCE needed to implement all of the data structures used by the SCE for input and output, as well as create the interface to the functions found in the DLL.
-
As the SCE was modified to suit customer needs and federal or state regulations additions and changes, these data structures needed to be altered. This required the data structures in our partner's applications to also be altered, and then the applications which call the SCE must be recompiled.
-
Some of our partners wanted to access the power and functionality of the SCE from applications not written for the 32-bit Windows platform. There is no simple way to access a 32-bit Windows DLL from another platform.
These three problems prompted Sherman and Associates to begin development on two new satellite projects of the SCE: the SCE with XML interface (hereafter called the SCEX) and the SCEX Loan Server.
Introducing the SCEX
The SCEX addresses problems #1 and #2 in the list above. It provides an XML interface wrapped around the SCE. By using the SCEX instead of the SCE, the calling application no longer needs to duplicate the data structures used by the SCE. Instead, all input sent to the SCEX is contained in one character buffer (or character string). Similarly, the SCEX returns all results in an output character buffer.
The format of the text contained in these character buffers is what the `X' in the SCEX is all about - XML. XML is a simple, flexible text format which is plays an important role in the exchange of data between disparate platforms and systems.
The SCEX alleviates problem #1 by doing away with complex input and output data structures all together. Instead, the application calling the SCEX provides the necessary input in a character buffer, which contains the XML data. As an example, here is the XML input data for a 36 month equal payment loan with a 10% interest rate and an amount requested of $10,000:
<inLOAN_BUILDER>
<EditInterest Date="2019-01-01" IntRate="10.000" AccrualCode="320" />
<Advance Date="2019-01-01" Amount="10000.00" />
<PmtStream Begin="2019-02-01" Term="36" />
</inLOAN_BUILDER>
The result of the loan calculation is then passed back to the calling application in a buffer. The application then need only parse the returned XML to use the calculation results as appropriate. Here is a sample result returned from the SCEX, using the inputs specified above (with the amortization table omitted for brevity's sake):
<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outLOAN_BUILDER SYSTEM "outLOAN_BUILDER.dtd">
<outLOAN_BUILDER>
<Results>
<Description>Successful Calculation</Description>
<XMLDetail>XML Input is well formed</XMLDetail>
<XMLDetail>XML Output is untested</XMLDetail>
</Results>
<FedBox>
<AmtFin>10000.00</AmtFin>
<FinChg>1615.40</FinChg>
<TotPmts>11615.40</TotPmts>
<RegZAPR Type="Actuarial">9.995</RegZAPR>
</FedBox>
<Moneys>
<Proceeds>10000.00</Proceeds>
<Principal>10000.00</Principal>
<Interest>1615.40</Interest>
</Moneys>
<Accrual>
<Method>Actual/365 USRule</Method>
<Days1Pmt DayCount="Actual">31</Days1Pmt>
<Maturity>2022-01-01</Maturity>
</Accrual>
<PmtStream Term="36" Pmt="322.65" Rate="10.000" Begin="2019-02-01" PPY="12"/>
<AmTable> ... </AmTable>
</outLOAN_BUILDER>
Furthermore, problem #2 is also handled. If a new input or output data field is added to the SCE, then the appropriate XML input / output tags will be added to the SCEX. Applications which do not require this new functionality will not need to be recompiled. Instead, they will simply not provide the new input field, or not recognize the new output field. So long as your application does not require the use of the new data zfields, then no recompilation is necessary!
Problem #3 was solved with the introduction of the SCEX Loan Server. The SCEX Loan Server goes one step beyond the SCEX, turning the SCEX into a multi-platform calculation engine. The SCEX Loan Server provides a TCP/IP communication wrapper around the SCEX. So long as the platform on which your application resides can communicate via TCP/IP, you can use the Sherman Calculation Engine in your product.
The Rise of the API and SCE JSON
With the advent of cloud computing and the rise of API driven development, a new light weight and flexible data-interchange format arrived and was quickly adopted - JSON. Learning from our 18+ years of creating, updating, and maintaining the SCEX, we decided to launch the SCE with JSON interface (hereafter called the SCE JSON).
The SCE JSON uses the same Sherman Calculation Engine behind a new JSON interface. The sample XML loan request above translates to the following SCE JSON loan request:
{
"Module" : "Loan",
"Data" : {
"Advances" : [
{
"Date" : "2019-01-01",
"Amount" : "10000.00"
}
],
"AccrualConfigs" : [
{
"Date" : "2019-01-01",
"IntRate" : "10.000",
"AccrualCode" : "320"
}
],
"PmtStreams" : [
{
"Date" : "2019-02-01",
"Term" : "36"
}
]
}
}
Here is the sample result returned from the SCE JSON, using the inputs specified above (with the amortization table omitted for brevity's sake):
{
"Result" : 200,
"Module" : "Loan",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Notes" : [
],
"FedBox" : {
"AmtFin" : "10000.00",
"FinChg" : "1615.40",
"TotPmts" : "11615.40",
"APR" : {
"Value" : "9.995",
"Type" : "Actuarial"
}
},
"Moneys" : {
"Proceeds" : "10000.00",
"Principal" : "10000.00",
"Interest" : "1615.40"
},
"Accrual" : {
"Methods" : [
"Actual/365 USRule"
],
"Days1Pmt" : "31",
"DayCount" : "Actual",
"Maturity" : "2022-01-01"
},
"PmtStreams" : [
{
"Term" : "36",
"Pmt" : "322.65",
"Rate" : "10.000",
"Begin" : "2019-02-01",
"PPY" : "12"
}
],
"AmTable" : { ... }
}
}
Hosted vs. Docker Implementations vs. Library
The SCE JSON may be implemented in the following manners:
-
Hosted - The SCE JSON is hosted by JLS on AWS for you. You are provided with a URL and API key that will allow you to access the functionality of the SCE JSON, without having to setup and maintain your own microservice. As new releases of the SCE JSON are made available, you will be notified of these changes and we will upgrade the Hosted version at your request. The only requirement for the application calling the hosted instance of the SCE JSON is being able to execute a network API request to the provided URL, and to be able to process the data returned in the JSON format.
-
Docker - The SCE API server Docker image is availabe from Docker Hub, ready to be deployed in Docker. You are provided with an API key that will allow you to access the functionality of the SCE, which will need to be updated periodically. As new releases of the SCE are made available, you will be notified of the changes and will be able to download the updated versions as they become generally available. The SCE API server Docker container can be hosted on Linux/amd64 and Linux/aarch64 systems which support Docker.
-
Library - The SCE library is available for Windows and Linux/amd64 platforms, and is distributed as a shared library. There is no API server included, as applications using the SCE library will natively use the SCE lirary in whatever manner you see fit. Note that the SCE library supports both JSON and XML formats.
API Overview
The SCE JSON offers different functionality in distinct modules, and each module is documented separately in the reference manual. Each module has a different format for its input request and output response, which is detailed in the chapter dedicated to that module. However, the general (or top-level) format of the data sent to the SCE JSON needs to be consistent for correct parsing, and is called the "request envelope".
The Request Envelope Object
The request envelope is simply a JSON object which identifies the requested
Module, along with a Data object that contains the module specific data
fields. The request Data object for each module is thoroughly documented in
the chapter dedicated to that module.
Example - Request Envelope for Version Module:
{
"Module" : "Version",
"Data" : {}
}
Example - Request Envelope for Loan Module:
{
"Module" : "Loan",
"Data" : {...}
}
Request Envelope Object Field Definitions
🟥 Module
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Apr, Hcm, Hpml, Loan, Version | n/a |
The value of the Module field determines which module within the SCE JSON is
being requested.
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data field contains the module specific request data, and differs
depending upon the desired Module. Please reference the chapter dedicated to
the module for the required format of the Data object.
Calling the SCE JSON API
Once the request envelope has been created by your application, you will need to send it to the SCE JSON using the appropriate method. Typically, this is done via an HTTP POST request with the body of the request consisting of the request envelope described above. You may also be required to include a specific HTTP header specifyng your API key. These details will be provided by J. L. Sherman and Associates, Inc. and will depend upon how you are accessing the SCE JSON.
Once the request envelope has been successfully sent to the SCE JSON, the SCE JSON will attempt to process the request and will then return a response envelope with the results of the request.
The Response Envelope Object
The response envelope is simply a JSON object which identifies the numeric
Result of the call to the SCE JSON, a response Module, along with a Data
object that contains the response module specific data fields. The response
Data object for each module is thoroughly documented in the chapter dedicated
to that module.
Example - Response Envelope for Version Module:
{
"Result" : 200,
"Module" : "Version",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Product" : "SCEJSON",
"Version" : "2021.07.0",
"Rootpath" : "/var/task",
"Copyright" : "(c) 2021 J. L. Sherman and Associates, Inc."
}
}
Response Envelope Object Field Definitions
🟥 Result
| Type | Required | Values |
|---|---|---|
| Integer | yes | 200, 400, 403 |
The Result field indicates the status of the API request. Please see the
following table for what the API Result code mean. A successful call will result
in a Result field value of 200 (API_OK). Any other value indicates that an error
was encountered.
| Result | Symbol | Description |
|---|---|---|
| 200 | API_OK | Indicates that the SCE JSON was able to successfully dispatch the request to the specified module. Note that this does not guarantee a successful response from the module (for that, check response Data.Errors[]). |
| 400 | API_ERR_BADREQUEST | One of the following occurred: (i) an exception was encountered while attempting to parse the request, (ii) could not parse the request into a valid JSON object, (iii) no Module field of type String was found in the envelope, or (iv) no Data field of type Object was found. An API Error response will be returned to the calling application. |
| 403 | API_ERR_NOTFOUND | The Module specified was not found. An API Error response will be returned to the calling application. |
🟥 Module
| Type | Required | Values |
|---|---|---|
| String | yes | Apr, Apy, Arm, Balloon, Cd, Construction, EqualPmt, Hcm, Hpml, IntOnly, Ira, Irregular, Loan, PrincipalPlus, SinglePmt, Ui, Version |
The value of the Module field determines which module within the SCE JSON
generated the response. If the value of the Result field is 200 (API_OK),
then the value of Module will be the same as the value of the Module field
in the request envelope. If the value Result field is something other than
200 (API_OK), then the SCE JSON has encountered an API ERROR condition, and the
value of the this field will be set to "Error" to indicate that the Data
field should be parsed as an API Error response.
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data field contains the module specific response data, and differs
depending upon the returned Module. Please reference the chapter dedicated to
the module for the required format of the Data object.
API Error Response
As mentioned above, if the SCE JSON was not able to successfully dispatch a request due to one of several possible error conditions, an API Error Response will be returned. Here are a few examples of SCE JSON requests that generate API Error Responses
Example - Request with invalid JSON and resulting response:
{
"Module" : "FooBar"
"Data" : {}
}
{
"Result" : 400,
"Module" : "Error",
"Data" : {
"Errors" : [
"Exception while parsing JSON input. \"EJSONParser: Error at line 3, Pos 8:Expected , or ], got token \"Data\".\empty
]
}
}
Example - Request with no Module field and resulting response:
{
"Data" : {}
}
{
"Result" : 400,
"Module" : "Error",
"Data" : {
"Errors" : [
"Bad API request. No 'Module' string field present."
]
}
}
Example - Request with no Data field and resulting response:
{
"Module" : "Version"
}
{
"Result" : 400,
"Module" : "Error",
"Data" : {
"Errors" : [
"Bad API request. No 'Data' object field present."
]
}
}
Example - Request with invalid Module and resulting response:
{
"Module" : "FooBar",
"Data" : {}
}
{
"Result" : 403,
"Module" : "Error",
"Data" : {
"Errors" : [
"API not found. No Module named 'FooBar' found."
]
}
}
API Error Response Data Object Field Definition
The Data object for an API Error Response contains a single field which
returns a description of the API Error.
🟥 Errors
| Type | Required |
|---|---|
| array of String | yes |
The Errors[] field contains an array of Strings which describe the error
conditions which were encountered. For an API Error Response, the length of the
Errors[] Array should always be one (1).
Loan Module
The SCE's loan module may be used to compute almost any loan imaginable - from the simplest equal payment loan to loans that have exotic and highly customized features (e.g. payments that occur outside of a fixed periodicity). If you have used the SCE in the past, then you will know this module by a slightly different name - "Loan Builder".
Sample Request
The following example is a request for an equal payment loan with an advance
of $1,000, interest will accrue at a 10% rate using an actual day / 365 U.S.
Rule accrual method (code 320), and with a repayment schedule of 12 monthly
payments. The final payment will be adjusted for perfect amortization.
{
"Module" : "Loan",
"Data" : {
"BusinessRules" : {
"AmError" : "AdjPmt"
},
"EditOutput" : {
"ShowType" : true
},
"Advances" : [
{
"Date" : "2019-01-01",
"Amount" : "1000.00"
}
],
"AccrualConfigs" : [
{
"Date" : "2019-01-01",
"IntRate" : "10.000",
"AccrualCode" : "320"
}
],
"Fees" : [
{
"Name" : "DocFee",
"Amount" : "50",
"AddToPrin" : false,
"AddToFinChg" : true
}
],
"PmtStreams" : [
{
"Date" : "2019-02-01",
"Term" : "12",
"PPY" : "12"
}
]
}
}
Sample Response
The following example is the response returned from the SCE for the request provided at the beginning of the previous section.
{
"Result" : 200,
"Module" : "Loan",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Notes" : [
],
"FedBox" : {
"AmtFin" : "950.00",
"FinChg" : "104.75",
"TotPmts" : "1054.75",
"APR" : {
"Value" : "19.766",
"Type" : "Actuarial"
}
},
"Moneys" : {
"Proceeds" : "1000.00",
"Principal" : "1000.00",
"Interest" : "54.75",
"Prepaid" : "50.00"
},
"Accrual" : {
"Methods" : [
"Actual/365 USRule"
],
"Days1Pmt" : "31",
"DayCount" : "Actual",
"Maturity" : "2020-01-01"
},
"PmtStreams" : [
{
"Term" : "11",
"Pmt" : "87.90",
"Rate" : "10.000",
"Begin" : "2019-02-01",
"PPY" : "12"
},
{
"Term" : "1",
"Pmt" : "87.85",
"Rate" : "10.000",
"Begin" : "2020-01-01"
}
],
"AmTable" : {
"AmLines" : [...]
}
}
}
Loan Module - Request
The fields of the Data object supported by a Loan module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹CountryObjects:
🟥 AccrualConfigs[],🟥 Advances[],🟦 Apr,🟦 ARM,🟦 BalAdjs[],🟦 BusinessRules,🟦 Capitalize[],🟦 Construction,🟦 EditOutput,🟦 EndBal,🟦 Fees[],🟦 Format,🟦 Holidays[],🟦 MI,🟦 ODI,🟦 PmtStreams,🟦 Protection,🟦 TILARESPA2015
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | See table | US |
This field allows the calling application to specify a two (2) character or
three (3) digit country code. If none is provided, then a default value of US
will be used. Please see the Countries Appendix for the
list of supported countries and their associated codes.
Specifying the Country will also set the default value for the
Apr.Code and
Format.CurrencyDecimals fields, as appropriate for
the country specified.
🟥 Data.AccrualConfigs[]
| Type | Required |
|---|---|
Array of AccrualConfig Objects | yes |
This array of AccrualConfig objects must have at least one member, and
is used to specify how interest is calculated.
Fields:
🔸AccrualCode,🔹Capitalize,🔹Date,🔹ExtraDays,🔹IntRate,🔹IntRound,🔹NewPmt,🔹PmtRoundObjects:
🟦 Tiers[]
🔹 Data.AccrualConfigs[].AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | See table | default |
The method of interest accrual is defined by this field. A value of default
means one of two things: if no accrual method has beend defined at all, use the
system default of 201. If an accrual code has been previously defined, then
the SCE will continue to use that method. Please see the following table of
accrual codes and their descriptions for the meanings of each code.
Add-on interest methods [401...406] have restrictions that apply. Only equal
payment loans with one AccrualConfig object may use add-on interest. In
addition, construction loans may not be used with add-on interest. Also, any
protection products requested must also be single premium.
🔹 Data.AccrualConfigs[].Capitalize
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If interest due is to be added to principal (capitalized) on the specified
Date, then set this field's value to true.
🔹 Data.AccrualConfigs[].Date
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD or NNNN-00-00 | Date of the last Advance |
Set the date of this event. If the Date field is not specified, then it will
default to the earliest specified Advance.Date.
All dates must be in the form of YYYY-MM-DD, and be 10 characters long.
Hence, to change the interest rate on January 2, 2021, the field
would be specified as "Date" : "2021-01-02".
However, to provide power and flexibility to the calling application, the SCE
will also understand Date values in the following formats:
NNNN-00-00If you wish to change an interest accrual parameter on the date of a specific payment number (NNNN), use a value ofNNNN-00-00. Thus, an value of0012-00-00instructs the SCE to set the date of this event equal to that of the 12th payment. A vale of0000-00-00will set the date of the event equal to the date of the first advance.
🔹 Data.AccrualConfigs[].ExtraDays
| Type | Required | Values | Default |
|---|---|---|---|
| Integer | no | Integer | 0 |
Increase or decrease the number of days between this event and the next event by
the value of this field. e.g. 1 will be considered one more day of
interest.
🔹 Data.AccrualConfigs[].IntRate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | see below |
Defines the annual interest rate that applies at and beyond this event. If no
IntRate is specified, the previously defined interest rate is used. A value of
zero (0) will be used if no previous IntRate has been defined.
🔹 Data.AccrualConfigs[].IntRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | nearest, up, down | nearest |
Defines how interest is to be rounded.
🔹 Data.AccrualConfigs[].NewPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the payment should change to reflect a new interest rate, set the value of
this field to true; otherwise, the payment will not change after this event.
If only one AccrualConfig object is being specified, then this
field should be omitted altogether.
🔹 Data.AccrualConfigs[].PmtRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | nearest, up, down, best | nearest |
How are calculated payments to be rounded at and beyond this event? best means
to choose the payment that returns a minimal ending balance at the end of
amortization. If two payments result in the same minimal error magnitude, the
smaller payment is chosen.
Note: If the BusinessRules.ZeroInterestRule
field is set to 'true' and all interest rates are zero, payments are required to
be rounded down. This rule ensures the total of payments never exceeds the
amounts of the loan to pay off (principal balance).
🟦 Data.AccrualConfigs[].Tiers[]
| Type | Required |
|---|---|
Array of Tier Objects | no |
To compute interest using a split rate method, where different rates are applied
to different parts of the balance, the calling application will need to specify
a Tier object with its associated Rate and
Ceiling fields. Note that the interest rate which is used
above the final Ceiling is the one specified in the
AccrualConfig object. Furthermore, the Rate objects must be
ordered in ascending order based upon the Ceiling amount.
As en example, assume that the calling application needs to charge 20% on the first $100, 15% up to $250, and 10% for the remaining balance. The AccrualConfig object needed to implement this split rate structure is:
"AccrualConfigs" : [
{
"AccrualCode" : "201",
"Date" : "2020-04-01",
"IntRate" : "10.000",
"Tiers" : [
{ "Rate" : "20.0", "Ceiling" : "100.00"},
{ "Rate" : "15.0", "Ceiling" : "250.00"}
]
}
]
Objects:
None
🔸 Data.AccrualConfigs[].Tiers[].Ceiling
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Defines the upper bound to which the specified split rate tier will apply.
🔸 Data.AccrualConfigs[].Tiers[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
Defines the interest rate that applies to this split rate tier.
🟥 Data.Advances[]
| Type | Required |
|---|---|
Array of Advance Objects | yes |
The array of Advance objects is used to specify the cash advances made to the
borrower and must have at least one member.
Fields:
🔹Amount,🔹Compute,🔸Date,🔹ExtraDays,🔹NewPmt,🔹PositionObjects:
None
🔹 Data.Advances[].Amount
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
The proceeds to be advanced to the borrower is defined using this field. If the
calling application requests that the advance be computed (see the
Advance.Compute field below), then the value of this field
(if present) will be added to the computed advance amount, which can be useful
in multiple advance loans.
🔹 Data.Advances[].Compute
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | true, false | false |
Some applications like to provide useful "what if?" calculations, such as "how much can I afford to borrow given a specified loan term, interest rate, and payment stream?" Here at J. L. Sherman and Associates, we call this a "Roll to Advance" calculation.
If the value of this field is true, then the calling application is requesting
that the SCE calculate one or more advances given a specified term, interest
rate, and payment stream. With this in mind, all PmtStream
objects (which define the specified payment streams in the loan) may not have a
PmtType of CalcPmt. Usually, all payment streams will
be defined using a PmtType of FixedPmt.
🔸 Data.Advances[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | Date >= 1900-01-01 |
This field's value holds the date on which the advance is made. All dates must
be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an advance date
of January 2, 2021 would be specified as "Date" : "2021-01-02".
🔹 Data.Advances[].ExtraDays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer | 0 |
Increase or decrease the number of days between this event and the next event by
the value of this field. e.g. 1 will be considered one more day of interest.
🔹 Data.Advances[].NewPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the payment should change to reflect a new advance, set the value of this
field to true; otherwise, the payment will not change after this event. If
only one Advance object is being used, then this field should
be omitted altogether.
🔹 Data.Advances[].Position
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | BeforePmt, AfterPmt | BeforePmt |
If an advance and a payment fall on the same day, the value of this field determines which event occurs first in the amortization schedule. Note that the first advance of every loan is required to occur before the first scheduled payment.
BeforePmtmeans that when the advance occurs on the same date as a payment, the advance is amortized before the payment.AfterPmtmeans that when the advance occurs on the same date as a payment, the payment is amortized before the advance.
🟦 Data.Apr
| Type | Required |
|---|---|
| Object | no |
Settings related to the computed effective rate returned by the SCE (most commonly, the Regulation Z APR in the United States of America) are contained in the fields of this object.
Fields:
🔹Code,🔹Decimals,🔹Max,🔹MAPR_Max,🔹SinglePayFraction,🔹StrictTime,🔹UseMAPRObjects:
None
🔹 Data.Apr.Code
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | See Table | Text - See below |
The method of APR computation is defined by this field. If this field is not
included, the default method depends upon the value of the
Country field. For the United States of America, the
default value is 100 (Actuarial). For a country in the European Union, the
default value is 50 (European Union APR). For Canada, the default value is
60.
🔹 Data.Apr.Decimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1...5] | 3 |
The number of decimal places of accuracy for the disclosed APR is determined by
this field. The default value of this field is 3.
🔹 Data.Apr.Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 0 |
If the calling application wants the SCE to check the computed APR against a
specified maximum APR, then specify the maximum APR using this field. If a
maximum is specified, then this maximum will be included in the
APR response object in the
Max field, and a
MaxExceeded field will also be returned to
inform the calling application whether or not the specified maximum was
exceeded.
🔹 Data.Apr.MAPR_Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 36 |
If you are computing the Military APR (see UseMAPR below) and
wish to override the default maximum APR value of 36%, then specify the desired
maximum as the value of this field.
🔹 Data.Apr.SinglePayFraction
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | InDays, InMonths | InDays |
This field only applies to single advance, single payment transactions of term
less than one year. For these loans, when the term of the loan is a number of
months, Appendix J allows for the term of the loan to be expressed as either a
number of months over twelve, or the number of actual 24-hour days in the loan
over 365. For the former, use InMonths. For the latter, use InDays.
🔹 Data.Apr.StrictTime
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When monthly payments are intended for the 29th or 30th of the month, how should
the number of unit periods and fraction be calculated in February, when the day
of the payment cannot be the intended day? (e.g. A non-leap year February where
payments are meant for the 29th, but end up on the 28th). The StrictTime field
acknowledges and disambiguates the calculation. Regular payments generally hold
the fraction of a unit period constant, based on the date of the first payment.
The SCE allows for a constant fraction of a unit period or a strict time
accounting, acknowledging that in February, the fraction of a unit period
changes.
When the value of this field is true, the SCE will calculate the fraction of a
unit period strictly according to the rules of Appendix J of Regulation
Z.
A value of false instructs the SCE to keep the fraction of a unit period
constant, equal to the fraction obtained by the time calculated from the date of
the first payment to the transaction date.
🔹 Data.Apr.UseMAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to a value of true, then the SCE will compute the
Military APR in addition to the Regulation Z APR. The
MAPR object will be included in the loan response.
🟦 Data.ARM
| Type | Required |
|---|---|
| Object | no |
The existance of this optional object alerts the Loan module to use adjustable rate mortgage rules. If the loan is not an ARM loan, do not include this field. The existence of this field toggles the rules explained below.
Fields:
🔹CalcTypeObjects:
🟥 FullyIndexedRate,🟥 Limits,🟦 PostTeaser,🟥 Teaser
🔹 Data.ARM.CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | payments, balloon | payments |
This optional field specifies how the loan adjusts for rate changes. The default
value of payments instructs the SCE to adjust the payment reflect the rate
change. A value of balloon causes the teaser payment to persist during the
rate cahnges, which results in a final balloon payment.
🟥 Data.ARM.FullyIndexedRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this required object represent the data necessary to compute the
fully indexed interest rate; that is, the Index +
Margin.
Some lenders constrain the fully indexed rate to be rounded to the nearest
something. e.g. If the Index +
Margin is 7.123, an institution may require this
rate to be rounded to the nearest 1/8th of a percent which would
produce 7.125%. Use the optional fields
RoundBasis and
RoundMethod to round the fully indexed rate.
Fields:
🔸Index,🔸Margin,🔹RoundBasis,🔹RoundMethodObjects:
None
🔸 Data.ARM.FullyIndexedRate.Index
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
This required field holds the value of the published index interest rate appropriate for the loan at the time of closing. For the purpose of modeling the initial disclosure of the loan, this index rate remains constant through maturity.
🔸 Data.ARM.FullyIndexedRate.Margin
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
This required field holds the value of the margin that adds to the
Index to produce the fully indexed rate. As with
the Index field, this value remains constant
throughout the loan.
🔹 Data.ARM.FullyIndexedRate.RoundBasis
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number - see below | 0.001 |
If the value of this optional field is greater than zero, then the fully indexed
rate will be rounded to this amount. Rounding the fully indexed rate to the
nearest 1/8th of one percent is a common practice. Making the
RoundBasis equal to 0.125 will accomplish this objective.
🔹 Data.ARM.FullyIndexedRate.RoundMethod
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | nearest, up, down | nearest |
If rounding of the fully indexed rate is required, the value of this field
instructs the SCE how to direct the rounding. The settings below assume a
RoundBasis of 0.01 or 1/100th of
a percent.
nearest- Round to the nearestRoundBasis.4.005would round to4.01.up- Round up to the nearest basis.4.00001would round to4.01.down- Round down to the nearest basis.4.00999would round to4.00.
🟥 Data.ARM.Limits
| Type | Required |
|---|---|
| Object | yes |
The constraints to a changing interest rate are represented as fields of this required object.
Fields:
🔸Annual,🔸Ceiling,🔸Floor,🔸LifetimeObjects:
None
🔸 Data.ARM.Limits.Annual
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The interest rate can change no more over any given year than the value of this required field.
🔸 Data.ARM.Limits.Ceiling
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The absolute maximum an interest rate can be over the term of the loan is represented by the value of this required field.
🔸 Data.ARM.Limits.Floor
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The absolute minimum an interest rate can be over the term of the loan is represented by the value of this required field.
🔸 Data.ARM.Limits.Lifetime
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The Lifetime required field represents the maximum the interest rate can
change over the lifetime of the loan.
🟦 Data.ARM.PostTeaser
| Type | Required |
|---|---|
| Object | no |
The PostTeaser object defines the interest rate immediately following the
teaser rate (see the Teaser object below).
By default, the post teaser rate will be the lesser of the
FullyIndexedRate and the teaser rate plus the value of
Limits.Annual. If this default behavior needs to be changed,
use the fields of this optional object to mirror the lender's practices.
Note: The post teaser rate may be specified as either an increase to
Teaser.Rate or an actual interest rate, according to the value
of the PostTeaser.Type.
Fields:
🔹Ignore,🔹ProRateInc,🔸Rate,🔹TypeObjects:
None
🔹 Data.ARM.PostTeaser.Ignore
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | neither, floor, ceiling, both | neither |
The post teaser rate is constrained by default by
Limits.Floor and Limits.Ceiling. If the
post teaser rate ignores either or both of these Limits, choose one of the
values below of this optional field.
Neither- Neither theLimits.Ceilingrate nor theLimits.Floorrate are ignored. Both are active constraints.Floor- TheLimits.Floorrate is ignored.Ceiling- TheLimits.Ceilingrate is ignored.Both- Both theLimits.CeilingandLimits.Floorrates are ignored.
🔹 Data.ARM.PostTeaser.ProRateInc
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
The boolean value of this optional field determines whether or not the rate
increase is pro-rated by the number of payments per year. This field
requires the PostTeaser.Type field to be Increase.
For example, if the Teaser.Rate is 5.0% and the
Limits.Annual is 2.0% on a quarterly loan, setting this
field to true would increase the Teaser.Rate from 5.0 to
5.0 + 2.0/4 = 5.5% for the post teaser rate. The default behavior of false
would have the post teaser rate be 5.0% + 2.0% = 7.0%.
🔸 Data.ARM.PostTeaser.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The meaning of this required field depends on the value of the
PostTeaser.Type field. Enter the value of the post teaser rate
PostTeaser.Type = Rate) or rate increase PostTeaser.Type = Increase. In
both cases, the rate is expressed as an annual rate.
🔹 Data.ARM.PostTeaser.Type
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | increase, rate | increase |
The value of this optional field determines if the
PostTeaser.Rate is treated as an interest rate or an
adjustment to the teaser rate.
Increase- Increase theTeaser.Rateby the value of thePostTeaser.Ratefield.Rate- The actual rate to be used after theTeaser.Rateis the value of thePostTeaser.Ratefield.
🟥 Data.ARM.Teaser
| Type | Required |
|---|---|
| Object | yes |
The fields of this required object define the discount period of the loan.
Fields:
🔹ForceTerm,🔹Ignore,🔸Rate,🔸TermObjects:
None
🔹 Data.ARM.Teaser.ForceTerm
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If fully indexed rate equals the Teaser.Rate, the default
behavior would be to output a single payment stream for the entire term of the
loan. If, however, the teaser payment stream should always be displayed as an
isolated payment stream, setting this optional field to true forces a
teaser period to be displayed.
Example: A teaser rate of 4% for 36 months on a 120 month loan with a fully indexed rate of 4% might have an output similar to the following:
-
If
ForceTermistrue:36 payments of 920.14 at 4.0% 84 payments of 920.14 at 4.0% -
If
ForceTermisfalse:120 payments of 920.14 at 4.0%
🔹 Data.ARM.Teaser.Ignore
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | neither, floor, ceiling, both | neither |
The teaser rate is constrained by default by Limits.Floor and
Limits.Ceiling. If the post teaser rate ignores either or
both of these Limits, choose one of the values below of this optional
field.
Neither- Neither theLimits.Ceilingrate nor theLimits.Floorrate are ignored. Both are active constraints.Floor- TheLimits.Floorrate is ignored.Ceiling- TheLimits.Ceilingrate is ignored.Both- Both theLimits.CeilingandLimits.Floorrates are ignored.
🔸 Data.ARM.Teaser.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
This rate is the fixed discount rate that applies for the
Teaser.Term expressed as an annual percentage.
🔸 Data.ARM.Teaser.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer in [1...600] |
The fixed term over which the discount rate or Teaser.Rate
applies.
🟦 Data.ARM.TermStep
| Type | Required |
|---|---|
| Object | no |
This optional object specifies the number of payments between interest rate changes after the teaser term has elapsed.
Fields:
🔹StairStepDown,🔹StepObjects:
None
🔹 Data.ARM.TermStep.StairStepDown
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the fully indexed rate is less than the teaser rate, a value of false will
keep the interest rate at the teaser rate for the duration of the loan. If your
institution allows the rate to decrease below the teaser rate over the term of
the loan, set the value of this field to true.
If the interest rate of the loan is decreasing, all of the Limits will be in
effect and constrain the loan by their fields, but in reverse. So, for
example, a loan with decreasing interest rate can decrease no more than the
Limits.Annual amount over a given year.
🔹 Data.ARM.TermStep.Step
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | 12 |
If the value of this field is greater than the number of payments per year, then any value is valid and the rate increase per step is equal to the annual rate increase.
If the value of this field is less than or equal to the number of payments per year, then the it must evenly divide the number of payments per year. In this case, the rate increase per step is equal to the annual rate increase multiplied by the term step divided by the number of payments per year.
🟦 Data.BalAdjs[]
| Type | Required |
|---|---|
Array of BalAdj Objects | no |
The array of BalAdj objects allows the calling application to make one or more
balance adjustments during the amortization of a loan to better support the
quotation and servicing of open ended lending.
Fields:
🔹Adjust🔸Date🔹NewPmt🔹TargetObjects:
None
🔹 Data.BalAdjs[].Adjust
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | 0 |
The Adjust field defines the amount by which to adjust the
BegBal amount at the beginning of its
amortization line. If, for example, the balance were $1,500 after the
12th payment and an Adjust was 500.00 on 0012-00-00, the loan
module would adjust the $1,500 balance by an additional $500, arriving at $2,000
as its EndBal.
🔸 Data.BalAdjs[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD or YYYY-00-00 |
The date of the balance adjustment. (Note the a balance will adjust after a payment that occurs on the same date.)
A special format allows for the adjustment to be made immediately after a
specified payment index using the YYYY-00-00 mask. A date entry of
0018-00-00 instructs the Loan module to make an adjustment immediately after
the 18th payment.
🔹 Data.BalAdjs[].NewPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the payment should change to reflect the balance adjustment, set the value of
this field to true; otherwise, the payment will not change after this event.
🔹 Data.BalAdjs[].Target
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The Target field defines what the balance should adjust to at the specified
date. If, for example, the balance were $1,500 after the 12th payment
and a Target was defined as 2000.00 on 0012-00-00, the loan module would
adjust the $1,500 balance to $2,000 as the
EndBal of the BalAdj line in the
amortization table.
🟦 Data.BusinessRules
| Type | Required |
|---|---|
| Object | no |
Many loan calculation business rules may be toggled using the fields of this object.
Fields:
🔹AmError,🔹AmortizeOnly,🔹CanSkipFirst,🔹CanSkipLast,🔹ClosedFormEqn,🔹LeapYearRound,🔹MinFinChg,🔹MinIntChg,🔹MYED,🔹OddFirstPmt,🔹PmtAccrualCode,🔹ProtMandatory,🔹UsRuleAprException,🔹YieldPPY,🔹ZeroInterestRuleObjects:
None
🔹 Data.BusinessRules.AmError
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Allow, AdjPmt, AdjPrin, AdjInt | Allow |
When amortizing a loan, often times there is a non-zero ending balance due to rounding. This field determines what to do (if anything) with a non-zero ending balance. This non-zero balance is referred to as the amortization error.
-
Allow- Do not do anything with the non-zero ending balance. -
AdjPmt- Adjust the final payment to achieve perfect amortization, which will then result in an ending balance of zero. -
AdjPrin- Adjust the final principal reduction amount to achieve perfect amortization, which will then result in an ending balance of zero. -
AdjInt- Adjust the final interest reduction amount to achieve perfect amortization, which will then result in an ending balance of zero.
Note that using AdjPrin or AdjInt will cause the final payment to not equal
the sum of the principal reduction amount and amount to interest in the
amortization schedule.
🔹 Data.BusinessRules.AmortizeOnly
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application sets the value of this field to true, then instead
of computing a loan with payments that best amortize the principal balance to
zero, the Loan module is instructed to simply amortize the specified loan (all
advances and payments specified by the calling application) and return the
ending balance.
To use this functionality, there are a few requirements that must be met:
-
All specified payment streams must have a
PmtTypeof other thanCalcPmt. InAmortizeOnlymode, the Loan module will not compute "regular" principal and interest payments. -
No protection products may be requested.
-
All advances must be specified, and not computed.
-
AmError(see above) must be set to"Allow".
Furthermore, the output for an "AmortizeOnly" : true Loan request will omit
the FedBox and TILARESPA2015
response objects as well as suppressing the Interest
field of the Moneys object.
If the Total Interest, Principal Reduction, and Total of Payments are required, use
EditOutput.ShowGrandTot. These three data values
will be listed as fields of the GrandTotals object.
If annual subtotals are required, set the EditOutput.ShowSubtot
setting to True. This switch will generate an array of annual
subtotals to be disclosed in the amortization schedule.
🔹 Data.BusinessRules.CanSkipFirst
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Set this field to true to allow the first payment of a loan to be skipped. The
default value of false does not allow a skipped first payment.
🔹 Data.BusinessRules.CanSkipLast
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Set this field to true to allow the last payment of a loan to be skipped. The
default value of false does not allow a skipped final payment.
🔹 Data.BusinessRules.ClosedFormEqn
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
When searching for the payment that best amortizes the loan to zero, this
setting determines whether or not interest is rounded during the payment search
algorithm. The default value of true indicates that the closed form equation
should be matched, and interest will be left unrounded during the payment search
algorithm. Setting this field value to false will cause interest to be rounded
during the payment search algorithm.
🔹 Data.BusinessRules.LeapYearRound
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true and one of the actual/actual interest
accrual calendars (including Midnight366) is used in the requested loan, then
the interest accrued on a 365 days basis is rounded separately from the interest
accrued on a 366 days basis. Note that this option is encountered very rarely
in the marketplace.
If the value of this field is false, then interest computed on a 365 day basis
will be added to the interest computed on a 366 day basis, and then rounded.
🔹 Data.BusinessRules.MinFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number - Currecy >= 0 | 0 |
This field allows the calling application to specify a minimum allowed finance charge for the loan. If a value greater than zero is specified, then the loan will be computed in the normal manner, along with the finance charge. If the computed finance charge falls below the specified minimum, then the final payment's interest charge will be adjusted to meet the specified minimum.
Note that the minimum interest charge is checked before the minimum finance
charge. If the loan triggered a minimum finance charge adjustment, then the
amount of this adjustment will be disclosed in the
MinFinChgAdj field of the
Moneys response object.
Note that since the minimum finance charge check is done after the loan payment and protection calculations have been completed, certain protection products whose calculations may vary due to a modified final payment will not reflect any minimum finance charge adjustments made to the final payment.
🔹 Data.BusinessRules.MinIntChg
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field allows the calling application to specify a minimum allowed interest charge for the loan. If a value greater than zero is specified, then the loan will be computed in the normal manner, along with the interest charge. If the computed interest charge falls below the specified minimum, then the final payment's interest charge will be adjusted to meet the specified minimum.
Note that the minimum interest charge is checked before the minimum finance
charge. If the loan triggered a minimum interest charge adjustment, then the
amount of this adjustment will be disclosed in the
MinFinChgAdj field of the
Moneys response object.
Note that since the minimum interest charge check is done after the loan payment and protection calculations have been completed, certain protection products whose calculations may vary due to a modified final payment will not reflect any minimum interest charge adjustments made to the final payment.
🔹 Data.BusinessRules.MYED
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | MM-DD | n/a |
The MYED field represents the Mortgage Year End Date when computing an annual
rest loan, a loan which is commonly encountered in the United Kingdom. If you do
not need to compute an annual rest loan, then this field need not be included in
the request.
If included in the request, then the value of the field must be in the format of
"MM-DD" when MM is a valid month number from 1 to 12, and DD is a valid
day number in the month specified. The month and day specified is the annual
date on which escrowed payments and interest are applied to the outstanding
principal balance.
When the MYED is specified, you must also specify a PmtStream
object with a PmtType field value of PmtEsc, which
indicates an escrowed payment.
🔹 Data.BusinessRules.OddFirstPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false, OnlyPositive | false |
If the first payment should be adjusted (up or down) due to odd days interest in
the same manner that interest is accruing in the loan, then set the value of
this field true. A value of OnlyPositive instructs the SCE to only adjust
the first payment due to odd days if there are positive odd days. Finally, a
value of false instructs the SCE to not adjust the first payment using this
method.
Note that you can not specify an odd first payment using this field and
include ODI in the same request.
🔹 Data.BusinessRules.PmtAccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, 201...206, 210, 211, 220, 221, 230, 231, 250, 301...306, 308...311, 320, 321, 330, 331, 350 | default |
In rare instances, the calculated payment for a given loan is based upon a
different accrual calendar than the one used to amortize interest in the
amortization schedule. This is most commonly encountered when a system is not
able to compute the "best" payment, and instead uses a simpler accrual calendar
with a closed form equation (such as unit period simple). An estimated payment
is computed, then used in the amortization schedule where interest is accrued on
a different calendar. Note that this will almost always generate an ending
balance of greater magnitude that the "correct" payment, unless the
BusinessRules.AmError field is used to adjust the
final payment.
A value of default means that the payment will be computed using the same
accrual calendar as interest. Any other value will cause the computed payment to
be calculated using the accrual code specified.
🔹 Data.BusinessRules.ProtMandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then protection premiums/fees will
be considered to be a part of the Finance Charge, and thus affect the Regulation
Z APR.
🔹 Data.BusinessRules.UsRuleAprException
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
The US Rule APR Exception is an option used by some financial institutions that
accrue interest in a US Rule manner, and also disclose the US Rule APR. If this
field is omitted or set to false, the US Rule APR will always be computed.
If the value of this field is set to true and the following conditions are
met: (i) interest is accrued via a US Rule method, (ii) A US Rule APR method
matching the acrual method has been specified, (iii) the Regulation Z Finance
Charge is equal to the interest charge, and (iv) there is only a single
AccrualConfig object, then the US Rule APR will be disclosed
as the interest rate.
🔹 Data.BusinessRules.YieldPPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0, 2, 4, 6, 12 | 0 |
Canadian mortgages may compute periodic interest using a fractional power of a periodic yield. If set to a value other than "0", this value determines the period. Please contact us for further information if you support mortgage calculations in Canada. Note that when using this field with a value other than zero, the calling application must include an odd days prepaid fee in the request.
🔹 Data.BusinessRules.ZeroInterestRule
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true and (i) the interest rate for the entire
term of the loan is 0%, or (ii) the computed interest charge for the loan is
less than zero, then the interest charge will be set to a value of zero, and the
Regulation Z Finance
Charge
will be adjusted in an identical manner.
Note that setting the value of this field to true will likely cause the sum of
the principal and interest to no longer equal the total of payments (similarly
for the Amount Financed and Finance Charge). J. L. Sherman and Associates does
not recommend that you set the value of this field to true before consulting
with your legal counsel in regards to these and other unforseen consequences.
Lastly, all payment rounding is forced to be rounded down to the nearest penny. This adjustment ensures that the sum of payments never exceeds the Principal Balance of the loan.
🟦 Data.Capitalize[]
| Type | Required |
|---|---|
| Array of Capitalize Objects | no |
Some loans require interest to be capitalized on specific dates, irrespective of
any other considerations. For these events, use one or more Capitalize
objects.
Fields:
🔹AllowFeb29,🔸Date,🔹Holidays,🔹LastDay,🔹PPY,🔹SemimonthlyDay,🔹WeekendsObjects:
None
🔹 Data.Capitalize[].AllowFeb29
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
This field is used when generating event dates in a capitalization stream
(if any) beyond the specified Date date of the
Capitalize object. If the value of this field is true,
then February 29th is an allowed date.
On the other hand, if the value of this field is set to false and a
computed date in the given capitalization stream is scheduled to fall on
February 29th, then the scheduled date will be altered in one of the following
manners:
- If the number of payments per year is 1, 2, 4, 6, 12, or 24 then the scheduled date of February 29 will be moved back one day to February 28. This is the only date that will be adjusted.
- If the number of payments per year is 26 or 52 then the scheduled date of February 29 will be moved forward one day to March 1, and all subsequent dates will be a multiple of 7 or 14 days from this date (depending upon the specified payment frequency).
🔸 Data.Capitalize[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The Date field for the Capitalize object is used to specify
the date on which to capitalize interest. (For a stream of Capitilize events,
see the Term field.) As an example, if interest is to be
capitalized on Feb. 1, 2008, the field should be specified as "Date" : "2008-02-01".
🔹 Data.Capitalize[].Holidays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | ignore, prev, next | ignore |
If event dates (including the specified start date) are not allowed to fall on
specified holidays (see the Holidays[] array for more inforation
on how to specify holidays), then set the value of this field to something other
than ignore. The meaning of the other two values are defined below:
prev- The date will be moved to the day before the holiday.next- The date will be moved to the Monday after the holiday.
Note that two other Capitalize fields can cause the computed
dates to be adjusted: AllowFeb29 and
Weekends. The rules for how these three fields
interact are described below in detail.
For every date required in our capitalization stream, the SCE goes through the following steps:
- Generate the next date in our date stream, called the target date.
- If February 29th is not allowed and if the target date is 2/29, then adjust the target date forward or backward one day based upon the date generation frequency. If the frequency is a monthly multiple, then the target date is moved backward one day to 2/28. Weekly and biweekly frequencies move the target date forward one day to 3/1.
- If weekend dates are not allowed (e.g. the
Weekendsfield holds a value other thanignore) and the target date falls on a Saturday or Sunday:- then adjust the target date according to the field value.
- if February 29th is not allowed and if the target date is 2/29, then adjust the target date in the same direction as in 3(a) above.
- If holidays are not allowed (e.g. the
Holidaysfield holds a value other thanignore) and the target date falls on a specified holiday:- Then adjust the target date according to the
Holidaysfield value. - If weekend dates are not allowed (e.g. the
Weekendsfield holds a value other thanIgnore) and the target date falls on a Saturday or Sunday, then adjust the target date in the same direction as 4(a) above. - if February 29th is not allowed and if the target date is 2/29, then adjust the target date in the same direction as in 4(a) above.
- Step 4 is repeated until the target date is not adjusted.
- Then adjust the target date according to the
🔹 Data.Capitalize[].LastDay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field is used to resolve ambiguitiess in subsequent event dates when the
Date date falls on the last day of a month with fewer than
31 days.
Set this field's value to true if the intent was to make subsequent events
occur on the last day of the month. A value of false indicates that subsequent
event dates will fall on the day number specified by the
Date.
As an example, if the calling application specifies a Date
of "2010-02-28", then subsequent payment dates for a monthly payment frequency
will be:
- on the 28th of each subsequent month if
"LastDay" : false. - on the last day of each subsequent month if
"LastDay" : true.
🔹 Data.Capitalize[].PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for "payments per year", and as one might surmise,
determines the frequency of capitalization events. If only one capitalization
event occurs or the stream of capitilization events are monthly, this field
may be ignored.
🔹 Data.Capitalize[].SemimonthlyDay
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0...31] | 0 |
When specifying a semimonthly stream, the day number on which the first
capitalization event occurs is the day number for all of the following odd
numbered payments. If you omit this field or specify a value of 0, then the
even numbered events will be generated using the default method within the SCE.
If you wish to specify the day number on which even numbered events fall
(overriding the default method used in the SCE), then set the value of this
field to the desired day number. Setting the value of this field to 31 will
cause all even events to fall on the last day of the month.
As an example, if you want to specify a semi-monthly capitalization stream beginning on January 1, 2019 with events that fall on the 1st and 15th of each month for 24 payments, the object should look something like this:
{
"Capitalization" : [
{
"Date" : "2019-01-01",
"Term" : "24",
"PPY" : "24",
"SemimonthlyDay" : "15"
}
]
}
🔹 Data.Capitalize[].Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >0 | 1 |
The Term field indicates the the number of capitalization events to be made at
the specified payment frequency (see PPY above). The
default value is 1, and if only one capitalization event is required, this
field may be omitted.
🔹 Data.Capitalize[].Weekends
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | ignore, prev, near, next | ignore |
If capitalization stream dates (including the specified start Date) are not
allowed to fall on a Saturday or Sunday, then set the value of this field to
something other than ignore. The meaning of the other three values are defined
below:
prev- The date will be moved to the Friday before the computed weekend date.near- The date will be moved to the Friday before the computed weekend date if the computed weekend date falls on a Saturday, otherwise it will be moved to the Monday after.next- The date will be moved to the Monday after the computed weekend date.
Note that two other Capitalize fields can cause the computed
dates to be adjusted - AllowFeb29 and
Holidays. For a complete description of how these
three fields work together, please see the documentation for the
Holidays field.
🟦 Data.Construction
| Type | Required |
|---|---|
| Object | no |
Fields:
🔸EndDate,🔹HalfCommitmentObjects:
None
If the requested loan calculation features a construction period, during which time interest only payments are made by the borrower, then the request need to include this object and set it's fields appropriately. Note that construction periods always begin on the date of the first advance.
Generally speaking, there are two methods used to disclose construction loans. The first method computes the total estimated interest due during the construction period, and treats it as an unfinanced prepaid fee. The second method discloses discrete interest only payments in the amortization schedule during the construction period.
To emulate the first method, simply include the Construction object and ensure
that no payment events are set up to occur during the construction period. The
construction interest will be computed and returned in the ConInterest
response object with the IsPrepaid field set to true.
To emulate the second method, set up an interest only payment stream which
begins during the construction period, with the final interest only payment
occurring on the construction period's ending date. The interest only payments
will then appear in the resulting amortization schedule, and the total
construction interest will be returned in the ConInterest response object with
the IsPrepaid field set to false.
🔸 Data.Construction.EndDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | YYYY-MM-DD | n/a |
The date on which the construction period terminates.
All dates must be in the form of "YYYY-MM-DD", and be 10 characters long. Hence,
to end the construction period on July 4, 2021, the field would be specified as
"EndDate" : "2021-07-04".
If the calling application sets up discrete interest only payments during the
construction period, then the EndDate may also be specified as occurring on a
given payment number (NNNN) as "EndDate" : "NNNN-00-00".
🔹 Data.Construction.HalfCommitment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
During the construction period, if estimated interest should be disclosed based
upon half of the commitment amount, then set the value of this field to true.
If interest is due on the entire commitment amount during the construction
period, then set this value to false. Multiple advance construction loans are
computed with this field set as true.
🟦 Data.EditOutput
| Type | Required |
|---|---|
| Object | no |
Changes to the presentation of the output data are contained in the fields of this object.
Fields:
🔹EarlyPayoffDate,🔹Merge,🔹PmtDollarRound,🔹ShowAmTable,🔹ShowFees,🔹ShowGrandTot,🔹ShowSubTot,🔹ShowTap,🔹ShowType,🔹TagPmtsObjects:
None
🔹 Data.EditOutput.EarlyPayoffDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD or NNNN-00-00 | n/a |
If an early payoff date is specified and is in the format of a valid date (i.e.
YYYY-MM-DD), then the loan will first be computed normally, ignoring this
value. Once this first step is done, the loan will then be amortized and the
early payoff date applied by removing all loan events after the early payoff
date, ensuring that a final payment date falls on the specified date.
If the early payoff date is specified and is in the format of NNNN-00-00, then
the early payoff date will be set to the date of the Nth payment, and
the loan will be computed as described above.
One common use of this field is to generate computed regular payments based upon a longer amortization term, with a final balloon payment made on the early payoff date (commonly called a balloon loan with a long term amortization and short term call).
All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence,
to end an early payoff date on July 1, 2021, the field would be specified as
"EarlyPayoffDate" : "2021-07-01". To specify an early payoff date that
coinsides with the 60th payment, the field would be specified as
"EarlyPayoffDate" : "0060-00-00".
🔹 Data.EditOutput.KeepSlush
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Rounding interest each period numerically eliminates values beyond two decimal
places. This amount is referred to as slush. To keep this amount and add it to
next period's unrounded interest, set the value of this field true.
🔹 Data.EditOutput.Merge
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, some, default, ordered | default |
This field determines what should be done when a loan with multiple overlapping
payment streams causes one or more payments to fall on the same calendar date.
We strongly advise using either the none or ordered options as they are the
most common and easiest to understand. The other two options (some and
default) are provided for backwards compatibility, with some behaving as
false and default behaving as true in versions of the SCE prior to the
2025-07 release.
Example: Two payment streams which generate payments that fall on the same date.
"PmtStreams" : [
{ "Date" : "2025-03-01", "PmtType" : "CalcPmt", "Term" : "12"},
{ "Date" : "2025-04-01", "PmtType" : "PPY", "Term" : "4", "Term" : "4"}
]
The above JSON creates an array of two payment streams, with all of the quarterly interest only payments occurring on payment dates created by the first payment stream.
If the value of the Merge field is none, then payments will not be merged.
That is, if multiple payments fall on the same date, then they will appear as
separate payments in the amortization schedule, applied in the order listed in
the request. In the sample above, this would cause the loan's amortization
schedule to display two distinct payments in April, July, October, and January.
Since the CalcPmt payments will be amortized first, the following PayInt
payments will be payments of zero as no interest can accrue between the two
payments on the same date. If the order of the PmtStream objects was reversed
(with the PayInt type first and CalcPmt type second), then the PayInt
payments would pay all interest due at the time, and the CalcPmt payments
occurring on the same date as the PayInt payments would apply purely to
principal.
If the value of this field is ordered, then payments will be merged. If
multiple payments fall on the same date, then the payment associated with the
last applicable payment steam listed in the request will take priority. In the
sample above, this would cause the PayInt payments to take precedence over the
CalcPmt payments in April, July, October, and January.
The some and default values are provided for backwards compatibility, and
are no longer recommended for use.
🔹 Data.EditOutput.PmtDollarRound
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Payments are normally rounded to the penny, according to the method specified by
the EditInterest.PmtRound field. If the payment
should be rounded to the dollar instead of the penny, then set the value of this
field to true.
Note that for some loans (such as those with longer terms or relatively small proceeds), rounding the payment up or to the nearest dollar may require a shortened loan term to prevent one or more negative payments at the end of the loan.
🔹 Data.EditOutput.ShowAmTable
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
To supress the entire amortization schedule from the response, set value of this
field to false; otherwise, the amortization schedule will be returned.
🔹 Data.EditOutput.ShowFees
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to false, then fees will not explicitly appear in the
amortizaton schedule, unless they do not occur on the date of an advance or the
date of a payment. They will also not be individually listed under the Moneys
object of the response.
A value of true means that all fees will be explicitly accounted for, both in
the Moneys response object as child objects and in the amortization table. The
Type field will have the name of the fee as its value.
🔹 Data.EditOutput.ShowGrandTot
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
To show the amortization schedule grand totals in the response, set this field's
value to true; otherwise, the grand totals will not be returned.
🔹 Data.EditOutput.ShowSubTot
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
To show the amortization schedule annual subtotals in the XML output, set this
field's value to true; otherwise, annual subtotals will not be returned.
🔹 Data.EditOutput.ShowTap
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If not specified, the default value of this field is determined by the Country
specified. If the Country is GB (United Kingdom), then the default value is
true. All other country values will default this field to false.
The value of this field determines if the total amount payable response field
(i.e. TAP) will be computed and disclosed. This quantity is broadly defined as
the total of payments plus fees that do not enter into the amortization table in
any way.
🔹 Data.EditOutput.ShowType
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Each line of the amortization schedule is characterized by a type, which
describes the particular amortization event. An EditInterest event is
different from a FixedPmt event, for example. Set this field to true to
report the Type of each amortization event. A value of false will suppress
output of the Type field in the amortization schedule.
🔹 Data.EditOutput.TagPmts
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then each PmtStream response
object will include an Idx field which identifies the input payment stream
object which gave rise to it. If this field is set to true, then the
EditOutput.Merge field must be set to false. If both are set to true, then
an error will be returned.
🟦 Data.EndBal
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
When computing a loan, the usual intention is to compute a payment which
produces an ending balance of zero at the end of the repayment schedule.
However, is some international markets (such as Australia / New Zealand), some
loans are computed with a specified ending balance greater than zero. To support
these types of loans, the EndBal field is provided.
If omitted, the desired ending balance at the end of the repayment schedule is defaulted to 0. To specify a desired ending balance greater than zero, simply specify the desired ending balance as an appropriately formatted currency value as the element's value.
For example, if the desired ending balance is $50,000.00, then you would include
"EndBal" : "50000.00" in your request.
Note that if an ending balance greater than zero has been specified, then no protection products are allowed to be written with the loan, and the APR (and MAPR if requested) are not computed.
Fields:
NoneObjects:
None
🟦 Data.Fees[]
| Type | Required |
|---|---|
Array of Fee Objects | no |
This array of Fee objects allows the calling application to specify one ore
more Fee objects to be added to the loan.
Fields:
🔹AddToFinChg,🔹AddToPrin,🔹Adjust,🔹AllowFeb29,🔸Amount,🔹Blended,🔹CalcType,🔹Date,🔹EqualServChg,🔹Holidays,🔹LastDay,🔹MAPR,🔹Max,🔹Min,🔹Name,🔹Position,🔹PPY,🔹Round,🔹RoundBasis,🔹SemimonthlyDay,🔹ServChgType,🔹Term,🔹WeekendsObjects:
None
🔹 Data.Fees[].AddToFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this fee should be included in the computed Finance Charge (and hence, affect
the APR), then set this field to true. The default value of false indicates
that the fee does not affect the Finance Charge nor APR.
🔹 Data.Fees[].AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this fee should be added to the principal balance (e.g. the fee is financed
along with the advance(s)), then set this field to true. If set to false,
then the fee is paid up front out of the borrower's pocket.
🔹 Data.Fees[].Adjust
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The optional Adjust field allows the calling application to
increase or decrease the base amount on which a fee is calculated. If a negative
value is specified and this adjustment would produce a negative base amount,
then a value of zero is returned for the given fee. This field has no effect on
fees with a CalcType of Dollar.
As an example, in Tennessee you may need to define a financed, non-APR affecting fee to be computed by decreasing the amount financed by $2,000, and then multiplying this reduced amount by 0.115. The way to accomplish this in the SCE is as follows:
{
"Fees" : [
{
"Name" : "TN Fee",
"CalcType" : "OnAmtFin",
"Adjust" : "-2000.00",
"Amount" : "0.115",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
🔹 Data.Fees[].AllowFeb29
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
This field is used when generating fee dates in a fee stream (if any) beyond the
specified Date date of the Fee object. If the value of
this field is true, then February 29th is an allowed fee date.
On the other hand, if the value of this field is set to false and a computed
date in the given fee stream is scheduled to fall on February 29th, then the
scheduled fee date will be altered in one of the following manners:
- If the number of payments per year is 1, 2, 4, 6, 12, or 24 then the scheduled fee date of February 29 will be moved back one day to February 28. This is the only date that will be adjusted.
- If the number of payments per year is 26 or 52 then the scheduled fee date of February 29 will be moved forward one day to March 1, and all subsequent fee dates will be a multiple of 7 or 14 days from this date (depending upon the specified payment frequency).
🔸 Data.Fees[].Amount
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency > 0 | 0 |
How this field is interpreted depends upon the Fee.CalcType
field. Please see the documentation for this field for further information.
🔹 Data.Fees[].Blended
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
The Blended field determines how the SCE will include the fee with a payment
or advance.
A value of true in an advance tells the SCE that the amount of the advance
already includes the fee. A value of false means to add the fee on top of the
existing advance.
Similarly, if the Fee occurs on a payment date, then true means that the
payment has the fee already included in it, whereas a value of false means the
fee is to be added on top of the payment.
🔹 Data.Fees[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Dollar, OnProceeds, OnPrincipal, OnAmtFin, OnBalance, OnBalanceFlat | Dollar |
This field specifies how the fee is to be computed, as described in the following table.
| Fee Calc Type | Description |
|---|---|
Dollar | The Amount field is understood as a flat dollar amount. |
OnProceeds | The Amount field is understood as a percentage value, to be applied to the loan's proceeds, defined as the sum of advances. An Amount of 0.25 would represent a fee of 0.25% of the total proceeds. |
OnPrincipal | The Amount field is understood as a percentage value, to be applied to the loan's principal balance. An Amount of 0.125 would represent a fee of 0.125% of the principal balance. |
OnAmtFin | The Amount field is understood as a percentage value, to be applied to the loan's Regulation Z Amount Financed. An Amount of 0.33 would represent a fee of 0.33% of the amount financed. |
OnBalance | The Amount field is understood as an annual percentage value, to be applied to the current balance of the loan when the fee is assessed, and accrued using the interest accrual calendar in effect. An Amount of 12.01 would represent a fee accrued at an annual rate of 12.0% of the current balance. |
OnBalanceFlat | The Amount field is understood as a flat percentage value, to be applied to the current balance of the loan when the fee is assessed. An Amount of 1.0 would represent a fee of 1.0% of the current balance. |
🔹 Data.Fees[].Date
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD or 0000-MM-00 | Date of the last Advance |
The date on which a fee occurs. If this object defines a stream of more than one
fee, then this field defines the date on which the first fee occurs. If the date
is the same as an advance or payment, the fee is loaded into the advance or
payment event; otherwise, the fee is a stand-alone event. All dates must be in
the form of YYYY-MM-DD, and be 10 characters long. Hence, a fee date of January
2, 2021 would be specified as "Date" : "2021-01-02".
A special format is accepted for annual fees (Fee.PPY value of 1) paid on a
specific calendar month of the year. Using 0000-MM-00 as a value for Date
instructs the SCE to pay the fee on the MM payment of the payment stream. For
example, 0000-06-00 instructs the system to pay this fee on June Payments.
If the Date field is not specified, then it will default to the earliest
specified Advance Date.
🔹 Data.Fees[].EqualServChg
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When a fee is set up as a service charge of type ByTerm (see
Fee.ServChgType field), this field determines if all the
service charge fee payments should be forced to be equal (a value of true), or
if the final service charge fee payment can be different from the others due to
rounding (a value of false).
🔹 Data.Fees[].Holidays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | ignore, prev, next | ignore |
If fee dates (including the specified start date) are not allowed to fall on
specified holidays (see the Holidays[] array for more inforation
on how to specify holidays), then set the value of this field to something other
than ignore. The meaning of the other two values are defined below:
prev- The date will be moved to the day before the holiday.next- The date will be moved to the Monday after the holiday.
Note that two other Fee fields can cause the computed dates to be
adjusted: AllowFeb29 and Weekends. The rules
for how these three fields interact are described below in detail.
For every date required in our payment stream, the SCE goes through the following steps:
- Generate the next date in our date stream, called the target date.
- If February 29th is not allowed and if the target date is 2/29, then adjust the target date forward or backward one day based upon the date generation frequency. If the frequency is a monthly multiple, then the target date is moved backward one day to 2/28. Weekly and biweekly frequencies move the target date forward one day to 3/1.
- If weekend dates are not allowed (e.g. the
Weekendsfield holds a value other thanignore) and the target date falls on a Saturday or Sunday:- then adjust the target date according to the field value.
- if February 29th is not allowed and if the target date is 2/29, then adjust the target date in the same direction as in 3(a) above.
- If holidays are not allowed (e.g. the
Holidaysfield holds a value other thanignore) and the target date falls on a specified holiday:- Then adjust the target date according to the
Holidaysfield value. - If weekend dates are not allowed (e.g. the
Weekendsfield holds a value other thanIgnore) and the target date falls on a Saturday or Sunday, then adjust the target date in the same direction as 4(a) above. - if February 29th is not allowed and if the target date is 2/29, then adjust the target date in the same direction as in 4(a) above.
- Step 4 is repeated until the target date is not adjusted.
- Then adjust the target date according to the
🔹 Data.Fees[].LastDay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field is used to resolve ambiguitiess in subsequent fee dates when the
Date falls on the last day of a month with fewer than 31 days. If the value of
the Date field is not a valid date, then the value of this field is ignored.
If the value of the Term field is 1, then the value of this field is
ignored.
Set this field's value to true if the intent was to make subsequent fees occur
on the last day of the month. A value of false indicates that subsequent fee
dates will fall on the day number specified by the Date field.
As an example, if the calling application specifies a Date of 2010-02-28,
then subsequent fee dates for a monthly fee frequency will be:
- on the 28th of each subsequent month if
"LastDay" : false. - on the last day of each subsequent month if
"LastDay" : true.
🔹 Data.Fees[].MAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If you wish to compute the Military APR, then certain fees may not be considered Regulation Z APR affecting fees, but are considered Military APR affecting fees. In this case, you will need to set the value of this field to true.
Fees which are added to the finance charge (e.g. "AddToFinChg" : true are
always considered MAPR fees, regardless of the stated value of this field.
Note that debt protection products are automatically included in the calculation of the Military APR, no matter what method is used for payment (e.g. single premium vs. monthly outstanding balance).
🔹 Data.Fees[].Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then the maximum value will be used instead. If no maximum value is specified or is set to a value of zero, then no maximum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified maximum value is checked after enforcing a specified minimum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Min
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If a minimum value for the fee is specified and is greater than zero, then if the computed fee is less than this minimum value, then the minimum value will be used instead. If no minimum value is specified or is set to a value of zero, then no minimum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified minimum value is checked before enforcing a specified maximum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the fee in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🔹 Data.Fees[].Position
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Default, OnAdvance, BeforePmt, InPmt, AfterPmt, NotInPmt | Default |
Fees inflence a loan depending on when they are applied.
OnAdvancemeans that the fee is included in the application of an advance.BeforePmtmeans that when the fee occurs on the same date as a payment, the fee is calculated before the payment amortizes the loan.InPmtmeans that the fee is included as part of the payment.AfterPmtmeans that when the fee occurs on the same date as a payment, the payment first amortizes the loan, then the fee is calculated and applied.NotInPmtmeans that the fee is paid on the same date as a payment but is not reflected in that payment. If the fee has"AddToFinChg" : true, it is called a "Pocket APR" fee; otherwise, it is a straight "Pocket Fee".Defaultmeans different things, depending on when the fee occurs:- A fee on an advance is treated as if
OnAdvancewere selected. - A fee on a payment is treated as if
InPmtwere selected.
- A fee on an advance is treated as if
🔹 Data.Fees[].PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for "payments per year", and in the case of the Fee
object, determines the frequency for the fee stream. If the value of the Term
field is 1, then the value of this field is ignored.
🔹 Data.Fees[].Round
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | nearest, up, down | nearest |
The value of this field, along with the with the Fee.RoundBasis field
described below, determine how the amount on which the fee is based upon is to
be rounded.
For fee calculation types of OnPrincipal, OnProceeds, OnAmtFin,
OnBalance, and OnBalanceFlat, the amount on which the fee is based is fairly
self evident: the starting principal balance, proceeds, amount financed, or the
outstanding balance at the time that the fee is assessed. Thus, if the calling
application requires a fee to be computed based upon 0.35% of the principal
balance rounded to the nearest $100, then the fee object would look something
like this:
{
"Fees" : [
{
"Name" : "Doc Stamp",
"CalcType" : "OnPrincipal",
"Amount" : "0.35",
"Round" : "nearest",
"RoundBasis" : "100.00",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
For the Dollar fee calculation type, the amount on which the fee is based is
defined as the fee amount passed into the engine. This allows the calling
application to pass in a precomputed fee amount and have the SCE round it as
directed. As an example, here is the definition of a dollar fee which is rounded
up to the next dollar (the value of the fee below would then be $25 after
rounding):
{
"Fees" : [
{
"Name" : "Doc Stamp",
"CalcType" : "Dollar",
"Amount" : "24.25",
"Round" : "up",
"RoundBasis" : "1.00",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
For the ServChg fee calculation type, the amount on which the fee is based is
defined as the computed service charge amount, as defined by the Amount and
ServChgType fields.
🔹 Data.Fees[].RoundBasis
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number > 0.0 | 0.01 |
When rounding the amount on which the fee is based, the value of this field
determines the precision to which rounding is performed. The default value of
0.01 indicates that the rounding should be done to the penny, whereas a value
of 100.0 indicates that rounding should take place to the nearest hundred
dollars.
🔹 Data.Fees[].SemimonthlyDay
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0...31] | 0 |
When specifying a semimonthly fee stream, the day number on which the first fee
is added determines the day number for all of the following odd numbered
payments. If you omit this field or specify a value of 0, then the even
numbered fees will be generated using the default method within the SCE. If the
value of the Term field is 1, then the value of this field is ignored.
If you wish to specify the day number on which even numbered fees fall
(overriding the default method used in the SCE), then set the value of this
field to the desired day number. Setting the value of this field to 31 will
cause all even fees to fall on the last day of the month.
As an example, if you want to specify a semi-monthly $10 fee stream beginning on January 1, 2015 with fees that fall on the 1st and 15th of each month for 48 fees, the object should look something like this:
{
"Fees" : [
{
"Name" : "Test Fee",
"Date" : "2015-01-01",
"Amount" : "10.00",
"Term" : "48",
"PPY" : "24",
"SemimonthlyDay" : "15"
}
]
}
🔹 Data.Fees[].ServChgType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | None, ByTerm, ByDays | None |
This field dictates whether or not a fee is treated as a service charge, and if
so, determines how the service charge dollar amount is paid off over the term of
the loan. If a fee should not be treated as a service charge, then the default
value of None should be specified.
ByTermmeans that the service charge is paid off by dividing the amount by theTermfield of the sameFeeobject.ByDaysmeans that the service charge is paid off on payment dates. The amount of the fee is calculated as the number of days from the previous payment (or advance) divided by the total number of days in the term of the fee.
🔹 Data.Fees[].Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | 1 |
The Term field determines the the number of fees to be included at the
specified frequency (see Fee.PPY above), after which the fee stream is
completed. The default value is 1. If the value of the Date field is not a
valid date, then the value of this field is ignored.
🔹 Data.Fees[].Weekends
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | ignore, prev, near, next | ignore |
If fee dates (including the specified start Date) are not allowed to fall on a
Saturday or Sunday, then set the value of this field to something other than
ignore. The meaning of the other three values are defined below:
prev- The date will be moved to the Friday before the computed weekend date.near- The date will be moved to the Friday before the computed weekend date if the computed weekend date falls on a Saturday, otherwise it will be moved to the Monday after.next- The date will be moved to the Monday after the computed weekend date.
Note that two other Fee fields can cause the computed dates to be adjusted -
AllowFeb29 and Holidays. For a complete description of how these three
fields work together, please see the documentation for the Holidays field.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value will be determined by the value of the
Country field. For most countries, the default value is 2.
If no country code is specified, then the default value for this field is 2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
🟦 Data.Holidays[]
| Type | Required |
|---|---|
| Array of String | no |
If dates for PmtStream and Fee objects have requested that holidays be
skipped (e.g. the Holidays field for the object in question is set to a value
other than ignore, then the request must specify each holiday to be
considered, with each holiday requiring at least one entry in this Holidays[]
array.
The format of the Holidays[] array member must follow one of the three
following descriptions:
YYYY-MM-DD- A holiday can be defined by sending in a valid date, where YYYY is greater than or equal to 1900, MM is a valid month, and DD is a valid day for the given year and month.0000-MM-DD- A holiday that occurs annually on the same month and day can be defined by sending in a valid month and day, with the year passed in as0000. As an example, in the United States of America, Christmas is a Federal holiday celebrated on December 25th of each year. To pass this holiday in to the SCE, theHolidays[]array member would look like"0000-12-25".0001-MM-PD- A holiday that occurs annually in the same month on a given day of the week (D) in a given position in the month (P) can be defined by sending in a valid month, position, and day of the week, with the year passed in as0001. The value ofDcan be from 0 to 6, where 0 = Sunday, 1 = Monday, ..., 6 = Saturday. The value ofPcan be from 1 to 6, where 1 = 1st, 2 = Second, ..., 5 = 5th, 6 = last. As an example, in the United States of America, Thanksgiving is a Federal holiday celebrated on the 4th (P=4) Thursday (D=4) of November (MM=11) every year. To pass this holiday in to the SCE, theHoliday[]array member would look like"0001-11-44".0002-NN-NN- A holiday that occurs annually, but can not be expressed using any of the above methods. Currently, the following special holidays are recognized by the SCE:00-01- Good Friday00-02- Easter Sunday00-03- Easter Monday
Fields:
NoneObjects:
None
🟦 Data.MI
| Type | Required |
|---|---|
| Object | no |
The MI object determines if this loan includes one of the supported types of
mortgage insurance (MI) -- PMI or FHA. This object contains fields which further
specify mortgage insurance options.
NOTE: Mortgage insurance is only supported on equal, balloon, and interest only loan builder requests at this time.
Fields:
🔹CashDown,🔹LoanAmt,🔸PropertyValue,🔹TypeObjects:
🟦 Periodic,🟥 Rates[],🟦 UpFront
🔹 Data.MI.CashDown
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The CashDown field represents a cash down payment made at closing. If
specified and greater than zero, this amount will be deducted from the principal
balance. If not specified, the cash down payment will default to zero.
🔹 Data.MI.LoanAmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field represents the amount by which the PMI rates are multiplied to produce a level PMI premium. If not specified, then the principal balance will be used to compute the annual premium.
🔸 Data.MI.PropertyValue
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
This field's value represents the appraised property value, and will be used in the calculation of the loan to value ratio.
🔹 Data.MI.Type
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | fha, pmi | pmi |
This field determines the type of mortgage insurance to include with the loan.
If the value of this field is set to fha, then a different MI premium is
computed every twelve months based upon the average outstanding principal
balance during that same term. The MI calculation adheres strictly to the HUD
regulation.
If the value of this field is set to pmi, then each defined MI rate produces a
level MI premium based upon the inital loan amount.
🟦 Data.MI.Periodic
| Type | Required |
|---|---|
| Object | no |
The fields of this object determine the conditions when MI is no longer included.
Fields:
🔹DropLTV,🔹Term,🔹WarnLTVObjects:
None
🔹 Data.MI.Periodic.DropLTV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number - >= 0 | 0 |
The value of this field determines the loan to value ratio at which MI should be
removed, and is expressed as a percentage. For example, if you wish to
automatically drop MI when the loan to value ratio first equals or falls below
78%, then you would specify "DropLTV" : "78.0".
🔹 Data.MI.Periodic.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
The value of this field represents the the term (in payments) beyond which MI will be removed.
As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify
{
"MI" : {
"Periodic" : { "Term" : "180"}
}
}
🔹 Data.MI.Periodic.WarnLTV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number - >= 0 | 0 |
The value of this field determines the loan to value ratio at which a warning
should be issued, and is expressed as a percentage of LTV (loan to value). For
example,if you wish to know when the loan to value ratio first equals or falls
below 80%, then you would specify "WarnLTV" : "80.0".
🟥 Data.MI.Rates[]
| Type | Required |
|---|---|
| Array of Rate Objects | yes |
This array if Rate objects defines the rates used to compute MI on the loan.
There must be at least one Rate object in the Rates[] array, and there can
be more than one if rates are set to switch at a specified payment number.
Objects:
None
🔸 Data.MI.Rates[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number>= 0.0 |
The value of this field specifies the cost of mortgage insurance per $100 of the loan amount. As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as
{
"MI" : {
"Rates" : [
{ "Rate" : "1.50"}
]
}
}
🔹 Data.MI.Rates[].Switch
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
This optional field defines the payment number beyond which the associated MI rate will apply. If not specified, the value will default to zero.
Thus, if there is only a single MI rate, one may omit this field (see example above).
Example of a MI multiple rate structure (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):
{
"MI" : {
"Rates" : [
{ "Rate" : "1.50"},
{ "Rate" : "0.20" , "Switch" : "120"}
]
}
}
🟦 Data.MI.UpFront
| Type | Required |
|---|---|
| Object | no |
This object determines if there is an up front fee for mortgage insurance, and if so, how it is computer. If this object is not present in the request, then no up front fee will be computed. Note that ZOMP (zero option monthly premium) products do not have an up front fee, which means that this object should be omitted.
Fields:
🔹Paid,🔹Reduce,🔹Units,🔹ValueObjects:
None
🔹 Data.MI.UpFront.Paid
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | atclosing, bylender, financed | atclosing |
If the value of this field is set to financed, then the computed up front fee
will be added to the principal balance and the finance charge. A value of
atclosing will cause the value of the fee to be added to the finance charge
alone. Finally, a value of bylender means that the up front fee is to be paid
by the lender, hence the value of the fee is not added to either the principal
balance nor the finance charge.
🔹 Data.MI.UpFront.Reduce
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the specified number of periodic premiums to include as an up front fee is greater than zero, then this field determines if the term of coverage for PMI will be reduced by the same amount.
🔹 Data.MI.UpFront.Units
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | months, points, years | months |
If the Units field is set to months, then
UpFront.Value represents the number of periodic MI
premiums to be paid at closing.
If the Units field is set to Years, then
UpFront.Value represents the number of annual MI premiums
to be paid at closing. Many single premium products define the up front fee as a
number of years of MI to be paid up front.
Finally, if the Units field is set to Points, then
UpFront.Value represents the percentage of principal to
be paid up front. As of October 3, 2011, FHA loans use points.
🔹 Data.MI.UpFront.Value
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If part of the MI fees are to be paid up front, then value of this field must be
grater than zero. How the value of this field is interpreted depends upon the
Units field (see below).
The default value of zero means that no up front fee will be computed.
🟦 Data.ODI
| Type | Required |
|---|---|
| Object | no |
If odd days should be treated as a prepaid finance charge or added to the
first payment in a manner different from how interest is accruing (see
BusinessRules.OddFirstPmt), then the request
needs to define how odd days interest is computed and handled using the fields
of this object.
Fields:
AccrualCode🔹AddToPmt,🔹AddToPrin,🔹AnchorDate,🔹ForceUnitPeriod,🔹NoCap,🔹UseDailyCost,🔹UseNegODIObjects:
None
🔹 Data.ODI.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 204, 205, 210, 211, 220, 221, 230, 231, 250 | default |
The accrual code defines how the odd days interest is computed. The meaning of the allowed accrual codes is defined below.
Note that accrual code 250 ("Variable Days Per Year") defines the basis
divisor days to be equal to 12 multiplied by the number of days in the month of
the date on which interest begins to accrue. Thus, if the interest start date
falls in November, then the number of basis days is 360. If the interest start
date falls in a month with 31 days, then the number of basis days is 372. For an
interest start date in February, the number of basis days will either be 336 or
348, depending upon whether or not it is a leap year.
| Accrual Code | Description |
|---|---|
204 | True360/360 |
205 | True360/365 |
210 | Actual/360 |
211 | True365/360 |
220 | Actual/365 |
221 | True365/365 |
230 | Actual/Actual |
231 | Midnight 366 |
250 | Actual/Variable Days Per Year |
🔹 Data.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application wants the odd days interest to be added to the first
payment, then set the value of this field to true. A value of false
indicates that the odd days interest will be treated as a prepaid finance
charge.
🔹 Data.ODI.AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If any odd days interest should be treated as a financed prepaid fee, then set
the value of this field to true. Note that if both AddToPmt and AddToPrin
are set to true, then a warning message will be returned by the SCE and the
value of AddToPrin will be set to false.
🔹 Data.ODI.AnchorDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | BackUnitPeriod, BackDaysPerPeriod | BackUnitPeriod |
The computed number of odd days is the number of days between the loan date and
the anchor date. This field determines how to arrive at the anchor date. A value
of BackUnitPeriod means that the anchor date is one unit period prior to the
specified first payment date. A value of BackDaysPerPeriod means that the
anchor date is the number of days per period prior to the first payment date.
Please note that for both of these methods, the period used will be that
associated with the payment stream in which the first payment occurs.
🔹 Data.ODI.ForceUnitPeriod
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Some unit period methods will not use a strict unit period interest accrual
factor in the period to the first payment. For example, code 302 will count
the days to the first payment and divide by 365. For a monthly loan, setting
this field to true will use a 1/12 factor instead of Days/365.
🔹 Data.ODI.NoCap
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When the odd days interest is financed, setting this field to true prevents
interest from being computed on interest. The default is false, which means
interest will be computed on interest.
🔹 Data.ODI.UseDailyCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the total odd days prepaid fee is computed by first generating a rounded (to
the nearest penny) daily cost and then multiplying this value by the computed
number of odd days, then set the value of this property to true.
A value of false means that the daily cost is left unrounded, and the total
prepaid fee is rounded after the computation is complete.
🔹 Data.ODI.UseNegODI
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If there are negative odd days in the loan, then the value of this field
determines if a negative odd days interest fee is computed. If the value of this
field is false, then negative odd days fees are not allowed, the SCE will
return a value of zero in this situation, and the computed payment will be
adjusted to take into account the negative odd days. A value of true will
return a negative odd days interest fee (in effect, it then becomes and odd days
interest credit) when there are negative odd days in a loan.
🟦 Data.PmtStreams[]
| Type | Required |
|---|---|
Array of PmtStream Objects | no |
Payment streams are defined using the fields of this empty object, including individually defined payments.
Fields:
🔹AllowFeb29,🔹Amount,🔹ComputeTerm,🔸Date,🔹Holidays,🔹LastDay,🔹MinPmt,🔹PmtType,🔹PPY,🔹ReplaceIdx,🔹SemimonthlyDay,🔹Term,🔹WeekendsObjects:
None
🔹 Data.PmtStreams[].AllowFeb29
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
This field is used when generating payment dates (if any) beyond the specified
PmtStreams[].Date. If the value of this field is true, then
February 29th is an allowed payment date.
On the other hand, if the value of this field is set to false and a computed
date in the given payment stream is scheduled to fall on February 29th, then the
scheduled payment date will be altered in one of the following manners:
-
If the number of payments per year is 1, 2, 4, 6, 12, or 24 then the scheduled payment date of February 29 will be moved back one day to February 28. This is the only date that will be adjusted.
-
If the number of payments per year is 26 or 52 then the scheduled payment date of February 29 will be moved forward one day to March 1, and all subsequent payment dates will be a multiple of 7 or 14 days from this date (depending upon the specified payment frequency).
🔹 Data.PmtStreams[].Amount
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency, Number + "%", or Number + "%B" | 0 |
The value of the Amount field has different meanings depending upon the
PmtType selected. Please see the documentation on the PmtType field below
for more information on how these two fields work together to define a payment
stream.
If the PmtType field is equal to CalcPmt, then the
value of this field may be specified as a flat dollar amount (e.g. "Amount" : "250.00") which represents an additional amount to be added to the computed
payment (this is also know as a pickup payment), or a percentage of the computed
payment (e.g. "Amount" : "200%"), which allows the calling application to
specify a double payment, half payment, etc.
If the PmtType field is equal to FixedPmt, then the
value of this field may be specified as a flat dollar amount (e.g. "Amount" : "250.00"), a percentage of the principal balance (e.g. "Amount" : "5.25%"),
or a percentage of the outstanding balance at the time the payment is made (e.g.
"Amount" : "8.125%B").
If the PmtType field is equal to PayInt or PayPrin,
then the value of this field may be specified as a flat dollar amount (e.g.
"Amount" : "250.00"), a percentage of the principal balance (e.g. "Amount" : "5.25%"), a percentage of the outstanding balance at the time the payment is
made (e.g. "Amount" : "8.125%B"), or a percentage of the computed target
payment (e.g. "Amount" : "100%C").
If the PmtType field is equal to CalcPmt, then the
value of this field may be specified as a flat dollar amount (e.g. "Amount" : "500.00") which will be added to the computed payment, or a percentage of the
computed payment (e.g. "Amount" : "200%"), which allows the calling
application to specify a double payment, half payment, etc.
🔹 Data.PmtStreams[].ComputeTerm
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If set to true, then the ComputeTerm field is used
to inform the Loan module that the calling application is requesting an equal
payment "roll to term" loan calculation. In this loan scenario, the calling
application specifies the interest rate, amount requested, maximum desired
payment amount, and maximum loan term. The Loan module will then compute the
shortest loan term to produce an equal payment amount less than or equal to the
specified maximum payment.
As an example, the following partial JSON request would direct the Loan module to compute the term for an equal payment loan with an interest rate of 5.00%, an advance of $5,000, a maximum desired payment amount of $300, and a maximum allowed loan term of 60 monthly payments:
{
"Advances" : [
{
"Date" : "2019-01-01",
"Amount" : "5000.00"
}
],
"AccrualConfigs" : [
{
"Date" : "2019-01-01",
"IntRate" : "5.000",
"AccrualCode" : "301"
}
],
"PmtStreams" : [
{
"Date" : "2019-02-01",
"PmtType" : "FixedPmt",
"Amount" : "300.00",
"Term" : "60",
"ComputeTerm" : true
}
]
}
Note that in the above partial JSON request, the PmtType
must be set to FixedPmt, the value of the Amount field
is set to the maximum desired payment amount, and the value of the Term field
is set to the maximum term allowed.
🔸 Data.PmtStreams[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD, NNNN-00-00, 0000-MM-00, or YYYY-MM-00 |
The Date field for the PmtStream object is generally used to
specify the starting date for the payment stream in question. As an example, if
the payment stream should begin on Feb. 1, 2021, then the field should be
specified as "Date" : "2021-02-01".
For payment frequencies that are monthly multiples, the day number specified in
this field specifies the desired day number of all future payments, if this day
number does not exceed the number of days in the computed month. As an example,
if the first payment is scheduled to be made in February of 2022 and the desired
day for all payments is the 30th, then the field would be specified as "Date" : "2022-02-30".
However, to provide power and flexibility to the calling application, the SCE
will also understand Date values in the following formats:
NNNN-00-00If you wish to replace a previously defined payment by specifying the payment number (N), use a value of NNNN-00-00. An field value of0012-00-00instructs the engine to replace the 12th payment. If the value of theTermfield (T) is specified and greater than one, then the Nth through (N+T-1)th payments will be replaced.
Example: To define a stream of 12 interest only payments followed by 48 computed payments, the following JSON could be used:
{
"PmtStreams" : [
{
"Date" : "2014-12-20",
"PmtType" : "CalcPmt",
"Term" : "60",
"PPY" : "12"
},
{
"Date" : "0001-00-00",
"PmtType" : "PayInt",
"Term" : "12"
}
]
}
0000-MM-00If you wish to define monthly replacement payments, use a value formatted as 0000-MM-00, where MM is a two digit month number in [1...12]. A value of0000-06-00instructs the SCE to use the defined payment for every payment occurring in the month of June.
Example: To define a stream of 60 payments with every payment in July and August skipped, the following JSON could be used:
{
"PmtStreams" : [
{
"Date" : "2014-12-20",
"PmtType" : "CalcPmt",
"Term" : "60",
"PPY" : "12"
},
{
"Date" : "0000-07-00",
"PmtType" : "FixedPmt",
"Amount" : "0"
},
{
"Date" : "0000-08-00",
"PmtType" : "FixedPmt",
"Amount" : "0"
}
]
}
YYYY-MM-00If you wish to define replacement payments occurring in a specified year and month, use a value formatted as YYYY-MM-00, where MM is a two digit month number from 01 through 12, and YYYY is a four digit year. A value of2021-08-00instructs the SCE to use the defined payment for every payment occurring in August of 2021 (there can be more that one payment if the payment frequency is greater than monthly).
Note: if the value of the Date field is not a valid date (i.e. it is instead
of one of the three formats mentioned above), then the
LastDay, Term, and
PPY fields will be ignored, unless otherwise noted above.*
🔹 Data.PmtStreams[].Holidays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | ignore, prev, next | ignore |
If payment dates (including the specified start date) are not allowed to fall on
specified holidays (see the Holidays[] array for more inforation
on how to specify holidays), then set the value of this field to something other
than ignore. The meaning of the other two values are defined below:
prev- The date will be moved to the day before the holiday.next- The date will be moved to the Monday after the holiday.
Note that two other PmtStreams[] fields can cause the computed
dates to be adjusted: AllowFeb29 and
Weekends. The rules for how these three fields interact
are described below in detail.
For every date required in our payment stream, the SCE goes through the following steps:
- Generate the next date in our date stream, called the target date.
- If February 29th is not allowed and if the target date is 2/29, then adjust the target date forward or backward one day based upon the date generation frequency. If the frequency is a monthly multiple, then the target date is moved backward one day to 2/28. Weekly and biweekly frequencies move the target date forward one day to 3/1.
- If weekend dates are not allowed (e.g. the
Weekendsfield holds a value other thanignore) and the target date falls on a Saturday or Sunday:- then adjust the target date according to the field value.
- if February 29th is not allowed and if the target date is 2/29, then adjust the target date in the same direction as in 3(a) above.
- If holidays are not allowed (e.g. the
Holidaysfield holds a value other thanignore) and the target date falls on a specified holiday:- Then adjust the target date according to the
Holidaysfield value. - If weekend dates are not allowed (e.g. the
Weekendsfield holds a value other thanIgnore) and the target date falls on a Saturday or Sunday, then adjust the target date in the same direction as 4(a) above. - if February 29th is not allowed and if the target date is 2/29, then adjust the target date in the same direction as in 4(a) above.
- Step 4 is repeated until the target date is not adjusted.
- Then adjust the target date according to the
🔹 Data.PmtStreams[].LastDay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field is used to resolve ambiguitiess in subsequent payment dates when the
Date date falls on the last day of a month with fewer than 31 days. If the
value of the Date field is not a valid date, then the value
of this field is ignored.
Set this field's value to true if the intent was to make subsequent payments
occur on the last day of the month. A value of false indicates that subsequent
payment dates will fall on the day number specified by the Date.
As an example, if the calling application specifies a Date of 2010-02-28,
then subsequent payment dates for a monthly payment frequency will be:
- on the 28th of each subsequent month if
"LastDay" : false. - on the last day of each subsequent month if
"LastDay" : true.
🔹 Data.PmtStreams[].MinPmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If specified, this field will dictate a minimum payment. If a calculated payment falls below the specified minimum payment value, then the minimum payment value will be used instead.
When a minimum payment is used, the principal reduction of the loan will be
accelerated. In some loan scenarios, this will result in an early payoff of the
loan before the specified Term of the payment stream. In this situation, the
final payment will always pay off the loan, and will be smaller than the
specified minimum payment.
🔹 Data.PmtStreams[].PmtType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | FixedPmt, PayInt, PayPrin, CalcPmt | CalcPmt |
Various types of payment streams may be requested by use of this field. Please
note that the meaning of the Amount field changes
according to the PmtType selected. Each payment type is
detailed below.
FixedPmt- theAmountfield represents the exact dollar amount of the payment.PayInt- all interest due is to be paid, and the value of theAmountfield determines the principal reduction to be applied in addition to the payment of interest. If the value ofAmountis zero, then this equates to an interest only payment.PayPrin- the value ofAmountis treated as a pure principal reduction amount.CalcPmt- calculate the payment. If the value of theAmountfield is greater than zero (but not specified as a percentage), then it is treated as a pickup amount to be paid in addition to the computed payment. If theAmountis expressed as a percentage, then the payment amount will be multiplied by the desired percentage (which allows for double or triple payments, etc.)PmtEsc- When computing an annual rest loan (see theBusinessRules.MYEDfield), the payment stream needs to specify aPmtTypefield value ofPmtEscto indicate an escrowed payment.
When two payments occur on the same date, they merge into one payment according to the following rules:
PayIntandPayInt- Add the twoAmounts together, so long as one is an interest only payment, or if both types use the same method to specify the principal payment amount (e.g. both use fixed dollar amounts, or both us percentages of principal).PayIntandPayPrin- If the same conditions mentioned in the previous case exist, then theAmountof thePayIntevent will be increased by thePayPrinAmount. Delete thePayPrinevent.PayIntandCalcPmt- Replace theCalcPmtevent with thePayIntevent.PayIntandFixedPmt- Keep both events separate.CalcPmtandPayPrin- If thePayPrinAmountis specified as a fixed dollar amount, then increase theAmountof theCalcPmtby thePayPrinAmountand delete thePayPrinevent.CalcPmtandCalcPmt- Add theAmounts together.CalcPmtandFixedPmt- Replace theCalcPmtevent with theFixedPmtevent.FixedPmtandPayPrin- If thePayPrinAmountis specified as a fixed dollar amount, then increase theAmountof theFixedPmtby thePayPrinAmountand delete thePayPrinevent.FixedPmtandFixedPmt- Keep both events separate.PayPrinandPayPrin- Keep both events separate.
🔹 Data.PmtStreams[].PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for "payments per year", and as one might surmise,
determines the payment frequency for the payment stream. If the value of the
Date field is not a valid date, then the value of this
field is ignored.
🔹 Data.PmtStreams[].ReplaceIdx
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | -1 |
The ReplaceIdx field allows applications to restrict the enforcement of a
replacement payment to a specific PmtStream. If specified, the
value of ReplaceIdx must be an integer >= 0. If not included in the request,
then ReplaceIdx will be set internally to a value of -1, which means that this
replacement payment rule will be applied to all matching payments.
If specified, the value of ReplaceIdx represents the numeric index of the
PmtStreams[] object to which the replacement payment will only be
applied.
Example 1:
{
"PmtStreams" : [
{
"Date" : "2024-01-01",
"PmtType" : "PayInt",
"Term" : "36"
},
{
"Date" : "2024-01-01",
"PmtType" : "PayPrin",
"Amount" : "1000.00",
"Term" : "36"
},
{
"Date" : "0000-01-00",
"PmtType" : "FixedPmt",
"ReplaceIdx" : "1"
},
{
"Date" : "0000-03-00",
"PmtType" : "FixedPmt",
"ReplaceIdx" : "1"
},
{
"Date" : "0000-04-00",
"PmtType" : "FixedPmt",
"ReplaceIdx" : "1"
}
]
}
In the example above, the first PmtStream with a
PmtType of PayInt has an index of 0, with the
PayPrin payment stream having an index of 1, etc.
All three replacement payment streams (with indexes of 2, 3, and 4) indicate
that they are targeting the PayPrin payment stream only by specifying
"ReplaceIdx" : "1". Also note that once the replacement payments are applied
to the applicable payments, those payments will no longer be considered to be a
part of the original payment stream, but instead will be considered to be a part
of the replacement payment stream that was applied.
Example 2:
Assume we wanted to build a repayment schedule of 24 interest only payments, followed by 36 computed equal payments. Also, assume that we wanted to skip the interest only payments made in December. Then, we could build a request in the following manner:
{
"PmtStreams" : [
{
"Date" : "2024-06-01",
"PmtType" : "CalcPmt",
"Term" : "60"
},
{
"Date" : "0001-00-00",
"PmtType" : "PayInt",
"Term" : "24"
},
{
"Date" : "0000-12-00",
"PmtType" : "FixedPmt",
"ReplaceIdx" : "1"
}
]
}
Above, PmtStreams[0] sets up the basic repayment schedule with 60 computed
equal payments. Then, PmtStreams[1] replaces payments 1-24 with interest only
payments. Finally, PmtStreams[2] replaces the December payment in the interest
only period with a skipped payment.
If you are creating overlapping payment streams with payments that fall on the
same day, then we recommend that you set the value of the Merge field of the
EditOutput object to false. If Merge is left at its default
value of true, merging of payments occurs before replacement payments are
enforced, thus making targeting a given payment stream much more difficult if
they are merged with a payment from a second payment stream.
🔹 Data.PmtStreams[].SemimonthlyDay
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0...31] | 0 |
When specifying a semimonthly payment stream, the day number on which the first
payment is made determines the day number for all of the following odd numbered
payments. If you omit this field or specify a value of 0, then the even
numbered payments will be generated using the default method within the SCE.
If you wish to specify the day number on which even numbered payments fall
(overriding the default method used in the SCE), then set the value of this
field to the desired day number. Setting the value of this field to 31 will
cause all even payments to fall on the last day of the month.
As an example, if you want to specify a semi-monthly payment stream beginning on January 1, 2019 with payments that fall on the 1st and 15th of each month for 24 payments, the object should look something like this:
{
"PmtStreams" : [
{
"Date" : "2019-01-01",
"Term" : "24",
"PPY" : "24",
"SemimonthlyDay" : "15"
}
]
}
🔹 Data.PmtStreams[].Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | 1 |
The term field indicates the the number of payments to be made at the
specified payment frequency (see PmtStream.PPY above), after
which the payment stream is completed. The default value is 1. If the value of
the PmtStream.Date field is not a valid date, then the
value of this field is ignored, unless it is a replacement payment using the
NNNN-00-00 date format.
🔹 Data.PmtStreams[].Weekends
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | ignore, prev, near, next | ignore |
If payment stream dates (including the specified start Date) are not allowed
to fall on a Saturday or Sunday, then set the value of this field to something
other than ignore. The meaning of the other three values are defined below:
prev- The date will be moved to the Friday before the computed weekend date.near- The date will be moved to the Friday before the computed weekend date if the computed weekend date falls on a Saturday, otherwise it will be moved to the Monday after.next- The date will be moved to the Monday after the computed weekend date.
Note that two other PmtStreams[] fields can cause the computed
dates to be adjusted - AllowFeb29 and
Holidays. For a complete description of how these three
fields work together, please see the documentation for the Holidays field.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
If the calling application wishes to add any payment protection products to the
loan (e.g. credit insurance or debt protection), then this object and at least
one Product object in the Products[] array must be present.
Fields:
🔹Protection.DataPath,🔹Protection.ShowDataPathObjects:
🟦 Products[]
🔹 Data.Protection.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look
for the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔹 Data.Protection.ShowDataPath
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field determines if the data directory path used in the calculation of the
loan will be disclosed in the response as a field of the Protection object.
🟦 Data.Protection.Products[]
| Type | Required |
|---|---|
Array of Product Objects | no |
For each distinct payment protection product that the calling application wishes
to add to the loan, a Product object is required.
As an example, if a loan was requested with single decreasing life, single disability, single involuntary unemployment, and joint property insurances, then the input JSON detailing the protection requests would look similar to the following:
{
"Protection" : {
"Products" : [
{
"Code" : "LI",
"Birthdays" : [
"1966-04-16"
]
},
{
"Code" : "AH",
"Birthdays" : [
"1966-04-16"
]
},
{
"Code" : "IU",
"Birthdays" : [
"1966-04-16"
]
},
{
"Code" : "PP",
"Birthdays" : [
"1966-04-16",
"1969-11-21"
]
}
]
}
}
Fields:
🔹Account,🔹Benefit,🔸Birthdays[],🔸Code,🔹Coverage,🔹Dismemberment,🔹Financed,🔹Method,🔹ShowFactor,🔹Table,🔹Term,🔹TermUnits,🔹UseLevelRatesObjects:
None
🔹 Data.Protection.Products[].Account
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | 1 |
This field specifies the account number that will be used to define the
requested product. Each account is numbered from 1 to 9,999, and each account
corresponds to a set of setup file which define numerous settings which define
the product and how it is calculated, such as the insurance rates, caps,
formulas used, etc. If this field is not specified, a default value of 1 will
be used.
🔹 Data.Protection.Products[].Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, or if the product itself does not have the notion of a monthly benefit (such as life and property products), then this field will be ignored.
🔸 Data.Protection.Products[].Birthdays[]
| Type | Required | Values |
|---|---|---|
| Array of String | yes | YYYY-MM-DD |
This array contains the date of birth for one or two borrowers requesting a
payment protection product. The type of coverage provided (e.g. single or joint)
is determined by the number of members in the array. Thus, to request single
accident and health coverage, the Product object (with "Code" : "AH")
requires a Birthdays[] array with a single birthday element containing the
birthday of the borrower seeking coverage. Similarly, to request joint
decreasing life coverage, the Product object (with "Code" : "CL") requires a
Birthdays[] array with two elements, each of which contains the birthday of a
borrower seeking coverage.
Since the type of coverage depends upon the number of elements present in the array, at lease one must appear and no more than two are allowed (as the only coverage options are single or joint).
All dates must be in the form of YYYY-MM-DD, and be 10 characters long.
🔸 Data.Protection.Products[].Code
| Type | Required | Values |
|---|---|---|
| String | yes | LI, AH, IU, PP |
This field defines the type of payment protection product, and which setup files
are references for calculation, rate, and cap purposes. In the description of
each product below, "NNNN" is the Account number (see above, an account number
of 1 would thus be "0001").
LI- The requested product is treated as decreasing credit life and will reference theclNNNN.inisetup file.AH- The requested product is treated as accident and health and will reference theahNNNN.inisetup file.IU- The requested product is treated as involuntary unemployment and will reference theiuNNNN.inisetup file.PP- The requested product is treated as property insurance and will reference the `ppNNNN.ini setup file.
🔹 Data.Protection.Products[].Coverage
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a coverage amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum coverage amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user specified coverage amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Products[].Dismemberment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer life protection products with
optional dismemberment coverage, and if the optional dismemberment coverage is
desired, then set this field's value to true. Otherwise, use the default value
of false.
🔹 Data.Protection.Products[].Financed
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Single premium protection products are typically financed (added to the
principal balance). If you wish to have the premiums paid up front at loan
cloasing, then set the value of this field to false.
🔹 Data.Protection.Products[].Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Default, Gross, Net, Level, MOB, TrueMOB, CunaSP, OrdinaryLife | Default |
Some accounts are configured to offer different types of credit life products (usually gross and net). In these accounts, this field allows the calling application to specify which method to use for a given loan. If no method is present in the request, then the default method will be used.
🔹 Data.Protection.Products[].ShowFactor
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to true, then the Product.Cost response object (member
of the Products[] array) will include a Factor field which is useful to J.
L. Sherman and Associates when debugging protection calculations.
🔹 Data.Protection.Products[].Table
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | 1 |
When requesting the accident and health product (e.g. the Code field is set to
AH), if the specified account has been set up with multiple disability or debt
cancellation plans, then this field determines which plan number will be
used. The value of the Table field must be an integer in [1...20]. If no table
number is specified, the first table will be used.
If the requested product Code is not AH, then this field is ignored.
🔹 Data.Protection.Products[].Term`
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Products[].TermUnits
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Pmts, Months | Pmts |
The specified numeric coverage term (see Term field, above) will be
interpreted as a number of payments or months, depending upon the value of this
field.
🔹 Data.Protection.Products[].UseLevelRates
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer single premium credit life
using level rates instead of the normal decreasing rates, and if you wish to use
level rates instead of decreasing, then set this field's value to true.
Otherwise, use the default value of false.
🟦 Data.TILARESPA2015
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean or Object | no | see below | false |
If the value of this field is true, then the SCE will include data for the
Integrated Mortgage Disclosures under the Real Estate Settlement Procedures Act
(Regulation X) and the Truth In Lending Act (Regulation
Z) rule, which is
required as of August 1st, 2015. If the field is omitted or set to false, then
the TILA RESPA outputs will not be generated.
The TILARESPA2015 field may also be passed in as an object, with
"TILARESPA2015" : {} equivalent to "TILARESPA2015" : true.
Fields:
🔹MaxPnIDetails,🔹MinPnIDetailsObjects:
None
🔹 Data.TILARESPA2015.MaxPnIDetails
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the loan is an ARM and has a specified a maximum lifetime interest rate (see
ARM.Limits.Ceiling), and if the calling application
requires the principal and interest breakdown for each MaxPnI payment returned
in the amortization schedule, then set the value of this field to true.
Doing so will return MaxInt and
MaxPrin fields of the
AmLine object associated with each MinPnI
payment. object associated with each MaxPnI
payment.
🔹 Data.TILARESPA2015.MinPnIDetails
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the loan is an ARM and has specified a minimum lifetime interest rate (see
ARM.Limits.Floor), and if the calling application requires
the principal and interest breakdown for each MinPnI payment returned in the
amortization schedule, then set the value of this field to true.
Doing so will return MinInt and
MinPrin fields of the
AmLine object associated with each
MinPnI payment.
Loan Module - Response
The Data object for a response from the Loan module is defined below, in the
order the fields are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔹Country,🔹CurrencyDPObjects:
🟥 Errors[],🟥 Warnings[],🟥 Notes[],🟦 FedBox,🟦 TILARESPA2015,🟦 Moneys,🟥 Accrual,🟥 PmtStreams[],🟦 Protection,🟦 AmTable
🔹 Data.Country
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | String | n/a |
If the request specified a two-character or three-digit
Country code, then this field will be present
and will contain the full name of the country associated with the specified
code. Please see the Countries Appendix for the list of
supported countries and their associated codes.
🔹 Data.CurrencyDP
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | 0, 2 | 2 |
If the number of decimal places allowed for currency values used in the request
is a value other than 2, then this field will be present and will inform the
application parsing the output of the correct value. If this field is not
present, then the number of decimal places allowed for currency values used in
the request is 2.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an Array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an Array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Loan",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "Loan",
"Data" : {
"Errors" : [
"Data.Advances[] (Array) not found.",
"Data.AccrualConfigs[] (Array) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟥 Data.Notes[]
| Type | Required |
|---|---|
| Array of String | yes |
The Notes[] field contains an Array of Strings which present important
calculation comments to more fully explain the loan calculation results that
may either not be apparant in the inputs or have overriden input assumptions.
These notes are thoroughly detailed in the Calculation Notes Appendix.
🟦 Data.FedBox
| Type | Required |
|---|---|
| Object | no |
This object groups together all fields which contain important numerical
information, as defined in the Truth-In-Lending laws (Regulation
Z). This object
will not be present if
BusinessRules.AmortizeOnly is
set to true in the request.
🔸 Data.FedBox.AmtFin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The Regulation Z Amount Financed, which is defined as the amount of credit provided to the borrower or on their behalf.
🔸 Data.FedBox.FinChg
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost the borrower.
🔸 Data.FedBox.TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The amount which the borrower will have paid when the borrower has made all scheduled payments.
🟦 Data.FedBox.TAP
| Type | Required |
|---|---|
| Object | no |
The TAP (total amount payable) object is only returned with the response if
the value of the EditOutput.ShowTap
request field is true.
Fields:
🔸Value,🔹PrepaidNF,🔹TAP.PocketAPRObjects:
None
🔸 Data.FedBox.TAP.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The value of this field represents the total amount payable, and is computed as the sum of: (i) the total of payments, (ii) all non-financed APR affecting fees, (iii) all out-of-pocket non-APR affecting fees, and (iv) all out-of-pocket APR affecting fees.
🔹 Data.FedBox.TAP.PrepaidNF
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency > 0.0 | 0 |
The value of this field is the sum of all non-financed APR prepaid fees (APR affecting fees paid on the same date as an advance). This field will only be present if the value is greater than zero.
🔹 Data.FedBox.TAP.Pocket
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency > 0.0 | 0 |
The value of this field is the sum of all out-of-pocket non-APR affecting fees. This field will only be present if the value is greater than zero.
🔹 Data.FedBox.TAP.PocketAPR
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency > 0.0 | 0 |
The value of this field is the sum of all out-of-pocket APR affecting fees not paid on an advance. This field will only be present if the value is greater than zero.
🟥 Data.FedBox.APR
| Type | Required |
|---|---|
| Object | yes |
The APR object contains fields which return the value and APR method used.
Fields:
🔸Value,🔹Max,🔹MaxExceeded,🔸TypeObjects:
None
🔸 Data.FedBox.APR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed APR, which is the cost of the extension of credit expressed as a yearly rate.
🔹 Data.FedBox.APR.Max
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Number | n/a |
This field holds the maximum APR as specified in the input request (see
Apr.Max). If not specified, this field (and the associated MaxExceeded
field) will not be present in the response. The value of this field should
be displayed as a percentage. As an example, for "Max" : "24.000", you would
disclose a maximum APR of 24%.
🔹 Data.FedBox.APR.MaxExceeded
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
The value of this field indicates whether or not the current loan exceeds the
specified maximum APR. As an example, if the maximum APR has been set to 24% and
the APR for the returned loan was 25.512%, the APR object would be:
{
"APR" : {
"Value" : "25.512",
"Max" : "24.000",
"MaxExceeded" : true,
"Type" : "Actuarial"
}
}
🔸 Data.FedBox.APR.Type
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field returns the APR method used to compute the reported APR.
🟦 Data.FedBox.MAPR
| Type | Required |
|---|---|
| Object | no |
The MAPR (military APR) object is only returned with the response if the value
of the Apr.UseMAPR request field is true.
Fields:
🔸Value,🔸Advance,🔸Max,🔸MaxExceededObjects:
None
🔸 Data.FedBox.MAPR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed military APR.
🔸 Data.FedBox.MAPR.Advance
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.
🔸 Data.FedBox.MAPR.Max
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
This field holds the maximum Military APR as specified in the input XML (see
Apr.MAPR_Max). If not specified, a default
value of 36% is assumed. The value of this field should be displayed as a
percentage. As an example, for "Max" : "36.000", you would disclose a maximum
Military APR of 36%.
🔸 Data.FedBox.MAPR.MaxExceeded
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
The value of this field indicates whether or not the current loan exceeds the
maximum allowed Military APR. As an example, if the maximum APR has been set to
36% and the Military APR for the returned loan was 37.125%, the MAPR object
would be:
{
"MAPR" : {
"Value" : "37.125",
"Advance" : "1350.00",
"Max" : "36.000",
"MaxExceeded" : true
}
}
🟦 Data.TILARESPA2015
| Type | Required |
|---|---|
| Object | no |
This object contains fields which are of interest to fulfilling the 2015 TILA
RESPA rule. It will only be present if the
TILARESPA2015 field in the request is set to
true. If the business rule, AmortizeOnly,
is set to True, this object will not be present.
Fields:
🔸TotalLoanCost,🔸CD_TotPmts,🔸TIPObjects:
🟥 LoanCosts[],🟥 In5Years,🟥 MaxPnIPmt,🟥 MinRate,🟥 MaxRate,🟥 ProjectedPaymentsTable[]
🔸 Data.TILARESPA2015.TotalLoanCost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The value of this field is the sum of all borrower paid loan costs. Since all
LoanCost values are rounded dollar amounts, the value of this
element will also be a rounded dollar amount.
🔸 Data.TILARESPA2015.CD_TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the sum of the total of payments, all borrower paid loan costs, and any odd days interest that is prepaid at loan closing. This value should be disclosed on the Closing Disclosure form in the Total of Payments field.
🔸 Data.TILARESPA2015.TIP
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The total interest percentage, rounded to three or fewer decimal places - as required.
🟥 Data.TILARESPA2015.LoanCosts[]
| Type | Required |
|---|---|
| Array of LoanCost objects | yes |
For every object in the Fees[] array present in the
request which has its IsLoanCost field set
to true (and hence, is a borrower paid loan cost) and whose amount is greater
than zero (except odd days interest fee types, as explained in the previous
documentation of the Fee and object), there will be a
corresponding LoanCost object.
Fields:
🔹Name,🔹In5Years,🔸ValueObjects:
None
🔹 Data.TILARESPA2015.LoanCosts[].Name
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔹 Data.TILARESPA2015.LoanCosts[].In5Years
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | Same as Value |
If the entire amount of the fee is different from the amount collected over the first five years (for example, a service charge), then this field will be present and disclose the portion of this loan coast that is accrued during the first five years.
🔸 Data.TILARESPA2015.LoanCosts[].Value
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field is the numerical value of the fee, rounded to the nearest dollar.
🟥 Data.TILARESPA2015.In5Years
| Type | Required |
|---|---|
| Object | yes |
This object contains all important values required for the new "In 5 Years" section of the disclosure.
Fields:
🔸PaidTotal,🔸PaidPrincipalObjects:
None
🔸 Data.TILARESPA2015.In5Years.PaidTotal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds the sum of all "principal, interest, mortgage insurance, and borrower paid loan costs scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🔸 Data.TILARESPA2015.In5Years.PaidPrincipal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds "the principal scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🟥 Data.TILARESPA2015.MaxPnIPmt
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold the maximum sceduled principal and interest payment during the term of the loan, as well as the date on which that payment is made.
Objects:
None
🔸 Data.TILARESPA2015.MaxPnIPmt.Date
| Type | Required | Value |
|---|---|---|
| Date | yes | YYYY-MM-DD |
The value of this field returns the date on which the maximum scheduled principal and interest payment is made. If the maximum scheduled payment occurs more than once, then the date returned is that of the first instance.
🔸 Data.TILARESPA2015.MaxPnIPmt.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The maximum sceduled principal and interest payment during the term of the loan.
🟥 Data.TILARESPA2015.MinRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the minimum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MinRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the minimum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MinRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the minimum rate is first applicable.
🟥 Data.TILARESPA2015.MaxRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the maximum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MaxRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the maximum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MaxRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the maximum rate is first applicable.
🟥 Data.TILARESPA2015.ProjectedPaymentsTable[]
| Type | Required |
|---|---|
Array of PPCol objects | yes |
Fields:
🔸Num,🔸Title,🔸YearStart,🔸YearEnd,🔸PnIPmtMin,🔸PnIPmtMax,🔸IntOnly,🔸Balloon,🔸MIPmt,🔸TotalPmtMin,🔸TotalPmtMaxObjects:
None
This field returns an Array of projected payment table columns (PPCol), with
each array member detailing a single column. Per the regulation, there will be a
minimum of one column and a maximum of four columns, depending upon the
parameters of the loan.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Num
| Type | Required | Value |
|---|---|---|
| String | yes | Integer in [1...4] |
The value of this field identifies the number of the column to which the following fields apply. The value will be from 1 to 4.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Title
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
The value of this field is the title for the column. Most of the time, it will
be in the form of Years X - Y, or Year X, or Final Payment in the case of
a final balloon payment.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearStart
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The beginning year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearEnd
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The ending year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The minimum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The maximum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].IntOnly
| Type | Required | Value |
|---|---|---|
| String | yes | none, some, all |
If none of the payments associated with this column are interest only payments,
then the value of this field will be none. A value of some means that some
of the payments (but not all) associated with this columnt are interest only.
Finally, a value of all indicates that all payments associated with this
columnt are interest only.
Note that for the purposes of this field, a scheduled payment is considered an interest only payment if the payment amount pays off all interest due at the time of the payment, with no reduction in the principal balance.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Balloon
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
If any of the payments associated with this column are balloon payments (e.g.
isolated payments that are more than twice the value of a regular periodic
payment), then the value of this field will be true.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].MIPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The value of this field holds the mortgage insurance premium associated with this column, rounded to the nearest dollar. If no mortgage insurance is present or coverage has been dropped, a value of zero will be present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the minimum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the maximum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🟦 Data.Moneys
| Type | Required |
|---|---|
| Object | no |
This element groups together those other major cash result amounts not disclosed
under the FedBox object, such as the principal balance, interest charge, and
fee amounts. This object will not be present if BusinessRules.AmortizeOnly is
set to true in the request.
Fields:
🔸Proceeds,🔸Principal,🔸Interest,🔹FinFees,🔹Prepaid,🔹OthNonAprFees,🔹ServiceChg,🔹PocketFees,🔹MAPRFees,🔹BalAdjTot,🔹MinIntChgAdj,🔹MinFinChgAdj,🔹MortInsObjects:
🟦 ODI,🟦 Advances[],🟦 Fees[],🟦 ConInterest
🔸 Data.Moneys.Proceeds
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field represents the sum of all Advance
amounts.
🔸 Data.Moneys.Principal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The principal balance is the amount on which interest is accrued. The principal balance consists of all advances requested by the borrower, as well as any fees and/or protection products which are financed.
🔸 Data.Moneys.Interest
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This value of this field holds the total interest accrued during the term of the
loan, assuming the borrower will make all scheduled payments. This field may be
less than zero if the interest rate is less than zero. If the business rule, AmortizeOnly,
is set to True, this field will not be present.
🔹 Data.Moneys.FinFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field contains the sum of all fees having
AddToPrin set to true and occuring on the
date of an advance. If this value is zero, the field will not appear in the
response.
🔹 Data.Moneys.Prepaid
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field represents all prepaid finance charges and contains the sum of all
fees occurring on an advance and having
AddToFinChg set to true. If this value
is zero, the field will not be found in the response.
🔹 Data.Moneys.OthNonAprFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field contains the sum of all fees having
AddToPrin set to true not occuring on
the date of an advance. If this value is zero, the field will not be present in
the response.
🔹 Data.Moneys.ServiceChg
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field represents all service charge fees and contains the sum of all fees
not occurring on an advance and having
AddToFinChg set to true. If this value
is zero, the field will be omitted from the response.
🔹 Data.Moneys.PocketFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field holds the sum of all fees which are neither financed, nor added to the finance charge. In essence, they are paid out of the borrower's pocket. If no out of pocket fees were requested, then this field will not show up in the response.
🔹 Data.Moneys.MAPRFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field holds the sum of all fees which are Military APR fees (including protection products), and will only appear if the Military APR has been requested.
🔹 Data.Moneys.BalAdjTot
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field holds the sum of all balance adjustments
occuring during the course of a loan. This field holds the sum of all actual
dollar adjustment amounts, not Target amounts.
🔹 Data.Moneys.MinIntChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
When a minimumm interest charge is assigned as a
BusinessRule using the
BusinessRules.MinIntChg field, the
adjustment required to achieve that objective is shown in this field.
🔹 Data.Moneys.MinFinChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
When a minimum finance charge is assigned as a
BusinessRule using the
BusinessRules.MinFinChg field, the
adjustment required to achieve that objective is shown in this field.
🔹 Data.Moneys.MortIns
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field holds the total mortgage insurance fee, if not single premium. If mortgage insurance is not requested, or if it is requested but is not treated as single premium, then this field will not be included in the response.
🟦 Data.Moneys.ODI
| Type | Required |
|---|---|
| Object | no |
This object, if present, contains information regarding odd days interest. If no odd days interest was requested, then this object will not be present in the response.
Fields:
🔸Count,🔹Months,🔹DailyCost,🔹AddToPmt,🔸FeeObjects:
None
🔸 Data.Moneys.ODI.Count
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
Discloses the number of odd days computed by the SCE for the requested loan.
🔹 Data.Moneys.ODI.Months
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
This field holds the number of odd months computed by the SCE for the requested
loan when using odd days accrual method 250. If the odd days accrual method is
a value other than 250, then this field will not be present in the
ODI object of the response.
🔹 Data.Moneys.ODI.DailyCost
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
If the odd days interest fee is computed using a rounded daily cost, then the value of this field will hold that value. If the odd days interest is not computed using a rounded daily cost, then this field will not be present in the response.
🔹 Data.Moneys.ODI.AddToPmt
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If the odd days interest has been added to the first payment, then this field
will be present in the response with a value of true. If the odd days interest
has been treated as a prepaid finance charge, then this field will not be
present and a default value of false should be assumed.
🔸 Data.Moneys.ODI.Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
Discloses the total amount odd days interest charge.
🟦 Data.Moneys.Advances[]
| Type | Required |
|---|---|
| Array of Advance objects | no |
If the requested loan computed any advance amounts (see the
Advance.Compute field for more
information), then for each Advance in the loan
there will be an Advance object in this array containing the date of the
advance and the computed advance amount.
If all of the loan's advances were specified and not computed, then this array will not be included in the response.
Objects:
None
🔸 Data.Moneys.Advances[].Date
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the advance is made.
🔸 Data.Moneys.Advances[].Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
Discloses the computed advance amount.
🟦 Data.Moneys.Fees[]
| Type | Required |
|---|---|
| Array of Fee objects | no |
If the requested loan computed any requested fees with the loan, and if
EditOutput.ShowFees is set to true,
then for each Fee in the loan request there will be a
Fee object in this array containing the name of the fee and the computed fee
amount.
If there were no fees requested with the loan, or if
EditOutput.ShowFees is set to false,
then this array will not be included in the response.
Objects:
None
🔹 Data.Moneys.Fees[].Name
| Type | Required | Value |
|---|---|---|
| String | no | Text |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.Fees[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
Discloses the computed fee amount.
🟦 Data.Moneys.ConInterest
| Type | Required |
|---|---|
| Object | no |
This object holds the total estimated interest accrued during the construction period, and how the construction interest is treated in the disclosure. If no construction period was specified, then this object will not be present in the output.
Fields:
🔸IsPrepaid,🔸AmountObjects:
None
🔸 Data.Moneys.ConInterest.IsPrepaid
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
If the construction interest is disclosed as interest only payments in the
amortization schedule, then the value of this field will be set to false.
Otherwise, the value of this field will be set to true.
🔸 Data.Moneys.ConInterest.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
Discloses the total amount of estimated interest accrued during the construction period.
🟥 Data.Accrual
| Type | Required |
|---|---|
| Object | yes |
This object groups together interest accrual information, such as the accrual method(s) used, days to the first payment and the loan's maturity date.
Fields:
🔸Methods[],🔹YieldPPY,🔸Days1Pmt,🔸DayCount,🔸MaturityObjects:
None
🔸 Data.Accrual.Methods[]
| Type | Required | Value |
|---|---|---|
| Array of String | yes | description of accrual method(s) used |
Each array member contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").
🔹 Data.Accrual.YieldPPY
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
If BusinessRules.YieldPPY in the
loan's request is set to a value other than 0, then this field will be
returned in the response with the same value passed into the request.
🔸 Data.Accrual.Days1Pmt
| Type | Required | Value |
|---|---|---|
| String | no | Integer >= 0 |
This field contains the number of days between the date of the first advance and
the date of first payment, computed by one of three methods as specified in by
Accrual.DayCount.
🔸 Data.Accrual.DayCount
| Type | Required | Value |
|---|---|---|
| String | yes | True360, True365, Actual |
This field specifies the method used to compute the number of days from the date
of the first advance until the first payment date. Actual means that the
actual number of days between these two dates are used, whereas the True360
and True365 methods use a 360/365 day calendar, respectively.
🔸 Data.Accrual.Maturity
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
Holds the maturity date of the loan, which is the date on which the last payment
is scheduled. All dates are in the form of YYYY-MM-DD, and must be 10 characters
long.
🟥 Data.PmtStreams[]
| Type | Required |
|---|---|
| Object | yes |
The PmtStreams[] array is made up of one or more PmtStream objects (there
will always be at least one of these elements, and there may be more than one
depending upon the loan type). The PmtStream objects describe the scheduled
stream of payments for the computed loan. Instead of disclosing each and every
payment individually (which can be done using the AmTable object),
the payment stream groups together consecutive equal payments at the same
interest rate to produce output along the lines of:
{
"PmtStreams" : [
{
"Term" : "11",
"Pmt" : "87.90",
"Rate" : "10.000",
"Begin" : "2019-02-01",
"PPY" : "12"
},
{
"Term" : "1",
"Pmt" : "87.85",
"Rate" : "10.000",
"Begin" : "2020-01-01"
}
]
}
Each object describes a single stream of equal payments at the same interest rate, using the following fields to define the important properties of each payment stream.
Fields:
🔹Idx,🔸Term,🔸Pmt,🔹IsSplitRate,🔹Rate,🔸Begin,🔹PPY,Objects:
None
🔹 Data.PmtStreams[].Idx
| Type | Required | Value |
|---|---|---|
| String | no | Integer |
If the value of EditOutput.TagPmts is
set to true in the loan request, then this field will appear for each
PmtStreams[] object. The value of this field identifies which
PmtStreams[] array member of the loan request gave rise to it.
If the value of this field is -1, then perfect amortization was enforced (e.g.
the BusinessRules.AmError field of
is set to AdjPmt).
If the value of this field is -2, then an early payoff event was triggered,
which is caused by (i) specifying the
EditOutput.EarlyPayoffDate field,
or (ii) using whole dollar rounding which can shorten the specified term of the
loan, or (iii) specifying a fixed or minimum payment amount which also may
shorten the specified term of the loan.
🔸 Data.PmtStreams[].Term
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The Term field holds the number of payments that make up the given payment
stream.
🔸 Data.PmtStreams[].Pmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The Pmt field holds the computed payment amount for this payment stream.
🔹 Data.PmtStreams[].IsSplitRate
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this payment stream accrued interest using split-rate tiers, then this field
will be present and set to true. Otherwise, this field will not be returned
and has an assumed default value of false.
🔹 Data.PmtStreams[].Rate
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Number | see below |
Contains the interest rate used for the duration of this payment stream. If this payment stream accrued interest using split-rate tiers, then this field will not be returned.
🔸 Data.PmtStreams[].Begin
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field identifies the date on which the first payment for this given payment
stream is scheduled to be made. All dates are in the form of YYYY-MM-DD, and
must be 10 characters long.
🔹 Data.PmtStreams[].PPY
| Type | Required | Value |
|---|---|---|
| String | no | Integer |
If the value of the Term field is greater than one, then
the periodic payment frequency for this payment stream is also disclosed.
🟦 Data.MI
| Type | Required |
|---|---|
| Object | no |
If mortgage insurance is present on the requested loan, then this object and all required child field objects (documented below) will be included in the response.
Fields:
🔹UpFrontObjects:
🟥 Rates[],🟦 Periodic
🔹 Data.MI.UpFront
| Type | Required | Value |
|---|---|---|
| String | no | Currency |
The value of this field represents the up front fee paid for mortgage insurance. If there is no up front fee, then this field will not be present in the response.
🟥 Data.MI.Rates[]
| Type | Required |
|---|---|
| Array of Rate objects | yes |
Fields of each rate object disclose the rate, premium per year, and premium per period.
Fields:
🔸Rate,🔸PremPerYear,🔸PremPerPeriodObjects:
None
🔸 Data.MI.Rates[].Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The percentage rate used in the mortgage insurance calculation.
🔸 Data.MI.Rates[].PremPerYear
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The annual mortgage insurance premium amount.
🔸 Data.MI.Rates[].PremPerPeriod
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The periodic mortgage insurance premium amount.
🟦 Data.MI.Periodic
| Type | Required |
|---|---|
| Object | no |
Fields of this object provide the loan to value ratio, as well as the payment
indexes when the principal balance falls below the
WarnLTV and
DropLTV percentage values specified in
the request. This element is only present if a corresponding Periodic field is
found in the request.
Fields:
🔸LTV,🔸IndexToWarn,🔸IndexToDropObjects:
None
🔸 Data.MI.Periodic.LTV
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The loan to value ratio of the computed loan, expressed as a percentage.
🔸 Data.MI.Periodic.IndexToWarn
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The value of this field indicates the payment index on which the remaining
principal balance to home value ratio drops below the specified
WarnLTV percentage.
🔸 Data.MI.Periodic.IndexToDrop
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The value of this field indicates the payment index on which the remaining
principal balance to home value ratio drops below the specified
DropLTV percentage. Mortgage insurance
coverage stops after this payment.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
If protection products are requested, then this object will be present in the
response, along with the Products[] array which contains details
on each requested protection product.
Objects:
🟥 Products[]
🔸 Data.Protection.LoanType
| Type | Required | Value |
|---|---|---|
| String | yes | Equal, SinglePay, Balloon, IntOnly, PrinPlus, SkipsIrregs, HighlyIrregular |
Protection products are often limited to certain types of loan repayment schedules, such as regular equal and balloon payment loans. Also, different formulas and various other settings may be used for different loan repayment types.
The value of this field returns the type of loan repayment schedule that the SCE determines after analyzing on the computed loan. Please see the samples provided with this documentation which illustrates how to create JSON requests which will fall under these loan repayment classifications.
🔹 Data.Protection.Path
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
This optional field will hold the value of the data path used by the SCE to find
the required setup files for protection calculations. This field will only be
present if the
Protection.ShowDataPath field of
the request is set to true.
🟥 Data.Protection.Products[]
| Type | Required |
|---|---|
| Array of Product objects | yes |
For each distinct payment protection product that the calling application
requested with a loan, a Product object will be returned.
Fields:
🔸Code,🔸Result,🔸Abbrev,🔸Name,🔹IsDP,🔹Table,🔹Formula,🔹RateType,🔹DropCode,🔹DropReasonObjects:
🟦 Notes[],🟦 Cost,🟦 Coverage,🟦 Benefit,🟦 Borrowers[],🟦 Caps
🔸 Data.Protection.Products[].Code
| Type | Required | Value |
|---|---|---|
| String | yes | LI, LL, AH, IU, PP |
This field defines the type of payment protection product that this element, and
all child fields, refers to. It mirrors the
Product.Code field in the loan request, with
the addition of the LL code which indicates a level credit life product.
🔸 Data.Protection.Products[].Result
| Type | Required | Value |
|---|---|---|
| String | yes | Full, Partial, Drop |
The value of this field informs the calling application if the requested
coverage has been fully provided, partially provided (i.e. one or more coverage
caps have been exceeded and partial coverage has been extended), or completely
dropped. If coverage has been dropped, then the Products[] object
will not have any child objects (e.g. Product.Notes,
Product.Cost, etc.).
🔸 Data.Protection.Products[].Abbrev
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field holds the protection product's abbreviation, as configured in the appropraite setup file.
🔸 Data.Protection.Products[].Name
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field holds the protection product's name, as configured in the appropraite setup file.
🔹 Data.Protection.Products[].IsDP
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field indicates if the product has been set up as debt protection. If this
field is not present, then the default value of false should be used (which
indicates that the product has been set up as insurance instead).
🔹 Data.Protection.Products[].Table
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
The Table field will only be present when a product is offered with differing
tables of rates. If present, the value of this field is the table number used in
the calculation.
🔹 Data.Protection.Products[].Formula
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team. Please see this table of
formula codes to see each formula code and
description.
🔹 Data.Protection.Products[].RateType
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Fixed, Variable | Fixed |
This field will only be present in the output if the protection product has been
configured to allow for coverage to switch from joint to single during the term
of coverage, should one of the borrowers exceed an age at termination cap. If
the field is not present, then a value of Fixed should be assumed as only one
rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🔹 Data.Protection.Products[].DropCode
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
If the requested protection was dropped by the SCE for any reason, then the
value of this field will be greater than zero. In this case, no child objects of
Products[] object will be present.
A value of zero indicates that the requested product was included with the loan,
and as such, the child objects of Products[] which describe the
coverage details, should be parsed.
Please see the table of drop codes for a complete list of all drop codes and and their associated description.
🔹 Data.Protection.Products[].DropReason
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
If the requested protection product was successfully included in the loan, then
the value of this field will be Valid Calculation and corresponds to a
DropCode value of 0.
If the requested protection was dropped by the SCE for any reason (and hence,
DropCode is > 0), then this field will provide a brief
description of why the protection was dropped.
Please see the table of drop codes for a complete list of all drop codes and and their associated description.
🟦 Data.Protection.Products[].Notes[]
| Type | Required |
|---|---|
| Array of Note objects | no |
The Notes array may appear in the response to further clarify the product
calculation methodology. Each note is associated with a numeric code and text
return value. Please see the documentation for the Note object below.
Objects:
None
🔸 Data.Protection.Products[].Notes[].Code
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The unique integer identifying the protection product Note in
question. This Code may be useful if the calling application would like to
override the default description or check for a given Note's Code.
Please see the table of protection product notes for all codes and their associated descriptions.
🔸 Data.Protection.Products[].Notes[].Note
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
A text description of the Note. Please see the table of protection product notes for all codes and their associated descriptions.
🟦 Data.Protection.Products[].Cost
| Type | Required |
|---|---|
| Object | no |
This object's fields detail the cost of the protection product in total, per payment, and per day. It also provides the rate used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Rate,🔹FactorObjects:
None
🔸 Data.Protection.Products[].Cost.Premium
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Products[].Cost.PerPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The cost of coverage expressed as an amoun per payment.
🔸 Data.Protection.Products[].Cost.PerDay
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The cost of coverage expressed as an amoun per day.
🔸 Data.Protection.Products[].Cost.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The rate used to compute the premium for the requested protection product.
🔹 Data.Protection.Products[].Cost.Factor
| Type | Required | Value |
|---|---|---|
| String | no | Number |
The rate factor used to compute the premium for the requested protection
product. Note that this field is only present if the Product.ShowFactor field
of the associated protection product true.
🟦 Data.Protection.Products[].Coverage
| Type | Required |
|---|---|
| Object | no |
The aggregate coverage amount, code, and note are provided in the fields of this object:
Objects:
None
🔸 Data.Protection.Products[].Coverage.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Products[].Coverage.Code
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
If the requested protection was capped by the SCE for any reason, then the value of this field will be greater than zero. A value of zero indicates that the requested product was included with the loan for the full coverage amount of the loan.
🔸 Data.Protection.Products[].Coverage.Note
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field will describe the type of coverage provided. If full coverage has
been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Products[].Benefit
| Type | Required |
|---|---|
| Object | no |
Disability and involuntary unemployment provide coverage based upon a computed benefit amount. This object collects the monthly and periodic benefit amounts, as well as the benefit coverage code and note.
Fields:
🔸BenMon,🔸BenPer,🔸Code,🔸NoteObjects:
None
🔸 Data.Protection.Products[].Benefit.BenMon
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The computed monthly benefit amount.
🔸 Data.Protection.Products[].Benefit.BenPer
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The computed periodic benefit amount.
🔸 Data.Protection.Products[].Benefit.Code
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
If the benefit for the requested protection was capped by the SCE for any reason, then the value of this field will be greater than zero. A value of zero indicates that the requested product was included with the loan for the full benefit amount of the loan.
🔸 Data.Protection.Products[].Benefit.Note
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field will describe the type of benefit coverage provided. If full coverage
has been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Products[].Borrowers[]
| Type | Required |
|---|---|
| Array of Borrower objects | no |
This array provides the calling application with data about the term of coverage for the specified borrower(s), for the requested product.
Fields:
🔸Birthday,🔸Pmts,🔸Months,🔹AmMonths,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Maturity,🔸Code,🔸NoteObjects:
None
🔸 Data.Protection.Products[].Borrowers[].Birthday
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request. All
dates are in the form of YYYY-MM-DD, and must be 10 characters long.
🔸 Data.Protection.Products[].Borrowers[].Pmts
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Products[].Borrowers[].Months
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The term of coverage expressed as a number of months.
🔹 Data.Protection.Products[].Borrowers[].AmMonths
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
This field is only be returned when the protection product is configured to use TruStage's single premium formula #5, and contains the computed amortization term used in the premium computation.
🔸 Data.Protection.Products[].Borrowers[].AgeAtIssue
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field represents the age at issue of the borrower in a special
date-like format of YYYY-MM-DD, where the borrower is YYYY years, MM
months, and DD days old when coverage begins.
🔸 Data.Protection.Products[].Borrowers[].AgeAtMaturity
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field represents the age at maturity of the borrower in a
special date-like format of YYYY-MM-DD, where the borrower is YYYY years,
MM months, and DD days old when coverage terminates.
🔸 Data.Protection.Products[].Borrowers[].Maturity
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Products[].Borrowers[].Code
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
If the requested protection was truncated by the SCE for any reason, then the value of this field will be greater than zero. A value of zero indicates that the requested product was included with the loan for the full term of the loan.
🔸 Data.Protection.Products[].Borrowers[].Note
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field will describe the type of coverage provided. If full term coverage
has been provided, then the note will contain Full Coverage. Otherwise, the
note will describe the type of truncated coverage used.
🟦 Data.Protection.Products[].Caps
| Type | Required |
|---|---|
| Object | no |
This object provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product.
Fields:
🔹Coverage,🔹Benefit,🔹BenPer,🔹Term,🔹TermPer,🔹InceptAge,🔹AttainAgeObjects:
None
🔹 Data.Protection.Products[].Caps.Coverage
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then this field will not be present.
🔹 Data.Protection.Products[].Caps.Benefit
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then this field will not be present.
🔹 Data.Protection.Products[].Caps.BenPer
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
Contains the maximum periodic benefit amount. If no cap is present or applicable, or if the payment frequency of the requested loan is monthly, then this field will not be present.
🔹 Data.Protection.Products[].Caps.Term
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then this field will not be present.
🔹 Data.Protection.Products[].Caps.TermPer
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
Contains the maximum coverage term, expressed as a number of payments. If no cap is present or applicable, or if the payment frequency of the requested loan is monthly, then this field will not be present.
🔹 Data.Protection.Products[].Caps.InceptAge
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then this field will not be present.
🔹 Data.Protection.Products[].Caps.AttainAge
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then then this field will not be present.
🟦 Data.AmTable
| Type | Required |
|---|---|
| Object | no |
This object contains fields which summarize and describe the loan's amortization
schedule. If EditOutput.ShowAmTable
is set to false, then this object will not be found in the response.
Fields:
🔹AvgBal,🔹Months,🔹Weeks,🔹OddDaysObjects:
🟦 GrandTotals,🟦 SubTotals[],🟦 AmLines[]
🔹 Data.AmTable.AvgBal
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the average balance of the loan used in the Canadian APR calculation.
🔹 Data.AmTable.Months
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of months in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.Weeks
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of weeks in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.OddDays
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Integer | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the number of odd days in the term of the loan used in the Canadian APR calculation. Odd days are computed by moving backwards from the maturity date the number of disclosed months or weeks, and then counting the additional number of days required to land on the loan date.
🟦 Data.AmTable.GrandTotals
| Type | Required |
|---|---|
| Object | no |
This object describes the total amounts of various categories throughout the life of the loan. As an example, the total amount paid to interest and principal, as well as the total of payments are all contained in fields of this object.
Fields:
🔸PmtTot,🔸IntTot,🔸PrinTotObjects:
None
🔸 Data.AmTable.GrandTotals.PmtTot
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The total of payments scheduled for the computed loan.
🔸 Data.AmTable.GrandTotals.IntTot
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The total amount paid to interest over the life of the loan, assuming all payments are made as scheduled.
🔸 Data.AmTable.GrandTotals.PrinTot
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This field contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.
🟦 Data.AmTable.SubTotals[]
| Type | Required |
|---|---|
| Array of SubTotal objects | no |
Describes the total amounts of various categories paid during a given calendar
year. For each year in which the computed loan has scheduled payments, there
will be a SubTotal object in the array.
Fields:
🔸Year🔸Start,🔸Events,🔸PmtSub,🔸IntSub,🔸PrinSubObjects:
None
🔸 Data.AmTable.SubTotals[].Year
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The calendar year for which the subtotal data is applicable.
🔸 Data.AmTable.SubTotals[].Start
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
This field defines the index of the first AmLine event in the AmLines[]
array which falls in the specified calendar year.
🔸 Data.AmTable.SubTotals[].Events
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
This field defines the number of amortization events which belong to this calendar year.
🔸 Data.AmTable.SubTotals[].PmtSub
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
Contains the total of payments scheduled for the calendar year.
🔸 Data.AmTable.SubTotals[].IntSub
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
Holds the total amount paid to interest over the calendar year, assuming all payments are made as scheduled.
🔸 Data.AmTable.SubTotals[].PrinSub
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
Contains the total amount paid to principal during the calendar year, assuming all payments are made as scheduled.
🟦 Data.AmTable.AmLines[]
| Type | Required |
|---|---|
| Array of AmLine objects | no |
There is one AmLine object for each amortization event which occurs during the
life of a loan. Most of the time, each event will describe a payment, and detail
how that payment is applied (to interest, principal, loan protection products,
etc.). Some events, such as capitalizing interest, will not have payments but
will show how the loan amortizes.
Fields:
🔸Idx,🔹Type,🔸Date,🔸BegBal,🔸Pmt,🔸Int,🔸Prin,🔹FeeTot,🔹ProtUnpaid,🔹PmtEsc,🔹MI,🔹UnpaidInt,🔸EndBal,🔹MinPnI,🔹MinInt,🔹MinPrin,🔹MaxPnI,🔹MaxInt,🔹MaxPrinObjects:
None
🔸 Data.AmTable.AmLines[].Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The index of the amortization event, which is either the payment number, or zero. A value of zero designates an event that is either not a payment or is a skipped payment.
🔹 Data.AmTable.AmLines[].Type
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
The type of event is recorded in this field, such as Advance or FixedPmt. If
any fees are included in the loan, then the value of this field for those fee
events will be the Name of the fee, as specified in the request.
🔸 Data.AmTable.AmLines[].Date
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the amortization event is scheduled to occur. All dates are in
the form of YYYY-MM-DD, and must be 10 characters long.
🔸 Data.AmTable.AmLines[].BegBal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The principal balance before the amortization event occurs.
🔸 Data.AmTable.AmLines[].Pmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The payment amount for this event.
🔸 Data.AmTable.AmLines[].Int
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The amount of interest paid at this event.
🔸 Data.AmTable.AmLines[].Prin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The amount of principal paid at this event.
🔹 Data.AmTable.AmLines[].FeeTot
| Type | Required | Value |
|---|---|---|
| String | no | Currency |
The total of all fees paid at this event.
🔹 Data.AmTable.AmLines[].ProtUnpaid
| Type | Required | Value |
|---|---|---|
| String | no | Currency |
If the loan includes escrowed True MOB protection products, and if a payment is not sufficient to pay the accrued fees, then any unpaid protection fees will be carried forward in this field to be paid off as soon as possible in a future payment.
🔹 Data.AmTable.AmLines[].PmtEsc
| Type | Required | Value |
|---|---|---|
| String | no | Currency |
If the computed loan is an annual rest mortgage, then the sum of escrowed payments for each amortization event will appear in this field. If the computed loan is not an annual rest mortgage, then this field will not be found in the response.
🔹 Data.AmTable.AmLines[].MI
| Type | Required | Value |
|---|---|---|
| String | no | Currency |
The amount of mortgage insurance paid at this event.
🔹 Data.AmTable.AmLines[].UnpaidInt
| Type | Required | Value |
|---|---|---|
| String | no | Number |
Any interest not paid after this event is logged in this field.
If EditOutput.KeepSlush is set to
true in the request, then the unpaid interest will always be displayed to four
(4) decimal places.
If EditOutput.KeepSlush is set to
false, then if the interest accrued has not yet been rounded, then the unpaid
interest will be displayed to four (4) decimal placed. If rounded, then the
unpaid interest is displayed to two (2) decimal places.
🔸 Data.AmTable.AmLines[].EndBal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
The principal balance amount, after the amortization event has taken place.
🔹 Data.AmTable.AmLines[].MinPnI
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
If the Loan is an ARM loan which specified a minimum lifetime interest rate (see
ARM.Limits.Floor), and if TILA RESPA data has
been requested (using the TILARESPA2015
field), then this field will be present in each AmLine object that
represents a payment. The value of this field represents the minimum principal
and interest payment possible, should the index + margin rate trend towards the
minimum lifetime rate after the teaser term has expired.
🔹 Data.AmTable.AmLines[].MinInt
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
The value of this field represents the amount of the MinPnI
payment which has been used to pay interest. This field will only be present if
the MinPnI field is present and if the request set
TILARESPA2015.MinPnIDetails to
true.
🔹 Data.AmTable.AmLines[].MinPrin
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
The value of this field represents the amount of the MinPnI
payment which has been used to pay down the principal balance. This field will
only be present if the MinPnI field is present and if the
request set
TILARESPA2015.MinPnIDetails to
true.
🔹 Data.AmTable.AmLines[].MaxPnI
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
If the Loan is an ARM loan which specified a maximum lifetime interest rate (see
ARM.Limits.Ceiling), and if TILA RESPA data
has been requested (using the TILARESPA2015
field field), then this field will be present in each AmLine object
that represents a payment. The value of this field represents the maximum
principal and interest payment possible, should the index + margin rate trend
towards the maximum lifetime rate after the teaser term has expired.
🔹 Data.AmTable.AmLines[].MaxInt
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
The value of this field represents the amount of the MaxPnI
payment which has been used to pay interest. This field will only be present if
the MaxPnI field is present and if the request set
TILARESPA2015.MaxPnIDetails to
true.
🔹 Data.AmTable.AmLines[].MaxPrin
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency | n/a |
The value of this field represents the amount of the MaxPnI
payment which has been used to pay down the principal balance. This field will
only be present if the MaxPnI field is present and if the
request set
TILARESPA2015.MaxPnIDetails to
true.
Equal Payment Loans
Equal payment loans are the most common type of loan calculated, and are usually the main focus of a lending institution. The four basic variables involved in an equal payment loan are: proceeds, rate, term and payment.
Most of the time, a user will want to specify the proceeds, rate and term, and then have the SCE compute the resulting payment. However, there are times when a specific payment is desired and the user may wish to compute either the proceeds or term. The SCE supports these rollback calculations, and each is documented in this chapter.
Sample Request
The following example is a request for an equal payment loan with proceeds of
$10,000, interest will accrue at a 4.5% rate using an actual day / 365 U. S.
Rule accrual method (accrual code 320), with a financed and APR affecting
document preparation fee of $25 included. There will be 12 monthly equal
principal and interest payments.
{
"Module" : "EqualPmt",
"Data" : {
"LoanDate" : "2022-08-22",
"PmtDate" : "2022-10-01",
"IntRate" : "4.500",
"Proceeds" : "10000.00",
"Term" : "12",
"Fees" : [
{
"Name" : "Doc Prep Fee",
"AddToFinChg" : true,
"AddToPrin" : true,
"CalcType" : "Dollar",
"Entry" : "25.00"
}
],
"Settings" : {
"AccrualCode" : "320"
}
}
}
Note that in the above request, the Payment field is not specified. This
instructs the SCE to compute the payment given the IntRate, Proceeds, and
Term. The following loan is identical to the one above, except that we are
specifying a desired payment (Payment) and computing the proceeds (note that
the Proceeds) field is omitted:
{
"Module" : "EqualPmt",
"Data" : {
"LoanDate" : "2022-08-22",
"PmtDate" : "2022-10-01",
"IntRate" : "4.500",
"Term" : "12",
"Payment" : "856.93",
"Fees" : [
{
"Name" : "Doc Prep Fee",
"AddToFinChg" : true,
"AddToPrin" : true,
"CalcType" : "Dollar",
"Entry" : "25.00"
}
],
"Settings" : {
"AccrualCode" : "320"
}
}
}
Finally, to compute the Term for a given Proceeds, Rate, and Payment
we would use a request similar to the following:
{
"Module" : "EqualPmt",
"Data" : {
"LoanDate" : "2022-08-22",
"PmtDate" : "2022-10-01",
"IntRate" : "4.500",
"Proceeds" : "10000.00",
"Payment" : "856.93",
"Fees" : [
{
"Name" : "Doc Prep Fee",
"AddToFinChg" : true,
"AddToPrin" : true,
"CalcType" : "Dollar",
"Entry" : "25.00"
}
],
"Settings" : {
"AccrualCode" : "320"
}
}
}
Sample Response
The following example is the response returned from the SCE for the first request provided above.
{
"Result" : 200,
"Module" : "EqualPmt",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Results" : {
"Payment" : "856.92"
},
"FedBox" : {
"AmtFin" : "10000.00",
"FinChg" : "283.04",
"TotPmts" : "10283.04",
"APR" : {
"Value" : "4.929",
"Type" : "Actuarial"
}
},
"Moneys" : {
"Principal" : "10025.00",
"Interest" : "258.04",
"FinFees" : "25.00",
"FinChgFees" : "25.00",
"Fees" : [
{
"Name" : "Doc Prep Fee",
"Fee" : "25.00"
}
]
},
"Accrual" : {
"Method" : "Actual/365 US Rule",
"Days1Pmt" : "40",
"DayCount" : "Actual",
"Maturity" : "2023-09-01"
},
"PmtStreams" : [
{
"Term" : "12",
"Pmt" : "856.92",
"Rate" : "4.500",
"Begin" : "2022-10-01"
}
],
"AmTable" : {
"GrandTotals" : {
"PmtTot" : "10283.04",
"IntTot" : "258.07",
"PrinTot" : "10024.97"
},
"SubTotals" : [
{
"Year" : "2022",
"Start" : "1",
"Events" : "3",
"PmtSub" : "2570.76",
"IntSub" : "115.72",
"PrinSub" : "2455.04"
},
{
"Year" : "2023",
"Start" : "4",
"Events" : "9",
"PmtSub" : "7712.28",
"IntSub" : "142.35",
"PrinSub" : "7569.93"
}
],
"AmLines" : [
{
"Idx" : "1",
"Date" : "2022-10-01",
"BegBal" : "10025.00",
"Pmt" : "856.92",
"Int" : "49.44",
"Prin" : "807.48",
"EndBal" : "9217.52"
},
...,
{
"Idx" : "12",
"Date" : "2023-09-01",
"BegBal" : "853.69",
"Pmt" : "856.92",
"Int" : "3.26",
"Prin" : "853.66",
"EndBal" : "0.03"
}
]
}
}
}
Equal Payment Loan Module - Request
The fields of the Data object supported by a EqualPmt module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹Country,🔸IntRate,🔹IntStartDate,🔸LoanDate,🔹Payment,🔸PmtDate,🔹PPY,🔹Proceeds,🔹Term,🔹TotalDownObjects:
🟦 Apr,🟦 Construction,🟦 Fees[],🟦 Format,🟦 MI,🟦 ODI,🟦 Protection,🟦 ServiceCharges[],🟦 Settings
The fields of the Data object supported by an Equal Pmt module request are
defined in alphabetical order below:
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
This field allows the calling application to specify a two (2) character or
three (3) digit country code. If none is provided, then a default value of US
will be used. Please see the Countries Appendix for
the list of supported countries and their associated codes.
Specifying the Country will also set the default value for the
APR.Method and
Format.CurrencyDecimals fields, as appropriate for
the country specified.
🔸 Data.IntRate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
Determine the interest rate used for the loan.
The interest rate should be expressed as a percentage. For example,
a loan computed with a rate of 5.125% would be specified as
"IntRate" : "5.125".
🔹 Data.IntStartDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | same value as LoanDate |
This field contains the date on which interest begins to accrue on the loan's principal balance. If this field is not specified, then the interest start date is set equal the loan date. Also note that the interest start date must be equal to the loan date when computing a construction loan.
The interest start date (when specified) must be on or after the loan date, as well as on or before the first payment date.
🔸 Data.LoanDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field holds the date on which the loan amount is disbursed and interest
begins to accrue. All dates must be in the form of YYYY-MM-DD, and be 10
characters long.
🔹 Data.Payment
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | n/a |
The payment specified indicates the the desired periodic payment the borrower is requesting.
If you wish to compute the Payment by specifying the
IntRate, Proceeds, and
Term, then omit thie field from the request.
🔸 Data.PmtDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field specifies the first (and for single payment notes, only) payment date
in the loan's repayment schedule. All dates must be in the form of YYYY-MM-DD,
and be 10 characters long.
🔹 Data.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for payments per year, and determines the payment
frequency for the requested loan. The default value of 12 will result in a
loan with 12 payments per year. If you require a loan with a payment frequency
other than monthly, specify it using this field.
🔹 Data.Proceeds
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | n/a |
The proceeds specified indicate the amount of money the borrower is requesting, and does not include financed fees, financed insurances, etc.
If you wish to compute the Proceeds by specifying the
IntRate, Term, and
Payment, then omit thie field from the request.
🔹 Data.TotalDown
| Type | Required | Values |
|---|---|---|
| String | no | Currency > 0 |
This optional field represents the total down payment that the borrower has applied to reduce the requested proceeds. It may consist of a cash down payment, net trade-in value, or rebate. You only need to specify a total down payment if the loan needs to disclose a total sale price. Typical examples of these loan types are auto and boat loans.
🔹 Data.Term
| Type | Required | Values |
|---|---|---|
| String | no | Integer > 1 |
The Term field indicates the the number of payments to be made at the
specified payment frequency (see the PPY field above), after
which the loan is scheduled to be paid off.
If you wish to compute the Term by specifying the IntRate,
Proceeds, and Payment, then omit thie
field from the request.
🟦 Data.Apr
| Type | Required |
|---|---|
| Object | no |
Settings related to the computed effective rate returned by the SCE (most commonly, the Regulation Z APR in the United States of America) are contained in the fields of this object.
Fields:
🔹MAPR_Max,🔹Method,🔹UseMAPRObjects:
None
🔹 Data.Apr.MAPR_Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 36.0 |
If you are computing the Military APR (see UseMAPR below) and
wish to override the default maximum APR value of 36%, then specify the desired
maximum as the value of this field.
🔹 Data.Apr.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, actuarial, eu, ca, xirr, xirr360, irr | default |
This field allows the calling application to specify an APR calculation
method which will override the default value found in the setup file for the given
Account. If this field is set to a valid value, then the
specified method will be used to compute the APR for this loan calculation.
If the Country field has been set by the calling application and
this field is not set, then the APR method used will be determined by the
specified country. For the United States of America, the default APR method is
actuarial. For a country in the European Union, the default value is
eu (European Union APR). For Canada, the default APR method is
ca (Canadian APR).
The xirr value implements the internal rate of return method as
implemented in Microsoft\textregistered Excel via the XIRR() function,
and is based on an actual day calendar with a 365 day divisor.
The xirr360 value implements the internal rate of return method based
upon a unit period calendar with a 360 day divisor.
The irr value implements a common spreadsheet internal rate of return
method which assumes strict regular periods. Deviating from a strict regular
periodicity may produce unreliable results.
If this field is not specified and the Country field is not
specified, then the value of default will be used which informs the
SCE to use the APR method defined in the setup file for the specified
Account.
🔹 Data.Apr.UseMAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to a value of true, then the SCE will compute the
Military APR in addition to the Regulation Z APR. The
MAPR object will be included in the loan
response.
🟦 Data.Construction
| Type | Required |
|---|---|
| Object | no |
The Construction object determines if this loan is a construction to permanent
loan request. If you wish to compute a construction loan without an attached
permanent loan, you will need to use either the
Construction or Loan modules.
Fields:
🔹HalfCommitment,🔹PPY,🔸Rate,🔸TermObjects:
None
🔹 Data.Construction.HalfCommitment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
During the term of the construction loan, the estimated interest for disclosure
purposes may be either computed on the full or half commitment amounts. By
setting this field to true, interest will be estimated using half of the
initial commitment amount (i.e. the principal balance). The default value of
false will cause interest to be estimated using the entire initial commitment
amount.
🔹 Data.Construction.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
The PPY field allows the calling application to specify the payment frequency
during the construction period. The default value of 12 will result in a
construction loan with 12 payments per year. If you require a payment frequency
during the construction period other than monthly, then specify it using this
field. Note that the permanent loan's payment frequency may differ from the
construction period's payment frequency.
🔸 Data.Construction.Rate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number in [-99.999...600] | n/a |
This field determines the rate applied to the appropriate commitment amount during the term of the construction loan.
🔸 Data.Construction.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Integer > 0 | n/a |
The term of the construction loan (in payments) is specified using this field. Please note that the term may not exceed five years.
🟦 Data.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
This array of Fee objects allows the calling application to specify one ore
more Fee objects to be included with the loan.
Fields:
🔹AddToFinChg,🔹AddToPrin,🔹Adjust,🔹CalcType,🔹Entry,🔹IsLoanCost,🔹MAPR,🔹Max,🔹Min,🔹NameObjects:
None
🔹 Data.Fees[].AddToFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this fee should be included in the computed Finance Charge (and hence, affect
the APR), then set this field to true. The default value of false indicates
that the fee does not affect the Finance Charge nor APR.
🔹 Data.Fees[].AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If this fee should be added to the principal balance (e.g. the fee is financed
along with the advance(s)), then set this field to true. If set to false,
then the fee is paid up front out of the borrower's pocket.
🔹 Data.Fees[].Adjust
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | 0 |
The optional Adjust field allows the calling application
to increase or decrease the base amount on which a fee is calculated.
If a negative value is specified and this adjustment would produce a
negative base amount, then a value of zero is returned for the given fee.
This field has no effect on fees with a CalcType of Dollar.
As an example, in Tennessee you may need to define a financed, non-APR affecting fee to be computed by decreasing the amount financed by $2,000, and then multiplying this reduced amount by 0.115. The way to accomplish this in the SCE is as follows:
{
"Fees" : [
{
"Name" : "TN Fee",
"CalcType" : "OnAmtFin",
"Adjust" : "-2000.00",
"Entry" : "0.115",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
🔹 Data.Fees[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Dollar, OnProceeds, OnPrincipal, OnAmtFin | Dollar |
This field specifies how the fee is to be computed, as described in the following table.
| Fee Calc Type | Description |
|---|---|
Dollar | The Entry field is understood as a flat dollar amount. |
OnProceeds | The Entry field is understood as a percentage value, to be applied to the loan's proceeds, defined as the sum of advances. An Entry of 0.25 would represent a fee of 0.25% of the total proceeds. |
OnPrincipal | The Entry field is understood as a percentage value, to be applied to the loan's principal balance. An Entry of 0.125 would represent a fee of 0.125% of the principal balance. |
OnAmtFin | The Entry field is understood as a percentage value, to be applied to the loan's Regulation Z Amount Financed. An Entry of 0.33 would represent a fee of 0.33% of the amount financed. |
🔹 Data.Fees[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
How this field is interpreted depends upon the Fee.CalcType field.
Please see the documentation for this field for further information.
🔹 Data.Fees[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which fees need to be considered "borrower paid loan costs",
as defined in the rule. Please note that if the fee is paid by a lender or other
third party, then the fee does not affect the loan calculation and should not be
sent to the SCE. If it is sent, then the value of this field should be set
to false.
🔹 Data.Fees[].MAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If you wish to compute the Military APR, then certain fees may not be considered Regulation Z APR affecting fees, but are considered Military APR affecting fees. In this case, you will need to set the value of this field to true.
Fees which are added to the finance charge (e.g. "AddToFinChg"
: true) are always considered MAPR fees, regardless of the stated value of this
field.
Note that debt protection products are automatically included in the calculation of the Military APR, no matter what method is used for payment (e.g. single premium vs. monthly outstanding balance).
🔹 Data.Fees[].Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then the maximum value will be used instead. If no maximum value is specified or is set to a value of zero, then no maximum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified maximum value is checked after enforcing a specified minimum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Min
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a minimum value for the fee is specified and is greater than zero, then if the computed fee is less than this minimum value, then the minimum value will be used instead. If no minimum value is specified or is set to a value of zero, then no minimum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified minimum value is checked before enforcing a specified maximum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the fee in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value will be determined by the value of the
Country field. For most countries, the default value is 2.
If no country code is specified, then the default value for this field is 2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
🟦 Data.MI
| Type | Required |
|---|---|
| Object | no |
The MI object determines if this loan includes one of the supported types of
mortgage insurance (MI): PMI or FHA. This object contains fields which further
specify mortgage insurance options.
Fields:
🔹CashDown🔹LoanAmt,🔸PropertyValue,🔹TypeObjects:
🟦 Periodic,🟥 Rates[],🟦 UpFront
🔹 Data.MI.CashDown
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The CashDown field represents a cash down payment made at closing. If
specified and greater than zero, this amount will be deducted from the principal
balance. If not specified, the cash down payment will default to zero.
🔹 Data.MI.LoanAmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field represents the amount by which the PMI rates are multiplied to produce a level PMI premium. If not specified, then the principal balance will be used to compute the annual premium.
🔸 Data.MI.PropertyValue
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
This field's value represents the appraised property value, and will be used in the calculation of the loan to value ratio.
🔹 Data.MI.Type
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | fha, pmi | pmi |
This field determines the type of mortgage insurance to include with the loan.
If the value of this field is set to fha, then a different MI premium is
computed every twelve months based upon the average outstanding principal
balance during that same term. The MI calculation adheres strictly to the HUD
regulation.
If the value of this field is set to pmi, then each defined MI rate produces a
level MI premium based upon the inital loan amount.
🟦 Data.MI.Periodic
| Type | Required |
|---|---|
| Object | no |
The fields of this object determine the conditions when MI is no longer included.
Fields:
🔹DropLTV,🔹Term,🔹WarnLTVObjects:
None
🔹 Data.MI.Periodic.DropLTV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
The value of this field determines the loan to value ratio at which MI should be
removed, and is expressed as a percentage. For example, if you wish to
automatically drop MI when the loan to value ratio first equals or falls below
78%, then you would specify "DropLTV" : "78.0".
🔹 Data.MI.Periodic.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
The value of this field represents the the term (in payments) beyond which MI will be removed.
As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify
{
"MI" : {
"Periodic" : { "Term" : "180"}
}
}
🔹 Data.MI.Periodic.WarnLTV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
The value of this field determines the loan to value ratio at which a warning
should be issued, and is expressed as a percentage of LTV (loan to value). For
example,if you wish to know when the loan to value ratio first equals or falls
below 80%, then you would specify "WarnLTV" : "80.0".
🟥 Data.MI.Rates[]
| Type | Required |
|---|---|
| Array of Rate Objects | yes |
This array if Rate objects defines the rates used to compute MI on the loan.
There must be at least one Rate object in the Rates[] array, and there can
be more than one if rates are set to switch at a specified payment number.
Objects:
None
🔸 Data.MI.Rates[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number>= 0.0 |
The value of this field specifies the cost of mortgage insurance per $100 of the loan amount. As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as
{
"MI" : {
"Rates" : [
{ "Rate" : "1.50"}
]
}
}
🔹 Data.MI.Rates[].Switch
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
This optional field defines the payment number beyond which the associated MI rate will apply. If not specified, the value will default to zero.
Thus, if there is only a single MI rate, one may omit this field (see example above).
Example of a MI multiple rate structure (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):
{
"MI" : {
"Rates" : [
{ "Rate" : "1.50"},
{ "Rate" : "0.20" , "Switch" : "120"}
]
}
}
🟦 Data.MI.UpFront
| Type | Required |
|---|---|
| Object | no |
This object determines if there is an up front fee for mortgage insurance, and if so, how it is computer. If this object is not present in the request, then no up front fee will be computed. Note that ZOMP (zero option monthly premium) products do not have an up front fee, which means that this object should be omitted.
Fields:
🔹Paid,🔹Reduce,🔹Units,🔹ValueObjects:
None
🔹 Data.MI.UpFront.Paid
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | atclosing, bylender, financed | atclosing |
If the value of this field is set to financed, then the computed up front fee
will be added to the principal balance and the finance charge. A value of
atclosing will cause the value of the fee to be added to the finance charge
alone. Finally, a value of bylender means that the up front fee is to be paid
by the lender, hence the value of the fee is not added to either the principal
balance nor the finance charge.
🔹 Data.MI.UpFront.Reduce
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the specified number of periodic premiums to include as an up front fee is greater than zero, then this field determines if the term of coverage for PMI will be reduced by the same amount.
🔹 Data.MI.UpFront.Units
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | months, points, years | months |
If the Units field is set to months, then
UpFront.Value represents the number of periodic MI
premiums to be paid at closing.
If the Units field is set to Years, then
UpFront.Value represents the number of annual MI premiums
to be paid at closing. Many single premium products define the up front fee as a
number of years of MI to be paid up front.
Finally, if the Units field is set to Points, then
UpFront.Value represents the percentage of principal to
be paid up front. As of October 3, 2011, FHA loans use points.
🔹 Data.MI.UpFront.Value
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If part of the MI fees are to be paid up front, then value of this field must be
grater than zero. How the value of this field is interpreted depends upon the
Units field (see below).
The default value of zero means that no up front fee will be computed.
🟦 Data.ODI
| Type | Required |
|---|---|
| Object | no |
If odd days should be treated as a prepaid finance charge or added to the first payment in a manner different from how interest is accruing, then the request needs to define how odd days interest is computed and handled using the fields of this object.
Fields:
🔹AccrualCode,🔹AddToPmt,🔹AddToPrin,🔹AnchorDate,🔹ForceUnitPeriod,🔹NoCap,🔹UseDailyCost,🔹UseNegODIObjects:
None
🔹 Data.ODI.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 204, 205, 210, 211, 220, 221, 230, 231, 250 | default |
The accrual code defines how the odd days interest is computed. The meaning of the allowed accrual codes is defined below.
Note that accrual code 250 ("Variable Days Per Year") defines the basis
divisor days to be equal to 12 multiplied by the number of days in the month of
the date on which interest begins to accrue. Thus, if the interest start date
falls in November, then the number of basis days is 360. If the interest start
date falls in a month with 31 days, then the number of basis days is 372. For an
interest start date in February, the number of basis days will either be 336 or
348, depending upon whether or not it is a leap year.
| Accrual Code | Description |
|---|---|
204 | True360/360 |
205 | True360/365 |
210 | Actual/360 |
211 | True365/360 |
220 | Actual/365 |
221 | True365/365 |
230 | Actual/Actual |
231 | Midnight 366 |
250 | Actual/Variable Days Per Year |
🔹 Data.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application wants the odd days interest to be added to the first
payment, then set the value of this field to true. A value of false
indicates that the odd days interest will be treated as a prepaid finance
charge.
🔹 Data.ODI.AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If any odd days interest should be treated as a financed prepaid fee, then set
the value of this field to true. Note that if both AddToPmt and AddToPrin
are set to true, then a warning message will be returned by the SCE and the
value of AddToPrin will be set to false.
🔹 Data.ODI.AnchorDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | BackUnitPeriod, BackDaysPerPeriod | BackUnitPeriod |
The computed number of odd days is the number of days between the loan date and
the anchor date. This field determines how to arrive at the anchor date. A value
of BackUnitPeriod means that the anchor date is one unit period prior to the
specified first payment date. A value of BackDaysPerPeriod means that the
anchor date is the number of days per period prior to the first payment date.
Please note that for both of these methods, the period used will be that
associated with the payment stream in which the first payment occurs.
🔹 Data.ODI.ForceUnitPeriod
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Some unit period methods will not use a strict unit period interest accrual
factor in the period to the first payment. For example, code 302 will count
the days to the first payment and divide by 365. For a monthly loan, setting
this field to true will use a 1/12 factor instead of Days/365.
🔹 Data.ODI.NoCap
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When the odd days interest is financed, setting this field to true prevents
interest from being computed on interest. The default is false, which means
interest will be computed on interest.
🔹 Data.ODI.UseDailyCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the total odd days prepaid fee is computed by first generating a rounded (to
the nearest penny) daily cost and then multiplying this value by the computed
number of odd days, then set the value of this property to true.
A value of false means that the daily cost is left unrounded, and the total
prepaid fee is rounded after the computation is complete.
🔹 Data.ODI.UseNegODI
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If there are negative odd days in the loan, then the value of this field
determines if a negative odd days interest fee is computed. If the value of this
field is false, then negative odd days fees are not allowed, the SCE will
return a value of zero in this situation, and the computed payment will be
adjusted to take into account the negative odd days. A value of true will
return a negative odd days interest fee (in effect, it then becomes and odd days
interest credit) when there are negative odd days in a loan.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
The Protection object is used by the calling application to request one or
more payment protection products (e.g. life, disability, involuntary
unemployment, or personal property) be included in the loan calculation. Each of
these products is requested by including its own child object, along with
the borrower birthdays.
Fields:
🔹Birthday1,🔹Birthday2,🔹LineOfCredit,🔹Mandatory,🔹ShowBorrowerInfo,🔹ShowCapsObjects:
🟦 Disability,🟦 Life,🟦 Property,🟦 Unemployment
🔹 Data.Protection.Birthday1
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the secondary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday2" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower2 or both.
🔹 Data.Protection.Birthday2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the primary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday1" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower1 or both.
🔹 Data.Protection.Financed
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the computed premiums for single premium debt protection products should be
financed along with the proceeds, then this field should be set to true (which
is the default value if not specified). A value of false indicates that the
computed premiums will not be financed with the proceeds, and hence will be paid
out of pocket by the borrower. Note that this applies to single premium
insurance products only!
🔹 Data.Protection.LineOfCredit
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this is an account using TruStage's MOB insurance, and if this loan is a
line of credit where product term caps should be ignored, then set this field to
true. Otherwise, omit this field or set it to false.
🔹 Data.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then any computed payment
protection premium or fee will be considered a mandatory fee which will be
included as a part of the Finance Charge, and hence affect the disclosed APR.
If the Mandatory field is set to false, then the loan will treat any
premiums / fees as normal.
🔹 Data.Protection.ShowBorrowerInfo
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have data returned for each specified
borrower instead of a single Term object, then set the value of this field to
true. Otherwise, omit this field or set it to false. See the Borrower and
Term objects defined in the response section for more information.
🔹 Data.Protection.ShowCaps
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have cap information (e.g. maximum
terms, coverage amounts, ages, etc.) returned for each product offered, set the
value of this field to true. Otherwise, omit this field or set it to false.
See the Caps object defined in the response section for more information.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
The Disability object determines what type of disability coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTerm,🔹TableObjects:
None
🔹 Data.Protection.Disability.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Disability.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Disability object altogether or specify a value of none.
🔹 Data.Protection.Disability.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Disability.Table
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0...19] | 0 |
If the specified account has been set up with multiple disability or debt cancellation plans, then this field determines which plan number will be used. If no table number is specified, the first table (table zero) will be used.
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
The Life object determines what type of life coverage is
requested for the loan.
Fields:
🔹CovAmount,🔹Covers,🔹CovTerm,🔹Dismemberment,🔹Method,🔹UseLevelRatesObjects:
None
🔹 Data.Protection.Life.CovAmount
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a coverage amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum coverage amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user specified coverage amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Life.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Life object altogether or specify a value of none.
🔹 Data.Protection.Life.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Life.Dismemberment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer life protection products with
optional dismemberment coverage, and if the optional dismemberment coverage is
desired, then set this field's value to true. Otherwise, use the default value
of false.
🔹 Data.Protection.Life.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Default, Gross, Net | Default |
Some accounts are configured to offer different types of credit life products (usually gross and net). In these accounts, this field allows the calling application to specify which method to use for a given loan. If no method is present in the request, then the default method will be used.
🔹 Data.Protection.Life.UseLevelRates
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer single premium credit life
using level rates instead of the normal decreasing rates, and if you wish to use
level rates instead of decreasing, then set this field's value to true.
Otherwise, use the default value of false.
🟦 Data.Protection.Property
| Type | Required |
|---|---|
| Object | no |
The Property object determines what type of property coverage is
requested for the loan.
Objects:
None
🔹 Data.Protection.Property.Coverage
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Property.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. A value of borrower1 represents single coverage on the primary
borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Property object altogether or specify a value of none.
🟦 Data.Protection.Unemployment
| Type | Required |
|---|---|
| Object | no |
The Unemployment object determines what type of unemployment coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTermObjects:
None
🔹 Data.Protection.Unemployment.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Unemployment.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Unemployment object altogether or specify a value of none.
🔹 Data.Protection.Unemployment.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🟦 Data.ServiceCharges[]
| Type | Required |
|---|---|
| Array of ServiceCharge Objects | no |
This array of ServiceCharge objects allows the calling application to specify
one ore more Service Charge objects to be included with the loan.
Fields:
🔹CalcType,🔸Entry,🔹Exact,🔹IsLoanCost,🔹Name,🔹RoundObjects:
None
🔹 Data.ServiceCharges[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | LumpSum, Periodic | LumpSum |
A service charge of type LumpSum allows the calling application to
specify an amount that will be spread out evenly over the loan's payment
stream. On the other hand, a Periodic service charge is the amount
which will be added to each payment.
🔸 Data.ServiceCharges[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Floating >= 0 | n/a |
How this field is interpreted depends upon the
ServiceCharge.CalcType field.
It is the numeric amount defining either the lump sum or periodically paid
service charge.
🔹 Data.ServiceCharges[].Exact
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
The Exact field is only considered when the service charge is of type
LumpSum. When the calculated periodic amount is rounded, it will most often
times produce a total service charge amount that differs from what was
specified.
If the Exact field is set to true, then the final periodic amount will
be adjusted so that the sum of all periodic amounts is exactly equal to the
entered amount (and will result in an odd final payment). A value of false
indicates that the final periodic amount will not be adjusted.
🔹 Data.ServiceCharges[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which service charges need to be considered "borrower paid
loan costs", as defined in the rule. Please note that if the fee is paid by a
lender or other third party, then the fee does not affect the loan calculation
and should not be sent to the SCE. If it is sent, then the value of this
field should be set to false.
🔹 Data.ServiceCharges[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the service charge in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🔹 Data.ServiceCharges[].Round
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | nearest, up, down | nearest |
This field is only considered when the service charge is of type
LumpSum. It determines how the calculated periodic amount
is rounded.
🟦 Data.Settings
| Type | Required |
|---|---|
| Object | no |
The Settings object allows the calling application to alter the default
loan calculation options.
Fields:
🔹Account,🔹AccrualCode,🔹ConMethod,🔹DataPath,🔹Lastday,🔹PmtDollarRound,🔹PmtRound,🔹ShowAmTable,🔹TILARESPA2015,🔹YieldPPYObjects:
None
🔹 Data.Settings.Account
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..9999] | 1 |
The Account field specifies the numeric setup file account number that will be
used to compute the requested loan. Each account is numbered from 1 to 9,999,
and each account corresponds to a set of setup file which define numerous
settings which may affect the loan calculation, such as the accrual method,
insurance methods / rates / caps, etc.
🔹 Data.Settings.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | see table | default |
The method of interest accrual is defined by this field. A value of default
informs the SCE to use the interest accrual method defined in the setup file for
the specified Account. All other valid accrual codes
are described in the table below.
🔹 Data.Settings.ConMethod
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, simple, interestonly | default |
When computing a construction loan, there are two supported methods for computing interest during the constrcution period:
If the value of this field is simple, then the estimated construction
interets will be computed and disclosed as a lup-sum prepaid fee (see
the Moneys.ConstructInterest
response field).
If the value of this field is interestonly, then the construction and
permanent loans are combined into a single loan, with the construction (and
permanent) loan's interest being reflected in the
Moneys.Interest field, and
both loans reflected in a single, combined amortization schedule.
A value of default instructs the SCE to use the construction method specified
in the setup file for the given account.
🔹 Data.Settings.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔹 Data.Settings.Lastday
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | as configured in setup file |
If present, this field overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day accrual calendar where the first payment date falls at the end of a month with fewer than 31 days. As an example, if the first payment date is on April 30, should the following payment dates be made on the 30th of each month, or on the last day of the month?
If no value is specified for this field, then the setup file setting will be
used. If true is specified, then conditions triggering a last day situation
will result in payments which fall at the end of the month. A value of false
indicates that when dictated, subsequent payment dates will not be moved to the
last day of the month.
🔹 Data.Settings.OddFinal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Following the last payment of an amortization schedule, the ending balance is unlikely to be zero due to the rounding of the payment. In order to assure perfect amortization, lenders will use an odd final payment to perfectly amortize the loan.
Set OddFinal to true to ensure perfect amortization with a payment that
pays off the loan.
🔹 Data.Settings.PmtDollarRound
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Payments are normally rounded to the penny, according to the method specified by
in the setup file, or vy theSettings.PmtRound field. If
the payment should be rounded to the dollar instead of the penny, then set
the value of this field to true.
Note that for some loans (such as those with longer terms or relatively small proceeds), rounding the payment up or to the nearest dollar may require a shortened loan term to prevent one or more negative payments at the end of the loan.
🔹 Data.Settings.PmtRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, nearest, up, down, best | default |
How are calculated payments to be rounded at and beyond this event? best means
to choose the payment that returns a minimal ending balance at the end of
amortization. If two payments result in the same minimal error magnitude, the
smaller payment is chosen. default means that the setting should be configured
as specified in the setup file.
🔹 Data.Settings.ShowAmTable
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
To supress the entire amortization schedule from the response, set value of this
field to false; otherwise, the amortization schedule will be returned with the
response.
🔹 Data.Settings.TILARESPA2015
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will include data for the
Integrated Mortgage Disclosures under the Real Estate Settlement Procedures Act
(Regulation X) and the Truth In Lending Act (Regulation
Z) rule, which is
required as of August 1st, 2015. If the field is omitted or set to false, then
the TILA RESPA outputs will not be generated.
Note that this field is supported for equal payment loans, balloon payment loans, single payment notes, interest only loans, fixed principal plus interest loans, skips, pickups and irregulars, and ARMs.
🔹 Data.Settings.YieldPPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0, 2, 4, 6, 12 | 0 |
Canadian mortgages may compute periodic interest using a fractional power of a periodic yield. If set to a value other than `0', this field determines the period. Please contact us for further information if you support mortgage calculations in Canada. Note that when using this field with a value other than zero, the calling application must include an odd days prepaid fee in the request.
Equal Payment Loan Module - Response
The Data object for a response from the EqualPmt module is defined below, in the
order the fields are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔹CountryObjects:
🟥 Errors[],🟥 Warnings[],🟥 Results,🟦 FedBox,🟦 TILARESPA2015,🟦 Moneys,🟦 Accrual,🟦 PMI,🟦 PmtStreams[],🟦 Protection,🟦 AmTable
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
If the request specified a two-character or three-digit Country code, then
this field will be present and will contain the full name of the country
associated with the specified code. Please see the Countries
Appendix for the list of supported countries and their
associated codes.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "EqualPmt",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?",
"IntRate" : "4.50",
"Proceeds" : "5000.00",
"Term" : "12"
}
}
{
"Result" : 200,
"Module" : "EqualPmt",
"Data" : {
"Errors" : [
"Data.LoanDate (StringDate) not found.",
"Data.PmtDate (StringDate) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟦 Data.Results
| Type | Required |
|---|---|
| Object | no |
This field(s) of this object represent the most important numerical results for the loan request.
Fields:
🔹Proceeds,🔸Payment,🔹Final,🔹TermObjects:
None
🔹 Data.Results.Proceeds
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | n/a |
If the EqualPmt request indicated that the Proceeds be computed (by specifying
the IntRate, Term,
and Payment), then the computed proceeds
will be disclosed in this field.
If the EqualPmt request was to compute the Payment
or Term, then this field will not be included
in the response.
🔸 Data.Results.Payment
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The regular payment for the equal payment loan.
🔹 Data.Results.Final
| Type | Required | Values |
|---|---|---|
| String | no | Currency |
If the equal payment loan features an odd final payment (see
Settings.OddFinal) which amortizes the
loan to zero, then this field will be present.
🔹 Data.Results.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer | n/a |
If the EqualPmt request indicated that the Term be computed (by specifying
the IntRate, Proceeds,
and Payment), then the computed Term will
be disclosed in this field. Note that the value of this field represents the largest
loan term to produce a payment less than or equal to the specified payment.
If the EqualPmt request was to compute the Payment or Proceeds, then this field
will not be included in the response.
🟦 Data.FedBox
| Type | Required |
|---|---|
| Object | no |
This object groups together all fields which contain important numerical information, as defined in the Truth-In-Lending laws (Regulation Z).
Fields:
🔸AmtFin,🔸FinChg,🔸TotPmts,🔹TotalSalePrice
🔸 Data.FedBox.AmtFin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The Regulation Z Amount Financed, which is defined as the amount of credit provided to the borrower or on their behalf.
🔸 Data.FedBox.FinChg
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost the borrower.
🔸 Data.FedBox.TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The amount which the borrower will have paid when the borrower has made all scheduled payments.
🔹 Data.FedBox.TotalSalePrice
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The sum of the total of payments plus the total down payment. Please note that
if no TotalDown field was included in
the request, then this element will not be present.
🟥 Data.FedBox.APR
| Type | Required |
|---|---|
| Object | yes |
The APR object contains fields which return the value and APR method used.
Fields:
🔸Value,🔹Max,🔹MaxExceeded,🔸TypeObjects:
None
🔸 Data.FedBox.APR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed APR, which is the cost of the extension of credit expressed as a yearly rate.
🔹 Data.FedBox.APR.Max
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Number | n/a |
This field returns the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this field will not be present in the response. The value of this field should be displayed as a percentage.
🔹 Data.FedBox.APR.MaxExceeded
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If a maximum APR is configured in the account's setup files, then the value of this field indicates whether or not the current loan exceeds the maximum APR. If no maximum APR has been specified, then this field will not be present in the response.
🔸 Data.FedBox.APR.Type
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field returns the APR method used to compute the reported APR.
🟦 Data.FedBox.MAPR
| Type | Required |
|---|---|
| Object | no |
The MAPR (military APR) object is only returned with the response if the value
of the Apr.UseMAPR request field is true.
Fields:
🔸Value,🔸Advance,🔸Max,🔸MaxExceededObjects:
None
🔸 Data.FedBox.MAPR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed military APR.
🔸 Data.FedBox.MAPR.Advance
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.
🔸 Data.FedBox.MAPR.Max
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
This field holds the maximum Military APR as specified in the input XML (see
Apr.MAPR_Max). If not specified, a default value
of 36% is assumed. The value of this field should be displayed as a percentage.
As an example, for "Max" :"36.000", you would disclose a maximum Military APR
of 36%.
🔸 Data.FedBox.MAPR.MaxExceeded
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
The value of this field indicates whether or not the current loan exceeds the
maximum allowed Military APR. As an example, if the maximum APR has been set to
36% and the Military APR for the returned loan was 37.125%, the MAPR object
would be:
{
"MAPR" : {
"Value" : "37.125",
"Advance" : "1350.00",
"Max" : "36.000",
"MaxExceeded" : true
}
}
🟦 Data.TILARESPA2015
| Type | Required |
|---|---|
| Object | no |
This object contains fields which are of interest to fulfilling the 2015 TILA
RESPA rule. It will only be present if the
Settings.TILARESPA2015 field in
the request is set to true.
Fields:
🔸TotalLoanCost,🔸CD_TotPmts,🔸TIPObjects:
🟥 LoanCosts[],🟥 In5Years,🟥 MaxPnIPmt,🟥 MinRate,🟥 MaxRate,🟥 ProjectedPaymentsTable[]
🔸 Data.TILARESPA2015.TotalLoanCost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The value of this field is the sum of all borrower paid loan costs. Since all
LoanCost values are rounded dollar amounts, the value of this
element will also be a rounded dollar amount.
🔸 Data.TILARESPA2015.CD_TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the sum of the total of payments, all borrower paid loan costs, and any odd days interest that is prepaid at loan closing. This value should be disclosed on the Closing Disclosure form in the Total of Payments field.
🔸 Data.TILARESPA2015.TIP
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The total interest percentage, rounded to three or fewer decimal places - as required.
🟥 Data.TILARESPA2015.LoanCosts[]
| Type | Required |
|---|---|
| Array of LoanCost Objects | yes |
For every object in the Fees[] array present in
the request which has its IsLoanCost
field set to true (and hence, is a borrower paid loan cost) and whose amount
is greater than zero (except odd days interest fee types, as explained in the
previous documentation of the Fee and object),
there will be a corresponding LoanCost object.
Fields:
🔹Name,🔹In5Years,🔸ValueObjects:
None
🔹 Data.TILARESPA2015.LoanCosts[].Name
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔹 Data.TILARESPA2015.LoanCosts[].In5Years
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | Same as Value |
If the entire amount of the fee is different from the amount collected over the first five years (for example, a service charge), then this field will be present and disclose the portion of this loan coast that is accrued during the first five years.
🔸 Data.TILARESPA2015.LoanCosts[].Value
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field is the numerical value of the fee, rounded to the nearest dollar.
🟥 Data.TILARESPA2015.In5Years
| Type | Required |
|---|---|
| Object | yes |
This object contains all important values required for the new "In 5 Years" section of the disclosure.
Fields:
🔸PaidTotal,🔸PaidPrincipalObjects:
None
🔸 Data.TILARESPA2015.In5Years.PaidTotal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds the sum of all "principal, interest, mortgage insurance, and borrower paid loan costs scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🔸 Data.TILARESPA2015.In5Years.PaidPrincipal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds "the principal scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🟥 Data.TILARESPA2015.MaxPnIPmt
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold the maximum sceduled principal and interest payment during the term of the loan, as well as the date on which that payment is made.
Objects:
None
🔸 Data.TILARESPA2015.MaxPnIPmt.Date
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field returns the date on which the maximum scheduled principal and interest payment is made. If the maximum scheduled payment occurs more than once, then the date returned is that of the first instance.
🔸 Data.TILARESPA2015.MaxPnIPmt.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The maximum sceduled principal and interest payment during the term of the loan.
🟥 Data.TILARESPA2015.MinRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the minimum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MinRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the minimum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MinRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the minimum rate is first applicable.
🟥 Data.TILARESPA2015.MaxRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the maximum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MaxRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the maximum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MaxRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the maximum rate is first applicable.
🟥 Data.TILARESPA2015.ProjectedPaymentsTable[]
| Type | Required |
|---|---|
Array of PPCol Objects | yes |
Fields:
🔸Num,🔸Title,🔸YearStart,🔸YearEnd,🔸PnIPmtMin,🔸PnIPmtMax,🔸IntOnly,🔸Balloon,🔸MIPmt,🔸TotalPmtMin,🔸TotalPmtMaxObjects:
None
This field returns an Array of projected payment table columns (PPCol), with
each array member detailing a single column. Per the regulation, there will be a
minimum of one column and a maximum of four columns, depending upon the
parameters of the loan.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Num
| Type | Required | Value |
|---|---|---|
| String | yes | Integer in [1...4] |
The value of this field identifies the number of the column to which the following fields apply. The value will be from 1 to 4.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Title
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
The value of this field is the title for the column. Most of the time, it will
be in the form of Years X - Y, or Year X, or Final Payment in the case of
a final balloon payment.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearStart
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The beginning year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearEnd
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The ending year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The minimum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The maximum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].IntOnly
| Type | Required | Value |
|---|---|---|
| String | yes | none, some, all |
If none of the payments associated with this column are interest only payments,
then the value of this field will be none. A value of some means that some
of the payments (but not all) associated with this columnt are interest only.
Finally, a value of all indicates that all payments associated with this
columnt are interest only.
Note that for the purposes of this field, a scheduled payment is considered an interest only payment if the payment amount pays off all interest due at the time of the payment, with no reduction in the principal balance.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Balloon
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
If any of the payments associated with this column are balloon payments (e.g.
isolated payments that are more than twice the value of a regular periodic
payment), then the value of this field will be true.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].MIPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The value of this field holds the mortgage insurance premium associated with this column, rounded to the nearest dollar. If no mortgage insurance is present or coverage has been dropped, a value of zero will be present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the minimum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the maximum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🟦 Data.Moneys
| Type | Required |
|---|---|
| Object | no |
This element groups together those other major cash result amounts not disclosed
under the FedBox object, such as the principal balance, interest charge,
and fee amounts.
Fields:
🔸Principal,🔸Interest,🔹ConstructInterest,🔹FinFees,🔹Prepaid,🔹PocketFees,🔹MAPRFees,🔹PMI_Fee,🔹MinIntChgAdj,🔹MinFinChgAdjObjects:
🟦 ODI,🟦 Fees[],🟦 ServiceCharges[],🟦 Protection
🔸 Data.Moneys.Principal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance is the amount on which interest is accrued. The principal balance consists of all advances requested by the borrower, as well as any fees and/or protection products which are financed.
🔸 Data.Moneys.Interest
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This value of this field holds the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.
🔹 Data.Moneys.ConstructInterest
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If the requested loan is a construction loan with a permanent loan attached and the account specified is set up to compute construction loans via the "Simple" method, then this field will contain the construction interest for the requested loan.
Note that if a permanent loan is attached to a construction loan and the
account is set up to use the "LaserPro" method, then the construction
and permanent loans are combined into a single loan, with the construction
(and permanent) loan's interest being reflected in the
Moneys.Interest field, and both loans reflected in a single,
combined amortization schedule.
If the requested loan is a construction loan without a permanent loan
attached, then the construction interest will be disclosed in the
Moneys.Interest field.
If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this field will not appear in the response.
🔹 Data.Moneys.FinFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field contains the sum of all fees having AddToPrin
set to true and occuring on the date of an advance. If this
value is zero, the field will not appear in the response.
🔹 Data.Moneys.Prepaid
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field represents all prepaid finance charges and contains the sum of all
fees occurring on an advance and having AddToFinChg
set to true. If this value is zero, the field will not be found in the response.
🔹 Data.Moneys.PocketFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are neither financed, nor added to the finance charge. In essence, they are paid out of the borrower's pocket. If no out of pocket fees were requested, then this field will not show up in the response.
🔹 Data.Moneys.MAPRFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are Military APR fees (including protection products), and will only appear if the Military APR has been requested.
🔹 Data.Moneys.PMI_Fee
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If PMI has been requested on the loan, and if a number of UpFront
payments have been specified, then this field will return the total PMI
fee for all up front payments.
🔹 Data.Moneys.MinIntChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum interest charge is configured in the account's setup files and the final payment was adjusted to meet this minimum interest charge, then this field will be returned in the response and will contain the value of the minimum interest charge adjustment.
🔹 Data.Moneys.MinFinChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum finance charge is configured in the account's setup files and the final payment was adjusted to meet this minimum finance charge, then this field will be returned in the response and will contain the value of the minimum finance charge adjustment.
🟦 Data.Moneys.ODI
| Type | Required |
|---|---|
| Object | no |
This object, if present, contains information regarding odd days interest. If no odd days interest was requested, then this object will not be present in the response.
Fields:
🔹AddToPmt,🔸Count,🔸Fee,🔹Months,🔹DailyCostObjects:
None
🔹 Data.Moneys.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If the odd days interest has been added to the first payment, then this field
will be present in the response with a value of true. If the odd days interest
has been treated as a prepaid finance charge, then this field will not be
present and a default value of false should be assumed.
🔸 Data.Moneys.ODI.Count
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Discloses the number of odd days computed by the SCE for the requested loan.
🔸 Data.Moneys.ODI.Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total amount odd days interest charge.
🔹 Data.Moneys.ODI.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field holds the number of odd months computed by the SCE for the requested
loan when using odd days accrual method 250. If the odd days accrual method is
a value other than 250, then this field will not be present in the ODI
object of the response.
🔹 Data.Moneys.ODI.DailyCost
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | n/a |
If the odd days interest fee is computed using a rounded daily cost, then the value of this field will hold that value. If the odd days interest is not computed using a rounded daily cost, then this field will not be present in the response.
🟦 Data.Moneys.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
If the requested loan included fees, then for each fee in the loan there will be a Fee object in this array containing the name of the fee and the computed fee amount.
If there were no fees requested with the loan, then the Moneys.Fees[] array
will not be included in the response.
Objects:
None
🔹 Data.Moneys.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.Fees[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed fee amount.
🟦 Data.Moneys.ServiceCharges[]
| Type | Required |
|---|---|
| Array of ServiceCharge Objects | no |
If the requested loan included service charges, then for each service charge in the loan there will be a ServiceCharge object in this array containing the name of the service charge and the computed service charge amount.
If there were no service charges requested with the loan, then the
Moneys.ServiceCharges[] array will not be included in the response.
Objects:
None
🔹 Data.Moneys.ServiceCharges[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the service charge, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.ServiceCharges[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed service charge amount.
🟦 Data.Moneys.Protection
| Type | Required |
|---|---|
| Object | no |
This object returns summary information on all payment protection products computed with the loan. If no protection products were included with the loan, then this object will be omitted from the response.
Fields:
🔸Cost,🔸PerPmt,🔸PerDay,🔸Category,🔹IsDP,🔹MandatoryObjects:
None
🔸 Data.Moneys.Protection.Cost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total cost of all protection plans included with the
computed loan. For the individual plan costs, see the
Protection field described below.
🔸 Data.Moneys.Protection.PerPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per payment.
🔸 Data.Moneys.Protection.PerDay
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per day.
🔸 Data.Moneys.Protection.Category
| Type | Required | Values |
|---|---|---|
| String | yes | None, SP, MOB, TrueMOB, PaidSP |
Te value of this field specifies the category under which the computed loan protection falls. The categories are described below:
| Category | Description |
|---|---|
None | No loan protection products were computed with this loan. |
SP | Financed single premium coverage. |
MOB | Monthly outstanding balance coverage. |
TrueMOB | TruStage's monthly outstanding balance method. |
PaidSP | Non-financed single premium coverage. |
🔹 Data.Moneys.Protection.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field indicates if the specified account's protection is set up as debt
protection. If this field is not present, then the default value of false
should be used (which indicates that the account's protection is set up as
insurance instead).
🔹 Data.Moneys.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field should only appear in the response if the value of the is true.
If this field does not appear in the output, then the value should default to
false.
If the value of the Mandatory field is true, then the total premium / fee
amount for all insurance / debt protection products has been treated as a part
of the Finance Charge, and hence will affect the effective APR.
🟦 Data.Accrual
| Type | Required |
|---|---|
| Object | no |
This object groups together interest accrual information, such as the accrual method(s) used, days to the first payment and the loan's maturity date.
Fields:
🔸Method,🔸Days1Pmt,🔸DayCount,🔸MaturityObjects:
None
🔸 Data.Accrual.Method
| Type | Required | Values |
|---|---|---|
| String | yes | Text |
The Method field contains a textual description of the interest accrual method
used to compute the loan (e.g. "Unit Period 365 Simple".)
🔸 Data.Accrual.Days1Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field contains the number of days between the date of the first
advance and the date of first payment, computed by one of two
methods as specified in by Accrual.DayCount (below).
🔸 Data.Accrual.DayCount
| Type | Required | Values |
|---|---|---|
| String | yes | True360, Actual |
This field specifies the method used to compute the number of days from the date
of the first advance until the first payment date. Actual means that the
actual number of days between these two dates are used, whereas the True360
method use a 360 day calendar.
🔸 Data.Accrual.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
Holds the maturity date of the loan, which is the date on which the last
payment is scheduled. All dates are in the form of YYYY-MM-DD, and must
be 10 characters long.
🟦 Data.PMI
| Type | Required |
|---|---|
| Object | no |
The PMI object will only appear if PMI has been computed with the loan. Please
note that the PMI premiums are not reflected in the amount reported in the
Results.Payment field, the PmtStreams[]
array, the FedBox.TotPmts field, nor the
Pmt field of the AmTable.AmLines[] array.
Fields:
🔸Rate,🔸LTV,🔸PremiumPerYear,🔸PremiumPerPeriod,🔹IndexToWarn,🔹IndexToRemoveObjects:
None
🔸 Data.PMI.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | % >= 0 |
The percentage rate used in the PMI calculation.
🔸 Data.PMI.LTV
| Type | Required | Values |
|---|---|---|
| String | yes | % >= 0 |
The loan to value ratio of the computed loan, expressed as a percentage.
🔸 Data.PMI.PremiumPerYear
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The annual PMI premium amount.
🔸 Data.PMI.PremiumPerPeriod
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The periodic PMI premium amount.
🔹 Data.PMI.IndexToWarn
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
This field only appears if the
WarnLTV PMI input field is specified,
and indicates that the payment index on which the remaining principal balance to
home value ratio drops below the specified percentage.
🔹 Data.PMI.IndexToRemove
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
This field only appears if the
DropLTV PMI input field is specified,
and indicates that the payment index on which the remaining principal balance to
home value ratio drops below the specified percentage. PMI coverage stops
after this payment.
🟦 Data.PmtStreams[]
| Type | Required |
|---|---|
| Object | no |
The PmtStreams[] array is made up of one or more PmtStream objects (there
will always be at least one of these elements, and there may be more than one
depending upon the loan type). The PmtStream objects describe the scheduled
stream of payments for the computed loan. Instead of disclosing each and every
payment individually (which can be done with the AmTable object),
the payment stream groups together consecutive equal payments at the same
interest rate to produce output along the lines of:
{
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "50.13",
"Rate" : "4.500",
"Begin" : "2022-10-01"
},
{
"Term" : "10",
"Pmt" : "37.59",
"Rate" : "4.500",
"Begin" : "2022-11-01"
},
{
"Term" : "1",
"Pmt" : "10062.59",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
]
}
Each object describes a single stream of equal payments at the same interest rate, using the following fields to define the important properties of each payment stream.
Fields:
🔸Term,🔸Pmt,🔸Rate,🔸BeginObjects:
Note
🔸 Data.PmtStreams[].Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The Term field holds the number of payments that make up the given payment
stream.
🔸 Data.PmtStreams[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The Pmt field holds the computed payment amount for this payment stream.
🔹 Data.PmtStreams[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number |
Contains the interest rate used for the duration of this payment stream. If this payment stream accrued interest using split-rate tiers, then this field will not be returned.
🔸 Data.PmtStreams[].Begin
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field identifies the date on which the first payment for this given payment
stream is scheduled to be made. All dates are in the form of YYYY-MM-DD, and
must be 10 characters long.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
If protection products are requested, then this object will be present in the response, along with a field for each requested protection product.
Fields :
NoneObjects:
🟦 Life,🟦 Level,🟦 Disability,🟦 Unemployment,🟦 Property
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
If life protection was requested with the loan and decreasing life was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing life coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Life.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Life.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Life.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Life.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Life.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Life.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Life.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Life.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Life.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary life product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Life.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Life.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Life.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Life.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this object
will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Life.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Life.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Life.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Life.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Level
| Type | Required |
|---|---|
| Object | no |
If level protection was requested with the loan and decreasing level was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing level coverage.
Objects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Level.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Level.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🟦 Data.Protection.Level.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Level.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Level.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Level.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Level.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Level.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary Level product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Level.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Level.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Level.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Level.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Level.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Level.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Level.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Level.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
If disability protection was requested with the loan and decreasing disability was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing disability coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Disability.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Disability.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Disability.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Disability.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Disability.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Disability.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Disability.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Disability.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Disability.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Disability.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Disability.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Disability.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Disability.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Disability.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Disability.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Disability.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Borrower2
| Type | Required |
|---|---|
| Object | no |
The borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Disability.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Unemployment
| Type | Required |
|---|---|
| Object | no |
If unemployment protection was requested with the loan and decreasing unemployment
was configured for this loan type, then the Life object will be present in the
response to return information on decreasing unemployment coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Unemployment.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Unemployment.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Unemployment.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Unemployment.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Unemployment.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Unemployment.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Unemployment.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Unemployment.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Unemployment.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Unemployment.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Unemployment.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Unemployment.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Unemployment.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Unemployment.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Unemployment.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Unemployment.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Unemployment.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Unemployment.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Unemployment.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Unemployment.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Unemployment.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Unemployment.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Unemployment.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Unemployment.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Unemployment.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Unemployment.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Unemployment.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Unemployment.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Unemployment.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Unemployment.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Unemployment.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Property
| Type | Required |
|---|---|
| Object | no |
If property protection was requested with the loan and decreasing property was
configured for this loan type, then the Property object will be present in the
response to return information on decreasing property coverage.
Objects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Property.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Property.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🟦 Data.Protection.Property.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Property.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Property.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Property.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Property.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Property.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Property.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Property.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Property.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Property.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Property.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Property.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Property.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Property.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Property.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Property.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Property.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Property.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Property.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Property.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Property.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Property.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Property.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Property.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Property.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Property.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Property.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Property.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Property.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Property.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Property.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Property.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Property.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Property.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Property.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.AmTable
| Type | Required |
|---|---|
| Object | no |
This object contains fields which summarize and describe the loan's amortization
schedule. If Settings.ShowAmTable
is set to false, then this object will not be found in the response.
Fields:
🔹Months,🔹Weeks,🔹OddDaysObjects:
🟦 GrandTotals,🟦 SubTotals[],🟥 AmLines[]
🔹 Data.AmTable.AvgBal
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the average balance of the loan used in the Canadian APR calculation.
🔹 Data.AmTable.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of months in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.Weeks
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of weeks in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.OddDays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the number of odd days in the term of the loan used in the Canadian APR calculation. Odd days are computed by moving backwards from the maturity date the number of disclosed months or weeks, and then counting the additional number of days required to land on the loan date.
🟦 Data.AmTable.GrandTotals
| Type | Required |
|---|---|
| Object | no |
This object describes the total amounts of various categories throughout the life of the loan. As an example, the total amount paid to interest and principal, as well as the total of payments are all contained in fields of this object.
Fields:
🔸PmtTot,🔸IntTot,🔸PrinTot,🔹CLTot,🔹AHTot,🔹IUTot,🔹PMITot,🔹SCTotObjects:
None
🔸 Data.AmTable.GrandTotals.PmtTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total of payments scheduled for the computed loan.
🔸 Data.AmTable.GrandTotals.IntTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total amount paid to interest over the life of the loan, assuming all payments are made as scheduled.
🔸 Data.AmTable.GrandTotals.PrinTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.
🔹 Data.AmTable.GrandTotals.CLTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLTot field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life over the duration of the loan.
🔹 Data.AmTable.GrandTotals.AHTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHTot field will only appear on loans with certain types of disability or
debt protection products, such as those based on a monthly outstanding balance.
It contains the total amount paid for this protection over the duration of the
loan.
🔹 Data.AmTable.GrandTotals.IUTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IUTot field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection over the duration
of the loan.
🔹 Data.AmTable.GrandTotals.PMITot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The PMITot field will only appear on loans with PMI insurance where the
PMI premiums were requested in the amortization schedule. It contains the total
PMI amount paid (not including any up front periodic PMI premiums)for PMI over
the duration of the loan.
🔹 Data.AmTable.GrandTotals.SCTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The SCTot field will only appear on loans with service charges. It
contains the total service charge amount paid over the duration of the loan.
🟦 Data.AmTable.SubTotals[]
| Type | Required |
|---|---|
| Array of SubTotal Objects | no |
Describes the total amounts of various categories paid during a given calendar year.
For each year in which the computed loan has scheduled payments, there will be
a SubTotal object in the array.
Fields:
🔸Year,🔸Start,🔸Events,🔸PmtSub,🔸IntSub,🔸PrinSub,🔹CLSub,🔹AHSub,🔹IUSub,🔹PMISub,🔹SCSubObjects:
None
🔸 Data.AmTable.SubTotals[].Year
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The calendar year for which the subtotal data is applicable.
🔸 Data.AmTable.SubTotals[].Start
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the first amortization event which falls in the specified
calendar year. To find the AmLines[] object which corresponds to
this value, match the Idx field of the AmLine
object.
🔸 Data.AmTable.SubTotals[].Events
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the number of amortization events which belong to this calendar year.
🔸 Data.AmTable.SubTotals[].PmtSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total of payments scheduled for the calendar year.
🔸 Data.AmTable.SubTotals[].IntSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Holds the total amount paid to interest over the calendar year, assuming all payments are made as scheduled.
🔸 Data.AmTable.SubTotals[].PrinSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total amount paid to principal during the calendar year, assuming all payments are made as scheduled.
🔹 Data.AmTable.SubTotals[].CLSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLSub field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life during the year.
🔹 Data.AmTable.SubTotals[].AHSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHSub field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection during the year.
🔹 Data.AmTable.SubTotals[].IUSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IUSub field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for involuntary unemployment during
the year.
🔹 Data.AmTable.SubTotals[].PMISub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The PMISub field will only appear on loans with PMI insurance where the PMI
premiums were requested in the amortization schedule. It contains the total PMI
amount paid (not including any up front periodic PMI premiums) for PMI during
the year.
🔹 Data.AmTable.SubTotals[].SCSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The SCSub field will only appear on loans with service charges. It contains
the total of service charges paid during the year.
🟥 Data.AmTable.AmLines[]
| Type | Required |
|---|---|
| Array of AmLine Objects | yes |
There is one AmLine object for each amortization event which occurs during
the life of a loan. Most of the time, each event will describe a payment, and
detail how that payment is applied (to interest, principal, loan protection
products, etc.). Some events, such as capitalizing interest, will not have
payments but will show how the loan amortizes.
Fields:
🔸Idx,🔸Date,🔸BegBal,🔸Pmt,🔸Int,🔸Prin,🔹CL,🔹AH,🔹IU,🔹PMI,🔹SC,🔹UnpaidInt,🔸EndBalObjects:
None
🔸 Data.AmTable.AmLines[].Idx
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The index of the amortization event, which is either the payment number, or zero. A value of zero designates an event that is either not a payment or is a skipped payment.
🔸 Data.AmTable.AmLines[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the amortization event is scheduled to occur. All dates are in
the form of YYYY-MM-DD, and must be 10 characters long.
🔸 AmData.AmTable.AmLines[]ine.BegBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance before the amortization event occurs.
🔸 Data.AmTable.AmLines[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The payment amount for this event.
🔸 Data.AmTable.AmLines[].Int
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of interest paid at this event.
🔸 Data.AmTable.AmLines[].Prin
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of principal paid at this event.
🔹 Data.AmTable.AmLines[].CL
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CL field will only appear on loans with certain types of life protection
products, such as those based on a monthly outstanding balance. It contains the
amount of the payment which is marked for life coverage.
🔹 Data.AmTable.AmLines[].AH
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AH field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for disability /
debt protection coverage.
🔹 Data.AmTable.AmLines[].IU
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IU field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for this
coverage.
🔹 Data.AmTable.AmLines[].PMI
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field contains the PMI premium for this payment, and will only show up if PMI has been computed for this payment and if PMI premiums should be displayed in the amortization schedule.
🔹 Data.AmTable.AmLines[].SC
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field contains the total service charge for this payment, and will only be present if one or more service charges were requested with the loan.
🔹 Data.AmTable.AmLines[].UnpaidInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear on an amortization line when interest has been accrued, but has not yet been paid or added to the principal balance. If the interest accrued has not yet been rounded, then the unpaid interest will be displayed to four (4) decimal placed. If rounded, then the unpaid interest is displayed to two (2) decimal places.
🔸 Data.AmTable.AmLines[].EndBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The principal balance amount, after the amortization event has taken place.
Balloon Loans
Balloon payment loans are loans which have an irregular final payment, with all other payments in the payment stream being equal. There are three general ways to compute a balloon loan: specify the regular payment, specify the final payment, or specify an amortization term greater than the balloon loan term.
Specifying the regular or final payment is self-explanatory. However, specifying an amortization term requires a bit more explanation. Each type of balloon loan is described below with an example of each.
Sample Request
The following example is a request for a balloon payment loan loan with a specified regular payment of $297.84, proceeds of $10,000, 12 monthly payments, with interest accruing on an actual day / 365 U. S. Rule basis at a rate of 4.5%.
{
"Module" : "Balloon",
"Data" : {
"LoanDate" : "2022-08-22",
"PmtDate" : "2022-10-01",
"IntRate" : "4.500",
"Proceeds" : "10000.00",
"Term" : "12",
"RegPmt" : "297.84",
"Settings" : {
"AccrualCode" : "320"
}
}
}
Note that in the above request, the RegPmt
field is specified. This instructs the SCE to perform a balloon with specified
regular payment calculation. The following loan is identical to the one above,
except that we are specifying a desired final payment
(FinalPmt) instead of a regular payment:
{
"Module" : "Balloon",
"Data" : {
"LoanDate" : "2022-08-22",
"PmtDate" : "2022-10-01",
"IntRate" : "4.500",
"Proceeds" : "10000.00",
"Term" : "12",
"FinalPmt" : "7121.15",
"Settings" : {
"AccrualCode" : "320"
}
}
}
Instead of specifying a regular or final payment and computing the other, you
may request a regular payment computed that is equivalent to that of a longer
term equal payment loan, with the final payment computed to amortize the balloon
loan at the shorter term. These are often called specified amortization term
balloons, or Canadian roll-over balloon loans. The following is a sample request
for a balloon payment loan calculation, where the amortization term
(AmortTerm) is specified:
{
"Module" : "Balloon",
"Data" : {
"LoanDate" : "2022-08-22",
"PmtDate" : "2022-10-01",
"IntRate" : "4.500",
"Proceeds" : "10000.00",
"Term" : "12",
"AmortTerm" : "36",
"Settings" : {
"AccrualCode" : "320"
}
}
}
Sample Response
{
"Result" : 200,
"Module" : "Balloon",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Results" : {
"Payment" : "297.84",
"Final" : "7121.15"
},
"FedBox" : {
"AmtFin" : "10000.00",
"FinChg" : "397.39",
"TotPmts" : "10397.39",
"APR" : {
"Value" : "4.495",
"Type" : "Actuarial"
}
},
"Moneys" : {
"Principal" : "10000.00",
"Interest" : "397.39"
},
"Accrual" : {
"Method" : "Actual/365 US Rule",
"Days1Pmt" : "40",
"DayCount" : "Actual",
"Maturity" : "2023-09-01"
},
"PmtStreams" : [
{
"Term" : "11",
"Pmt" : "297.84",
"Rate" : "4.500",
"Begin" : "2022-10-01"
},
{
"Term" : "1",
"Pmt" : "7121.15",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
],
"AmTable" : {
"GrandTotals" : {
"PmtTot" : "10397.39",
"IntTot" : "397.39",
"PrinTot" : "10000.00"
},
"SubTotals" : [
{
"Year" : "2022",
"Start" : "1",
"Events" : "3",
"PmtSub" : "893.52",
"IntSub" : "121.69",
"PrinSub" : "771.83"
},
{
"Year" : "2023",
"Start" : "4",
"Events" : "9",
"PmtSub" : "9503.87",
"IntSub" : "275.70",
"PrinSub" : "9228.17"
}
],
"AmLines" : [
{
"Idx" : "1",
"Date" : "2022-10-01",
"BegBal" : "10000.00",
"Pmt" : "297.84",
"Int" : "49.32",
"Prin" : "248.52",
"EndBal" : "9751.48"
},
...,
{
"Idx" : "12",
"Date" : "2023-09-01",
"BegBal" : "7094.04",
"Pmt" : "7121.15",
"Int" : "27.11",
"Prin" : "7094.04",
"EndBal" : "0.00"
}
]
}
}
}
Balloon Loan Module - Request
The fields of the Data object supported by a Balloon module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹AmortTerm,🔹Country,🔹FinalPmt,🔸IntRate,🔹IntStartDate,🔸LoanDate,🔸PmtDate,🔹PPY,🔸Proceeds,🔹RegPmt,🔸Term,🔹TotalDownObjects:
🟦 Apr,🟦 Construction,🟦 Fees[],🟦 Format,🟦 MI,🟦 ODI,🟦 Protection,🟦 ServiceCharges[],🟦 Settings
The fields of the Data object supported by the Balloon module request are
defined in alphabetical order below:
🔹 Data.AmortTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
To compute a balloon loan with a specified amortization term, this field must be
present in the request and contain a value greater than zero. If this field is
omitted or holds a value of zero, then it will be ignored. Note that one of
the balloon loan fields which dictate how a balloon loan is to be computed (i.e.
AmortTerm, RegPmt, or FinalPmt) must
contain a value greater than zero. If none of the fields holds a value greater
than zero, or if more than one holds a value greater than zero, then the SCE
will return with an error message indicating the problem.
The value of the AmortTerm field contains the desired amortization term
(specified as the number of payments) to be used to compute the regular payment.
The amortization term must be greater than the balloon loan term (e.g.
Term), or else the balloon loan will not be able to be computed.
In the sample above, we are requesting that the regular payment be computed as
if the loan was an equal payment loan with a term of 36 payments, with the final
payment computed to amortize the balloon loan after 12 months.
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
This field allows the calling application to specify a two (2) character or
three (3) digit country code. If none is provided, then a default value of US
will be used. Please see the Countries Appendix for
the list of supported countries and their associated codes.
Specifying the Country will also set the default value for the
APR.Method and
Format.CurrencyDecimals fields, as appropriate for
the country specified.
🔹 Data.FinalPmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
To compute a balloon loan with a specified final payment, this field must be
present in the request and contain a value greater than zero. If this field is
omitted or holds a value of zero, then it will be ignored. Note that one of
the balloon loan fields which dictate how a balloon loan is to be computed (i.e.
AmortTerm, RegPmt, or FinalPmt) must
contain a value greater than zero. If none of the fields holds a value greater
than zero, or if more than one holds a value greater than zero, then the SCE
will return with an error message indicating the problem.
The value of the FinalPmt field contains the desired final payment amount,
which will be used to compute a regular payment. In the sample at the start of
this chapter, we are requesting a balloon loan with a specified final payment of
$7121.15 and the regular payment computed to amortize the balloon loan after 12
months.
🔸 Data.IntRate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
Determine the interest rate used for the loan.
The interest rate should be expressed as a percentage. For example,
a loan computed with a rate of 5.125% would be specified as
"IntRate" : "5.125".
🔹 Data.IntStartDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | same value as LoanDate |
This field contains the date on which interest begins to accrue on the loan's principal balance. If this field is not specified, then the interest start date is set equal the loan date. Also note that the interest start date must be equal to the loan date when computing a construction loan.
The interest start date (when specified) must be on or after the loan date, as well as on or before the first payment date.
🔸 Data.LoanDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field holds the date on which the loan amount is disbursed and interest
begins to accrue. All dates must be in the form of YYYY-MM-DD, and be 10
characters long.
🔸 Data.PmtDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field specifies the first (and for single payment notes, only) payment date
in the loan's repayment schedule. All dates must be in the form of YYYY-MM-DD,
and be 10 characters long.
🔹 Data.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for payments per year, and determines the payment
frequency for the requested loan. The default value of 12 will result in a
loan with 12 payments per year. If you require a loan with a payment frequency
other than monthly, specify it using this field.
🔸 Data.Proceeds
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The proceeds specified indicate the amount of money the borrower is requesting, and does not include financed fees, financed insurances, etc.
🔹 Data.RegPmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
To compute a balloon loan with a specified regular payment, this field must be
present in the request and contain a value greater than zero. If this field is
omitted or holds a value of zero, then it will be ignored. Note that one of
the balloon loan fields which dictate how a balloon loan is to be computed (i.e.
AmortTerm, RegPmt, or FinalPmt) must
contain a value greater than zero. If none of the fields holds a value greater
than zero, or if more than one holds a value greater than zero, then the SCE
will return with an error message indicating the problem.
The value of the RegPmt field contains the desired regular payment amount,
which will be used to compute a final balloon payment. In the sample at the
start of this chapter, we are requesting a balloon loan with a specified regular
payment of $297.84 and the final payment computed to amortize the balloon loan
after 12 months.
🔹 Data.TotalDown
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
This optional field represents the total down payment that the borrower has applied to reduce the requested proceeds. It may consist of a cash down payment, net trade-in value, or rebate. You only need to specify a total down payment if the loan needs to disclose a total sale price. Typical examples of these loan types are auto and boat loans.
🔸 Data.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer > 1 |
The Term field indicates the the number of payments to be made at the
specified payment frequency (see the PPY field above), after
which the loan is scheduled to be paid off.
🟦 Data.Apr
| Type | Required |
|---|---|
| Object | no |
Settings related to the computed effective rate returned by the SCE (most commonly, the Regulation Z APR in the United States of America) are contained in the fields of this object.
Fields:
🔹MAPR_Max,🔹Method,🔹UseMAPRObjects:
None
🔹 Data.Apr.MAPR_Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 36.0 |
If you are computing the Military APR (see UseMAPR below) and
wish to override the default maximum APR value of 36%, then specify the desired
maximum as the value of this field.
🔹 Data.Apr.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, actuarial, eu, ca, xirr, xirr360, irr | default |
This field allows the calling application to specify an APR calculation
method which will override the default value found in the setup file for the given
Account. If this field is set to a valid value, then the
specified method will be used to compute the APR for this loan calculation.
If the Country field has been set by the calling application and
this field is not set, then the APR method used will be determined by the
specified country. For the United States of America, the default APR method is
actuarial. For a country in the European Union, the default value is
eu (European Union APR). For Canada, the default APR method is
ca (Canadian APR).
The xirr value implements the internal rate of return method as
implemented in Microsoft\textregistered Excel via the XIRR() function,
and is based on an actual day calendar with a 365 day divisor.
The xirr360 value implements the internal rate of return method based
upon a unit period calendar with a 360 day divisor.
The irr value implements a common spreadsheet internal rate of return
method which assumes strict regular periods. Deviating from a strict regular
periodicity may produce unreliable results.
If this field is not specified and the Country field is not
specified, then the value of default will be used which informs the
SCE to use the APR method defined in the setup file for the specified
Account.
🔹 Data.Apr.UseMAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to a value of true, then the SCE will compute the
Military APR in addition to the Regulation Z APR. The
MAPR object will be included in the loan response.
🟦 Data.Construction
| Type | Required |
|---|---|
| Object | no |
The Construction object determines if this loan is a construction to permanent
loan request. If you wish to compute a construction loan without an attached
permanent loan, you will need to use either the
Construction or Loan modules.
Fields:
🔹HalfCommitment,🔹PPY,🔸Rate,🔸TermObjects:
None
🔹 Data.Construction.HalfCommitment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
During the term of the construction loan, the estimated interest for disclosure
purposes may be either computed on the full or half commitment amounts. By
setting this field to true, interest will be estimated using half of the
initial commitment amount (i.e. the principal balance). The default value of
false will cause interest to be estimated using the entire initial commitment
amount.
🔹 Data.Construction.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
The PPY field allows the calling application to specify the payment frequency
during the construction period. The default value of 12 will result in a
construction loan with 12 payments per year. If you require a payment frequency
during the construction period other than monthly, then specify it using this
field. Note that the permanent loan's payment frequency may differ from the
construction period's payment frequency.
🔸 Data.Construction.Rate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number in [-99.999...600] | n/a |
This field determines the rate applied to the appropriate commitment amount during the term of the construction loan.
🔸 Data.Construction.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Integer > 0 | n/a |
The term of the construction loan (in payments) is specified using this field. Please note that the term may not exceed five years.
🟦 Data.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
This array of Fee objects allows the calling application to specify one ore
more Fee objects to be included with the loan.
Fields:
🔹AddToFinChg,🔹AddToPrin,🔹Adjust,🔹CalcType,🔹Entry,🔹IsLoanCost,🔹MAPR,🔹Max,🔹Min,🔹NameObjects:
None
🔹 Data.Fees[].AddToFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this fee should be included in the computed Finance Charge (and hence, affect
the APR), then set this field to true. The default value of false indicates
that the fee does not affect the Finance Charge nor APR.
🔹 Data.Fees[].AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If this fee should be added to the principal balance (e.g. the fee is financed
along with the advance(s)), then set this field to true. If set to false,
then the fee is paid up front out of the borrower's pocket.
🔹 Data.Fees[].Adjust
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | 0 |
The optional Adjust field allows the calling application
to increase or decrease the base amount on which a fee is calculated.
If a negative value is specified and this adjustment would produce a
negative base amount, then a value of zero is returned for the given fee.
This field has no effect on fees with a CalcType of Dollar.
As an example, in Tennessee you may need to define a financed, non-APR affecting fee to be computed by decreasing the amount financed by $2,000, and then multiplying this reduced amount by 0.115. The way to accomplish this in the SCE is as follows:
{
"Fees" : [
{
"Name" : "TN Fee",
"CalcType" : "OnAmtFin",
"Adjust" : "-2000.00",
"Entry" : "0.115",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
🔹 Data.Fees[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Dollar, OnProceeds, OnPrincipal, OnAmtFin | Dollar |
This field specifies how the fee is to be computed, as described in the following table.
| Fee Calc Type | Description |
|---|---|
Dollar | The Entry field is understood as a flat dollar amount. |
OnProceeds | The Entry field is understood as a percentage value, to be applied to the loan's proceeds, defined as the sum of advances. An Entry of 0.25 would represent a fee of 0.25% of the total proceeds. |
OnPrincipal | The Entry field is understood as a percentage value, to be applied to the loan's principal balance. An Entry of 0.125 would represent a fee of 0.125% of the principal balance. |
OnAmtFin | The Entry field is understood as a percentage value, to be applied to the loan's Regulation Z Amount Financed. An Entry of 0.33 would represent a fee of 0.33% of the amount financed. |
🔹 Data.Fees[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
How this field is interpreted depends upon the Fee.CalcType field.
Please see the documentation for this field for further information.
🔹 Data.Fees[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which fees need to be considered "borrower paid loan costs",
as defined in the rule. Please note that if the fee is paid by a lender or other
third party, then the fee does not affect the loan calculation and should not be
sent to the SCE. If it is sent, then the value of this field should be set
to false.
🔹 Data.Fees[].MAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If you wish to compute the Military APR, then certain fees may not be considered Regulation Z APR affecting fees, but are considered Military APR affecting fees. In this case, you will need to set the value of this field to true.
Fees which are added to the finance charge (e.g. "AddToFinChg"
: true) are always considered MAPR fees, regardless of the stated value of this
field.
Note that debt protection products are automatically included in the calculation of the Military APR, no matter what method is used for payment (e.g. single premium vs. monthly outstanding balance).
🔹 Data.Fees[].Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then the maximum value will be used instead. If no maximum value is specified or is set to a value of zero, then no maximum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified maximum value is checked after enforcing a specified minimum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Min
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a minimum value for the fee is specified and is greater than zero, then if the computed fee is less than this minimum value, then the minimum value will be used instead. If no minimum value is specified or is set to a value of zero, then no minimum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified minimum value is checked before enforcing a specified maximum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the fee in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value will be determined by the value of the
Country field. For most countries, the default value is
2. If no country code is specified, then the default value for this field is
2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
🟦 Data.MI
| Type | Required |
|---|---|
| Object | no |
The MI object determines if this loan includes one of the supported types of
mortgage insurance (MI): PMI or FHA. This object contains fields which further
specify mortgage insurance options.
Fields:
🔹CashDown🔹LoanAmt,🔸PropertyValue,🔹TypeObjects:
🟦 Periodic,🟥 Rates[],🟦 UpFront
🔹 Data.MI.CashDown
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The CashDown field represents a cash down payment made at closing. If
specified and greater than zero, this amount will be deducted from the principal
balance. If not specified, the cash down payment will default to zero.
🔹 Data.MI.LoanAmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field represents the amount by which the PMI rates are multiplied to produce a level PMI premium. If not specified, then the principal balance will be used to compute the annual premium.
🔸 Data.MI.PropertyValue
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
This field's value represents the appraised property value, and will be used in the calculation of the loan to value ratio.
🔹 Data.MI.Type
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | fha, pmi | pmi |
This field determines the type of mortgage insurance to include with the loan.
If the value of this field is set to fha, then a different MI premium is
computed every twelve months based upon the average outstanding principal
balance during that same term. The MI calculation adheres strictly to the HUD
regulation.
If the value of this field is set to pmi, then each defined MI rate produces a
level MI premium based upon the inital loan amount.
🟦 Data.MI.Periodic
| Type | Required |
|---|---|
| Object | no |
The fields of this object determine the conditions when MI is no longer included.
Fields:
🔹DropLTV,🔹Term,🔹WarnLTVObjects:
None
🔹 Data.MI.Periodic.DropLTV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
The value of this field determines the loan to value ratio at which MI should be
removed, and is expressed as a percentage. For example, if you wish to
automatically drop MI when the loan to value ratio first equals or falls below
78%, then you would specify "DropLTV" : "78.0".
🔹 Data.MI.Periodic.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
The value of this field represents the the term (in payments) beyond which MI will be removed.
As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify
{
"MI" : {
"Periodic" : { "Term" : "180"}
}
}
🔹 Data.MI.Periodic.WarnLTV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
The value of this field determines the loan to value ratio at which a warning
should be issued, and is expressed as a percentage of LTV (loan to value). For
example,if you wish to know when the loan to value ratio first equals or falls
below 80%, then you would specify "WarnLTV" : "80.0".
🟥 Data.MI.Rates[]
| Type | Required |
|---|---|
| Array of Rate Objects | yes |
This array if Rate objects defines the rates used to compute MI on the loan.
There must be at least one Rate object in the Rates[] array, and there can
be more than one if rates are set to switch at a specified payment number.
Objects:
None
🔸 Data.MI.Rates[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number>= 0.0 |
The value of this field specifies the cost of mortgage insurance per $100 of the loan amount. As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as
{
"MI" : {
"Rates" : [
{ "Rate" : "1.50"}
]
}
}
🔹 Data.MI.Rates[].Switch
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
This optional field defines the payment number beyond which the associated MI rate will apply. If not specified, the value will default to zero.
Thus, if there is only a single MI rate, one may omit this field (see example above).
Example of a MI multiple rate structure (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):
{
"MI" : {
"Rates" : [
{ "Rate" : "1.50"},
{ "Rate" : "0.20" , "Switch" : "120"}
]
}
}
🟦 Data.MI.UpFront
| Type | Required |
|---|---|
| Object | no |
This object determines if there is an up front fee for mortgage insurance, and if so, how it is computer. If this object is not present in the request, then no up front fee will be computed. Note that ZOMP (zero option monthly premium) products do not have an up front fee, which means that this object should be omitted.
Fields:
🔹Paid,🔹Reduce,🔹Units,🔹ValueObjects:
None
🔹 Data.MI.UpFront.Paid
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | atclosing, bylender, financed | atclosing |
If the value of this field is set to financed, then the computed up front fee
will be added to the principal balance and the finance charge. A value of
atclosing will cause the value of the fee to be added to the finance charge
alone. Finally, a value of bylender means that the up front fee is to be paid
by the lender, hence the value of the fee is not added to either the principal
balance nor the finance charge.
🔹 Data.MI.UpFront.Reduce
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the specified number of periodic premiums to include as an up front fee is greater than zero, then this field determines if the term of coverage for PMI will be reduced by the same amount.
🔹 Data.MI.UpFront.Units
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | months, points, years | months |
If the Units field is set to months, then
UpFront.Value represents the number of periodic MI
premiums to be paid at closing.
If the Units field is set to Years, then
UpFront.Value represents the number of annual MI premiums
to be paid at closing. Many single premium products define the up front fee as a
number of years of MI to be paid up front.
Finally, if the Units field is set to Points, then
UpFront.Value represents the percentage of principal to
be paid up front. As of October 3, 2011, FHA loans use points.
🔹 Data.MI.UpFront.Value
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If part of the MI fees are to be paid up front, then value of this field must be
grater than zero. How the value of this field is interpreted depends upon the
Units field (see below).
The default value of zero means that no up front fee will be computed.
🟦 Data.ODI
| Type | Required |
|---|---|
| Object | no |
If odd days should be treated as a prepaid finance charge or added to the first payment in a manner different from how interest is accruing, then the request needs to define how odd days interest is computed and handled using the fields of this object.
Fields:
🔹AccrualCode,🔹AddToPmt,🔹AddToPrin,🔹AnchorDate,🔹ForceUnitPeriod,🔹NoCap,🔹UseDailyCost,🔹UseNegODIObjects:
None
🔹 Data.ODI.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 204, 205, 210, 211, 220, 221, 230, 231, 250 | default |
The accrual code defines how the odd days interest is computed. The meaning of the allowed accrual codes is defined below.
Note that accrual code 250 ("Variable Days Per Year") defines the basis
divisor days to be equal to 12 multiplied by the number of days in the month of
the date on which interest begins to accrue. Thus, if the interest start date
falls in November, then the number of basis days is 360. If the interest start
date falls in a month with 31 days, then the number of basis days is 372. For an
interest start date in February, the number of basis days will either be 336 or
348, depending upon whether or not it is a leap year.
| Accrual Code | Description |
|---|---|
204 | True360/360 |
205 | True360/365 |
210 | Actual/360 |
211 | True365/360 |
220 | Actual/365 |
221 | True365/365 |
230 | Actual/Actual |
231 | Midnight 366 |
250 | Actual/Variable Days Per Year |
🔹 Data.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application wants the odd days interest to be added to the first
payment, then set the value of this field to true. A value of false
indicates that the odd days interest will be treated as a prepaid finance
charge.
🔹 Data.ODI.AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If any odd days interest should be treated as a financed prepaid fee, then set
the value of this field to true. Note that if both AddToPmt and AddToPrin
are set to true, then a warning message will be returned by the SCE and the
value of AddToPrin will be set to false.
🔹 Data.ODI.AnchorDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | BackUnitPeriod, BackDaysPerPeriod | BackUnitPeriod |
The computed number of odd days is the number of days between the loan date and
the anchor date. This field determines how to arrive at the anchor date. A value
of BackUnitPeriod means that the anchor date is one unit period prior to the
specified first payment date. A value of BackDaysPerPeriod means that the
anchor date is the number of days per period prior to the first payment date.
Please note that for both of these methods, the period used will be that
associated with the payment stream in which the first payment occurs.
🔹 Data.ODI.ForceUnitPeriod
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Some unit period methods will not use a strict unit period interest accrual
factor in the period to the first payment. For example, code 302 will count
the days to the first payment and divide by 365. For a monthly loan, setting
this field to true will use a 1/12 factor instead of Days/365.
🔹 Data.ODI.NoCap
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When the odd days interest is financed, setting this field to true prevents
interest from being computed on interest. The default is false, which means
interest will be computed on interest.
🔹 Data.ODI.UseDailyCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the total odd days prepaid fee is computed by first generating a rounded (to
the nearest penny) daily cost and then multiplying this value by the computed
number of odd days, then set the value of this property to true.
A value of false means that the daily cost is left unrounded, and the total
prepaid fee is rounded after the computation is complete.
🔹 Data.ODI.UseNegODI
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If there are negative odd days in the loan, then the value of this field
determines if a negative odd days interest fee is computed. If the value of this
field is false, then negative odd days fees are not allowed, the SCE will
return a value of zero in this situation, and the computed payment will be
adjusted to take into account the negative odd days. A value of true will
return a negative odd days interest fee (in effect, it then becomes and odd days
interest credit) when there are negative odd days in a loan.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
The Protection object is used by the calling application to request one or
more payment protection products (e.g. life, disability, involuntary
unemployment, or personal property) be included in the loan calculation. Each of
these products is requested by including its own child object, along with
the borrower birthdays.
Fields:
🔹Birthday1,🔹Birthday2,🔹LineOfCredit,🔹Mandatory,🔹ShowBorrowerInfo,🔹ShowCapsObjects:
🟦 Disability,🟦 Life,🟦 Property,🟦 Unemployment
🔹 Data.Protection.Birthday1
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the secondary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday2" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower2 or both.
🔹 Data.Protection.Birthday2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the primary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday1" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower1 or both.
🔹 Data.Protection.Financed
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the computed premiums for single premium debt protection products should be
financed along with the proceeds, then this field should be set to true (which
is the default value if not specified). A value of false indicates that the
computed premiums will not be financed with the proceeds, and hence will be paid
out of pocket by the borrower. Note that this applies to single premium
insurance products only!
🔹 Data.Protection.LineOfCredit
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this is an account using TruStage's MOB insurance, and if this loan is a
line of credit where product term caps should be ignored, then set this field to
true. Otherwise, omit this field or set it to false.
🔹 Data.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then any computed payment
protection premium or fee will be considered a mandatory fee which will be
included as a part of the Finance Charge, and hence affect the disclosed APR.
If the Mandatory field is set to false, then the loan will treat any
premiums / fees as normal.
🔹 Data.Protection.ShowBorrowerInfo
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have data returned for each specified
borrower instead of a single Term object, then set the value of this field to
true. Otherwise, omit this field or set it to false. See the Borrower and
Term objects defined in the response section for more information.
🔹 Data.Protection.ShowCaps
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have cap information (e.g. maximum
terms, coverage amounts, ages, etc.) returned for each product offered, set the
value of this field to true. Otherwise, omit this field or set it to false.
See the Caps object defined in the response section for more information.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
The Disability object determines what type of disability coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTerm,🔹TableObjects:
None
🔹 Data.Protection.Disability.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Disability.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Disability object altogether or specify a value of none.
🔹 Data.Protection.Disability.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Disability.Table
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0...19] | 0 |
If the specified account has been set up with multiple disability or debt cancellation plans, then this field determines which plan number will be used. If no table number is specified, the first table (table zero) will be used.
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
The Life object determines what type of life coverage is
requested for the loan.
Fields:
🔹CovAmount,🔹Covers,🔹CovTerm,🔹Dismemberment,🔹Method,🔹UseLevelRatesObjects:
None
🔹 Data.Protection.Life.CovAmount
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a coverage amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum coverage amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user specified coverage amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Life.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Life object altogether or specify a value of none.
🔹 Data.Protection.Life.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Life.Dismemberment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer life protection products with
optional dismemberment coverage, and if the optional dismemberment coverage is
desired, then set this field's value to true. Otherwise, use the default value
of false.
🔹 Data.Protection.Life.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Default, Gross, Net | Default |
Some accounts are configured to offer different types of credit life products (usually gross and net). In these accounts, this field allows the calling application to specify which method to use for a given loan. If no method is present in the request, then the default method will be used.
🔹 Data.Protection.Life.UseLevelRates
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer single premium credit life
using level rates instead of the normal decreasing rates, and if you wish to use
level rates instead of decreasing, then set this field's value to true.
Otherwise, use the default value of false.
🟦 Data.Protection.Property
| Type | Required |
|---|---|
| Object | no |
The Property object determines what type of property coverage is
requested for the loan.
Objects:
None
🔹 Data.Protection.Property.Coverage
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Property.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. A value of borrower1 represents single coverage on the primary
borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Property object altogether or specify a value of none.
🟦 Data.Protection.Unemployment
| Type | Required |
|---|---|
| Object | no |
The Unemployment object determines what type of unemployment coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTermObjects:
None
🔹 Data.Protection.Unemployment.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Unemployment.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Unemployment object altogether or specify a value of none.
🔹 Data.Protection.Unemployment.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🟦 Data.ServiceCharges[]
| Type | Required |
|---|---|
| Array of ServiceCharge Objects | no |
This array of ServiceCharge objects allows the calling application to specify
one ore more Service Charge objects to be included with the loan.
Fields:
🔹CalcType,🔸Entry,🔹Exact,🔹IsLoanCost,🔹Name,🔹RoundObjects:
None
🔹 Data.ServiceCharges[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | LumpSum, Periodic | LumpSum |
A service charge of type LumpSum allows the calling application to
specify an amount that will be spread out evenly over the loan's payment
stream. On the other hand, a Periodic service charge is the amount
which will be added to each payment.
🔸 Data.ServiceCharges[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Floating >= 0 | n/a |
How this field is interpreted depends upon the
ServiceCharge.CalcType field.
It is the numeric amount defining either the lump sum or periodically paid
service charge.
🔹 Data.ServiceCharges[].Exact
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
The Exact field is only considered when the service charge is of type
LumpSum. When the calculated periodic amount is rounded, it will most often
times produce a total service charge amount that differs from what was
specified.
If the Exact field is set to true, then the final periodic amount will
be adjusted so that the sum of all periodic amounts is exactly equal to the
entered amount (and will result in an odd final payment). A value of false
indicates that the final periodic amount will not be adjusted.
🔹 Data.ServiceCharges[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which service charges need to be considered "borrower paid
loan costs", as defined in the rule. Please note that if the fee is paid by a
lender or other third party, then the fee does not affect the loan calculation
and should not be sent to the SCE. If it is sent, then the value of this
field should be set to false.
🔹 Data.ServiceCharges[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the service charge in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🔹 Data.ServiceCharges[].Round
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | nearest, up, down | nearest |
This field is only considered when the service charge is of type
LumpSum. It determines how the calculated periodic amount
is rounded.
🟦 Data.Settings
| Type | Required |
|---|---|
| Object | no |
The Settings object allows the calling application to alter the default
loan calculation options.
Fields:
🔹Account,🔹AccrualCode,🔹ConMethod,🔹DataPath,🔹Lastday,🔹PmtDollarRound,🔹PmtRound,🔹ShowAmTable,🔹TILARESPA2015,🔹YieldPPYObjects:
None
🔹 Data.Settings.Account
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..9999] | 1 |
The Account field specifies the numeric setup file account number that will be
used to compute the requested loan. Each account is numbered from 1 to 9,999,
and each account corresponds to a set of setup file which define numerous
settings which may affect the loan calculation, such as the accrual method,
insurance methods / rates / caps, etc.
🔹 Data.Settings.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | see table | default |
The method of interest accrual is defined by this field. A value of default
informs the SCE to use the interest accrual method defined in the setup file for
the specified Account. All other valid accrual codes
are described in the table below.
🔹 Data.Settings.ConMethod
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, simple, interestonly | default |
When computing a construction loan, there are two supported methods for computing interest during the constrcution period:
If the value of this field is simple, then the estimated construction
interets will be computed and disclosed as a lup-sum prepaid fee (see
the Moneys.ConstructInterest
response field).
If the value of this field is interestonly, then the construction and
permanent loans are combined into a single loan, with the construction (and
permanent) loan's interest being reflected in the
Moneys.Interest field, and
both loans reflected in a single, combined amortization schedule.
A value of default instructs the SCE to use the construction method specified
in the setup file for the given account.
🔹 Data.Settings.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔹 Data.Settings.Lastday
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | as configured in setup file |
If present, this field overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day accrual calendar where the first payment date falls at the end of a month with fewer than 31 days. As an example, if the first payment date is on April 30, should the following payment dates be made on the 30th of each month, or on the last day of the month?
If no value is specified for this field, then the setup file setting will be
used. If true is specified, then conditions triggering a last day situation
will result in payments which fall at the end of the month. A value of false
indicates that when dictated, subsequent payment dates will not be moved to the
last day of the month.
🔹 Data.Settings.OddFinal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Following the last payment of an amortization schedule, the ending balance is unlikely to be zero due to the rounding of the payment. In order to assure perfect amortization, lenders will use an odd final payment to perfectly amortize the loan.
Set OddFinal to true to ensure perfect amortization with a payment that
pays off the loan.
🔹 Data.Settings.PmtDollarRound
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Payments are normally rounded to the penny, according to the method specified by
in the setup file, or vy theSettings.PmtRound field. If
the payment should be rounded to the dollar instead of the penny, then set
the value of this field to true.
Note that for some loans (such as those with longer terms or relatively small proceeds), rounding the payment up or to the nearest dollar may require a shortened loan term to prevent one or more negative payments at the end of the loan.
🔹 Data.Settings.PmtRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, nearest, up, down, best | default |
How are calculated payments to be rounded at and beyond this event? best means
to choose the payment that returns a minimal ending balance at the end of
amortization. If two payments result in the same minimal error magnitude, the
smaller payment is chosen. default means that the setting should be configured
as specified in the setup file.
🔹 Data.Settings.ShowAmTable
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
To supress the entire amortization schedule from the response, set value of this
field to false; otherwise, the amortization schedule will be returned with the
response.
🔹 Data.Settings.TILARESPA2015
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will include data for the
Integrated Mortgage Disclosures under the Real Estate Settlement Procedures Act
(Regulation X) and the Truth In Lending Act (Regulation
Z) rule, which is
required as of August 1st, 2015. If the field is omitted or set to false, then
the TILA RESPA outputs will not be generated.
Note that this field is supported for equal payment loans, balloon payment loans, single payment notes, interest only loans, fixed principal plus interest loans, skips, pickups and irregulars, and ARMs.
🔹 Data.Settings.YieldPPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0, 2, 4, 6, 12 | 0 |
Canadian mortgages may compute periodic interest using a fractional power of a periodic yield. If set to a value other than `0', this field determines the period. Please contact us for further information if you support mortgage calculations in Canada. Note that when using this field with a value other than zero, the calling application must include an odd days prepaid fee in the request.
Balloon Loan Module - Response
The Data object for a response from the Balloon module is defined below, in the
order the fields are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔹CountryObjects:
🟥 Errors[],🟥 Warnings[],🟥 Results,🟦 FedBox,🟦 TILARESPA2015,🟦 Moneys,🟦 Accrual,🟦 PMI,🟦 PmtStreams[],🟦 Protection,🟦 AmTable
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
If the request specified a two-character or three-digit Country code, then
this field will be present and will contain the full name of the country
associated with the specified code. Please see the Countries
Appendix for the list of supported countries and their
associated codes.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Balloon",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?",
"AmortTerm" : "36"
}
}
{
"Result" : 200,
"Module" : "Balloon",
"Data" : {
"Errors" : [
"Data.LoanDate (StringDate) not found.",
"Data.PmtDate (StringDate) not found.",
"Data.Term (StringInt) not found.",
"Data.IntRate (StringFloat) not found.",
"Data.Proceeds (StringFloat) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟦 Data.Results
| Type | Required |
|---|---|
| Object | no |
This field(s) of this object represent the most important numerical results for the loan request.
Objects:
None
🔸 Data.Results.Payment
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The regular payment for the loan.
🔸 Data.Results.Final
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The computed / specified final payment of the balloon loan.
🟦 Data.FedBox
| Type | Required |
|---|---|
| Object | no |
This object groups together all fields which contain important numerical information, as defined in the Truth-In-Lending laws (Regulation Z).
Fields:
🔸AmtFin,🔸FinChg,🔸TotPmts,🔹TotalSalePrice
🔸 Data.FedBox.AmtFin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The Regulation Z Amount Financed, which is defined as the amount of credit provided to the borrower or on their behalf.
🔸 Data.FedBox.FinChg
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost the borrower.
🔸 Data.FedBox.TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The amount which the borrower will have paid when the borrower has made all scheduled payments.
🔹 Data.FedBox.TotalSalePrice
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The sum of the total of payments plus the total down payment. Please note that
if no TotalDown field was included in
the request, then this element will not be present.
🟥 Data.FedBox.APR
| Type | Required |
|---|---|
| Object | yes |
The APR object contains fields which return the value and APR method used.
Fields:
🔸Value,🔹Max,🔹MaxExceeded,🔸TypeObjects:
None
🔸 Data.FedBox.APR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed APR, which is the cost of the extension of credit expressed as a yearly rate.
🔹 Data.FedBox.APR.Max
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Number | n/a |
This field returns the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this field will not be present in the response. The value of this field should be displayed as a percentage.
🔹 Data.FedBox.APR.MaxExceeded
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If a maximum APR is configured in the account's setup files, then the value of this field indicates whether or not the current loan exceeds the maximum APR. If no maximum APR has been specified, then this field will not be present in the response.
🔸 Data.FedBox.APR.Type
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field returns the APR method used to compute the reported APR.
🟦 Data.FedBox.MAPR
| Type | Required |
|---|---|
| Object | no |
The MAPR (military APR) object is only returned with the response if the value
of the Apr.UseMAPR request field is true.
Fields:
🔸Value,🔸Advance,🔸Max,🔸MaxExceededObjects:
None
🔸 Data.FedBox.MAPR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed military APR.
🔸 Data.FedBox.MAPR.Advance
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.
🔸 Data.FedBox.MAPR.Max
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
This field holds the maximum Military APR as specified in the input XML (see
Apr.MAPR_Max). If not specified, a default
value of 36% is assumed. The value of this field should be displayed as a
percentage. As an example, for "Max" :"36.000", you would disclose a maximum
Military APR of 36%.
🔸 Data.FedBox.MAPR.MaxExceeded
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
The value of this field indicates whether or not the current loan exceeds the
maximum allowed Military APR. As an example, if the maximum APR has been set to
36% and the Military APR for the returned loan was 37.125%, the MAPR object
would be:
{
"MAPR" : {
"Value" : "37.125",
"Advance" : "1350.00",
"Max" : "36.000",
"MaxExceeded" : true
}
}
🟦 Data.TILARESPA2015
| Type | Required |
|---|---|
| Object | no |
This object contains fields which are of interest to fulfilling the 2015 TILA
RESPA rule. It will only be present if the
Settings.TILARESPA2015 field in
the request is set to true.
Fields:
🔸TotalLoanCost,🔸CD_TotPmts,🔸TIPObjects:
🟥 LoanCosts[],🟥 In5Years,🟥 MaxPnIPmt,🟥 MinRate,🟥 MaxRate,🟥 ProjectedPaymentsTable[]
🔸 Data.TILARESPA2015.TotalLoanCost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The value of this field is the sum of all borrower paid loan costs. Since all
LoanCost values are rounded dollar amounts, the value of this
element will also be a rounded dollar amount.
🔸 Data.TILARESPA2015.CD_TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the sum of the total of payments, all borrower paid loan costs, and any odd days interest that is prepaid at loan closing. This value should be disclosed on the Closing Disclosure form in the Total of Payments field.
🔸 Data.TILARESPA2015.TIP
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The total interest percentage, rounded to three or fewer decimal places - as required.
🟥 Data.TILARESPA2015.LoanCosts[]
| Type | Required |
|---|---|
| Array of LoanCost Objects | yes |
For every object in the Fees[] array present in the
request which has its IsLoanCost field
set to true (and hence, is a borrower paid loan cost) and whose amount is
greater than zero (except odd days interest fee types, as explained in the
previous documentation of the Fee and object),
there will be a corresponding LoanCost object.
Fields:
🔹Name,🔹In5Years,🔸ValueObjects:
None
🔹 Data.TILARESPA2015.LoanCosts[].Name
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔹 Data.TILARESPA2015.LoanCosts[].In5Years
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | Same as Value |
If the entire amount of the fee is different from the amount collected over the first five years (for example, a service charge), then this field will be present and disclose the portion of this loan coast that is accrued during the first five years.
🔸 Data.TILARESPA2015.LoanCosts[].Value
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field is the numerical value of the fee, rounded to the nearest dollar.
🟥 Data.TILARESPA2015.In5Years
| Type | Required |
|---|---|
| Object | yes |
This object contains all important values required for the new "In 5 Years" section of the disclosure.
Fields:
🔸PaidTotal,🔸PaidPrincipalObjects:
None
🔸 Data.TILARESPA2015.In5Years.PaidTotal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds the sum of all "principal, interest, mortgage insurance, and borrower paid loan costs scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🔸 Data.TILARESPA2015.In5Years.PaidPrincipal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds "the principal scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🟥 Data.TILARESPA2015.MaxPnIPmt
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold the maximum sceduled principal and interest payment during the term of the loan, as well as the date on which that payment is made.
Objects:
None
🔸 Data.TILARESPA2015.MaxPnIPmt.Date
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field returns the date on which the maximum scheduled principal and interest payment is made. If the maximum scheduled payment occurs more than once, then the date returned is that of the first instance.
🔸 Data.TILARESPA2015.MaxPnIPmt.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The maximum sceduled principal and interest payment during the term of the loan.
🟥 Data.TILARESPA2015.MinRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the minimum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MinRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the minimum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MinRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the minimum rate is first applicable.
🟥 Data.TILARESPA2015.MaxRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the maximum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MaxRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the maximum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MaxRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the maximum rate is first applicable.
🟥 Data.TILARESPA2015.ProjectedPaymentsTable[]
| Type | Required |
|---|---|
Array of PPCol Objects | yes |
Fields:
🔸Num,🔸Title,🔸YearStart,🔸YearEnd,🔸PnIPmtMin,🔸PnIPmtMax,🔸IntOnly,🔸Balloon,🔸MIPmt,🔸TotalPmtMin,🔸TotalPmtMaxObjects:
None
This field returns an Array of projected payment table columns (PPCol), with
each array member detailing a single column. Per the regulation, there will be a
minimum of one column and a maximum of four columns, depending upon the
parameters of the loan.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Num
| Type | Required | Value |
|---|---|---|
| String | yes | Integer in [1...4] |
The value of this field identifies the number of the column to which the following fields apply. The value will be from 1 to 4.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Title
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
The value of this field is the title for the column. Most of the time, it will
be in the form of Years X - Y, or Year X, or Final Payment in the case of
a final balloon payment.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearStart
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The beginning year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearEnd
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The ending year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The minimum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The maximum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].IntOnly
| Type | Required | Value |
|---|---|---|
| String | yes | none, some, all |
If none of the payments associated with this column are interest only payments,
then the value of this field will be none. A value of some means that some
of the payments (but not all) associated with this columnt are interest only.
Finally, a value of all indicates that all payments associated with this
columnt are interest only.
Note that for the purposes of this field, a scheduled payment is considered an interest only payment if the payment amount pays off all interest due at the time of the payment, with no reduction in the principal balance.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Balloon
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
If any of the payments associated with this column are balloon payments (e.g.
isolated payments that are more than twice the value of a regular periodic
payment), then the value of this field will be true.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].MIPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The value of this field holds the mortgage insurance premium associated with this column, rounded to the nearest dollar. If no mortgage insurance is present or coverage has been dropped, a value of zero will be present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the minimum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the maximum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🟦 Data.Moneys
| Type | Required |
|---|---|
| Object | no |
This element groups together those other major cash result amounts not disclosed
under the FedBox object, such as the principal balance, interest charge,
and fee amounts.
Fields:
🔸Principal,🔸Interest,🔹ConstructInterest,🔹FinFees,🔹Prepaid,🔹PocketFees,🔹MAPRFees,🔹PMI_Fee,🔹MinIntChgAdj,🔹MinFinChgAdjObjects:
🟦 ODI,🟦 Fees[],🟦 ServiceCharges[],🟦 Protection
🔸 Data.Moneys.Principal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance is the amount on which interest is accrued. The principal balance consists of all advances requested by the borrower, as well as any fees and/or protection products which are financed.
🔸 Data.Moneys.Interest
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This value of this field holds the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.
🔹 Data.Moneys.ConstructInterest
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If the requested loan is a construction loan with a permanent loan attached and the account specified is set up to compute construction loans via the "Simple" method, then this field will contain the construction interest for the requested loan.
Note that if a permanent loan is attached to a construction loan and the
account is set up to use the "LaserPro" method, then the construction
and permanent loans are combined into a single loan, with the construction
(and permanent) loan's interest being reflected in the
Moneys.Interest field, and both loans reflected in a single,
combined amortization schedule.
If the requested loan is a construction loan without a permanent loan
attached, then the construction interest will be disclosed in the
Moneys.Interest field.
If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this field will not appear in the response.
🔹 Data.Moneys.FinFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field contains the sum of all fees having AddToPrin
set to true and occuring on the date of an advance. If this
value is zero, the field will not appear in the response.
🔹 Data.Moneys.Prepaid
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field represents all prepaid finance charges and contains the sum of all
fees occurring on an advance and having AddToFinChg
set to true. If this value is zero, the field will not be found in the response.
🔹 Data.Moneys.PocketFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are neither financed, nor added to the finance charge. In essence, they are paid out of the borrower's pocket. If no out of pocket fees were requested, then this field will not show up in the response.
🔹 Data.Moneys.MAPRFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are Military APR fees (including protection products), and will only appear if the Military APR has been requested.
🔹 Data.Moneys.PMI_Fee
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If PMI has been requested on the loan, and if a number of UpFront
payments have been specified, then this field will return the total PMI
fee for all up front payments.
🔹 Data.Moneys.MinIntChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum interest charge is configured in the account's setup files and the final payment was adjusted to meet this minimum interest charge, then this field will be returned in the response and will contain the value of the minimum interest charge adjustment.
🔹 Data.Moneys.MinFinChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum finance charge is configured in the account's setup files and the final payment was adjusted to meet this minimum finance charge, then this field will be returned in the response and will contain the value of the minimum finance charge adjustment.
🟦 Data.Moneys.ODI
| Type | Required |
|---|---|
| Object | no |
This object, if present, contains information regarding odd days interest. If no odd days interest was requested, then this object will not be present in the response.
Fields:
🔹AddToPmt,🔸Count,🔸Fee,🔹Months,🔹DailyCostObjects:
None
🔹 Data.Moneys.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If the odd days interest has been added to the first payment, then this field
will be present in the response with a value of true. If the odd days interest
has been treated as a prepaid finance charge, then this field will not be
present and a default value of false should be assumed.
🔸 Data.Moneys.ODI.Count
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Discloses the number of odd days computed by the SCE for the requested loan.
🔸 Data.Moneys.ODI.Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total amount odd days interest charge.
🔹 Data.Moneys.ODI.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field holds the number of odd months computed by the SCE for the requested
loan when using odd days accrual method 250. If the odd days accrual method is
a value other than 250, then this field will not be present in the ODI
object of the response.
🔹 Data.Moneys.ODI.DailyCost
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | n/a |
If the odd days interest fee is computed using a rounded daily cost, then the value of this field will hold that value. If the odd days interest is not computed using a rounded daily cost, then this field will not be present in the response.
🟦 Data.Moneys.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
If the requested loan included fees, then for each fee in the loan there will be a Fee object in this array containing the name of the fee and the computed fee amount.
If there were no fees requested with the loan, then the Moneys.Fees[] array
will not be included in the response.
Objects:
None
🔹 Data.Moneys.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.Fees[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed fee amount.
🟦 Data.Moneys.ServiceCharges[]
| Type | Required |
|---|---|
| Array of ServiceCharge Objects | no |
If the requested loan included service charges, then for each service charge in the loan there will be a ServiceCharge object in this array containing the name of the service charge and the computed service charge amount.
If there were no service charges requested with the loan, then the
Moneys.ServiceCharges[] array will not be included in the response.
Objects:
None
🔹 Data.Moneys.ServiceCharges[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the service charge, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.ServiceCharges[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed service charge amount.
🟦 Data.Moneys.Protection
| Type | Required |
|---|---|
| Object | no |
This object returns summary information on all payment protection products computed with the loan. If no protection products were included with the loan, then this object will be omitted from the response.
Fields:
🔸Cost,🔸PerPmt,🔸PerDay,🔸Category,🔹IsDP,🔹MandatoryObjects:
None
🔸 Data.Moneys.Protection.Cost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total cost of all protection plans included with the
computed loan. For the individual plan costs, see the
Protection field described below.
🔸 Data.Moneys.Protection.PerPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per payment.
🔸 Data.Moneys.Protection.PerDay
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per day.
🔸 Data.Moneys.Protection.Category
| Type | Required | Values |
|---|---|---|
| String | yes | None, SP, MOB, TrueMOB, PaidSP |
Te value of this field specifies the category under which the computed loan protection falls. The categories are described below:
| Category | Description |
|---|---|
None | No loan protection products were computed with this loan. |
SP | Financed single premium coverage. |
MOB | Monthly outstanding balance coverage. |
TrueMOB | TruStage's monthly outstanding balance method. |
PaidSP | Non-financed single premium coverage. |
🔹 Data.Moneys.Protection.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field indicates if the specified account's protection is set up as debt
protection. If this field is not present, then the default value of false
should be used (which indicates that the account's protection is set up as
insurance instead).
🔹 Data.Moneys.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field should only appear in the response if the value of the is true.
If this field does not appear in the output, then the value should default to
false.
If the value of the Mandatory field is true, then the total premium / fee
amount for all insurance / debt protection products has been treated as a part
of the Finance Charge, and hence will affect the effective APR.
🟦 Data.Accrual
| Type | Required |
|---|---|
| Object | no |
This object groups together interest accrual information, such as the accrual method(s) used, days to the first payment and the loan's maturity date.
Fields:
🔸Method,🔸Days1Pmt,🔸DayCount,🔸MaturityObjects:
None
🔸 Data.Accrual.Method
| Type | Required | Values |
|---|---|---|
| String | yes | Text |
The Method field contains a textual description of the interest accrual method
used to compute the loan (e.g. Unit Period 365 Simple.)
🔸 Data.Accrual.Days1Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field contains the number of days between the date of the first
advance and the date of first payment, computed by one of two
methods as specified in by Accrual.DayCount (below).
🔸 Data.Accrual.DayCount
| Type | Required | Values |
|---|---|---|
| String | yes | True360, Actual |
This field specifies the method used to compute the number of days from the date
of the first advance until the first payment date. Actual means that the
actual number of days between these two dates are used, whereas the True360
method use a 360 day calendar.
🔸 Data.Accrual.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
Holds the maturity date of the loan, which is the date on which the last
payment is scheduled. All dates are in the form of YYYY-MM-DD, and must
be 10 characters long.
🟦 Data.PMI
| Type | Required |
|---|---|
| Object | no |
The PMI object will only appear if PMI has been computed with the loan. Please
note that the PMI premiums are not reflected in the amount reported in the
Results.Payment or Results.Final
fields, the PmtStreams[] array, the
FedBox.TotPmts field, nor the Pmt field
of the AmTable.AmLines[] array.
Fields:
🔸Rate,🔸LTV,🔸PremiumPerYear,🔸PremiumPerPeriod,🔹IndexToWarn,🔹IndexToRemoveObjects:
None
🔸 Data.PMI.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | % >= 0 |
The percentage rate used in the PMI calculation.
🔸 Data.PMI.LTV
| Type | Required | Values |
|---|---|---|
| String | yes | % >= 0 |
The loan to value ratio of the computed loan, expressed as a percentage.
🔸 Data.PMI.PremiumPerYear
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The annual PMI premium amount.
🔸 Data.PMI.PremiumPerPeriod
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The periodic PMI premium amount.
🔹 Data.PMI.IndexToWarn
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
This field only appears if the
WarnLTV PMI input field is specified,
and indicates that the payment index on which the remaining principal balance to
home value ratio drops below the specified percentage.
🔹 Data.PMI.IndexToRemove
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
This field only appears if the
DropLTV PMI input field is specified,
and indicates that the payment index on which the remaining principal balance to
home value ratio drops below the specified percentage. PMI coverage stops
after this payment.
🟦 Data.PmtStreams[]
| Type | Required |
|---|---|
| Object | no |
The PmtStreams[] array is made up of one or more PmtStream objects (there
will always be at least one of these elements, and there may be more than one
depending upon the loan type). The PmtStream objects describe the scheduled
stream of payments for the computed loan. Instead of disclosing each and every
payment individually (which can be done with the AmTable object),
the payment stream groups together consecutive equal payments at the same
interest rate to produce output along the lines of:
{
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "50.13",
"Rate" : "4.500",
"Begin" : "2022-10-01"
},
{
"Term" : "10",
"Pmt" : "37.59",
"Rate" : "4.500",
"Begin" : "2022-11-01"
},
{
"Term" : "1",
"Pmt" : "10062.59",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
]
}
Each object describes a single stream of equal payments at the same interest rate, using the following fields to define the important properties of each payment stream.
Fields:
🔸Term,🔸Pmt,🔸Rate,🔸BeginObjects:
Note
🔸 Data.PmtStreams[].Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The Term field holds the number of payments that make up the given payment
stream.
🔸 Data.PmtStreams[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The Pmt field holds the computed payment amount for this payment stream.
🔹 Data.PmtStreams[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number |
Contains the interest rate used for the duration of this payment stream. If this payment stream accrued interest using split-rate tiers, then this field will not be returned.
🔸 Data.PmtStreams[].Begin
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field identifies the date on which the first payment for this given payment
stream is scheduled to be made. All dates are in the form of YYYY-MM-DD, and
must be 10 characters long.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
If protection products are requested, then this object will be present in the response, along with a field for each requested protection product.
Fields :
NoneObjects:
🟦 Life,🟦 Level,🟦 Disability,🟦 Unemployment,🟦 Property
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
If life protection was requested with the loan and decreasing life was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing life coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Life.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Life.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Life.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Life.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Life.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Life.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Life.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Life.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Life.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary life product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Life.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Life.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Life.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Life.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this object
will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Life.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Life.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Life.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Life.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Level
| Type | Required |
|---|---|
| Object | no |
If level protection was requested with the loan and decreasing level was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing level coverage.
Objects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Level.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Level.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🟦 Data.Protection.Level.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Level.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Level.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Level.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Level.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Level.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary Level product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Level.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Level.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Level.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Level.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Level.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Level.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Level.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Level.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
If disability protection was requested with the loan and decreasing disability was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing disability coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Disability.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Disability.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Disability.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Disability.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Disability.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Disability.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Disability.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Disability.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Disability.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Disability.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Disability.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Disability.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Disability.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Disability.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Disability.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Disability.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Borrower2
| Type | Required |
|---|---|
| Object | no |
The borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Disability.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Unemployment
| Type | Required |
|---|---|
| Object | no |
If unemployment protection was requested with the loan and decreasing unemployment
was configured for this loan type, then the Life object will be present in the
response to return information on decreasing unemployment coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Unemployment.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Unemployment.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Unemployment.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Unemployment.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Unemployment.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Unemployment.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Unemployment.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Unemployment.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Unemployment.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Unemployment.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Unemployment.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Unemployment.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Unemployment.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Unemployment.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Unemployment.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Unemployment.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Unemployment.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Unemployment.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Unemployment.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Unemployment.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Unemployment.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Unemployment.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Unemployment.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Unemployment.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Unemployment.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Unemployment.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Unemployment.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Unemployment.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Unemployment.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Unemployment.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Unemployment.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Property
| Type | Required |
|---|---|
| Object | no |
If property protection was requested with the loan and decreasing property was
configured for this loan type, then the Property object will be present in the
response to return information on decreasing property coverage.
Objects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Property.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Property.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🟦 Data.Protection.Property.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Property.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Property.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Property.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Property.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Property.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Property.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Property.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Property.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Property.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Property.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Property.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Property.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Property.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Property.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Property.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Property.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Property.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Property.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Property.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Property.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Property.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Property.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Property.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Property.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Property.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Property.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Property.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Property.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Property.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Property.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Property.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Property.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Property.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Property.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.AmTable
| Type | Required |
|---|---|
| Object | no |
This object contains fields which summarize and describe the loan's amortization
schedule. If Settings.ShowAmTable
is set to false, then this object will not be found in the response.
Fields:
🔹Months,🔹Weeks,🔹OddDaysObjects:
🟦 GrandTotals,🟦 SubTotals[],🟥 AmLines[]
🔹 Data.AmTable.AvgBal
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the average balance of the loan used in the Canadian APR calculation.
🔹 Data.AmTable.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of months in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.Weeks
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of weeks in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.OddDays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the number of odd days in the term of the loan used in the Canadian APR calculation. Odd days are computed by moving backwards from the maturity date the number of disclosed months or weeks, and then counting the additional number of days required to land on the loan date.
🟦 Data.AmTable.GrandTotals
| Type | Required |
|---|---|
| Object | no |
This object describes the total amounts of various categories throughout the life of the loan. As an example, the total amount paid to interest and principal, as well as the total of payments are all contained in fields of this object.
Fields:
🔸PmtTot,🔸IntTot,🔸PrinTot,🔹CLTot,🔹AHTot,🔹IUTot,🔹PMITot,🔹SCTotObjects:
None
🔸 Data.AmTable.GrandTotals.PmtTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total of payments scheduled for the computed loan.
🔸 Data.AmTable.GrandTotals.IntTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total amount paid to interest over the life of the loan, assuming all payments are made as scheduled.
🔸 Data.AmTable.GrandTotals.PrinTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.
🔹 Data.AmTable.GrandTotals.CLTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLTot field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life over the duration of the loan.
🔹 Data.AmTable.GrandTotals.AHTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHTot field will only appear on loans with certain types of disability or
debt protection products, such as those based on a monthly outstanding balance.
It contains the total amount paid for this protection over the duration of the
loan.
🔹 Data.AmTable.GrandTotals.IUTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IUTot field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection over the duration
of the loan.
🔹 Data.AmTable.GrandTotals.PMITot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The PMITot field will only appear on loans with PMI insurance where the
PMI premiums were requested in the amortization schedule. It contains the total
PMI amount paid (not including any up front periodic PMI premiums)for PMI over
the duration of the loan.
🔹 Data.AmTable.GrandTotals.SCTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The SCTot field will only appear on loans with service charges. It
contains the total service charge amount paid over the duration of the loan.
🟦 Data.AmTable.SubTotals[]
| Type | Required |
|---|---|
| Array of SubTotal Objects | no |
Describes the total amounts of various categories paid during a given calendar year.
For each year in which the computed loan has scheduled payments, there will be
a SubTotal object in the array.
Fields:
🔸Year,🔸Start,🔸Events,🔸PmtSub,🔸IntSub,🔸PrinSub,🔹CLSub,🔹AHSub,🔹IUSub,🔹PMISub,🔹SCSubObjects:
None
🔸 Data.AmTable.SubTotals[].Year
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The calendar year for which the subtotal data is applicable.
🔸 Data.AmTable.SubTotals[].Start
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the first amortization event which falls in the specified
calendar year. To find the AmLines[] object which corresponds to
this value, match the Idx field of the AmLine
object.
🔸 Data.AmTable.SubTotals[].Events
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the number of amortization events which belong to this calendar year.
🔸 Data.AmTable.SubTotals[].PmtSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total of payments scheduled for the calendar year.
🔸 Data.AmTable.SubTotals[].IntSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Holds the total amount paid to interest over the calendar year, assuming all payments are made as scheduled.
🔸 Data.AmTable.SubTotals[].PrinSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total amount paid to principal during the calendar year, assuming all payments are made as scheduled.
🔹 Data.AmTable.SubTotals[].CLSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLSub field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life during the year.
🔹 Data.AmTable.SubTotals[].AHSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHSub field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection during the year.
🔹 Data.AmTable.SubTotals[].IUSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IUSub field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for involuntary unemployment during
the year.
🔹 Data.AmTable.SubTotals[].PMISub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The PMISub field will only appear on loans with PMI insurance where the PMI
premiums were requested in the amortization schedule. It contains the total PMI
amount paid (not including any up front periodic PMI premiums) for PMI during
the year.
🔹 Data.AmTable.SubTotals[].SCSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The SCSub field will only appear on loans with service charges. It contains
the total of service charges paid during the year.
🟥 Data.AmTable.AmLines[]
| Type | Required |
|---|---|
| Array of AmLine Objects | yes |
There is one AmLine object for each amortization event which occurs during
the life of a loan. Most of the time, each event will describe a payment, and
detail how that payment is applied (to interest, principal, loan protection
products, etc.). Some events, such as capitalizing interest, will not have
payments but will show how the loan amortizes.
Fields:
🔸Idx,🔸Date,🔸BegBal,🔸Pmt,🔸Int,🔸Prin,🔹CL,🔹AH,🔹IU,🔹PMI,🔹SC,🔹UnpaidInt,🔸EndBalObjects:
None
🔸 Data.AmTable.AmLines[].Idx
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The index of the amortization event, which is either the payment number, or zero. A value of zero designates an event that is either not a payment or is a skipped payment.
🔸 Data.AmTable.AmLines[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the amortization event is scheduled to occur. All dates are in
the form of YYYY-MM-DD, and must be 10 characters long.
🔸 AmData.AmTable.AmLines[]ine.BegBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance before the amortization event occurs.
🔸 Data.AmTable.AmLines[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The payment amount for this event.
🔸 Data.AmTable.AmLines[].Int
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of interest paid at this event.
🔸 Data.AmTable.AmLines[].Prin
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of principal paid at this event.
🔹 Data.AmTable.AmLines[].CL
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CL field will only appear on loans with certain types of life protection
products, such as those based on a monthly outstanding balance. It contains the
amount of the payment which is marked for life coverage.
🔹 Data.AmTable.AmLines[].AH
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AH field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for disability /
debt protection coverage.
🔹 Data.AmTable.AmLines[].IU
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IU field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for this
coverage.
🔹 Data.AmTable.AmLines[].PMI
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field contains the PMI premium for this payment, and will only show up if PMI has been computed for this payment and if PMI premiums should be displayed in the amortization schedule.
🔹 Data.AmTable.AmLines[].SC
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field contains the total service charge for this payment, and will only be present if one or more service charges were requested with the loan.
🔹 Data.AmTable.AmLines[].UnpaidInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear on an amortization line when interest has been accrued, but has not yet been paid or added to the principal balance. If the interest accrued has not yet been rounded, then the unpaid interest will be displayed to four (4) decimal placed. If rounded, then the unpaid interest is displayed to two (2) decimal places.
🔸 Data.AmTable.AmLines[].EndBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The principal balance amount, after the amortization event has taken place.
Single Payment Notes
Single payment notes are loans which obligate the borrower to repay the principal borrowed plus the interest charged by the lender in one payment that is due on a date specified in the note.
Sample Request
The following example is a request for a single payment note with proceeds of
$5,000, interest will accrue at a 5.5% rate using an actual day / 365 simple
accrual method (accrual code 220), with a financed and APR affecting document
preparation fee of $25 included.
{
"Module" : "SinglePmt",
"Data" : {
"LoanDate" : "2022-07-20",
"PmtDate" : "2022-12-31",
"IntRate" : "5.500",
"Proceeds" : "5000.00",
"Fees" : [
{
"Name" : "Doc Prep Fee",
"AddToFinChg" : true,
"AddToPrin" : true,
"CalcType" : "Dollar",
"Entry" : "25.00"
}
],
"Settings" : {
"AccrualCode" : "220"
}
}
}
Sample Response
{
"Result" : 200,
"Module" : "SinglePmt",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Results" : {
"Payment" : "5149.18"
},
"FedBox" : {
"AmtFin" : "5000.00",
"FinChg" : "149.18",
"TotPmts" : "5149.18",
"APR" : {
"Value" : "6.640",
"Type" : "Actuarial"
}
},
"Moneys" : {
"Principal" : "5025.00",
"Interest" : "124.18",
"FinFees" : "25.00",
"FinChgFees" : "25.00",
"Fees" : [
{
"Name" : "Doc Prep Fee",
"Fee" : "25.00"
}
]
},
"Accrual" : {
"Method" : "Actual/365 Simple",
"Days1Pmt" : "164",
"DayCount" : "Actual",
"Maturity" : "2022-12-31"
},
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "5149.18",
"Rate" : "5.500",
"Begin" : "2022-12-31"
}
],
"AmTable" : {
"GrandTotals" : {
"PmtTot" : "5149.18",
"IntTot" : "124.18",
"PrinTot" : "5025.00"
},
"SubTotals" : [
{
"Year" : "2022",
"Start" : "1",
"Events" : "1",
"PmtSub" : "5149.18",
"IntSub" : "124.18",
"PrinSub" : "5025.00"
}
],
"AmLines" : [
{
"Idx" : "1",
"Date" : "2022-12-31",
"BegBal" : "5025.00",
"Pmt" : "5149.18",
"Int" : "124.18",
"Prin" : "5025.00",
"EndBal" : "0.00"
}
]
}
}
}
Single Payment Note - Request
The fields of the Data object supported by a SinglePmt module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹Country,🔸IntRate,🔹IntStartDate,🔸LoanDate,🔸PmtDate,🔹Proceeds,🔹TotalDownObjects:
🟦 Apr,🟦 Fees[],🟦 Format,🟦 ODI,🟦 Protection,🟦 ServiceCharges[],🟦 Settings
The fields of the Data object supported by an Equal Pmt module request are
defined in alphabetical order below:
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
This field allows the calling application to specify a two (2) character or
three (3) digit country code. If none is provided, then a default value of US
will be used. Please see the Countries Appendix for
the list of supported countries and their associated codes.
Specifying the Country will also set the default value for the
APR.Method and
Format.CurrencyDecimals fields, as appropriate for
the country specified.
🔸 Data.IntRate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
Determine the interest rate used for the loan.
The interest rate should be expressed as a percentage. For example,
a loan computed with a rate of 5.125% would be specified as
"IntRate" : "5.125".
🔹 Data.IntStartDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | same value as LoanDate |
This field contains the date on which interest begins to accrue on the loan's principal balance. If this field is not specified, then the interest start date is set equal the loan date. Also note that the interest start date must be equal to the loan date when computing a construction loan.
The interest start date (when specified) must be on or after the loan date, as well as on or before the first payment date.
🔸 Data.LoanDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field holds the date on which the loan amount is disbursed and interest
begins to accrue. All dates must be in the form of YYYY-MM-DD, and be 10
characters long.
🔸 Data.PmtDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field specifies the first (and for single payment notes, only) payment date
in the loan's repayment schedule. All dates must be in the form of YYYY-MM-DD,
and be 10 characters long.
🔹 Data.Proceeds
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | n/a |
The proceeds specified indicate the amount of money the borrower is requesting, and does not include financed fees, financed insurances, etc.
🔹 Data.TotalDown
| Type | Required | Values |
|---|---|---|
| String | no | Currency > 0 |
This optional field represents the total down payment that the borrower has applied to reduce the requested proceeds. It may consist of a cash down payment, net trade-in value, or rebate. You only need to specify a total down payment if the loan needs to disclose a total sale price. Typical examples of these loan types are auto and boat loans.
🟦 Data.Apr
| Type | Required |
|---|---|
| Object | no |
Settings related to the computed effective rate returned by the SCE (most commonly, the Regulation Z APR in the United States of America) are contained in the fields of this object.
Fields:
🔹MAPR_Max,🔹Method,🔹UseMAPRObjects:
None
🔹 Data.Apr.MAPR_Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 36.0 |
If you are computing the Military APR (see UseMAPR below) and
wish to override the default maximum APR value of 36%, then specify the desired
maximum as the value of this field.
🔹 Data.Apr.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, actuarial, eu, ca, xirr, xirr360, irr | default |
This field allows the calling application to specify an APR calculation
method which will override the default value found in the setup file for the given
Account. If this field is set to a valid value, then the
specified method will be used to compute the APR for this loan calculation.
If the Country field has been set by the calling application and
this field is not set, then the APR method used will be determined by the
specified country. For the United States of America, the default APR method is
actuarial. For a country in the European Union, the default value is
eu (European Union APR). For Canada, the default APR method is
ca (Canadian APR).
The xirr value implements the internal rate of return method as
implemented in Microsoft\textregistered Excel via the XIRR() function,
and is based on an actual day calendar with a 365 day divisor.
The xirr360 value implements the internal rate of return method based
upon a unit period calendar with a 360 day divisor.
The irr value implements a common spreadsheet internal rate of return
method which assumes strict regular periods. Deviating from a strict regular
periodicity may produce unreliable results.
If this field is not specified and the Country field is not
specified, then the value of default will be used which informs the
SCE to use the APR method defined in the setup file for the specified
Account.
🔹 Data.Apr.UseMAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to a value of true, then the SCE will compute the
Military APR in addition to the Regulation Z APR. The
MAPR object will be included in the loan
response.
🟦 Data.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
This array of Fee objects allows the calling application to specify one ore
more Fee objects to be included with the loan.
Fields:
🔹AddToFinChg,🔹AddToPrin,🔹Adjust,🔹CalcType,🔹Entry,🔹IsLoanCost,🔹MAPR,🔹Max,🔹Min,🔹NameObjects:
None
🔹 Data.Fees[].AddToFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this fee should be included in the computed Finance Charge (and hence, affect
the APR), then set this field to true. The default value of false indicates
that the fee does not affect the Finance Charge nor APR.
🔹 Data.Fees[].AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If this fee should be added to the principal balance (e.g. the fee is financed
along with the advance(s)), then set this field to true. If set to false,
then the fee is paid up front out of the borrower's pocket.
🔹 Data.Fees[].Adjust
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | 0 |
The optional Adjust field allows the calling application
to increase or decrease the base amount on which a fee is calculated.
If a negative value is specified and this adjustment would produce a
negative base amount, then a value of zero is returned for the given fee.
This field has no effect on fees with a CalcType of Dollar.
As an example, in Tennessee you may need to define a financed, non-APR affecting fee to be computed by decreasing the amount financed by $2,000, and then multiplying this reduced amount by 0.115. The way to accomplish this in the SCE is as follows:
{
"Fees" : [
{
"Name" : "TN Fee",
"CalcType" : "OnAmtFin",
"Adjust" : "-2000.00",
"Entry" : "0.115",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
🔹 Data.Fees[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Dollar, OnProceeds, OnPrincipal, OnAmtFin | Dollar |
This field specifies how the fee is to be computed, as described in the following table.
| Fee Calc Type | Description |
|---|---|
Dollar | The Entry field is understood as a flat dollar amount. |
OnProceeds | The Entry field is understood as a percentage value, to be applied to the loan's proceeds, defined as the sum of advances. An Entry of 0.25 would represent a fee of 0.25% of the total proceeds. |
OnPrincipal | The Entry field is understood as a percentage value, to be applied to the loan's principal balance. An Entry of 0.125 would represent a fee of 0.125% of the principal balance. |
OnAmtFin | The Entry field is understood as a percentage value, to be applied to the loan's Regulation Z Amount Financed. An Entry of 0.33 would represent a fee of 0.33% of the amount financed. |
🔹 Data.Fees[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
How this field is interpreted depends upon the Fee.CalcType field.
Please see the documentation for this field for further information.
🔹 Data.Fees[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which fees need to be considered "borrower paid loan costs",
as defined in the rule. Please note that if the fee is paid by a lender or other
third party, then the fee does not affect the loan calculation and should not be
sent to the SCE. If it is sent, then the value of this field should be set
to false.
🔹 Data.Fees[].MAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If you wish to compute the Military APR, then certain fees may not be considered Regulation Z APR affecting fees, but are considered Military APR affecting fees. In this case, you will need to set the value of this field to true.
Fees which are added to the finance charge (e.g. "AddToFinChg"
: true) are always considered MAPR fees, regardless of the stated value of this
field.
Note that debt protection products are automatically included in the calculation of the Military APR, no matter what method is used for payment (e.g. single premium vs. monthly outstanding balance).
🔹 Data.Fees[].Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then the maximum value will be used instead. If no maximum value is specified or is set to a value of zero, then no maximum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified maximum value is checked after enforcing a specified minimum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Min
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a minimum value for the fee is specified and is greater than zero, then if the computed fee is less than this minimum value, then the minimum value will be used instead. If no minimum value is specified or is set to a value of zero, then no minimum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified minimum value is checked before enforcing a specified maximum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the fee in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value will be determined by the value of the
Country field. For most countries, the default value is 2.
If no country code is specified, then the default value for this field is 2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
🟦 Data.ODI
| Type | Required |
|---|---|
| Object | no |
If odd days should be treated as a prepaid finance charge or added to the first payment in a manner different from how interest is accruing, then the request needs to define how odd days interest is computed and handled using the fields of this object.
Fields:
🔹AccrualCode,🔹AddToPmt,🔹AddToPrin,🔹AnchorDate,🔹ForceUnitPeriod,🔹NoCap,🔹UseDailyCost,🔹UseNegODIObjects:
None
🔹 Data.ODI.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 204, 205, 210, 211, 220, 221, 230, 231, 250 | default |
The accrual code defines how the odd days interest is computed. The meaning of the allowed accrual codes is defined below.
Note that accrual code 250 ("Variable Days Per Year") defines the basis
divisor days to be equal to 12 multiplied by the number of days in the month of
the date on which interest begins to accrue. Thus, if the interest start date
falls in November, then the number of basis days is 360. If the interest start
date falls in a month with 31 days, then the number of basis days is 372. For an
interest start date in February, the number of basis days will either be 336 or
348, depending upon whether or not it is a leap year.
| Accrual Code | Description |
|---|---|
204 | True360/360 |
205 | True360/365 |
210 | Actual/360 |
211 | True365/360 |
220 | Actual/365 |
221 | True365/365 |
230 | Actual/Actual |
231 | Midnight 366 |
250 | Actual/Variable Days Per Year |
🔹 Data.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application wants the odd days interest to be added to the first
payment, then set the value of this field to true. A value of false
indicates that the odd days interest will be treated as a prepaid finance
charge.
🔹 Data.ODI.AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If any odd days interest should be treated as a financed prepaid fee, then set
the value of this field to true. Note that if both AddToPmt and AddToPrin
are set to true, then a warning message will be returned by the SCE and the
value of AddToPrin will be set to false.
🔹 Data.ODI.AnchorDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | BackUnitPeriod, BackDaysPerPeriod | BackUnitPeriod |
The computed number of odd days is the number of days between the loan date and
the anchor date. This field determines how to arrive at the anchor date. A value
of BackUnitPeriod means that the anchor date is one unit period prior to the
specified first payment date. A value of BackDaysPerPeriod means that the
anchor date is the number of days per period prior to the first payment date.
Please note that for both of these methods, the period used will be that
associated with the payment stream in which the first payment occurs.
🔹 Data.ODI.ForceUnitPeriod
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Some unit period methods will not use a strict unit period interest accrual
factor in the period to the first payment. For example, code 302 will count
the days to the first payment and divide by 365. For a monthly loan, setting
this field to true will use a 1/12 factor instead of Days/365.
🔹 Data.ODI.NoCap
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When the odd days interest is financed, setting this field to true prevents
interest from being computed on interest. The default is false, which means
interest will be computed on interest.
🔹 Data.ODI.UseDailyCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the total odd days prepaid fee is computed by first generating a rounded (to
the nearest penny) daily cost and then multiplying this value by the computed
number of odd days, then set the value of this property to true.
A value of false means that the daily cost is left unrounded, and the total
prepaid fee is rounded after the computation is complete.
🔹 Data.ODI.UseNegODI
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If there are negative odd days in the loan, then the value of this field
determines if a negative odd days interest fee is computed. If the value of this
field is false, then negative odd days fees are not allowed, the SCE will
return a value of zero in this situation, and the computed payment will be
adjusted to take into account the negative odd days. A value of true will
return a negative odd days interest fee (in effect, it then becomes and odd days
interest credit) when there are negative odd days in a loan.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
The Protection object is used by the calling application to request one or
more payment protection products (e.g. life, disability, involuntary
unemployment, or personal property) be included in the loan calculation. Each of
these products is requested by including its own child object, along with
the borrower birthdays.
Fields:
🔹Birthday1,🔹Birthday2,🔹LineOfCredit,🔹Mandatory,🔹ShowBorrowerInfo,🔹ShowCapsObjects:
🟦 Disability,🟦 Life
🔹 Data.Protection.Birthday1
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the secondary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday2" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower2 or both.
🔹 Data.Protection.Birthday2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the primary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday1" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower1 or both.
🔹 Data.Protection.Financed
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the computed premiums for single premium debt protection products should be
financed along with the proceeds, then this field should be set to true (which
is the default value if not specified). A value of false indicates that the
computed premiums will not be financed with the proceeds, and hence will be paid
out of pocket by the borrower. Note that this applies to single premium
insurance products only!
🔹 Data.Protection.LineOfCredit
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this is an account using TruStage's MOB insurance, and if this loan is a
line of credit where product term caps should be ignored, then set this field to
true. Otherwise, omit this field or set it to false.
🔹 Data.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then any computed payment
protection premium or fee will be considered a mandatory fee which will be
included as a part of the Finance Charge, and hence affect the disclosed APR.
If the Mandatory field is set to false, then the loan will treat any
premiums / fees as normal.
🔹 Data.Protection.ShowBorrowerInfo
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have data returned for each specified
borrower instead of a single Term object, then set the value of this field to
true. Otherwise, omit this field or set it to false. See the Borrower and
Term objects defined in the response section for more information.
🔹 Data.Protection.ShowCaps
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have cap information (e.g. maximum
terms, coverage amounts, ages, etc.) returned for each product offered, set the
value of this field to true. Otherwise, omit this field or set it to false.
See the Caps object defined in the response section for more information.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
The Disability object determines what type of disability coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTerm,🔹TableObjects:
None
🔹 Data.Protection.Disability.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Disability.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Disability object altogether or specify a value of none.
🔹 Data.Protection.Disability.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Disability.Table
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0...19] | 0 |
If the specified account has been set up with multiple disability or debt cancellation plans, then this field determines which plan number will be used. If no table number is specified, the first table (table zero) will be used.
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
The Life object determines what type of life coverage is
requested for the loan.
Fields:
🔹CovAmount,🔹Covers,🔹CovTerm,🔹Dismemberment,🔹Method,🔹UseLevelRatesObjects:
None
🔹 Data.Protection.Life.CovAmount
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a coverage amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum coverage amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user specified coverage amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Life.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Life object altogether or specify a value of none.
🔹 Data.Protection.Life.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Life.Dismemberment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer life protection products with
optional dismemberment coverage, and if the optional dismemberment coverage is
desired, then set this field's value to true. Otherwise, use the default value
of false.
🔹 Data.Protection.Life.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Default, Gross, Net | Default |
Some accounts are configured to offer different types of credit life products (usually gross and net). In these accounts, this field allows the calling application to specify which method to use for a given loan. If no method is present in the request, then the default method will be used.
🔹 Data.Protection.Life.UseLevelRates
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer single premium credit life
using level rates instead of the normal decreasing rates, and if you wish to use
level rates instead of decreasing, then set this field's value to true.
Otherwise, use the default value of false.
🟦 Data.ServiceCharges[]
| Type | Required |
|---|---|
| Array of ServiceCharge Objects | no |
This array of ServiceCharge objects allows the calling application to specify
one ore more Service Charge objects to be included with the loan.
Fields:
🔹CalcType,🔸Entry,🔹Exact,🔹IsLoanCost,🔹Name,🔹RoundObjects:
None
🔹 Data.ServiceCharges[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | LumpSum, Periodic | LumpSum |
A service charge of type LumpSum allows the calling application to
specify an amount that will be spread out evenly over the loan's payment
stream. On the other hand, a Periodic service charge is the amount
which will be added to each payment.
🔸 Data.ServiceCharges[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Floating >= 0 | n/a |
How this field is interpreted depends upon the
ServiceCharge.CalcType field.
It is the numeric amount defining either the lump sum or periodically paid
service charge.
🔹 Data.ServiceCharges[].Exact
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
The Exact field is only considered when the service charge is of type
LumpSum. When the calculated periodic amount is rounded, it will most often
times produce a total service charge amount that differs from what was
specified.
If the Exact field is set to true, then the final periodic amount will
be adjusted so that the sum of all periodic amounts is exactly equal to the
entered amount (and will result in an odd final payment). A value of false
indicates that the final periodic amount will not be adjusted.
🔹 Data.ServiceCharges[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which service charges need to be considered "borrower paid
loan costs", as defined in the rule. Please note that if the fee is paid by a
lender or other third party, then the fee does not affect the loan calculation
and should not be sent to the SCE. If it is sent, then the value of this
field should be set to false.
🔹 Data.ServiceCharges[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the service charge in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🔹 Data.ServiceCharges[].Round
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | nearest, up, down | nearest |
This field is only considered when the service charge is of type
LumpSum. It determines how the calculated periodic amount
is rounded.
🟦 Data.Settings
| Type | Required |
|---|---|
| Object | no |
The Settings object allows the calling application to alter the default
loan calculation options.
Fields:
🔹Account,🔹AccrualCode,🔹ConMethod,🔹DataPath,🔹Lastday,🔹PmtDollarRound,🔹PmtRound,🔹ShowAmTable,🔹TILARESPA2015,🔹YieldPPYObjects:
None
🔹 Data.Settings.Account
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..9999] | 1 |
The Account field specifies the numeric setup file account number that will be
used to compute the requested loan. Each account is numbered from 1 to 9,999,
and each account corresponds to a set of setup file which define numerous
settings which may affect the loan calculation, such as the accrual method,
insurance methods / rates / caps, etc.
🔹 Data.Settings.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | see table | default |
The method of interest accrual is defined by this field. A value of default
informs the SCE to use the interest accrual method defined in the setup file for
the specified Account. All other valid accrual codes
are described in the table below.
🔹 Data.Settings.ConMethod
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, simple, interestonly | default |
When computing a construction loan, there are two supported methods for computing interest during the constrcution period:
If the value of this field is simple, then the estimated construction
interets will be computed and disclosed as a lup-sum prepaid fee (see
the Moneys.ConstructInterest
response field).
If the value of this field is interestonly, then the construction and
permanent loans are combined into a single loan, with the construction (and
permanent) loan's interest being reflected in the
Moneys.Interest field, and
both loans reflected in a single, combined amortization schedule.
A value of default instructs the SCE to use the construction method specified
in the setup file for the given account.
🔹 Data.Settings.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔹 Data.Settings.Lastday
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | as configured in setup file |
If present, this field overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day accrual calendar where the first payment date falls at the end of a month with fewer than 31 days. As an example, if the first payment date is on April 30, should the following payment dates be made on the 30th of each month, or on the last day of the month?
If no value is specified for this field, then the setup file setting will be
used. If true is specified, then conditions triggering a last day situation
will result in payments which fall at the end of the month. A value of false
indicates that when dictated, subsequent payment dates will not be moved to the
last day of the month.
🔹 Data.Settings.OddFinal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Following the last payment of an amortization schedule, the ending balance is unlikely to be zero due to the rounding of the payment. In order to assure perfect amortization, lenders will use an odd final payment to perfectly amortize the loan.
Set OddFinal to true to ensure perfect amortization with a payment that
pays off the loan.
🔹 Data.Settings.PmtDollarRound
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Payments are normally rounded to the penny, according to the method specified by
in the setup file, or vy theSettings.PmtRound field. If
the payment should be rounded to the dollar instead of the penny, then set
the value of this field to true.
Note that for some loans (such as those with longer terms or relatively small proceeds), rounding the payment up or to the nearest dollar may require a shortened loan term to prevent one or more negative payments at the end of the loan.
🔹 Data.Settings.PmtRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, nearest, up, down, best | default |
How are calculated payments to be rounded at and beyond this event? best means
to choose the payment that returns a minimal ending balance at the end of
amortization. If two payments result in the same minimal error magnitude, the
smaller payment is chosen. default means that the setting should be configured
as specified in the setup file.
🔹 Data.Settings.ShowAmTable
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
To supress the entire amortization schedule from the response, set value of this
field to false; otherwise, the amortization schedule will be returned with the
response.
🔹 Data.Settings.TILARESPA2015
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will include data for the
Integrated Mortgage Disclosures under the Real Estate Settlement Procedures Act
(Regulation X) and the Truth In Lending Act (Regulation
Z) rule, which is
required as of August 1st, 2015. If the field is omitted or set to false, then
the TILA RESPA outputs will not be generated.
Note that this field is supported for equal payment loans, balloon payment loans, single payment notes, interest only loans, fixed principal plus interest loans, skips, pickups and irregulars, and ARMs.
🔹 Data.Settings.YieldPPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0, 2, 4, 6, 12 | 0 |
Canadian mortgages may compute periodic interest using a fractional power of a periodic yield. If set to a value other than `0', this field determines the period. Please contact us for further information if you support mortgage calculations in Canada. Note that when using this field with a value other than zero, the calling application must include an odd days prepaid fee in the request.
Single Payment Note - Response
The Data object for a response from the SinglePmt module is defined below, in the
order the fields are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔹CountryObjects:
🟥 Errors[],🟥 Warnings[],🟥 Results,🟦 FedBox,🟦 TILARESPA2015,🟦 Moneys,🟦 Accrual,🟦 PmtStreams[],🟦 Protection,🟦 AmTable
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
If the request specified a two-character or three-digit Country code, then
this field will be present and will contain the full name of the country
associated with the specified code. Please see the Countries
Appendix for the list of supported countries and their
associated codes.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "SinglePmt",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "SinglePmt",
"Data" : {
"Errors" : [
"Data.LoanDate (StringDate) not found.",
"Data.PmtDate (StringDate) not found.",
"Data.IntRate (StringFloat) not found.",
"Data.Proceeds (StringFloat) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟦 Data.Results
| Type | Required |
|---|---|
| Object | no |
This field(s) of this object represent the most important numerical results for the loan request.
Fields:
🔸Payment,Objects:
None
🔸 Data.Results.Payment
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The loan payment is shown here.
🟦 Data.FedBox
| Type | Required |
|---|---|
| Object | no |
This object groups together all fields which contain important numerical information, as defined in the Truth-In-Lending laws (Regulation Z).
Fields:
🔸AmtFin,🔸FinChg,🔸TotPmts,🔹TotalSalePrice
🔸 Data.FedBox.AmtFin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The Regulation Z Amount Financed, which is defined as the amount of credit provided to the borrower or on their behalf.
🔸 Data.FedBox.FinChg
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost the borrower.
🔸 Data.FedBox.TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The amount which the borrower will have paid when the borrower has made all scheduled payments.
🔹 Data.FedBox.TotalSalePrice
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The sum of the total of payments plus the total down payment. Please note that
if no TotalDown field was included in
the request, then this element will not be present.
🟥 Data.FedBox.APR
| Type | Required |
|---|---|
| Object | yes |
The APR object contains fields which return the value and APR method used.
Fields:
🔸Value,🔹Max,🔹MaxExceeded,🔸TypeObjects:
None
🔸 Data.FedBox.APR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed APR, which is the cost of the extension of credit expressed as a yearly rate.
🔹 Data.FedBox.APR.Max
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Number | n/a |
This field returns the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this field will not be present in the response. The value of this field should be displayed as a percentage.
🔹 Data.FedBox.APR.MaxExceeded
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If a maximum APR is configured in the account's setup files, then the value of this field indicates whether or not the current loan exceeds the maximum APR. If no maximum APR has been specified, then this field will not be present in the response.
🔸 Data.FedBox.APR.Type
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field returns the APR method used to compute the reported APR.
🟦 Data.FedBox.MAPR
| Type | Required |
|---|---|
| Object | no |
The MAPR (military APR) object is only returned with the response if the value
of the Apr.UseMAPR request field is
true.
Fields:
🔸Value,🔸Advance,🔸Max,🔸MaxExceededObjects:
None
🔸 Data.FedBox.MAPR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed military APR.
🔸 Data.FedBox.MAPR.Advance
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.
🔸 Data.FedBox.MAPR.Max
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
This field holds the maximum Military APR as specified in the input XML (see
Apr.MAPR_Max). If not specified, a default value
of 36% is assumed. The value of this field should be displayed as a percentage.
As an example, for "Max" :"36.000", you would disclose a maximum Military APR
of 36%.
🔸 Data.FedBox.MAPR.MaxExceeded
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
The value of this field indicates whether or not the current loan exceeds the
maximum allowed Military APR. As an example, if the maximum APR has been set to
36% and the Military APR for the returned loan was 37.125%, the MAPR object
would be:
{
"MAPR" : {
"Value" : "37.125",
"Advance" : "1350.00",
"Max" : "36.000",
"MaxExceeded" : true
}
}
🟦 Data.TILARESPA2015
| Type | Required |
|---|---|
| Object | no |
This object contains fields which are of interest to fulfilling the 2015 TILA
RESPA rule. It will only be present if the
Settings.TILARESPA2015 field in the
request is set to true.
Fields:
🔸TotalLoanCost,🔸CD_TotPmts,🔸TIPObjects:
🟥 LoanCosts[],🟥 In5Years,🟥 MaxPnIPmt,🟥 MinRate,🟥 MaxRate,🟥 ProjectedPaymentsTable[]
🔸 Data.TILARESPA2015.TotalLoanCost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The value of this field is the sum of all borrower paid loan costs. Since all
LoanCost values are rounded dollar amounts, the value of this
element will also be a rounded dollar amount.
🔸 Data.TILARESPA2015.CD_TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the sum of the total of payments, all borrower paid loan costs, and any odd days interest that is prepaid at loan closing. This value should be disclosed on the Closing Disclosure form in the Total of Payments field.
🔸 Data.TILARESPA2015.TIP
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The total interest percentage, rounded to three or fewer decimal places - as required.
🟥 Data.TILARESPA2015.LoanCosts[]
| Type | Required |
|---|---|
| Array of LoanCost Objects | yes |
For every object in the Fees[] array present in the
request which has its IsLoanCost field set
to true (and hence, is a borrower paid loan cost) and whose amount is greater
than zero (except odd days interest fee types, as explained in the previous
documentation of the Fee and object), there will be a
corresponding LoanCost object.
Fields:
🔹Name,🔹In5Years,🔸ValueObjects:
None
🔹 Data.TILARESPA2015.LoanCosts[].Name
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔹 Data.TILARESPA2015.LoanCosts[].In5Years
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | Same as Value |
If the entire amount of the fee is different from the amount collected over the first five years (for example, a service charge), then this field will be present and disclose the portion of this loan coast that is accrued during the first five years.
🔸 Data.TILARESPA2015.LoanCosts[].Value
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field is the numerical value of the fee, rounded to the nearest dollar.
🟥 Data.TILARESPA2015.In5Years
| Type | Required |
|---|---|
| Object | yes |
This object contains all important values required for the new "In 5 Years" section of the disclosure.
Fields:
🔸PaidTotal,🔸PaidPrincipalObjects:
None
🔸 Data.TILARESPA2015.In5Years.PaidTotal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds the sum of all "principal, interest, mortgage insurance, and borrower paid loan costs scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🔸 Data.TILARESPA2015.In5Years.PaidPrincipal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds "the principal scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🟥 Data.TILARESPA2015.MaxPnIPmt
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold the maximum sceduled principal and interest payment during the term of the loan, as well as the date on which that payment is made.
Objects:
None
🔸 Data.TILARESPA2015.MaxPnIPmt.Date
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field returns the date on which the maximum scheduled principal and interest payment is made. If the maximum scheduled payment occurs more than once, then the date returned is that of the first instance.
🔸 Data.TILARESPA2015.MaxPnIPmt.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The maximum sceduled principal and interest payment during the term of the loan.
🟥 Data.TILARESPA2015.MinRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the minimum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MinRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the minimum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MinRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the minimum rate is first applicable.
🟥 Data.TILARESPA2015.MaxRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the maximum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MaxRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the maximum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MaxRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the maximum rate is first applicable.
🟥 Data.TILARESPA2015.ProjectedPaymentsTable[]
| Type | Required |
|---|---|
Array of PPCol Objects | yes |
Fields:
🔸Num,🔸Title,🔸YearStart,🔸YearEnd,🔸PnIPmtMin,🔸PnIPmtMax,🔸IntOnly,🔸Balloon,🔸MIPmt,🔸TotalPmtMin,🔸TotalPmtMaxObjects:
None
This field returns an Array of projected payment table columns (PPCol), with
each array member detailing a single column. Per the regulation, there will be a
minimum of one column and a maximum of four columns, depending upon the
parameters of the loan.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Num
| Type | Required | Value |
|---|---|---|
| String | yes | Integer in [1...4] |
The value of this field identifies the number of the column to which the following fields apply. The value will be from 1 to 4.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Title
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
The value of this field is the title for the column. Most of the time, it will
be in the form of Years X - Y, or Year X, or Final Payment in the case of
a final balloon payment.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearStart
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The beginning year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearEnd
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The ending year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The minimum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The maximum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].IntOnly
| Type | Required | Value |
|---|---|---|
| String | yes | none, some, all |
If none of the payments associated with this column are interest only payments,
then the value of this field will be none. A value of some means that some
of the payments (but not all) associated with this columnt are interest only.
Finally, a value of all indicates that all payments associated with this
columnt are interest only.
Note that for the purposes of this field, a scheduled payment is considered an interest only payment if the payment amount pays off all interest due at the time of the payment, with no reduction in the principal balance.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Balloon
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
If any of the payments associated with this column are balloon payments (e.g.
isolated payments that are more than twice the value of a regular periodic
payment), then the value of this field will be true.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].MIPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The value of this field holds the mortgage insurance premium associated with this column, rounded to the nearest dollar. If no mortgage insurance is present or coverage has been dropped, a value of zero will be present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the minimum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the maximum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🟦 Data.Moneys
| Type | Required |
|---|---|
| Object | no |
This element groups together those other major cash result amounts not disclosed
under the FedBox object, such as the principal balance, interest charge,
and fee amounts.
Fields:
🔸Principal,🔸Interest,🔹FinFees,🔹Prepaid,🔹PocketFees,🔹MAPRFees,🔹MinIntChgAdj,🔹MinFinChgAdjObjects:
🟦 ODI,🟦 Fees[],🟦 ServiceCharges[],🟦 Protection
🔸 Data.Moneys.Principal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance is the amount on which interest is accrued. The principal balance consists of all advances requested by the borrower, as well as any fees and/or protection products which are financed.
🔸 Data.Moneys.Interest
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This value of this field holds the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.
🔹 Data.Moneys.FinFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field contains the sum of all fees having AddToPrin
set to true and occuring on the date of an advance. If this
value is zero, the field will not appear in the response.
🔹 Data.Moneys.Prepaid
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field represents all prepaid finance charges and contains the sum of all
fees occurring on an advance and having AddToFinChg
set to true. If this value is zero, the field will not be found in the response.
🔹 Data.Moneys.PocketFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are neither financed, nor added to the finance charge. In essence, they are paid out of the borrower's pocket. If no out of pocket fees were requested, then this field will not show up in the response.
🔹 Data.Moneys.MAPRFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are Military APR fees (including protection products), and will only appear if the Military APR has been requested.
🔹 Data.Moneys.MinIntChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum interest charge is configured in the account's setup files and the final payment was adjusted to meet this minimum interest charge, then this field will be returned in the response and will contain the value of the minimum interest charge adjustment.
🔹 Data.Moneys.MinFinChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum finance charge is configured in the account's setup files and the final payment was adjusted to meet this minimum finance charge, then this field will be returned in the response and will contain the value of the minimum finance charge adjustment.
🟦 Data.Moneys.ODI
| Type | Required |
|---|---|
| Object | no |
This object, if present, contains information regarding odd days interest. If no odd days interest was requested, then this object will not be present in the response.
Fields:
🔹AddToPmt,🔸Count,🔸Fee,🔹Months,🔹DailyCostObjects:
None
🔹 Data.Moneys.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If the odd days interest has been added to the first payment, then this field
will be present in the response with a value of true. If the odd days interest
has been treated as a prepaid finance charge, then this field will not be
present and a default value of false should be assumed.
🔸 Data.Moneys.ODI.Count
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Discloses the number of odd days computed by the SCE for the requested loan.
🔸 Data.Moneys.ODI.Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total amount odd days interest charge.
🔹 Data.Moneys.ODI.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field holds the number of odd months computed by the SCE for the requested
loan when using odd days accrual method 250. If the odd days accrual method is
a value other than 250, then this field will not be present in the ODI
object of the response.
🔹 Data.Moneys.ODI.DailyCost
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | n/a |
If the odd days interest fee is computed using a rounded daily cost, then the value of this field will hold that value. If the odd days interest is not computed using a rounded daily cost, then this field will not be present in the response.
🟦 Data.Moneys.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
If the requested loan included fees, then for each fee in the loan there will be a Fee object in this array containing the name of the fee and the computed fee amount.
If there were no fees requested with the loan, then the Moneys.Fees[] array
will not be included in the response.
Objects:
None
🔹 Data.Moneys.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.Fees[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed fee amount.
🟦 Data.Moneys.ServiceCharges[]
| Type | Required |
|---|---|
| Array of ServiceCharge Objects | no |
If the requested loan included service charges, then for each service charge in the loan there will be a ServiceCharge object in this array containing the name of the service charge and the computed service charge amount.
If there were no service charges requested with the loan, then the
Moneys.ServiceCharges[] array will not be included in the response.
Objects:
None
🔹 Data.Moneys.ServiceCharges[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the service charge, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.ServiceCharges[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed service charge amount.
🟦 Data.Moneys.Protection
| Type | Required |
|---|---|
| Object | no |
This object returns summary information on all payment protection products computed with the loan. If no protection products were included with the loan, then this object will be omitted from the response.
Fields:
🔸Cost,🔸PerPmt,🔸PerDay,🔸Category,🔹IsDP,🔹MandatoryObjects:
None
🔸 Data.Moneys.Protection.Cost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total cost of all protection plans included with the
computed loan. For the individual plan costs, see the
Protection field described below.
🔸 Data.Moneys.Protection.PerPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per payment.
🔸 Data.Moneys.Protection.PerDay
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per day.
🔸 Data.Moneys.Protection.Category
| Type | Required | Values |
|---|---|---|
| String | yes | None, SP, MOB, TrueMOB, PaidSP |
Te value of this field specifies the category under which the computed loan protection falls. The categories are described below:
| Category | Description |
|---|---|
None | No loan protection products were computed with this loan. |
SP | Financed single premium coverage. |
MOB | Monthly outstanding balance coverage. |
TrueMOB | TruStage's monthly outstanding balance method. |
PaidSP | Non-financed single premium coverage. |
🔹 Data.Moneys.Protection.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field indicates if the specified account's protection is set up as debt
protection. If this field is not present, then the default value of false
should be used (which indicates that the account's protection is set up as
insurance instead).
🔹 Data.Moneys.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field should only appear in the response if the value of the is true.
If this field does not appear in the output, then the value should default to
false.
If the value of the Mandatory field is true, then the total premium / fee
amount for all insurance / debt protection products has been treated as a part
of the Finance Charge, and hence will affect the effective APR.
🟦 Data.Accrual
| Type | Required |
|---|---|
| Object | no |
This object groups together interest accrual information, such as the accrual method(s) used, days to the first payment and the loan's maturity date.
Fields:
🔸Method,🔸Days1Pmt,🔸DayCount,🔸MaturityObjects:
None
🔸 Data.Accrual.Method
| Type | Required | Values |
|---|---|---|
| String | yes | Text |
The Method field contains a textual description of the interest accrual method
used to compute the loan (e.g. "Unit Period 365 Simple".)
🔸 Data.Accrual.Days1Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field contains the number of days between the date of the first
advance and the date of first payment, computed by one of two
methods as specified in by Accrual.DayCount (below).
🔸 Data.Accrual.DayCount
| Type | Required | Values |
|---|---|---|
| String | yes | True360, Actual |
This field specifies the method used to compute the number of days from the date
of the first advance until the first payment date. Actual means that the
actual number of days between these two dates are used, whereas the True360
method use a 360 day calendar.
🔸 Data.Accrual.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
Holds the maturity date of the loan, which is the date on which the last
payment is scheduled. All dates are in the form of YYYY-MM-DD, and must
be 10 characters long.
🟦 Data.PmtStreams[]
| Type | Required |
|---|---|
| Object | no |
The PmtStreams[] array is made up of one or more PmtStream objects (there
will always be at least one of these elements, and there may be more than one
depending upon the loan type). The PmtStream objects describe the scheduled
stream of payments for the computed loan. Instead of disclosing each and every
payment individually (which can be done with the AmTable object),
the payment stream groups together consecutive equal payments at the same
interest rate to produce output along the lines of:
{
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "10062.59",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
]
}
Each object describes a single stream of equal payments at the same interest rate, using the following fields to define the important properties of each payment stream.
Fields:
🔸Term,🔸Pmt,🔸Rate,🔸BeginObjects:
Note
🔸 Data.PmtStreams[].Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The Term field holds the number of payments that make up the given payment
stream.
🔸 Data.PmtStreams[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The Pmt field holds the computed payment amount for this payment stream.
🔹 Data.PmtStreams[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number |
Contains the interest rate used for the duration of this payment stream. If this payment stream accrued interest using split-rate tiers, then this field will not be returned.
🔸 Data.PmtStreams[].Begin
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field identifies the date on which the first payment for this given payment
stream is scheduled to be made. All dates are in the form of YYYY-MM-DD, and
must be 10 characters long.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
If protection products are requested, then this object will be present in the response, along with a field for each requested protection product.
Fields :
NoneObjects:
🟦 Life,🟦 Level,🟦 Disability
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
If life protection was requested with the loan and decreasing life was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing life coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Life.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Life.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Life.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Life.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Life.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Life.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Life.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Life.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Life.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary life product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Life.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Life.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Life.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Life.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this object
will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Life.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Life.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Life.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Life.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Level
| Type | Required |
|---|---|
| Object | no |
If level protection was requested with the loan and decreasing level was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing level coverage.
Objects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Level.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Level.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🟦 Data.Protection.Level.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Level.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Level.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Level.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Level.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Level.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary Level product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Level.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Level.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Level.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Level.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Level.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Level.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Level.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Level.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
If disability protection was requested with the loan and decreasing disability was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing disability coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Disability.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Disability.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Disability.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Disability.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Disability.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Disability.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Disability.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Disability.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Disability.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Disability.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Disability.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Disability.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Disability.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Disability.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Disability.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Disability.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Borrower2
| Type | Required |
|---|---|
| Object | no |
The borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Disability.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.AmTable
| Type | Required |
|---|---|
| Object | no |
This object contains fields which summarize and describe the loan's amortization
schedule. If
Settings.ShowAmTable is set to
false, then this object will not be found in the response.
Fields:
🔹Months,🔹Weeks,🔹OddDaysObjects:
🟦 GrandTotals,🟦 SubTotals[],🟥 AmLines[]
🔹 Data.AmTable.AvgBal
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the average balance of the loan used in the Canadian APR calculation.
🔹 Data.AmTable.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of months in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.Weeks
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of weeks in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.OddDays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the number of odd days in the term of the loan used in the Canadian APR calculation. Odd days are computed by moving backwards from the maturity date the number of disclosed months or weeks, and then counting the additional number of days required to land on the loan date.
🟦 Data.AmTable.GrandTotals
| Type | Required |
|---|---|
| Object | no |
This object describes the total amounts of various categories throughout the life of the loan. As an example, the total amount paid to interest and principal, as well as the total of payments are all contained in fields of this object.
Fields:
🔸PmtTot,🔸IntTot,🔸PrinTot,🔹CLTot,🔹AHTot,🔹SCTotObjects:
None
🔸 Data.AmTable.GrandTotals.PmtTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total of payments scheduled for the computed loan.
🔸 Data.AmTable.GrandTotals.IntTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total amount paid to interest over the life of the loan, assuming all payments are made as scheduled.
🔸 Data.AmTable.GrandTotals.PrinTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.
🔹 Data.AmTable.GrandTotals.CLTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLTot field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life over the duration of the loan.
🔹 Data.AmTable.GrandTotals.AHTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHTot field will only appear on loans with certain types of disability or
debt protection products, such as those based on a monthly outstanding balance.
It contains the total amount paid for this protection over the duration of the
loan.
🔹 Data.AmTable.GrandTotals.SCTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The SCTot field will only appear on loans with service charges. It
contains the total service charge amount paid over the duration of the loan.
🟦 Data.AmTable.SubTotals[]
| Type | Required |
|---|---|
| Array of SubTotal Objects | no |
Describes the total amounts of various categories paid during a given calendar year.
For each year in which the computed loan has scheduled payments, there will be
a SubTotal object in the array.
Fields:
🔸Year,🔸Start,🔸Events,🔸PmtSub,🔸IntSub,🔸PrinSub,🔹CLSub,🔹AHSub,🔹SCSubObjects:
None
🔸 Data.AmTable.SubTotals[].Year
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The calendar year for which the subtotal data is applicable.
🔸 Data.AmTable.SubTotals[].Start
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the first amortization event which falls in the specified
calendar year. To find the AmLines[] object which corresponds to
this value, match the Idx field of the AmLine
object.
🔸 Data.AmTable.SubTotals[].Events
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the number of amortization events which belong to this calendar year.
🔸 Data.AmTable.SubTotals[].PmtSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total of payments scheduled for the calendar year.
🔸 Data.AmTable.SubTotals[].IntSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Holds the total amount paid to interest over the calendar year, assuming all payments are made as scheduled.
🔸 Data.AmTable.SubTotals[].PrinSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total amount paid to principal during the calendar year, assuming all payments are made as scheduled.
🔹 Data.AmTable.SubTotals[].CLSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLSub field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life during the year.
🔹 Data.AmTable.SubTotals[].AHSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHSub field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection during the year.
🔹 Data.AmTable.SubTotals[].SCSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The SCSub field will only appear on loans with service charges. It contains
the total of service charges paid during the year.
🟥 Data.AmTable.AmLines[]
| Type | Required |
|---|---|
| Array of AmLine Objects | yes |
There is one AmLine object for each amortization event which occurs during
the life of a loan. Most of the time, each event will describe a payment, and
detail how that payment is applied (to interest, principal, loan protection
products, etc.). Some events, such as capitalizing interest, will not have
payments but will show how the loan amortizes.
Fields:
🔸Idx,🔸Date,🔸BegBal,🔸Pmt,🔸Int,🔸Prin,🔹CL,🔹AH,🔹SC,🔹UnpaidInt,🔸EndBalObjects:
None
🔸 Data.AmTable.AmLines[].Idx
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The index of the amortization event, which is either the payment number, or zero. A value of zero designates an event that is either not a payment or is a skipped payment.
🔸 Data.AmTable.AmLines[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the amortization event is scheduled to occur. All dates are in
the form of YYYY-MM-DD, and must be 10 characters long.
🔸 AmData.AmTable.AmLines[]ine.BegBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance before the amortization event occurs.
🔸 Data.AmTable.AmLines[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The payment amount for this event.
🔸 Data.AmTable.AmLines[].Int
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of interest paid at this event.
🔸 Data.AmTable.AmLines[].Prin
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of principal paid at this event.
🔹 Data.AmTable.AmLines[].CL
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CL field will only appear on loans with certain types of life protection
products, such as those based on a monthly outstanding balance. It contains the
amount of the payment which is marked for life coverage.
🔹 Data.AmTable.AmLines[].AH
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AH field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for disability /
debt protection coverage.
🔹 Data.AmTable.AmLines[].SC
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field contains the total service charge for this payment, and will only be present if one or more service charges were requested with the loan.
🔹 Data.AmTable.AmLines[].UnpaidInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear on an amortization line when interest has been accrued, but has not yet been paid or added to the principal balance. If the interest accrued has not yet been rounded, then the unpaid interest will be displayed to four (4) decimal placed. If rounded, then the unpaid interest is displayed to two (2) decimal places.
🔸 Data.AmTable.AmLines[].EndBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The principal balance amount, after the amortization event has taken place.
Interest Only Loans
Interest only loans are loans which have a payment stream consisting of one or more interest only payment, with a final payment paying off the principal balance plus the interest accrued during the final payment period. The principal balance does not decrease during the term of the loan, until the final payment when it is scheduled to be fully paid.
Sample Request
The following example is a request for an interest only loan with proceeds of
$10,000, interest will accrue at a 4.5% rate using a unit period / 360 U. S.
Rule accrual method (accrual code 301), with a financed and APR affecting document
preparation fee of $25 included. There will be 11 monthly interest only payments
with an additional final payment paying off the loan.
{
"Module" : "InterestOnly",
"Data" : {
"LoanDate" : "2022-08-22",
"PmtDate" : "2022-10-01",
"IntRate" : "4.500",
"Term" : "12",
"PPY" : "12",
"Proceeds" : "10000.00",
"Fees" : [
{
"Name" : "Doc Prep Fee",
"AddToFinChg" : true,
"AddToPrin" : true,
"CalcType" : "Dollar",
"Entry" : "25.00"
}
],
"Settings" : {
"AccrualCode" : "301"
}
}
}
Sample Response
The following example is the response returned from the SCE for the request provided at the beginning of the previous section.
Example - Response Envelope for InterestOnly Module:
{
"Result" : 200,
"Module" : "InterestOnly",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Results" : {
"Final" : "10062.59",
"First" : "50.13"
},
"FedBox" : {
"AmtFin" : "10000.00",
"FinChg" : "488.62",
"TotPmts" : "10488.62",
"APR" : {
"Value" : "4.748",
"Type" : "Actuarial"
}
},
"Moneys" : {
"Principal" : "10025.00",
"Interest" : "463.62",
"FinFees" : "25.00",
"FinChgFees" : "25.00",
"Fees" : [
{
"Name" : "Doc Prep Fee",
"Fee" : "25.00"
}
]
},
"Accrual" : {
"Method" : "Unit Period 360 US Rule",
"Days1Pmt" : "40",
"DayCount" : "Actual",
"Maturity" : "2023-09-01"
},
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "50.13",
"Rate" : "4.500",
"Begin" : "2022-10-01"
},
{
"Term" : "10",
"Pmt" : "37.59",
"Rate" : "4.500",
"Begin" : "2022-11-01"
},
{
"Term" : "1",
"Pmt" : "10062.59",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
],
"AmTable" : {
"GrandTotals" : {
"PmtTot" : "10488.62",
"IntTot" : "463.62",
"PrinTot" : "10025.00"
},
"SubTotals" : [
{
"Year" : "2022",
"Start" : "1",
"Events" : "3",
"PmtSub" : "125.31",
"IntSub" : "125.31",
"PrinSub" : "0.00"
},
{
"Year" : "2023",
"Start" : "4",
"Events" : "9",
"PmtSub" : "10363.31",
"IntSub" : "338.31",
"PrinSub" : "10025.00"
}
],
"AmLines" : [
{
"Idx" : "1",
"Date" : "2022-10-01",
"BegBal" : "10025.00",
"Pmt" : "50.13",
"Int" : "50.13",
"Prin" : "0.00",
"EndBal" : "10025.00"
},
{
"Idx" : "2",
"Date" : "2022-11-01",
"BegBal" : "10025.00",
"Pmt" : "37.59",
"Int" : "37.59",
"Prin" : "0.00",
"EndBal" : "10025.00"
},
...,
{
"Idx" : "12",
"Date" : "2023-09-01",
"BegBal" : "10025.00",
"Pmt" : "10062.59",
"Int" : "37.59",
"Prin" : "10025.00",
"EndBal" : "0.00"
}
]
}
}
}
Interest Only Loan Module - Request
The fields of the Data object supported by a InterestOnly module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹Country,🔸IntRate,🔹IntStartDate,🔸LoanDate,🔸PmtDate,🔹PPY,🔸Proceeds,🔸Term,🔹TotalDownObjects:
🟦 Apr,🟦 Construction,🟦 Fees[],🟦 Format,🟦 MI,🟦 ODI,🟦 Protection,🟦 Settings
The fields of the Data object supported by an Equal Pmt module request are
defined in alphabetical order below:
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
This field allows the calling application to specify a two (2) character or
three (3) digit country code. If none is provided, then a default value of US
will be used. Please see the Countries Appendix for
the list of supported countries and their associated codes.
Specifying the Country will also set the default value for the
APR.Method and
Format.CurrencyDecimals fields, as appropriate for
the country specified.
🔸 Data.IntRate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
Determine the interest rate used for the loan.
The interest rate should be expressed as a percentage. For example,
a loan computed with a rate of 5.125% would be specified as
"IntRate" : "5.125".
🔹 Data.IntStartDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | same value as LoanDate |
This field contains the date on which interest begins to accrue on the loan's principal balance. If this field is not specified, then the interest start date is set equal the loan date. Also note that the interest start date must be equal to the loan date when computing a construction loan.
The interest start date (when specified) must be on or after the loan date, as well as on or before the first payment date.
🔸 Data.LoanDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field holds the date on which the loan amount is disbursed and interest
begins to accrue. All dates must be in the form of YYYY-MM-DD, and be 10
characters long.
🔸 Data.PmtDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field specifies the first (and for single payment notes, only) payment date
in the loan's repayment schedule. All dates must be in the form of YYYY-MM-DD,
and be 10 characters long.
🔹 Data.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for payments per year, and determines the payment
frequency for the requested loan. The default value of 12 will result in a
loan with 12 payments per year. If you require a loan with a payment frequency
other than monthly, specify it using this field.
🔸 Data.Proceeds
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency > 0 | n/a |
The proceeds specified indicate the amount of money the borrower is requesting, and does not include financed fees, financed insurances, etc.
🔹 Data.TotalDown
| Type | Required | Values |
|---|---|---|
| String | no | Currency > 0 |
This optional field represents the total down payment that the borrower has applied to reduce the requested proceeds. It may consist of a cash down payment, net trade-in value, or rebate. You only need to specify a total down payment if the loan needs to disclose a total sale price. Typical examples of these loan types are auto and boat loans.
🔸 Data.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer > 1 |
The Term field indicates the the number of payments to be made at the
specified payment frequency (see the PPY field above), after
which the loan is scheduled to be paid off.
🟦 Data.Apr
| Type | Required |
|---|---|
| Object | no |
Settings related to the computed effective rate returned by the SCE (most commonly, the Regulation Z APR in the United States of America) are contained in the fields of this object.
Fields:
🔹MAPR_Max,🔹Method,🔹UseMAPRObjects:
None
🔹 Data.Apr.MAPR_Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 36.0 |
If you are computing the Military APR (see UseMAPR below) and
wish to override the default maximum APR value of 36%, then specify the desired
maximum as the value of this field.
🔹 Data.Apr.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, actuarial, eu, ca, xirr, xirr360, irr | default |
This field allows the calling application to specify an APR calculation
method which will override the default value found in the setup file for the given
Account. If this field is set to a valid value, then the
specified method will be used to compute the APR for this loan calculation.
If the Country field has been set by the calling application and
this field is not set, then the APR method used will be determined by the
specified country. For the United States of America, the default APR method is
actuarial. For a country in the European Union, the default value is
eu (European Union APR). For Canada, the default APR method is
ca (Canadian APR).
The xirr value implements the internal rate of return method as
implemented in Microsoft\textregistered Excel via the XIRR() function,
and is based on an actual day calendar with a 365 day divisor.
The xirr360 value implements the internal rate of return method based
upon a unit period calendar with a 360 day divisor.
The irr value implements a common spreadsheet internal rate of return
method which assumes strict regular periods. Deviating from a strict regular
periodicity may produce unreliable results.
If this field is not specified and the Country field is not
specified, then the value of default will be used which informs the
SCE to use the APR method defined in the setup file for the specified
Account.
🔹 Data.Apr.UseMAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to a value of true, then the SCE will compute the
Military APR in addition to the Regulation Z APR. The
MAPR object will be included in the loan
response.
🟦 Data.Construction
| Type | Required |
|---|---|
| Object | no |
The Construction object determines if this loan is a construction to permanent
loan request. If you wish to compute a construction loan without an attached
permanent loan, you will need to use either the
Construction or Loan modules.
Fields:
🔹HalfCommitment,🔹PPY,🔸Rate,🔸TermObjects:
None
🔹 Data.Construction.HalfCommitment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
During the term of the construction loan, the estimated interest for disclosure
purposes may be either computed on the full or half commitment amounts. By
setting this field to true, interest will be estimated using half of the
initial commitment amount (i.e. the principal balance). The default value of
false will cause interest to be estimated using the entire initial commitment
amount.
🔹 Data.Construction.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
The PPY field allows the calling application to specify the payment frequency
during the construction period. The default value of 12 will result in a
construction loan with 12 payments per year. If you require a payment frequency
during the construction period other than monthly, then specify it using this
field. Note that the permanent loan's payment frequency may differ from the
construction period's payment frequency.
🔸 Data.Construction.Rate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number in [-99.999...600] | n/a |
This field determines the rate applied to the appropriate commitment amount during the term of the construction loan.
🔸 Data.Construction.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Integer > 0 | n/a |
The term of the construction loan (in payments) is specified using this field. Please note that the term may not exceed five years.
🟦 Data.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
This array of Fee objects allows the calling application to specify one ore
more Fee objects to be included with the loan.
Fields:
🔹AddToFinChg,🔹AddToPrin,🔹Adjust,🔹CalcType,🔹Entry,🔹IsLoanCost,🔹MAPR,🔹Max,🔹Min,🔹NameObjects:
None
🔹 Data.Fees[].AddToFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this fee should be included in the computed Finance Charge (and hence, affect
the APR), then set this field to true. The default value of false indicates
that the fee does not affect the Finance Charge nor APR.
🔹 Data.Fees[].AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If this fee should be added to the principal balance (e.g. the fee is financed
along with the advance(s)), then set this field to true. If set to false,
then the fee is paid up front out of the borrower's pocket.
🔹 Data.Fees[].Adjust
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | 0 |
The optional Adjust field allows the calling application
to increase or decrease the base amount on which a fee is calculated.
If a negative value is specified and this adjustment would produce a
negative base amount, then a value of zero is returned for the given fee.
This field has no effect on fees with a CalcType of Dollar.
As an example, in Tennessee you may need to define a financed, non-APR affecting fee to be computed by decreasing the amount financed by $2,000, and then multiplying this reduced amount by 0.115. The way to accomplish this in the SCE is as follows:
{
"Fees" : [
{
"Name" : "TN Fee",
"CalcType" : "OnAmtFin",
"Adjust" : "-2000.00",
"Entry" : "0.115",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
🔹 Data.Fees[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Dollar, OnProceeds, OnPrincipal, OnAmtFin | Dollar |
This field specifies how the fee is to be computed, as described in the following table.
| Fee Calc Type | Description |
|---|---|
Dollar | The Entry field is understood as a flat dollar amount. |
OnProceeds | The Entry field is understood as a percentage value, to be applied to the loan's proceeds, defined as the sum of advances. An Entry of 0.25 would represent a fee of 0.25% of the total proceeds. |
OnPrincipal | The Entry field is understood as a percentage value, to be applied to the loan's principal balance. An Entry of 0.125 would represent a fee of 0.125% of the principal balance. |
OnAmtFin | The Entry field is understood as a percentage value, to be applied to the loan's Regulation Z Amount Financed. An Entry of 0.33 would represent a fee of 0.33% of the amount financed. |
🔹 Data.Fees[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
How this field is interpreted depends upon the Fee.CalcType field.
Please see the documentation for this field for further information.
🔹 Data.Fees[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which fees need to be considered "borrower paid loan costs",
as defined in the rule. Please note that if the fee is paid by a lender or other
third party, then the fee does not affect the loan calculation and should not be
sent to the SCE. If it is sent, then the value of this field should be set
to false.
🔹 Data.Fees[].MAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If you wish to compute the Military APR, then certain fees may not be considered Regulation Z APR affecting fees, but are considered Military APR affecting fees. In this case, you will need to set the value of this field to true.
Fees which are added to the finance charge (e.g. "AddToFinChg"
: true) are always considered MAPR fees, regardless of the stated value of this
field.
Note that debt protection products are automatically included in the calculation of the Military APR, no matter what method is used for payment (e.g. single premium vs. monthly outstanding balance).
🔹 Data.Fees[].Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then the maximum value will be used instead. If no maximum value is specified or is set to a value of zero, then no maximum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified maximum value is checked after enforcing a specified minimum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Min
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a minimum value for the fee is specified and is greater than zero, then if the computed fee is less than this minimum value, then the minimum value will be used instead. If no minimum value is specified or is set to a value of zero, then no minimum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified minimum value is checked before enforcing a specified maximum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the fee in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value will be determined by the value of the
Country field. For most countries, the default value is 2.
If no country code is specified, then the default value for this field is 2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
🟦 Data.MI
| Type | Required |
|---|---|
| Object | no |
The MI object determines if this loan includes one of the supported types of
mortgage insurance (MI): PMI or FHA. This object contains fields which further
specify mortgage insurance options.
Fields:
🔹CashDown🔹LoanAmt,🔸PropertyValue,🔹TypeObjects:
🟦 Periodic,🟥 Rates[],🟦 UpFront
🔹 Data.MI.CashDown
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The CashDown field represents a cash down payment made at closing. If
specified and greater than zero, this amount will be deducted from the principal
balance. If not specified, the cash down payment will default to zero.
🔹 Data.MI.LoanAmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field represents the amount by which the PMI rates are multiplied to produce a level PMI premium. If not specified, then the principal balance will be used to compute the annual premium.
🔸 Data.MI.PropertyValue
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
This field's value represents the appraised property value, and will be used in the calculation of the loan to value ratio.
🔹 Data.MI.Type
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | fha, pmi | pmi |
This field determines the type of mortgage insurance to include with the loan.
If the value of this field is set to fha, then a different MI premium is
computed every twelve months based upon the average outstanding principal
balance during that same term. The MI calculation adheres strictly to the HUD
regulation.
If the value of this field is set to pmi, then each defined MI rate produces a
level MI premium based upon the inital loan amount.
🟦 Data.MI.Periodic
| Type | Required |
|---|---|
| Object | no |
The fields of this object determine the conditions when MI is no longer included.
Fields:
🔹DropLTV,🔹Term,🔹WarnLTVObjects:
None
🔹 Data.MI.Periodic.DropLTV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
The value of this field determines the loan to value ratio at which MI should be
removed, and is expressed as a percentage. For example, if you wish to
automatically drop MI when the loan to value ratio first equals or falls below
78%, then you would specify "DropLTV" : "78.0".
🔹 Data.MI.Periodic.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
The value of this field represents the the term (in payments) beyond which MI will be removed.
As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify
{
"MI" : {
"Periodic" : { "Term" : "180"}
}
}
🔹 Data.MI.Periodic.WarnLTV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
The value of this field determines the loan to value ratio at which a warning
should be issued, and is expressed as a percentage of LTV (loan to value). For
example,if you wish to know when the loan to value ratio first equals or falls
below 80%, then you would specify "WarnLTV" : "80.0".
🟥 Data.MI.Rates[]
| Type | Required |
|---|---|
| Array of Rate Objects | yes |
This array if Rate objects defines the rates used to compute MI on the loan.
There must be at least one Rate object in the Rates[] array, and there can
be more than one if rates are set to switch at a specified payment number.
Objects:
None
🔸 Data.MI.Rates[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number>= 0.0 |
The value of this field specifies the cost of mortgage insurance per $100 of the loan amount. As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as
{
"MI" : {
"Rates" : [
{ "Rate" : "1.50"}
]
}
}
🔹 Data.MI.Rates[].Switch
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
This optional field defines the payment number beyond which the associated MI rate will apply. If not specified, the value will default to zero.
Thus, if there is only a single MI rate, one may omit this field (see example above).
Example of a MI multiple rate structure (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):
{
"MI" : {
"Rates" : [
{ "Rate" : "1.50"},
{ "Rate" : "0.20" , "Switch" : "120"}
]
}
}
🟦 Data.MI.UpFront
| Type | Required |
|---|---|
| Object | no |
This object determines if there is an up front fee for mortgage insurance, and if so, how it is computer. If this object is not present in the request, then no up front fee will be computed. Note that ZOMP (zero option monthly premium) products do not have an up front fee, which means that this object should be omitted.
Fields:
🔹Paid,🔹Reduce,🔹Units,🔹ValueObjects:
None
🔹 Data.MI.UpFront.Paid
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | atclosing, bylender, financed | atclosing |
If the value of this field is set to financed, then the computed up front fee
will be added to the principal balance and the finance charge. A value of
atclosing will cause the value of the fee to be added to the finance charge
alone. Finally, a value of bylender means that the up front fee is to be paid
by the lender, hence the value of the fee is not added to either the principal
balance nor the finance charge.
🔹 Data.MI.UpFront.Reduce
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the specified number of periodic premiums to include as an up front fee is greater than zero, then this field determines if the term of coverage for PMI will be reduced by the same amount.
🔹 Data.MI.UpFront.Units
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | months, points, years | months |
If the Units field is set to months, then
UpFront.Value represents the number of periodic MI
premiums to be paid at closing.
If the Units field is set to Years, then
UpFront.Value represents the number of annual MI premiums
to be paid at closing. Many single premium products define the up front fee as a
number of years of MI to be paid up front.
Finally, if the Units field is set to Points, then
UpFront.Value represents the percentage of principal to
be paid up front. As of October 3, 2011, FHA loans use points.
🔹 Data.MI.UpFront.Value
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If part of the MI fees are to be paid up front, then value of this field must be
grater than zero. How the value of this field is interpreted depends upon the
Units field (see below).
The default value of zero means that no up front fee will be computed.
🟦 Data.ODI
| Type | Required |
|---|---|
| Object | no |
If odd days should be treated as a prepaid finance charge or added to the first payment in a manner different from how interest is accruing, then the request needs to define how odd days interest is computed and handled using the fields of this object.
Fields:
🔹AccrualCode,🔹AddToPmt,🔹AddToPrin,🔹AnchorDate,🔹ForceUnitPeriod,🔹NoCap,🔹UseDailyCost,🔹UseNegODIObjects:
None
🔹 Data.ODI.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 204, 205, 210, 211, 220, 221, 230, 231, 250 | default |
The accrual code defines how the odd days interest is computed. The meaning of the allowed accrual codes is defined below.
Note that accrual code 250 ("Variable Days Per Year") defines the basis
divisor days to be equal to 12 multiplied by the number of days in the month of
the date on which interest begins to accrue. Thus, if the interest start date
falls in November, then the number of basis days is 360. If the interest start
date falls in a month with 31 days, then the number of basis days is 372. For an
interest start date in February, the number of basis days will either be 336 or
348, depending upon whether or not it is a leap year.
| Accrual Code | Description |
|---|---|
204 | True360/360 |
205 | True360/365 |
210 | Actual/360 |
211 | True365/360 |
220 | Actual/365 |
221 | True365/365 |
230 | Actual/Actual |
231 | Midnight 366 |
250 | Actual/Variable Days Per Year |
🔹 Data.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application wants the odd days interest to be added to the first
payment, then set the value of this field to true. A value of false
indicates that the odd days interest will be treated as a prepaid finance
charge.
🔹 Data.ODI.AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If any odd days interest should be treated as a financed prepaid fee, then set
the value of this field to true. Note that if both AddToPmt and AddToPrin
are set to true, then a warning message will be returned by the SCE and the
value of AddToPrin will be set to false.
🔹 Data.ODI.AnchorDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | BackUnitPeriod, BackDaysPerPeriod | BackUnitPeriod |
The computed number of odd days is the number of days between the loan date and
the anchor date. This field determines how to arrive at the anchor date. A value
of BackUnitPeriod means that the anchor date is one unit period prior to the
specified first payment date. A value of BackDaysPerPeriod means that the
anchor date is the number of days per period prior to the first payment date.
Please note that for both of these methods, the period used will be that
associated with the payment stream in which the first payment occurs.
🔹 Data.ODI.ForceUnitPeriod
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Some unit period methods will not use a strict unit period interest accrual
factor in the period to the first payment. For example, code 302 will count
the days to the first payment and divide by 365. For a monthly loan, setting
this field to true will use a 1/12 factor instead of Days/365.
🔹 Data.ODI.NoCap
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When the odd days interest is financed, setting this field to true prevents
interest from being computed on interest. The default is false, which means
interest will be computed on interest.
🔹 Data.ODI.UseDailyCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the total odd days prepaid fee is computed by first generating a rounded (to
the nearest penny) daily cost and then multiplying this value by the computed
number of odd days, then set the value of this property to true.
A value of false means that the daily cost is left unrounded, and the total
prepaid fee is rounded after the computation is complete.
🔹 Data.ODI.UseNegODI
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If there are negative odd days in the loan, then the value of this field
determines if a negative odd days interest fee is computed. If the value of this
field is false, then negative odd days fees are not allowed, the SCE will
return a value of zero in this situation, and the computed payment will be
adjusted to take into account the negative odd days. A value of true will
return a negative odd days interest fee (in effect, it then becomes and odd days
interest credit) when there are negative odd days in a loan.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
The Protection object is used by the calling application to request one or
more payment protection products (e.g. life, disability, involuntary
unemployment, or personal property) be included in the loan calculation. Each of
these products is requested by including its own child object, along with
the borrower birthdays.
Fields:
🔹Birthday1,🔹Birthday2,🔹LineOfCredit,🔹Mandatory,🔹ShowBorrowerInfo,🔹ShowCapsObjects:
🟦 Disability,🟦 Life,🟦 Unemployment
🔹 Data.Protection.Birthday1
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the secondary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday2" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower2 or both.
🔹 Data.Protection.Birthday2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the primary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday1" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower1 or both.
🔹 Data.Protection.Financed
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the computed premiums for single premium debt protection products should be
financed along with the proceeds, then this field should be set to true (which
is the default value if not specified). A value of false indicates that the
computed premiums will not be financed with the proceeds, and hence will be paid
out of pocket by the borrower. Note that this applies to single premium
insurance products only!
🔹 Data.Protection.LineOfCredit
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this is an account using TruStage's MOB insurance, and if this loan is a
line of credit where product term caps should be ignored, then set this field to
true. Otherwise, omit this field or set it to false.
🔹 Data.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then any computed payment
protection premium or fee will be considered a mandatory fee which will be
included as a part of the Finance Charge, and hence affect the disclosed APR.
If the Mandatory field is set to false, then the loan will treat any
premiums / fees as normal.
🔹 Data.Protection.ShowBorrowerInfo
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have data returned for each specified
borrower instead of a single Term object, then set the value of this field to
true. Otherwise, omit this field or set it to false. See the Borrower and
Term objects defined in the response section for more information.
🔹 Data.Protection.ShowCaps
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have cap information (e.g. maximum
terms, coverage amounts, ages, etc.) returned for each product offered, set the
value of this field to true. Otherwise, omit this field or set it to false.
See the Caps object defined in the response section for more information.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
The Disability object determines what type of disability coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTerm,🔹TableObjects:
None
🔹 Data.Protection.Disability.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Disability.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Disability object altogether or specify a value of none.
🔹 Data.Protection.Disability.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Disability.Table
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0...19] | 0 |
If the specified account has been set up with multiple disability or debt cancellation plans, then this field determines which plan number will be used. If no table number is specified, the first table (table zero) will be used.
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
The Life object determines what type of life coverage is
requested for the loan.
Fields:
🔹CovAmount,🔹Covers,🔹CovTerm,🔹Dismemberment,🔹Method,🔹UseLevelRatesObjects:
None
🔹 Data.Protection.Life.CovAmount
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a coverage amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum coverage amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user specified coverage amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Life.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Life object altogether or specify a value of none.
🔹 Data.Protection.Life.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Life.Dismemberment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer life protection products with
optional dismemberment coverage, and if the optional dismemberment coverage is
desired, then set this field's value to true. Otherwise, use the default value
of false.
🔹 Data.Protection.Life.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Default, Gross, Net | Default |
Some accounts are configured to offer different types of credit life products (usually gross and net). In these accounts, this field allows the calling application to specify which method to use for a given loan. If no method is present in the request, then the default method will be used.
🔹 Data.Protection.Life.UseLevelRates
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer single premium credit life
using level rates instead of the normal decreasing rates, and if you wish to use
level rates instead of decreasing, then set this field's value to true.
Otherwise, use the default value of false.
🟦 Data.Protection.Unemployment
| Type | Required |
|---|---|
| Object | no |
The Unemployment object determines what type of unemployment coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTermObjects:
None
🔹 Data.Protection.Unemployment.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Unemployment.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Unemployment object altogether or specify a value of none.
🔹 Data.Protection.Unemployment.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🟦 Data.Settings
| Type | Required |
|---|---|
| Object | no |
The Settings object allows the calling application to alter the default
loan calculation options.
Fields:
🔹Account,🔹AccrualCode,🔹ConMethod,🔹DataPath,🔹Lastday,🔹PmtDollarRound,🔹PmtRound,🔹ShowAmTable,🔹TILARESPA2015,🔹YieldPPYObjects:
None
🔹 Data.Settings.Account
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..9999] | 1 |
The Account field specifies the numeric setup file account number that will be
used to compute the requested loan. Each account is numbered from 1 to 9,999,
and each account corresponds to a set of setup file which define numerous
settings which may affect the loan calculation, such as the accrual method,
insurance methods / rates / caps, etc.
🔹 Data.Settings.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | see table | default |
The method of interest accrual is defined by this field. A value of default
informs the SCE to use the interest accrual method defined in the setup file for
the specified Account. All other valid accrual codes
are described in the table below.
🔹 Data.Settings.ConMethod
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, simple, interestonly | default |
When computing a construction loan, there are two supported methods for computing interest during the constrcution period:
If the value of this field is simple, then the estimated construction
interets will be computed and disclosed as a lup-sum prepaid fee (see
the Moneys.ConstructInterest
response field).
If the value of this field is interestonly, then the construction and
permanent loans are combined into a single loan, with the construction (and
permanent) loan's interest being reflected in the
Moneys.Interest field, and
both loans reflected in a single, combined amortization schedule.
A value of default instructs the SCE to use the construction method specified
in the setup file for the given account.
🔹 Data.Settings.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔹 Data.Settings.Lastday
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | as configured in setup file |
If present, this field overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day accrual calendar where the first payment date falls at the end of a month with fewer than 31 days. As an example, if the first payment date is on April 30, should the following payment dates be made on the 30th of each month, or on the last day of the month?
If no value is specified for this field, then the setup file setting will be
used. If true is specified, then conditions triggering a last day situation
will result in payments which fall at the end of the month. A value of false
indicates that when dictated, subsequent payment dates will not be moved to the
last day of the month.
🔹 Data.Settings.OddFinal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Following the last payment of an amortization schedule, the ending balance is unlikely to be zero due to the rounding of the payment. In order to assure perfect amortization, lenders will use an odd final payment to perfectly amortize the loan.
Set OddFinal to true to ensure perfect amortization with a payment that
pays off the loan.
🔹 Data.Settings.PmtDollarRound
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Payments are normally rounded to the penny, according to the method specified by
in the setup file, or vy theSettings.PmtRound field. If
the payment should be rounded to the dollar instead of the penny, then set
the value of this field to true.
Note that for some loans (such as those with longer terms or relatively small proceeds), rounding the payment up or to the nearest dollar may require a shortened loan term to prevent one or more negative payments at the end of the loan.
🔹 Data.Settings.PmtRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, nearest, up, down, best | default |
How are calculated payments to be rounded at and beyond this event? best means
to choose the payment that returns a minimal ending balance at the end of
amortization. If two payments result in the same minimal error magnitude, the
smaller payment is chosen. default means that the setting should be configured
as specified in the setup file.
🔹 Data.Settings.ShowAmTable
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
To supress the entire amortization schedule from the response, set value of this
field to false; otherwise, the amortization schedule will be returned with the
response.
🔹 Data.Settings.TILARESPA2015
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will include data for the
Integrated Mortgage Disclosures under the Real Estate Settlement Procedures Act
(Regulation X) and the Truth In Lending Act (Regulation
Z) rule, which is
required as of August 1st, 2015. If the field is omitted or set to false, then
the TILA RESPA outputs will not be generated.
Note that this field is supported for equal payment loans, balloon payment loans, single payment notes, interest only loans, fixed principal plus interest loans, skips, pickups and irregulars, and ARMs.
🔹 Data.Settings.YieldPPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0, 2, 4, 6, 12 | 0 |
Canadian mortgages may compute periodic interest using a fractional power of a periodic yield. If set to a value other than `0', this field determines the period. Please contact us for further information if you support mortgage calculations in Canada. Note that when using this field with a value other than zero, the calling application must include an odd days prepaid fee in the request.
Interest Only Loan Module - Response
The Data object for a response from the InterestOnly module is defined below,
in the order the fields are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔹CountryObjects:
🟥 Errors[],🟥 Warnings[],🟥 Results,🟦 FedBox,🟦 TILARESPA2015,🟦 Moneys,🟦 Accrual,🟦 PMI,🟦 PmtStreams[],🟦 Protection,🟦 AmTable
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
If the request specified a two-character or three-digit Country code, then
this field will be present and will contain the full name of the country
associated with the specified code. Please see the Countries
Appendix for the list of supported countries and their
associated codes.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "InterestOnly",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "InterestOnly",
"Data" : {
"Errors" : [
"Data.LoanDate (StringDate) not found.",
"Data.PmtDate (StringDate) not found.",
"Data.Term (StringInt) not found.",
"Data.IntRate (StringFloat) not found.",
"Data.Proceeds (StringFloat) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟦 Data.Results
| Type | Required |
|---|---|
| Object | no |
This field(s) of this object represent the most important numerical results for the loan request.
Objects:
None
🔸 Data.Results.Final
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The final payment of the loan.
🔸 Data.Results.First
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The first payment for the loan.
🟦 Data.FedBox
| Type | Required |
|---|---|
| Object | no |
This object groups together all fields which contain important numerical information, as defined in the Truth-In-Lending laws (Regulation Z).
Fields:
🔸AmtFin,🔸FinChg,🔸TotPmts,🔹TotalSalePrice
🔸 Data.FedBox.AmtFin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The Regulation Z Amount Financed, which is defined as the amount of credit provided to the borrower or on their behalf.
🔸 Data.FedBox.FinChg
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost the borrower.
🔸 Data.FedBox.TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The amount which the borrower will have paid when the borrower has made all scheduled payments.
🔹 Data.FedBox.TotalSalePrice
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The sum of the total of payments plus the total down payment. Please note that
if no TotalDown field was included in
the request, then this element will not be present.
🟥 Data.FedBox.APR
| Type | Required |
|---|---|
| Object | yes |
The APR object contains fields which return the value and APR method used.
Fields:
🔸Value,🔹Max,🔹MaxExceeded,🔸TypeObjects:
None
🔸 Data.FedBox.APR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed APR, which is the cost of the extension of credit expressed as a yearly rate.
🔹 Data.FedBox.APR.Max
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Number | n/a |
This field returns the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this field will not be present in the response. The value of this field should be displayed as a percentage.
🔹 Data.FedBox.APR.MaxExceeded
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If a maximum APR is configured in the account's setup files, then the value of this field indicates whether or not the current loan exceeds the maximum APR. If no maximum APR has been specified, then this field will not be present in the response.
🔸 Data.FedBox.APR.Type
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field returns the APR method used to compute the reported APR.
🟦 Data.FedBox.MAPR
| Type | Required |
|---|---|
| Object | no |
The MAPR (military APR) object is only returned with the response if the value
of the Apr.UseMAPR request field is
true.
Fields:
🔸Value,🔸Advance,🔸Max,🔸MaxExceededObjects:
None
🔸 Data.FedBox.MAPR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed military APR.
🔸 Data.FedBox.MAPR.Advance
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.
🔸 Data.FedBox.MAPR.Max
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
This field holds the maximum Military APR as specified in the input XML (see
Apr.MAPR_Max). If not specified, a default
value of 36% is assumed. The value of this field should be displayed as a
percentage. As an example, for "Max" :"36.000", you would disclose a maximum
Military APR of 36%.
🔸 Data.FedBox.MAPR.MaxExceeded
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
The value of this field indicates whether or not the current loan exceeds the
maximum allowed Military APR. As an example, if the maximum APR has been set to
36% and the Military APR for the returned loan was 37.125%, the MAPR object
would be:
{
"MAPR" : {
"Value" : "37.125",
"Advance" : "1350.00",
"Max" : "36.000",
"MaxExceeded" : true
}
}
🟦 Data.TILARESPA2015
| Type | Required |
|---|---|
| Object | no |
This object contains fields which are of interest to fulfilling the 2015 TILA
RESPA rule. It will only be present if the
Settings.TILARESPA2015
field in the request is set to true.
Fields:
🔸TotalLoanCost,🔸CD_TotPmts,🔸TIPObjects:
🟥 LoanCosts[],🟥 In5Years,🟥 MaxPnIPmt,🟥 MinRate,🟥 MaxRate,🟥 ProjectedPaymentsTable[]
🔸 Data.TILARESPA2015.TotalLoanCost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The value of this field is the sum of all borrower paid loan costs. Since all
LoanCost values are rounded dollar amounts, the value of this
element will also be a rounded dollar amount.
🔸 Data.TILARESPA2015.CD_TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the sum of the total of payments, all borrower paid loan costs, and any odd days interest that is prepaid at loan closing. This value should be disclosed on the Closing Disclosure form in the Total of Payments field.
🔸 Data.TILARESPA2015.TIP
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The total interest percentage, rounded to three or fewer decimal places - as required.
🟥 Data.TILARESPA2015.LoanCosts[]
| Type | Required |
|---|---|
| Array of LoanCost Objects | yes |
For every object in the Fees[] array present
in the request which has its
IsLoanCost field set to true (and
hence, is a borrower paid loan cost) and whose amount is greater than zero
(except odd days interest fee types, as explained in the previous documentation
of the Fee and object), there will be a
corresponding LoanCost object.
Fields:
🔹Name,🔹In5Years,🔸ValueObjects:
None
🔹 Data.TILARESPA2015.LoanCosts[].Name
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔹 Data.TILARESPA2015.LoanCosts[].In5Years
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | Same as Value |
If the entire amount of the fee is different from the amount collected over the first five years (for example, a service charge), then this field will be present and disclose the portion of this loan coast that is accrued during the first five years.
🔸 Data.TILARESPA2015.LoanCosts[].Value
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field is the numerical value of the fee, rounded to the nearest dollar.
🟥 Data.TILARESPA2015.In5Years
| Type | Required |
|---|---|
| Object | yes |
This object contains all important values required for the new "In 5 Years" section of the disclosure.
Fields:
🔸PaidTotal,🔸PaidPrincipalObjects:
None
🔸 Data.TILARESPA2015.In5Years.PaidTotal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds the sum of all "principal, interest, mortgage insurance, and borrower paid loan costs scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🔸 Data.TILARESPA2015.In5Years.PaidPrincipal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds "the principal scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🟥 Data.TILARESPA2015.MaxPnIPmt
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold the maximum sceduled principal and interest payment during the term of the loan, as well as the date on which that payment is made.
Objects:
None
🔸 Data.TILARESPA2015.MaxPnIPmt.Date
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field returns the date on which the maximum scheduled principal and interest payment is made. If the maximum scheduled payment occurs more than once, then the date returned is that of the first instance.
🔸 Data.TILARESPA2015.MaxPnIPmt.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The maximum sceduled principal and interest payment during the term of the loan.
🟥 Data.TILARESPA2015.MinRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the minimum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MinRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the minimum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MinRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the minimum rate is first applicable.
🟥 Data.TILARESPA2015.MaxRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the maximum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MaxRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the maximum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MaxRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the maximum rate is first applicable.
🟥 Data.TILARESPA2015.ProjectedPaymentsTable[]
| Type | Required |
|---|---|
Array of PPCol Objects | yes |
Fields:
🔸Num,🔸Title,🔸YearStart,🔸YearEnd,🔸PnIPmtMin,🔸PnIPmtMax,🔸IntOnly,🔸Balloon,🔸MIPmt,🔸TotalPmtMin,🔸TotalPmtMaxObjects:
None
This field returns an Array of projected payment table columns (PPCol), with
each array member detailing a single column. Per the regulation, there will be a
minimum of one column and a maximum of four columns, depending upon the
parameters of the loan.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Num
| Type | Required | Value |
|---|---|---|
| String | yes | Integer in [1...4] |
The value of this field identifies the number of the column to which the following fields apply. The value will be from 1 to 4.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Title
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
The value of this field is the title for the column. Most of the time, it will
be in the form of Years X - Y, or Year X, or Final Payment in the case of
a final balloon payment.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearStart
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The beginning year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearEnd
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The ending year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The minimum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The maximum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].IntOnly
| Type | Required | Value |
|---|---|---|
| String | yes | none, some, all |
If none of the payments associated with this column are interest only payments,
then the value of this field will be none. A value of some means that some
of the payments (but not all) associated with this columnt are interest only.
Finally, a value of all indicates that all payments associated with this
columnt are interest only.
Note that for the purposes of this field, a scheduled payment is considered an interest only payment if the payment amount pays off all interest due at the time of the payment, with no reduction in the principal balance.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Balloon
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
If any of the payments associated with this column are balloon payments (e.g.
isolated payments that are more than twice the value of a regular periodic
payment), then the value of this field will be true.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].MIPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The value of this field holds the mortgage insurance premium associated with this column, rounded to the nearest dollar. If no mortgage insurance is present or coverage has been dropped, a value of zero will be present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the minimum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the maximum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🟦 Data.Moneys
| Type | Required |
|---|---|
| Object | no |
This element groups together those other major cash result amounts not disclosed
under the FedBox object, such as the principal balance, interest charge,
and fee amounts.
Fields:
🔸Principal,🔸Interest,🔹ConstructInterest,🔹FinFees,🔹Prepaid,🔹PocketFees,🔹MAPRFees,🔹PMI_Fee,🔹MinIntChgAdj,🔹MinFinChgAdjObjects:
🟦 ODI,🟦 Fees[],🟦 Protection
🔸 Data.Moneys.Principal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance is the amount on which interest is accrued. The principal balance consists of all advances requested by the borrower, as well as any fees and/or protection products which are financed.
🔸 Data.Moneys.Interest
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This value of this field holds the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.
🔹 Data.Moneys.ConstructInterest
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If the requested loan is a construction loan with a permanent loan attached and the account specified is set up to compute construction loans via the "Simple" method, then this field will contain the construction interest for the requested loan.
Note that if a permanent loan is attached to a construction loan and the
account is set up to use the "LaserPro" method, then the construction
and permanent loans are combined into a single loan, with the construction
(and permanent) loan's interest being reflected in the
Moneys.Interest field, and both loans reflected in a single,
combined amortization schedule.
If the requested loan is a construction loan without a permanent loan
attached, then the construction interest will be disclosed in the
Moneys.Interest field.
If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this field will not appear in the response.
🔹 Data.Moneys.FinFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field contains the sum of all fees having AddToPrin
set to true and occuring on the date of an advance. If this
value is zero, the field will not appear in the response.
🔹 Data.Moneys.Prepaid
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field represents all prepaid finance charges and contains the sum of all
fees occurring on an advance and having AddToFinChg
set to true. If this value is zero, the field will not be found in the response.
🔹 Data.Moneys.PocketFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are neither financed, nor added to the finance charge. In essence, they are paid out of the borrower's pocket. If no out of pocket fees were requested, then this field will not show up in the response.
🔹 Data.Moneys.MAPRFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are Military APR fees (including protection products), and will only appear if the Military APR has been requested.
🔹 Data.Moneys.PMI_Fee
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If PMI has been requested on the loan, and if a number of UpFront
payments have been specified, then this field will return the total PMI
fee for all up front payments.
🔹 Data.Moneys.MinIntChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum interest charge is configured in the account's setup files and the final payment was adjusted to meet this minimum interest charge, then this field will be returned in the response and will contain the value of the minimum interest charge adjustment.
🔹 Data.Moneys.MinFinChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum finance charge is configured in the account's setup files and the final payment was adjusted to meet this minimum finance charge, then this field will be returned in the response and will contain the value of the minimum finance charge adjustment.
🟦 Data.Moneys.ODI
| Type | Required |
|---|---|
| Object | no |
This object, if present, contains information regarding odd days interest. If no odd days interest was requested, then this object will not be present in the response.
Fields:
🔹AddToPmt,🔸Count,🔸Fee,🔹Months,🔹DailyCostObjects:
None
🔹 Data.Moneys.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If the odd days interest has been added to the first payment, then this field
will be present in the response with a value of true. If the odd days interest
has been treated as a prepaid finance charge, then this field will not be
present and a default value of false should be assumed.
🔸 Data.Moneys.ODI.Count
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Discloses the number of odd days computed by the SCE for the requested loan.
🔸 Data.Moneys.ODI.Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total amount odd days interest charge.
🔹 Data.Moneys.ODI.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field holds the number of odd months computed by the SCE for the requested
loan when using odd days accrual method 250. If the odd days accrual method is
a value other than 250, then this field will not be present in the ODI
object of the response.
🔹 Data.Moneys.ODI.DailyCost
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | n/a |
If the odd days interest fee is computed using a rounded daily cost, then the value of this field will hold that value. If the odd days interest is not computed using a rounded daily cost, then this field will not be present in the response.
🟦 Data.Moneys.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
If the requested loan included fees, then for each fee in the loan there will be a Fee object in this array containing the name of the fee and the computed fee amount.
If there were no fees requested with the loan, then the Moneys.Fees[] array
will not be included in the response.
Objects:
None
🔹 Data.Moneys.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.Fees[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed fee amount.
🟦 Data.Moneys.Protection
| Type | Required |
|---|---|
| Object | no |
This object returns summary information on all payment protection products computed with the loan. If no protection products were included with the loan, then this object will be omitted from the response.
Fields:
🔸Cost,🔸PerPmt,🔸PerDay,🔸Category,🔹IsDP,🔹MandatoryObjects:
None
🔸 Data.Moneys.Protection.Cost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total cost of all protection plans included with the
computed loan. For the individual plan costs, see the
Protection field described below.
🔸 Data.Moneys.Protection.PerPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per payment.
🔸 Data.Moneys.Protection.PerDay
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per day.
🔸 Data.Moneys.Protection.Category
| Type | Required | Values |
|---|---|---|
| String | yes | None, SP, MOB, TrueMOB, PaidSP |
Te value of this field specifies the category under which the computed loan protection falls. The categories are described below:
| Category | Description |
|---|---|
None | No loan protection products were computed with this loan. |
SP | Financed single premium coverage. |
MOB | Monthly outstanding balance coverage. |
TrueMOB | TruStage's monthly outstanding balance method. |
PaidSP | Non-financed single premium coverage. |
🔹 Data.Moneys.Protection.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field indicates if the specified account's protection is set up as debt
protection. If this field is not present, then the default value of false
should be used (which indicates that the account's protection is set up as
insurance instead).
🔹 Data.Moneys.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field should only appear in the response if the value of the is true.
If this field does not appear in the output, then the value should default to
false.
If the value of the Mandatory field is true, then the total premium / fee
amount for all insurance / debt protection products has been treated as a part
of the Finance Charge, and hence will affect the effective APR.
🟦 Data.Accrual
| Type | Required |
|---|---|
| Object | no |
This object groups together interest accrual information, such as the accrual method(s) used, days to the first payment and the loan's maturity date.
Fields:
🔸Method,🔸Days1Pmt,🔸DayCount,🔸MaturityObjects:
None
🔸 Data.Accrual.Method
| Type | Required | Values |
|---|---|---|
| String | yes | Text |
The Method field contains a textual description of the interest accrual method
used to compute the loan (e.g. "Unit Period 365 Simple".)
🔸 Data.Accrual.Days1Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field contains the number of days between the date of the first
advance and the date of first payment, computed by one of two
methods as specified in by Accrual.DayCount (below).
🔸 Data.Accrual.DayCount
| Type | Required | Values |
|---|---|---|
| String | yes | True360, Actual |
This field specifies the method used to compute the number of days from the date
of the first advance until the first payment date. Actual means that the
actual number of days between these two dates are used, whereas the True360
method use a 360 day calendar.
🔸 Data.Accrual.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
Holds the maturity date of the loan, which is the date on which the last
payment is scheduled. All dates are in the form of YYYY-MM-DD, and must
be 10 characters long.
🟦 Data.PMI
| Type | Required |
|---|---|
| Object | no |
The PMI object will only appear if PMI has been computed with the loan. Please
note that the PMI premiums are not reflected in the amount reported in the
Payment object, the PmtStreams[] array, the TotPmts object, nor the Pmt
field of the AmLine object.
Fields:
🔸Rate,🔸LTV,🔸PremiumPerYear,🔸PremiumPerPeriod,🔹IndexToWarn,🔹IndexToRemoveObjects:
None
🔸 Data.PMI.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | % >= 0 |
The percentage rate used in the PMI calculation.
🔸 Data.PMI.LTV
| Type | Required | Values |
|---|---|---|
| String | yes | % >= 0 |
The loan to value ratio of the computed loan, expressed as a percentage.
🔸 Data.PMI.PremiumPerYear
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The annual PMI premium amount.
🔸 Data.PMI.PremiumPerPeriod
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The periodic PMI premium amount.
🔹 Data.PMI.IndexToWarn
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
This field only appears if the
WarnLTV PMI input field is
specified, and indicates that the payment index on which the remaining principal
balance to home value ratio drops below the specified percentage.
🔹 Data.PMI.IndexToRemove
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
This field only appears if the
DropLTV PMI input field is specified,
and indicates that the payment index on which the remaining principal balance to
home value ratio drops below the specified percentage. PMI coverage stops
after this payment.
🟦 Data.PmtStreams[]
| Type | Required |
|---|---|
| Object | no |
The PmtStreams[] array is made up of one or more PmtStream objects (there
will always be at least one of these elements, and there may be more than one
depending upon the loan type). The PmtStream objects describe the scheduled
stream of payments for the computed loan. Instead of disclosing each and every
payment individually (which can be done with the AmTable object),
the payment stream groups together consecutive equal payments at the same
interest rate to produce output along the lines of:
{
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "50.13",
"Rate" : "4.500",
"Begin" : "2022-10-01"
},
{
"Term" : "10",
"Pmt" : "37.59",
"Rate" : "4.500",
"Begin" : "2022-11-01"
},
{
"Term" : "1",
"Pmt" : "10062.59",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
]
}
Each object describes a single stream of equal payments at the same interest rate, using the following fields to define the important properties of each payment stream.
Fields:
🔸Term,🔸Pmt,🔸Rate,🔸BeginObjects:
Note
🔸 Data.PmtStreams[].Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The Term field holds the number of payments that make up the given payment
stream.
🔸 Data.PmtStreams[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The Pmt field holds the computed payment amount for this payment stream.
🔹 Data.PmtStreams[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number |
Contains the interest rate used for the duration of this payment stream. If this payment stream accrued interest using split-rate tiers, then this field will not be returned.
🔸 Data.PmtStreams[].Begin
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field identifies the date on which the first payment for this given payment
stream is scheduled to be made. All dates are in the form of YYYY-MM-DD, and
must be 10 characters long.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
If protection products are requested, then this object will be present in the response, along with a field for each requested protection product.
Fields :
NoneObjects:
🟦 Life,🟦 Level,🟦 Disability,🟦 Unemployment
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
If life protection was requested with the loan and decreasing life was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing life coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Life.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Life.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Life.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Life.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Life.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Life.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Life.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Life.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Life.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary life product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Life.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Life.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Life.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Life.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this object
will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Life.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Life.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Life.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Life.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Level
| Type | Required |
|---|---|
| Object | no |
If level protection was requested with the loan and decreasing level was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing level coverage.
Objects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Level.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Level.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🟦 Data.Protection.Level.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Level.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Level.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Level.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Level.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Level.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary Level product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Level.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Level.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Level.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Level.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Level.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Level.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Level.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Level.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
If disability protection was requested with the loan and decreasing disability was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing disability coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Disability.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Disability.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Disability.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Disability.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Disability.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Disability.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Disability.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Disability.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Disability.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Disability.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Disability.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Disability.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Disability.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Disability.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Disability.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Disability.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Borrower2
| Type | Required |
|---|---|
| Object | no |
The borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Disability.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Unemployment
| Type | Required |
|---|---|
| Object | no |
If unemployment protection was requested with the loan and decreasing unemployment
was configured for this loan type, then the Life object will be present in the
response to return information on decreasing unemployment coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Unemployment.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Unemployment.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Unemployment.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Unemployment.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Unemployment.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Unemployment.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Unemployment.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Unemployment.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Unemployment.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Unemployment.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Unemployment.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Unemployment.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Unemployment.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Unemployment.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Unemployment.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Unemployment.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Unemployment.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Unemployment.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Unemployment.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Unemployment.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Unemployment.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Unemployment.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Unemployment.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Unemployment.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Unemployment.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Unemployment.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Unemployment.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Unemployment.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Unemployment.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Unemployment.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Unemployment.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.AmTable
| Type | Required |
|---|---|
| Object | no |
This object contains fields which summarize and describe the loan's amortization
schedule. If
Settings.ShowAmTable is set
to false, then this object will not be found in the response.
Fields:
🔹Months,🔹Weeks,🔹OddDaysObjects:
🟦 GrandTotals,🟦 SubTotals[],🟥 AmLines[]
🔹 Data.AmTable.AvgBal
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the average balance of the loan used in the Canadian APR calculation.
🔹 Data.AmTable.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of months in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.Weeks
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of weeks in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.OddDays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the number of odd days in the term of the loan used in the Canadian APR calculation. Odd days are computed by moving backwards from the maturity date the number of disclosed months or weeks, and then counting the additional number of days required to land on the loan date.
🟦 Data.AmTable.GrandTotals
| Type | Required |
|---|---|
| Object | no |
This object describes the total amounts of various categories throughout the life of the loan. As an example, the total amount paid to interest and principal, as well as the total of payments are all contained in fields of this object.
Fields:
🔸PmtTot,🔸IntTot,🔸PrinTot,🔹CLTot,🔹AHTot,🔹IUTot,🔹PMITotObjects:
None
🔸 Data.AmTable.GrandTotals.PmtTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total of payments scheduled for the computed loan.
🔸 Data.AmTable.GrandTotals.IntTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total amount paid to interest over the life of the loan, assuming all payments are made as scheduled.
🔸 Data.AmTable.GrandTotals.PrinTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.
🔹 Data.AmTable.GrandTotals.CLTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLTot field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life over the duration of the loan.
🔹 Data.AmTable.GrandTotals.AHTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHTot field will only appear on loans with certain types of disability or
debt protection products, such as those based on a monthly outstanding balance.
It contains the total amount paid for this protection over the duration of the
loan.
🔹 Data.AmTable.GrandTotals.IUTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IUTot field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection over the duration
of the loan.
🔹 Data.AmTable.GrandTotals.PMITot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The PMITot field will only appear on loans with PMI insurance where the
PMI premiums were requested in the amortization schedule. It contains the total
PMI amount paid (not including any up front periodic PMI premiums)for PMI over
the duration of the loan.
🟦 Data.AmTable.SubTotals[]
| Type | Required |
|---|---|
| Array of SubTotal Objects | no |
Describes the total amounts of various categories paid during a given calendar year.
For each year in which the computed loan has scheduled payments, there will be
a SubTotal object in the array.
Fields:
🔸Year,🔸Start,🔸Events,🔸PmtSub,🔸IntSub,🔸PrinSub,🔹CLSub,🔹AHSub,🔹IUSub,🔹PMISubObjects:
None
🔸 Data.AmTable.SubTotals[].Year
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The calendar year for which the subtotal data is applicable.
🔸 Data.AmTable.SubTotals[].Start
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the first amortization event which falls in the specified
calendar year. To find the AmLines[] object which corresponds to
this value, match the Idx field of the AmLine
object.
🔸 Data.AmTable.SubTotals[].Events
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the number of amortization events which belong to this calendar year.
🔸 Data.AmTable.SubTotals[].PmtSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total of payments scheduled for the calendar year.
🔸 Data.AmTable.SubTotals[].IntSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Holds the total amount paid to interest over the calendar year, assuming all payments are made as scheduled.
🔸 Data.AmTable.SubTotals[].PrinSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total amount paid to principal during the calendar year, assuming all payments are made as scheduled.
🔹 Data.AmTable.SubTotals[].CLSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLSub field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life during the year.
🔹 Data.AmTable.SubTotals[].AHSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHSub field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection during the year.
🔹 Data.AmTable.SubTotals[].IUSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IUSub field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for involuntary unemployment during
the year.
🔹 Data.AmTable.SubTotals[].PMISub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The PMISub field will only appear on loans with PMI insurance where the PMI
premiums were requested in the amortization schedule. It contains the total PMI
amount paid (not including any up front periodic PMI premiums) for PMI during
the year.
🟥 Data.AmTable.AmLines[]
| Type | Required |
|---|---|
| Array of AmLine Objects | yes |
There is one AmLine object for each amortization event which occurs during
the life of a loan. Most of the time, each event will describe a payment, and
detail how that payment is applied (to interest, principal, loan protection
products, etc.). Some events, such as capitalizing interest, will not have
payments but will show how the loan amortizes.
Fields:
🔸Idx,🔸Date,🔸BegBal,🔸Pmt,🔸Int,🔸Prin,🔹CL,🔹AH,🔹IU,🔹PMI,🔹UnpaidInt,🔸EndBalObjects:
None
🔸 Data.AmTable.AmLines[].Idx
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The index of the amortization event, which is either the payment number, or zero. A value of zero designates an event that is either not a payment or is a skipped payment.
🔸 Data.AmTable.AmLines[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the amortization event is scheduled to occur. All dates are in
the form of YYYY-MM-DD, and must be 10 characters long.
🔸 AmData.AmTable.AmLines[]ine.BegBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance before the amortization event occurs.
🔸 Data.AmTable.AmLines[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The payment amount for this event.
🔸 Data.AmTable.AmLines[].Int
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of interest paid at this event.
🔸 Data.AmTable.AmLines[].Prin
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of principal paid at this event.
🔹 Data.AmTable.AmLines[].CL
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CL field will only appear on loans with certain types of life protection
products, such as those based on a monthly outstanding balance. It contains the
amount of the payment which is marked for life coverage.
🔹 Data.AmTable.AmLines[].AH
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AH field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for disability /
debt protection coverage.
🔹 Data.AmTable.AmLines[].IU
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IU field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for this
coverage.
🔹 Data.AmTable.AmLines[].PMI
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field contains the PMI premium for this payment, and will only show up if PMI has been computed for this payment and if PMI premiums should be displayed in the amortization schedule.
🔹 Data.AmTable.AmLines[].UnpaidInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear on an amortization line when interest has been accrued, but has not yet been paid or added to the principal balance. If the interest accrued has not yet been rounded, then the unpaid interest will be displayed to four (4) decimal placed. If rounded, then the unpaid interest is displayed to two (2) decimal places.
🔸 Data.AmTable.AmLines[].EndBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The principal balance amount, after the amortization event has taken place.
Fixed Principal Plus Interest Loans
Fixed principal plus interest loans (hereafter called principal plus loans) are loans which have a payment stream made up of payments which pay off a fixed amount of principal with each P&I payment, with interest only payments optionally occurring during the life of the loan as well.
For example, a borrower could specify that a loan of $1,000 be paid off with the first two payments consisting of interest only and the follow 10 payments paying off $100 of principal each.
Sample Request
The following example is a request for a fixed principal plus interest Loans
loan with proceeds of $10,000, interest will accrue at a 6.0% rate using an
actual day / 365 U. S. Rule accrual method (accrual code 320). There will be
12 monthly payments, the first 11 of which will pay of a fixed principal amount
of $100 plus interest due, with an additional final payment paying off the loan.
{
"Module" : "PrincipalPlus",
"Data" : {
"LoanDate" : "2022-08-24",
"PmtDate" : "2022-10-01",
"IntRate" : "6.000",
"Proceeds" : "10000.00",
"FirstPrincipalPmt" : "1",
"PrincipalReduction" : "100",
"PrincipalPmts" : "12",
"Settings" : {
"AccrualCode" : "320"
}
}
}
Sample Response
{
"Result" : 200,
"Module" : "PrincipalPlus",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Results" : {
"Final" : "8945.35",
"First" : "162.47",
"Principal Reduction" : "100.00",
"Term" : "12"
},
"FedBox" : {
"AmtFin" : "10000.00",
"FinChg" : "580.06",
"TotPmts" : "10580.06",
"APR" : {
"Value" : "5.996",
"Type" : "Actuarial"
}
},
"Moneys" : {
"Principal" : "10000.00",
"Interest" : "580.06"
},
"Accrual" : {
"Method" : "Actual/365 US Rule",
"Days1Pmt" : "38",
"DayCount" : "Actual",
"Maturity" : "2023-09-01"
},
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "162.47",
"Rate" : "6.000",
"Begin" : "2022-10-01"
},
{
"Term" : "1",
"Pmt" : "150.45",
"Rate" : "6.000",
"Begin" : "2022-11-01"
},
...,
{
"Term" : "1",
"Pmt" : "8945.35",
"Rate" : "6.000",
"Begin" : "2023-09-01"
}
],
"AmTable" : {
"GrandTotals" : {
"PmtTot" : "10580.06",
"IntTot" : "580.06",
"PrinTot" : "10000.00"
},
"SubTotals" : [
{
"Year" : "2022",
"Start" : "1",
"Events" : "3",
"PmtSub" : "461.25",
"IntSub" : "161.25",
"PrinSub" : "300.00"
},
{
"Year" : "2023",
"Start" : "4",
"Events" : "9",
"PmtSub" : "10118.81",
"IntSub" : "418.81",
"PrinSub" : "9700.00"
}
],
"AmLines" : [
{
"Idx" : "1",
"Date" : "2022-10-01",
"BegBal" : "10000.00",
"Pmt" : "162.47",
"Int" : "62.47",
"Prin" : "100.00",
"EndBal" : "9900.00"
},
{
"Idx" : "2",
"Date" : "2022-11-01",
"BegBal" : "9900.00",
"Pmt" : "150.45",
"Int" : "50.45",
"Prin" : "100.00",
"EndBal" : "9800.00"
},
...,
{
"Idx" : "12",
"Date" : "2023-09-01",
"BegBal" : "8900.00",
"Pmt" : "8945.35",
"Int" : "45.35",
"Prin" : "8900.00",
"EndBal" : "0.00"
}
]
}
}
}
Fixed Principal Plus Interest Loan Module - Request
The fields of the Data object supported by a PrincipalPlus module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹Country,🔸FirstPrincipalPmt🔸IntRate,🔹IntStartDate,🔸LoanDate,🔸PmtDate,🔹PPY,🔹PrincipalPmts,🔹PrincipalPPY,🔹PrincipalReduction,🔹Proceeds,🔹TotalDown,🔹UseIntOnlyNotSkipsObjects:
🟦 Apr,🟦 Construction,🟦 Fees[],🟦 Format,🟦 ODI,🟦 Protection,🟦 Settings
The fields of the Data object supported by an Equal Pmt module request are
defined in alphabetical order below:
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
This field allows the calling application to specify a two (2) character or
three (3) digit country code. If none is provided, then a default value of US
will be used. Please see the Countries Appendix for
the list of supported countries and their associated codes.
Specifying the Country will also set the default value for the
APR.Method and
Format.CurrencyDecimals fields, as appropriate for
the country specified.
🔸 Data.FirstPrincipalPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The value of this field determines on which payment number the fixed principal reduction amount (see PrincipalReduction below) begins. All payments prior to the payment number will be interest only payments.
🔸 Data.IntRate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
Determine the interest rate used for the loan.
The interest rate should be expressed as a percentage. For example,
a loan computed with a rate of 5.125% would be specified as
"IntRate" : "5.125".
🔹 Data.IntStartDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | same value as LoanDate |
This field contains the date on which interest begins to accrue on the loan's principal balance. If this field is not specified, then the interest start date is set equal the loan date. Also note that the interest start date must be equal to the loan date when computing a construction loan.
The interest start date (when specified) must be on or after the loan date, as well as on or before the first payment date.
🔸 Data.LoanDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field holds the date on which the loan amount is disbursed and interest
begins to accrue. All dates must be in the form of YYYY-MM-DD, and be 10
characters long.
🔸 Data.PmtDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field specifies the first (and for single payment notes, only) payment date
in the loan's repayment schedule. All dates must be in the form of YYYY-MM-DD,
and be 10 characters long.
🔹 Data.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12 | 12 |
PPY is an abbreviation for payments per year, and determines the payment
frequency for the requested loan. The default value of 12 will result in a
loan with 12 payments per year. If you require a loan with a payment frequency
other than monthly, specify it using this field.
🔸 Data.PrincipalPmts
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number | n/a |
Instead of specifying a given number of payments in the principal plus loan
(e.g. Term element in an equal payment loan request), the calling application
instead specifies the number of principal payments in the loan. The loan term is
then computed based upon this value, along with the number of principal payments
per year and the number of interest only payments preceding the first principal
payment.
🔹 Data.PrincipalPPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12 | 12 |
PPY is an abbreviation for payments per year, and determines the payment
frequency for the requested loan. The default value of 12 will result in a
loan with 12 payments per year. If you require a loan with a payment frequency
other than monthly, specify it using this field.
🔸 Data.PrincipalReduction
This field contains the constant principal reduction amount to be applied for each principal and interest payment. If this value is set to to zero, then the principal reduction amount will be computed as the principal balance divided by the number of principal payments in the loan (see PrincipalPmts avoce).
If the number of principal payments multiplied by the specified constant principal reduction amount does not equal the principal balance, then the final principal plus interest payment will be computed such that the principal balance is scheduled to be completely paid off at loan maturity.
🔸 Data.Proceeds
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | n/a |
The proceeds specified indicate the amount of money the borrower is requesting, and does not include financed fees, financed insurances, etc.
🔹 Data.TotalDown
| Type | Required | Values |
|---|---|---|
| String | no | Currency > 0 |
This optional field represents the total down payment that the borrower has applied to reduce the requested proceeds. It may consist of a cash down payment, net trade-in value, or rebate. You only need to specify a total down payment if the loan needs to disclose a total sale price. Typical examples of these loan types are auto and boat loans.
🔹 Data.UseIntOnlyNotSkips
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then any specified skipped payments
(see Irregs[] above) will be treated as interest only payments
instead of skipped payments.
🟦 Data.Apr
| Type | Required |
|---|---|
| Object | no |
Settings related to the computed effective rate returned by the SCE (most commonly, the Regulation Z APR in the United States of America) are contained in the fields of this object.
Fields:
🔹MAPR_Max,🔹Method,🔹UseMAPRObjects:
None
🔹 Data.Apr.MAPR_Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 36.0 |
If you are computing the Military APR (see UseMAPR below) and
wish to override the default maximum APR value of 36%, then specify the desired
maximum as the value of this field.
🔹 Data.Apr.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, actuarial, eu, ca, xirr, xirr360, irr | default |
This field allows the calling application to specify an APR calculation
method which will override the default value found in the setup file for the given
Account. If this field is set to a valid value, then the
specified method will be used to compute the APR for this loan calculation.
If the Country field has been set by the calling application and
this field is not set, then the APR method used will be determined by the
specified country. For the United States of America, the default APR method is
actuarial. For a country in the European Union, the default value is
eu (European Union APR). For Canada, the default APR method is
ca (Canadian APR).
The xirr value implements the internal rate of return method as
implemented in Microsoft\textregistered Excel via the XIRR() function,
and is based on an actual day calendar with a 365 day divisor.
The xirr360 value implements the internal rate of return method based
upon a unit period calendar with a 360 day divisor.
The irr value implements a common spreadsheet internal rate of return
method which assumes strict regular periods. Deviating from a strict regular
periodicity may produce unreliable results.
If this field is not specified and the Country field is not
specified, then the value of default will be used which informs the
SCE to use the APR method defined in the setup file for the specified
Account.
🔹 Data.Apr.UseMAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to a value of true, then the SCE will compute the
Military APR in addition to the Regulation Z APR. The
MAPR object will be included in the loan
response.
🟦 Data.Construction
| Type | Required |
|---|---|
| Object | no |
The Construction object determines if this loan is a construction to permanent
loan request. If you wish to compute a construction loan without an attached
permanent loan, you will need to use either the
Construction or Loan modules.
Fields:
🔹HalfCommitment,🔹PPY,🔸Rate,🔸TermObjects:
None
🔹 Data.Construction.HalfCommitment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
During the term of the construction loan, the estimated interest for disclosure
purposes may be either computed on the full or half commitment amounts. By
setting this field to true, interest will be estimated using half of the
initial commitment amount (i.e. the principal balance). The default value of
false will cause interest to be estimated using the entire initial commitment
amount.
🔹 Data.Construction.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
The PPY field allows the calling application to specify the payment frequency
during the construction period. The default value of 12 will result in a
construction loan with 12 payments per year. If you require a payment frequency
during the construction period other than monthly, then specify it using this
field. Note that the permanent loan's payment frequency may differ from the
construction period's payment frequency.
🔸 Data.Construction.Rate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number in [-99.999...600] | n/a |
This field determines the rate applied to the appropriate commitment amount during the term of the construction loan.
🔸 Data.Construction.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Integer > 0 | n/a |
The term of the construction loan (in payments) is specified using this field. Please note that the term may not exceed five years.
🟦 Data.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
This array of Fee objects allows the calling application to specify one ore
more Fee objects to be included with the loan.
Fields:
🔹AddToFinChg,🔹AddToPrin,🔹Adjust,🔹CalcType,🔹Entry,🔹IsLoanCost,🔹MAPR,🔹Max,🔹Min,🔹NameObjects:
None
🔹 Data.Fees[].AddToFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this fee should be included in the computed Finance Charge (and hence, affect
the APR), then set this field to true. The default value of false indicates
that the fee does not affect the Finance Charge nor APR.
🔹 Data.Fees[].AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If this fee should be added to the principal balance (e.g. the fee is financed
along with the advance(s)), then set this field to true. If set to false,
then the fee is paid up front out of the borrower's pocket.
🔹 Data.Fees[].Adjust
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | 0 |
The optional Adjust field allows the calling application
to increase or decrease the base amount on which a fee is calculated.
If a negative value is specified and this adjustment would produce a
negative base amount, then a value of zero is returned for the given fee.
This field has no effect on fees with a CalcType of Dollar.
As an example, in Tennessee you may need to define a financed, non-APR affecting fee to be computed by decreasing the amount financed by $2,000, and then multiplying this reduced amount by 0.115. The way to accomplish this in the SCE is as follows:
{
"Fees" : [
{
"Name" : "TN Fee",
"CalcType" : "OnAmtFin",
"Adjust" : "-2000.00",
"Entry" : "0.115",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
🔹 Data.Fees[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Dollar, OnProceeds, OnPrincipal, OnAmtFin | Dollar |
This field specifies how the fee is to be computed, as described in the following table.
| Fee Calc Type | Description |
|---|---|
Dollar | The Entry field is understood as a flat dollar amount. |
OnProceeds | The Entry field is understood as a percentage value, to be applied to the loan's proceeds, defined as the sum of advances. EntryAmount of 0.25 would represent a fee of 0.25% of the total proceeds. |
OnPrincipal | The Entry field is understood as a percentage value, to be applied to the loan's principal balance. An Entry of 0.125 would represent a fee of 0.125% of the principal balance. |
OnAmtFin | The Entry field is understood as a percentage value, to be applied to the loan's Regulation Z Amount Financed. An Entry of 0.33 would represent a fee of 0.33% of the amount financed. |
🔹 Data.Fees[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
How this field is interpreted depends upon the Fee.CalcType field.
Please see the documentation for this field for further information.
🔹 Data.Fees[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which fees need to be considered "borrower paid loan costs",
as defined in the rule. Please note that if the fee is paid by a lender or other
third party, then the fee does not affect the loan calculation and should not be
sent to the SCE. If it is sent, then the value of this field should be set
to false.
🔹 Data.Fees[].MAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If you wish to compute the Military APR, then certain fees may not be considered Regulation Z APR affecting fees, but are considered Military APR affecting fees. In this case, you will need to set the value of this field to true.
Fees which are added to the finance charge (e.g. "AddToFinChg"
: true) are always considered MAPR fees, regardless of the stated value of this
field.
Note that debt protection products are automatically included in the calculation of the Military APR, no matter what method is used for payment (e.g. single premium vs. monthly outstanding balance).
🔹 Data.Fees[].Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then the maximum value will be used instead. If no maximum value is specified or is set to a value of zero, then no maximum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified maximum value is checked after enforcing a specified minimum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Min
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a minimum value for the fee is specified and is greater than zero, then if the computed fee is less than this minimum value, then the minimum value will be used instead. If no minimum value is specified or is set to a value of zero, then no minimum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified minimum value is checked before enforcing a specified maximum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the fee in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value will be determined by the value of the
Country field. For most countries, the default value is 2.
If no country code is specified, then the default value for this field is 2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
🟦 Data.IrregPmts[]
| Type | Required |
|---|---|
| array of IrregPmt Objects | no |
This array of IrregPmt objects allows the calling application to specify one
ore more skipped / interest only payments to be scheduled in the repayment plan,
depending upon the value of the UseIntOnlyNotSkips
field.
Objects: None
🔹 Data.IrregPmts[].Index
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | empty |
Instead of specifying a month (and optionally, a year) for a given skipped payment, you may instead specify a payment number using the Index field. Thus, if you wish to specify that the first payment be skipped, you would set "Index" : "1".
Note that if you specify a payment index, then omit the Month and Year fields.
🔹 Data.IrregPmts[].Month
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0..12] | empty |
The Month field allows the user to specify a month during which the skipped / interest only payment is applicable. If the Year field is not set for this element, then the skipped / interest only payment will be applied for each payment falling in the given month, throughout the entire term of the loan.
On the other hand, if the Year field is set for this element, then the skipped / interest only payment will only be applied to those payments falling in the given month and year.
If the value of the Month field is set to zero (0), then this skipped /
interest only payment specification is ignored.
If you wish to specify a skipped payment for a specific payment number (instead
of specifying the month and optionally, the year), then use the
Index field and omit the Month and Year fields.
🔹 Data.IrregPmts[].Year
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0..12] | empty |
IrregPmt.Year is explained in the Month.
🟦 Data.ODI
| Type | Required |
|---|---|
| Object | no |
If odd days should be treated as a prepaid finance charge or added to the first payment in a manner different from how interest is accruing, then the request needs to define how odd days interest is computed and handled using the fields of this object.
Fields:
🔹AccrualCode,🔹AddToPmt,🔹AddToPrin,🔹AnchorDate,🔹ForceUnitPeriod,🔹NoCap,🔹UseDailyCost,🔹UseNegODIObjects:
None
🔹 Data.ODI.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 204, 205, 210, 211, 220, 221, 230, 231, 250 | default |
The accrual code defines how the odd days interest is computed. The meaning of the allowed accrual codes is defined below.
Note that accrual code 250 ("Variable Days Per Year") defines the basis
divisor days to be equal to 12 multiplied by the number of days in the month of
the date on which interest begins to accrue. Thus, if the interest start date
falls in November, then the number of basis days is 360. If the interest start
date falls in a month with 31 days, then the number of basis days is 372. For an
interest start date in February, the number of basis days will either be 336 or
348, depending upon whether or not it is a leap year.
| Accrual Code | Description |
|---|---|
204 | True360/360 |
205 | True360/365 |
210 | Actual/360 |
211 | True365/360 |
220 | Actual/365 |
221 | True365/365 |
230 | Actual/Actual |
231 | Midnight 366 |
250 | Actual/Variable Days Per Year |
🔹 Data.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application wants the odd days interest to be added to the first
payment, then set the value of this field to true. A value of false
indicates that the odd days interest will be treated as a prepaid finance
charge.
🔹 Data.ODI.AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If any odd days interest should be treated as a financed prepaid fee, then set
the value of this field to true. Note that if both AddToPmt and AddToPrin
are set to true, then a warning message will be returned by the SCE and the
value of AddToPrin will be set to false.
🔹 Data.ODI.AnchorDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | BackUnitPeriod, BackDaysPerPeriod | BackUnitPeriod |
The computed number of odd days is the number of days between the loan date and
the anchor date. This field determines how to arrive at the anchor date. A value
of BackUnitPeriod means that the anchor date is one unit period prior to the
specified first payment date. A value of BackDaysPerPeriod means that the
anchor date is the number of days per period prior to the first payment date.
Please note that for both of these methods, the period used will be that
associated with the payment stream in which the first payment occurs.
🔹 Data.ODI.ForceUnitPeriod
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Some unit period methods will not use a strict unit period interest accrual
factor in the period to the first payment. For example, code 302 will count
the days to the first payment and divide by 365. For a monthly loan, setting
this field to true will use a 1/12 factor instead of Days/365.
🔹 Data.ODI.NoCap
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When the odd days interest is financed, setting this field to true prevents
interest from being computed on interest. The default is false, which means
interest will be computed on interest.
🔹 Data.ODI.UseDailyCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the total odd days prepaid fee is computed by first generating a rounded (to
the nearest penny) daily cost and then multiplying this value by the computed
number of odd days, then set the value of this property to true.
A value of false means that the daily cost is left unrounded, and the total
prepaid fee is rounded after the computation is complete.
🔹 Data.ODI.UseNegODI
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If there are negative odd days in the loan, then the value of this field
determines if a negative odd days interest fee is computed. If the value of this
field is false, then negative odd days fees are not allowed, the SCE will
return a value of zero in this situation, and the computed payment will be
adjusted to take into account the negative odd days. A value of true will
return a negative odd days interest fee (in effect, it then becomes and odd days
interest credit) when there are negative odd days in a loan.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
The Protection object is used by the calling application to request one or
more payment protection products (e.g. life, disability, involuntary
unemployment, or personal property) be included in the loan calculation. Each of
these products is requested by including its own child object, along with
the borrower birthdays.
Fields:
🔹Birthday1,🔹Birthday2,🔹LineOfCredit,🔹Mandatory,🔹ShowBorrowerInfo,🔹ShowCapsObjects:
🟦 Disability,🟦 Life,
🔹 Data.Protection.Birthday1
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the secondary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday2" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower2 or both.
🔹 Data.Protection.Birthday2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the primary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday1" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower1 or both.
🔹 Data.Protection.Financed
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the computed premiums for single premium debt protection products should be
financed along with the proceeds, then this field should be set to true (which
is the default value if not specified). A value of false indicates that the
computed premiums will not be financed with the proceeds, and hence will be paid
out of pocket by the borrower. Note that this applies to single premium
insurance products only!
🔹 Data.Protection.LineOfCredit
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this is an account using TruStage's MOB insurance, and if this loan is a
line of credit where product term caps should be ignored, then set this field to
true. Otherwise, omit this field or set it to false.
🔹 Data.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then any computed payment
protection premium or fee will be considered a mandatory fee which will be
included as a part of the Finance Charge, and hence affect the disclosed APR.
If the Mandatory field is set to false, then the loan will treat any
premiums / fees as normal.
🔹 Data.Protection.ShowBorrowerInfo
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have data returned for each specified
borrower instead of a single Term object, then set the value of this field to
true. Otherwise, omit this field or set it to false. See the Borrower and
Term objects defined in the response section for more information.
🔹 Data.Protection.ShowCaps
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have cap information (e.g. maximum
terms, coverage amounts, ages, etc.) returned for each product offered, set the
value of this field to true. Otherwise, omit this field or set it to false.
See the Caps object defined in the response section for more information.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
The Disability object determines what type of disability coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTerm,🔹TableObjects:
None
🔹 Data.Protection.Disability.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Disability.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Disability object altogether or specify a value of none.
🔹 Data.Protection.Disability.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Disability.Table
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0...19] | 0 |
If the specified account has been set up with multiple disability or debt cancellation plans, then this field determines which plan number will be used. If no table number is specified, the first table (table zero) will be used.
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
The Life object determines what type of life coverage is
requested for the loan.
Fields:
🔹CovAmount,🔹Covers,🔹CovTerm,🔹Dismemberment,🔹Method,🔹UseLevelRatesObjects:
None
🔹 Data.Protection.Life.CovAmount
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a coverage amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum coverage amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user specified coverage amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Life.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Life object altogether or specify a value of none.
🔹 Data.Protection.Life.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Life.Dismemberment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer life protection products with
optional dismemberment coverage, and if the optional dismemberment coverage is
desired, then set this field's value to true. Otherwise, use the default value
of false.
🔹 Data.Protection.Life.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Default, Gross, Net | Default |
Some accounts are configured to offer different types of credit life products (usually gross and net). In these accounts, this field allows the calling application to specify which method to use for a given loan. If no method is present in the request, then the default method will be used.
🔹 Data.Protection.Life.UseLevelRates
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer single premium credit life
using level rates instead of the normal decreasing rates, and if you wish to use
level rates instead of decreasing, then set this field's value to true.
Otherwise, use the default value of false.
🟦 Data.Settings
| Type | Required |
|---|---|
| Object | no |
The Settings object allows the calling application to alter the default
loan calculation options.
Fields:
🔹Account,🔹AccrualCode,🔹ConMethod,🔹DataPath,🔹Lastday,🔹PmtDollarRound,🔹PmtRound,🔹ShowAmTable,🔹TILARESPA2015,🔹YieldPPYObjects:
None
🔹 Data.Settings.Account
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..9999] | 1 |
The Account field specifies the numeric setup file account number that will be
used to compute the requested loan. Each account is numbered from 1 to 9,999,
and each account corresponds to a set of setup file which define numerous
settings which may affect the loan calculation, such as the accrual method,
insurance methods / rates / caps, etc.
🔹 Data.Settings.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | see table | default |
The method of interest accrual is defined by this field. A value of default
informs the SCE to use the interest accrual method defined in the setup file for
the specified Account. All other valid accrual codes
are described in the table below.
🔹 Data.Settings.ConMethod
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, simple, interestonly | default |
When computing a construction loan, there are two supported methods for computing interest during the constrcution period:
If the value of this field is simple, then the estimated construction
interets will be computed and disclosed as a lup-sum prepaid fee (see
the Moneys.ConstructInterest
response field).
If the value of this field is interestonly, then the construction and
permanent loans are combined into a single loan, with the construction (and
permanent) loan's interest being reflected in the
Moneys.Interest field, and
both loans reflected in a single, combined amortization schedule.
A value of default instructs the SCE to use the construction method specified
in the setup file for the given account.
🔹 Data.Settings.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔹 Data.Settings.Lastday
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | as configured in setup file |
If present, this field overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day accrual calendar where the first payment date falls at the end of a month with fewer than 31 days. As an example, if the first payment date is on April 30, should the following payment dates be made on the 30th of each month, or on the last day of the month?
If no value is specified for this field, then the setup file setting will be
used. If true is specified, then conditions triggering a last day situation
will result in payments which fall at the end of the month. A value of false
indicates that when dictated, subsequent payment dates will not be moved to the
last day of the month.
🔹 Data.Settings.OddFinal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Following the last payment of an amortization schedule, the ending balance is unlikely to be zero due to the rounding of the payment. In order to assure perfect amortization, lenders will use an odd final payment to perfectly amortize the loan.
Set OddFinal to true to ensure perfect amortization with a payment that
pays off the loan.
🔹 Data.Settings.PmtDollarRound
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Payments are normally rounded to the penny, according to the method specified by
in the setup file, or vy theSettings.PmtRound field. If
the payment should be rounded to the dollar instead of the penny, then set
the value of this field to true.
Note that for some loans (such as those with longer terms or relatively small proceeds), rounding the payment up or to the nearest dollar may require a shortened loan term to prevent one or more negative payments at the end of the loan.
🔹 Data.Settings.PmtRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, nearest, up, down, best | default |
How are calculated payments to be rounded at and beyond this event? best means
to choose the payment that returns a minimal ending balance at the end of
amortization. If two payments result in the same minimal error magnitude, the
smaller payment is chosen. default means that the setting should be configured
as specified in the setup file.
🔹 Data.Settings.ShowAmTable
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
To supress the entire amortization schedule from the response, set value of this
field to false; otherwise, the amortization schedule will be returned with the
response.
🔹 Data.Settings.TILARESPA2015
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will include data for the
Integrated Mortgage Disclosures under the Real Estate Settlement Procedures Act
(Regulation X) and the Truth In Lending Act (Regulation
Z) rule, which is
required as of August 1st, 2015. If the field is omitted or set to false, then
the TILA RESPA outputs will not be generated.
Note that this field is supported for equal payment loans, balloon payment loans, single payment notes, interest only loans, fixed principal plus interest loans, skips, pickups and irregulars, and ARMs.
🔹 Data.Settings.YieldPPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0, 2, 4, 6, 12 | 0 |
Canadian mortgages may compute periodic interest using a fractional power of a periodic yield. If set to a value other than `0', this field determines the period. Please contact us for further information if you support mortgage calculations in Canada. Note that when using this field with a value other than zero, the calling application must include an odd days prepaid fee in the request.
Fixed Principal Plus Interest Loan Module - Response
The Data object for a response from the PrincipalPlus module is defined below,
in the order the fields are returned:
The following example is the response returned from the SCE for the first request example provided at the beginning of the previous section.
The Data object for the response is defined below in the
order the fields are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔹CountryObjects:
🟥 Errors[],🟥 Warnings[],🟥 Results,🟦 FedBox,🟦 TILARESPA2015,🟦 Moneys,🟦 Accrual,🟦 PmtStreams[],🟦 Protection,🟦 AmTable
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
If the request specified a two-character or three-digit Country code, then
this field will be present and will contain the full name of the country
associated with the specified code. Please see the Countries
Appendix for the list of supported countries and their
associated codes.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "PrincipalPlus",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "PrincipalPlus",
"Data" : {
"Errors" : [
"Data.LoanDate (StringDate) not found.",
"Data.PmtDate (StringDate) not found.",
"Data.IntRate (StringFloat) not found.",
"Data.Proceeds (StringFloat) not found.",
"Data.FirstPrincipalPmt (StringInt) not found.",
"Data.PrincipalReduction (StringFloat) not found.",
"Data.PrincipalPmts (StringInt) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟦 Data.Results
| Type | Required |
|---|---|
| Object | no |
This field(s) of this object represent the most important numerical results for the loan request.
Fields:
🔸Final,🔸First🔸PrincipalReduction🔸TermObjects:
None
🔸 Data.Results.Final
| Type | Required | Values |
|---|---|---|
| String | no | Currency |
The final payment of the loan.
🔸 Data.Results.First
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The first payment for the loan.
🔸 Data.Results.PrincipalReduction
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The constant amount of principal reduction.
🔸 Data.Results.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer > 0 |
The computed number of payments in the loan.
🟦 Data.FedBox
| Type | Required |
|---|---|
| Object | no |
This object groups together all fields which contain important numerical information, as defined in the Truth-In-Lending laws (Regulation Z)
Fields:
🔸AmtFin,🔸FinChg,🔸TotPmts,🔹TotalSalePrice
🔸 Data.FedBox.AmtFin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The Regulation Z Amount Financed, which is defined as the amount of credit provided to the borrower or on their behalf.
🔸 Data.FedBox.FinChg
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost the borrower.
🔸 Data.FedBox.TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The amount which the borrower will have paid when the borrower has made all scheduled payments.
🔹 Data.FedBox.TotalSalePrice
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The sum of the total of payments plus the total down payment. Please note that
if no TotalDown field was included
in the request, then this element will not be present.
🟥 Data.FedBox.APR
| Type | Required |
|---|---|
| Object | yes |
The APR object contains fields which return the value and APR method used.
Fields:
🔸Value,🔹Max,🔹MaxExceeded,🔸TypeObjects:
None
🔸 Data.FedBox.APR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed APR, which is the cost of the extension of credit expressed as a yearly rate.
🔹 Data.FedBox.APR.Max
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Number | n/a |
This field returns the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this field will not be present in the response. The value of this field should be displayed as a percentage.
🔹 Data.FedBox.APR.MaxExceeded
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If a maximum APR is configured in the account's setup files, then the value of this field indicates whether or not the current loan exceeds the maximum APR. If no maximum APR has been specified, then this field will not be present in the response.
🔸 Data.FedBox.APR.Type
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field returns the APR method used to compute the reported APR.
🟦 Data.FedBox.MAPR
| Type | Required |
|---|---|
| Object | no |
The MAPR (military APR) object is only returned with the response if the value
of the Apr.UseMAPR request field is
true.
Fields:
🔸Value,🔸Advance,🔸Max,🔸MaxExceededObjects:
None
🔸 Data.FedBox.MAPR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed military APR.
🔸 Data.FedBox.MAPR.Advance
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.
🔸 Data.FedBox.MAPR.Max
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
This field holds the maximum Military APR as specified in the input XML (see
Apr.MAPR_Max). If not specified, a default
value of 36% is assumed. The value of this field should be displayed as a
percentage. As an example, for "Max" :"36.000", you would disclose a maximum
Military APR of 36%.
🔸 Data.FedBox.MAPR.MaxExceeded
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
The value of this field indicates whether or not the current loan exceeds the
maximum allowed Military APR. As an example, if the maximum APR has been set to
36% and the Military APR for the returned loan was 37.125%, the MAPR object
would be:
{
"MAPR" : {
"Value" : "37.125",
"Advance" : "1350.00",
"Max" : "36.000",
"MaxExceeded" : true
}
}
🟦 Data.TILARESPA2015
| Type | Required |
|---|---|
| Object | no |
This object contains fields which are of interest to fulfilling the 2015 TILA
RESPA rule. It will only be present if the
Settings.TILARESPA2015
field in the request is set to true.
Fields:
🔸TotalLoanCost,🔸CD_TotPmts,🔸TIPObjects:
🟥 LoanCosts[],🟥 In5Years,🟥 MaxPnIPmt,🟥 MinRate,🟥 MaxRate,🟥 ProjectedPaymentsTable[]
🔸 Data.TILARESPA2015.TotalLoanCost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The value of this field is the sum of all borrower paid loan costs. Since all
LoanCost values are rounded dollar amounts, the value of this
element will also be a rounded dollar amount.
🔸 Data.TILARESPA2015.CD_TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the sum of the total of payments, all borrower paid loan costs, and any odd days interest that is prepaid at loan closing. This value should be disclosed on the Closing Disclosure form in the Total of Payments field.
🔸 Data.TILARESPA2015.TIP
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The total interest percentage, rounded to three or fewer decimal places - as required.
🟥 Data.TILARESPA2015.LoanCosts[]
| Type | Required |
|---|---|
| Array of LoanCost Objects | yes |
For every object in the Fees[] array present
in the request which has its
IsLoanCost field set to true
(and hence, is a borrower paid loan cost) and whose amount is greater than zero
(except odd days interest fee types, as explained in the previous documentation
of the Fee and object), there will be a
corresponding LoanCost object.
Fields:
🔹Name,🔹In5Years,🔸ValueObjects:
None
🔹 Data.TILARESPA2015.LoanCosts[].Name
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔹 Data.TILARESPA2015.LoanCosts[].In5Years
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | Same as Value |
If the entire amount of the fee is different from the amount collected over the first five years (for example, a service charge), then this field will be present and disclose the portion of this loan coast that is accrued during the first five years.
🔸 Data.TILARESPA2015.LoanCosts[].Value
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field is the numerical value of the fee, rounded to the nearest dollar.
🟥 Data.TILARESPA2015.In5Years
| Type | Required |
|---|---|
| Object | yes |
This object contains all important values required for the new "In 5 Years" section of the disclosure.
Fields:
🔸PaidTotal,🔸PaidPrincipalObjects:
None
🔸 Data.TILARESPA2015.In5Years.PaidTotal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds the sum of all "principal, interest, mortgage insurance, and borrower paid loan costs scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🔸 Data.TILARESPA2015.In5Years.PaidPrincipal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds "the principal scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🟥 Data.TILARESPA2015.MaxPnIPmt
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold the maximum sceduled principal and interest payment during the term of the loan, as well as the date on which that payment is made.
Objects:
None
🔸 Data.TILARESPA2015.MaxPnIPmt.Date
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field returns the date on which the maximum scheduled principal and interest payment is made. If the maximum scheduled payment occurs more than once, then the date returned is that of the first instance.
🔸 Data.TILARESPA2015.MaxPnIPmt.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The maximum sceduled principal and interest payment during the term of the loan.
🟥 Data.TILARESPA2015.MinRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the minimum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MinRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the minimum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MinRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the minimum rate is first applicable.
🟥 Data.TILARESPA2015.MaxRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the maximum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MaxRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the maximum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MaxRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the maximum rate is first applicable.
🟥 Data.TILARESPA2015.ProjectedPaymentsTable[]
| Type | Required |
|---|---|
Array of PPCol Objects | yes |
Fields:
🔸Num,🔸Title,🔸YearStart,🔸YearEnd,🔸PnIPmtMin,🔸PnIPmtMax,🔸IntOnly,🔸Balloon,🔸MIPmt,🔸TotalPmtMin,🔸TotalPmtMaxObjects:
None
This field returns an Array of projected payment table columns (PPCol), with
each array member detailing a single column. Per the regulation, there will be a
minimum of one column and a maximum of four columns, depending upon the
parameters of the loan.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Num
| Type | Required | Value |
|---|---|---|
| String | yes | Integer in [1...4] |
The value of this field identifies the number of the column to which the following fields apply. The value will be from 1 to 4.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Title
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
The value of this field is the title for the column. Most of the time, it will
be in the form of Years X - Y, or Year X, or Final Payment in the case of
a final balloon payment.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearStart
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The beginning year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearEnd
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The ending year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The minimum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The maximum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].IntOnly
| Type | Required | Value |
|---|---|---|
| String | yes | none, some, all |
If none of the payments associated with this column are interest only payments,
then the value of this field will be none. A value of some means that some
of the payments (but not all) associated with this columnt are interest only.
Finally, a value of all indicates that all payments associated with this
columnt are interest only.
Note that for the purposes of this field, a scheduled payment is considered an interest only payment if the payment amount pays off all interest due at the time of the payment, with no reduction in the principal balance.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Balloon
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
If any of the payments associated with this column are balloon payments (e.g.
isolated payments that are more than twice the value of a regular periodic
payment), then the value of this field will be true.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].MIPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The value of this field holds the mortgage insurance premium associated with this column, rounded to the nearest dollar. If no mortgage insurance is present or coverage has been dropped, a value of zero will be present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the minimum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the maximum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🟦 Data.Moneys
| Type | Required |
|---|---|
| Object | no |
This element groups together those other major cash result amounts not disclosed
under the FedBox object, such as the principal balance, interest charge,
and fee amounts.
Fields:
🔸Principal,🔸Interest,🔹ConstructInterest,🔹FinFees,🔹Prepaid,🔹PocketFees,🔹MAPRFees,🔹MinIntChgAdj,🔹MinFinChgAdjObjects:
🟦 ODI,🟦 Fees[],🟦 Protection
🔸 Data.Moneys.Principal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance is the amount on which interest is accrued. The principal balance consists of all advances requested by the borrower, as well as any fees and/or protection products which are financed.
🔸 Data.Moneys.Interest
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This value of this field holds the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.
🔹 Data.Moneys.ConstructInterest
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If the requested loan is a construction loan with a permanent loan attached and the account specified is set up to compute construction loans via the "Simple" method, then this field will contain the construction interest for the requested loan.
Note that if a permanent loan is attached to a construction loan and the
account is set up to use the "LaserPro" method, then the construction
and permanent loans are combined into a single loan, with the construction
(and permanent) loan's interest being reflected in the
Moneys.Interest field, and both loans reflected in a single,
combined amortization schedule.
If the requested loan is a construction loan without a permanent loan
attached, then the construction interest will be disclosed in the
Moneys.Interest field.
If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this field will not appear in the response.
🔹 Data.Moneys.FinFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field contains the sum of all fees having AddToPrin
set to true and occuring on the date of an advance. If this
value is zero, the field will not appear in the response.
🔹 Data.Moneys.Prepaid
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field represents all prepaid finance charges and contains the sum of all
fees occurring on an advance and having AddToFinChg
set to true. If this value is zero, the field will not be found in the response.
🔹 Data.Moneys.PocketFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are neither financed, nor added to the finance charge. In essence, they are paid out of the borrower's pocket. If no out of pocket fees were requested, then this field will not show up in the response.
🔹 Data.Moneys.MAPRFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are Military APR fees (including protection products), and will only appear if the Military APR has been requested.
🔹 Data.Moneys.MinIntChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum interest charge is configured in the account's setup files and the final payment was adjusted to meet this minimum interest charge, then this field will be returned in the response and will contain the value of the minimum interest charge adjustment.
🔹 Data.Moneys.MinFinChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum finance charge is configured in the account's setup files and the final payment was adjusted to meet this minimum finance charge, then this field will be returned in the response and will contain the value of the minimum finance charge adjustment.
🟦 Data.Moneys.ODI
| Type | Required |
|---|---|
| Object | no |
This object, if present, contains information regarding odd days interest. If no odd days interest was requested, then this object will not be present in the response.
Fields:
🔹AddToPmt,🔸Count,🔸Fee,🔹Months,🔹DailyCostObjects:
None
🔹 Data.Moneys.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If the odd days interest has been added to the first payment, then this field
will be present in the response with a value of true. If the odd days interest
has been treated as a prepaid finance charge, then this field will not be
present and a default value of false should be assumed.
🔸 Data.Moneys.ODI.Count
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Discloses the number of odd days computed by the SCE for the requested loan.
🔸 Data.Moneys.ODI.Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total amount odd days interest charge.
🔹 Data.Moneys.ODI.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field holds the number of odd months computed by the SCE for the requested
loan when using odd days accrual method 250. If the odd days accrual method is
a value other than 250, then this field will not be present in the ODI
object of the response.
🔹 Data.Moneys.ODI.DailyCost
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | n/a |
If the odd days interest fee is computed using a rounded daily cost, then the value of this field will hold that value. If the odd days interest is not computed using a rounded daily cost, then this field will not be present in the response.
🟦 Data.Moneys.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
If the requested loan included fees, then for each fee in the loan there will be a Fee object in this array containing the name of the fee and the computed fee amount.
If there were no fees requested with the loan, then the Moneys.Fees[] array
will not be included in the response.
Objects:
None
🔹 Data.Moneys.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.Fees[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed fee amount.
🟦 Data.Moneys.Protection
| Type | Required |
|---|---|
| Object | no |
This object returns summary information on all payment protection products computed with the loan. If no protection products were included with the loan, then this object will be omitted from the response.
Fields:
🔸Cost,🔸PerPmt,🔸PerDay,🔸Category,🔹IsDP,🔹MandatoryObjects:
None
🔸 Data.Moneys.Protection.Cost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total cost of all protection plans included with the
computed loan. For the individual plan costs, see the
Protection field described below.
🔸 Data.Moneys.Protection.PerPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per payment.
🔸 Data.Moneys.Protection.PerDay
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per day.
🔸 Data.Moneys.Protection.Category
| Type | Required | Values |
|---|---|---|
| String | yes | None, SP, MOB, TrueMOB, PaidSP |
Te value of this field specifies the category under which the computed loan protection falls. The categories are described below:
| Category | Description |
|---|---|
None | No loan protection products were computed with this loan. |
SP | Financed single premium coverage. |
MOB | Monthly outstanding balance coverage. |
TrueMOB | TruStage's monthly outstanding balance method. |
PaidSP | Non-financed single premium coverage. |
🔹 Data.Moneys.Protection.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field indicates if the specified account's protection is set up as debt
protection. If this field is not present, then the default value of false
should be used (which indicates that the account's protection is set up as
insurance instead).
🔹 Data.Moneys.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field should only appear in the response if the value of the is true.
If this field does not appear in the output, then the value should default to
false.
If the value of the Mandatory field is true, then the total premium / fee
amount for all insurance / debt protection products has been treated as a part
of the Finance Charge, and hence will affect the effective APR.
🟦 Data.Accrual
| Type | Required |
|---|---|
| Object | no |
This object groups together interest accrual information, such as the accrual method(s) used, days to the first payment and the loan's maturity date.
Fields:
🔸Method,🔸Days1Pmt,🔸DayCount,🔸MaturityObjects:
None
🔸 Data.Accrual.Method
| Type | Required | Values |
|---|---|---|
| String | yes | Text |
The Method field contains a textual description of the interest accrual method
used to compute the loan (e.g. "Unit Period 365 Simple".)
🔸 Data.Accrual.Days1Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field contains the number of days between the date of the first
advance and the date of first payment, computed by one of two
methods as specified in by Accrual.DayCount (below).
🔸 Data.Accrual.DayCount
| Type | Required | Values |
|---|---|---|
| String | yes | True360, Actual |
This field specifies the method used to compute the number of days from the date
of the first advance until the first payment date. Actual means that the
actual number of days between these two dates are used, whereas the True360
method use a 360 day calendar.
🔸 Data.Accrual.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
Holds the maturity date of the loan, which is the date on which the last
payment is scheduled. All dates are in the form of YYYY-MM-DD, and must
be 10 characters long.
🟦 Data.PmtStreams[]
| Type | Required |
|---|---|
| Object | no |
The PmtStreams[] array is made up of one or more PmtStream objects (there
will always be at least one of these elements, and there may be more than one
depending upon the loan type). The PmtStream objects describe the scheduled
stream of payments for the computed loan. Instead of disclosing each and every
payment individually (which can be done with the AmTable object),
the payment stream groups together consecutive equal payments at the same
interest rate to produce output along the lines of:
{
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "50.13",
"Rate" : "4.500",
"Begin" : "2022-10-01"
},
{
"Term" : "10",
"Pmt" : "37.59",
"Rate" : "4.500",
"Begin" : "2022-11-01"
},
{
"Term" : "1",
"Pmt" : "10062.59",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
]
}
Each object describes a single stream of equal payments at the same interest rate, using the following fields to define the important properties of each payment stream.
Fields:
🔸Term,🔸Pmt,🔸Rate,🔸BeginObjects:
Note
🔸 Data.PmtStreams[].Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The Term field holds the number of payments that make up the given payment
stream.
🔸 Data.PmtStreams[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The Pmt field holds the computed payment amount for this payment stream.
🔹 Data.PmtStreams[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number |
Contains the interest rate used for the duration of this payment stream. If this payment stream accrued interest using split-rate tiers, then this field will not be returned.
🔸 Data.PmtStreams[].Begin
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field identifies the date on which the first payment for this given payment
stream is scheduled to be made. All dates are in the form of YYYY-MM-DD, and
must be 10 characters long.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
If protection products are requested, then this object will be present in the response, along with a field for each requested protection product.
Fields :
NoneObjects:
🟦 Life,🟦 Level,🟦 Disability
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
If life protection was requested with the loan and decreasing life was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing life coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Life.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Life.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Life.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Life.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Life.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Life.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Life.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Life.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Life.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary life product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Life.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Life.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Life.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Life.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Life.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Life.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Life.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Life.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Level
| Type | Required |
|---|---|
| Object | no |
If level protection was requested with the loan and decreasing level was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing level coverage.
Objects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Level.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Level.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🟦 Data.Protection.Level.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Level.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Level.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Level.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Level.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Level.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary Level product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Level.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Level.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Level.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Level.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Level.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Level.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Level.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Level.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
If disability protection was requested with the loan and decreasing disability was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing disability coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Disability.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Disability.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Disability.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Disability.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Disability.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Disability.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Disability.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Disability.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Disability.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Disability.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Disability.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Disability.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Disability.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Disability.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Disability.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Disability.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Borrower2
| Type | Required |
|---|---|
| Object | no |
The borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Disability.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.AmTable
| Type | Required |
|---|---|
| Object | no |
This object contains fields which summarize and describe the loan's amortization
schedule. If
Settings.ShowAmTable is set
to false, then this object will not be found in the response.
Fields:
🔹Months,🔹Weeks,🔹OddDaysObjects:
🟦 GrandTotals,🟦 SubTotals[],🟥 AmLines[]
🔹 Data.AmTable.AvgBal
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the average balance of the loan used in the Canadian APR calculation.
🔹 Data.AmTable.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of months in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.Weeks
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of weeks in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.OddDays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the number of odd days in the term of the loan used in the Canadian APR calculation. Odd days are computed by moving backwards from the maturity date the number of disclosed months or weeks, and then counting the additional number of days required to land on the loan date.
🟦 Data.AmTable.GrandTotals
| Type | Required |
|---|---|
| Object | no |
This object describes the total amounts of various categories throughout the life of the loan. As an example, the total amount paid to interest and principal, as well as the total of payments are all contained in fields of this object.
Fields:
🔸PmtTot,🔸IntTot,🔸PrinTot,🔹CLTot,🔹AHTotObjects:
None
🔸 Data.AmTable.GrandTotals.PmtTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total of payments scheduled for the computed loan.
🔸 Data.AmTable.GrandTotals.IntTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total amount paid to interest over the life of the loan, assuming all payments are made as scheduled.
🔸 Data.AmTable.GrandTotals.PrinTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.
🔹 Data.AmTable.GrandTotals.CLTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLTot field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life over the duration of the loan.
🔹 Data.AmTable.GrandTotals.AHTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHTot field will only appear on loans with certain types of disability or
debt protection products, such as those based on a monthly outstanding balance.
It contains the total amount paid for this protection over the duration of the
loan.
🟦 Data.AmTable.SubTotals[]
| Type | Required |
|---|---|
| Array of SubTotal Objects | no |
Describes the total amounts of various categories paid during a given calendar year.
For each year in which the computed loan has scheduled payments, there will be
a SubTotal object in the array.
Fields:
🔸Year,🔸Start,🔸Events,🔸PmtSub,🔸IntSub,🔸PrinSub,🔹CLSub,🔹AHSubObjects:
None
🔸 Data.AmTable.SubTotals[].Year
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The calendar year for which the subtotal data is applicable.
🔸 Data.AmTable.SubTotals[].Start
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the first amortization event which falls in the specified
calendar year. To find the AmLines[] object which corresponds to
this value, match the Idx field of the AmLine
object.
🔸 Data.AmTable.SubTotals[].Events
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the number of amortization events which belong to this calendar year.
🔸 Data.AmTable.SubTotals[].PmtSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total of payments scheduled for the calendar year.
🔸 Data.AmTable.SubTotals[].IntSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Holds the total amount paid to interest over the calendar year, assuming all payments are made as scheduled.
🔸 Data.AmTable.SubTotals[].PrinSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total amount paid to principal during the calendar year, assuming all payments are made as scheduled.
🔹 Data.AmTable.SubTotals[].CLSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLSub field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life during the year.
🔹 Data.AmTable.SubTotals[].AHSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHSub field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection during the year.
🟥 Data.AmTable.AmLines[]
| Type | Required |
|---|---|
| Array of AmLine Objects | yes |
There is one AmLine object for each amortization event which occurs during
the life of a loan. Most of the time, each event will describe a payment, and
detail how that payment is applied (to interest, principal, loan protection
products, etc.). Some events, such as capitalizing interest, will not have
payments but will show how the loan amortizes.
Fields:
🔸Idx,🔸Date,🔸BegBal,🔸Pmt,🔸Int,🔸Prin,🔹CL,🔹AH,🔹UnpaidInt,🔸EndBalObjects:
None
🔸 Data.AmTable.AmLines[].Idx
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The index of the amortization event, which is either the payment number, or zero. A value of zero designates an event that is either not a payment or is a skipped payment.
🔸 Data.AmTable.AmLines[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the amortization event is scheduled to occur. All dates are in
the form of YYYY-MM-DD, and must be 10 characters long.
🔸 AmData.AmTable.AmLines[]ine.BegBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance before the amortization event occurs.
🔸 Data.AmTable.AmLines[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The payment amount for this event.
🔸 Data.AmTable.AmLines[].Int
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of interest paid at this event.
🔸 Data.AmTable.AmLines[].Prin
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of principal paid at this event.
🔹 Data.AmTable.AmLines[].CL
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CL field will only appear on loans with certain types of life protection
products, such as those based on a monthly outstanding balance. It contains the
amount of the payment which is marked for life coverage.
🔹 Data.AmTable.AmLines[].AH
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AH field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for disability /
debt protection coverage.
🔹 Data.AmTable.AmLines[].UnpaidInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear on an amortization line when interest has been accrued, but has not yet been paid or added to the principal balance. If the interest accrued has not yet been rounded, then the unpaid interest will be displayed to four (4) decimal placed. If rounded, then the unpaid interest is displayed to two (2) decimal places.
🔸 Data.AmTable.AmLines[].EndBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The principal balance amount, after the amortization event has taken place.
Skip, Pickup, and Irregular Payment Loans
At times, people in certain seasonal professions (such as teachers and farmers) may need to skip payments scheduled for a given selection of months. As an example, if a teacher is not paid in July, August and September, then it might be helpful if the individual could skip payments scheduled during those months.
Similarly, if a borrower knows that they receive an annual bonus of $1,000 at the end of December, then she may want to either pay an extra $1,000 dollars (or perhaps fix the payment at $1,000) for January.
The above two situations are what we call loans with skipped, pickup, or
irregular payment schedules. A skipped payment can be either a payment of zero,
or an interest only payment. An irregular payment is a payment specified by
the borrower, in its entirety or treated as the specified principal portion of
the payment. A pickup payment is a payment which exceeds the computed regular
payment by a given amount. With the SCE, you may compute either skipped and
pickup payment loans, or skipped and irregular payment loans. To clarify, you
can not compute a loan with skipped, pickup, and irregular payments in the same
payment stream using the Irregular module.
Sample Request
The following example is a request for an irregular payment loan with proceeds
of $10,000, interest will accrue at a 5.5% rate using an actual day / 365 U. S.
Rule accrual method (accrual code 320). There will be 60 monthly payments,
with skipped payments in June, July, and August.
{
"Module" : "Irregular",
"Data" : {
"LoanDate" : "2022-08-25",
"PmtDate" : "2022-10-01",
"IntRate" : "5.500",
"Proceeds" : "10000.00",
"Term" : "60",
"IrregType" : "Irregular",
"IrregPmts" : [
{
"Month" : "6",
"Year" : "0",
"Payment" : "0.00"
},
{
"Month" : "7",
"Year" : "0",
"Payment" : "0.00"
},
{
"Month" : "8",
"Year" : "0",
"Payment" : "0.00"
}
],
"Settings" : {
"AccrualCode" : "320"
}
}
}
Sample Response
{
"Result" : 200,
"Module" : "Irregular",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Results" : {
"Payment" : "253.55",
"Number of Skips" : "15",
"Payments Specified" : "15"
},
"FedBox" : {
"AmtFin" : "10000.00",
"FinChg" : "1409.75",
"TotPmts" : "11409.75",
"APR" : {
"Value" : "5.491",
"Type" : "Actuarial"
}
},
"Moneys" : {
"Principal" : "10000.00",
"Interest" : "1409.75"
},
"Accrual" : {
"Method" : "Actual/365 US Rule",
"Days1Pmt" : "37",
"DayCount" : "Actual",
"Maturity" : "2027-09-01"
},
"PmtStreams" : [
{
"Term" : "8",
"Pmt" : "253.55",
"Rate" : "5.500",
"Begin" : "2022-10-01"
},
{
"Term" : "9",
"Pmt" : "253.55",
"Rate" : "5.500",
"Begin" : "2023-09-01"
},
{
"Term" : "9",
"Pmt" : "253.55",
"Rate" : "5.500",
"Begin" : "2024-09-01"
},
{
"Term" : "9",
"Pmt" : "253.55",
"Rate" : "5.500",
"Begin" : "2025-09-01"
},
{
"Term" : "9",
"Pmt" : "253.55",
"Rate" : "5.500",
"Begin" : "2026-09-01"
},
{
"Term" : "1",
"Pmt" : "253.55",
"Rate" : "5.500",
"Begin" : "2027-09-01"
}
],
"AmTable" : {
"GrandTotals" : {
"PmtTot" : "11409.75",
"IntTot" : "1409.52",
"PrinTot" : "10000.23"
},
"SubTotals" : [
{
"Year" : "2022",
"Start" : "1",
"Events" : "3",
"PmtSub" : "760.65",
"IntSub" : "144.91",
"PrinSub" : "615.74"
},
{
"Year" : "2023",
"Start" : "4",
"Events" : "12",
"PmtSub" : "2281.95",
"IntSub" : "467.93",
"PrinSub" : "1814.02"
},
{
"Year" : "2024",
"Start" : "16",
"Events" : "12",
"PmtSub" : "2281.95",
"IntSub" : "366.97",
"PrinSub" : "1914.98"
},
{
"Year" : "2025",
"Start" : "28",
"Events" : "12",
"PmtSub" : "2281.95",
"IntSub" : "258.10",
"PrinSub" : "2023.85"
},
{
"Year" : "2026",
"Start" : "40",
"Events" : "12",
"PmtSub" : "2281.95",
"IntSub" : "144.21",
"PrinSub" : "2137.74"
},
{
"Year" : "2027",
"Start" : "52",
"Events" : "9",
"PmtSub" : "1521.30",
"IntSub" : "27.40",
"PrinSub" : "1493.90"
}
],
"AmLines" : [
{
"Idx" : "1",
"Date" : "2022-10-01",
"BegBal" : "10000.00",
"Pmt" : "253.55",
"Int" : "55.75",
"Prin" : "197.80",
"EndBal" : "9802.20"
},
...,
{
"Idx" : "9",
"Date" : "2023-06-01",
"BegBal" : "8320.47",
"Pmt" : "0.00",
"Int" : "0.00",
"Prin" : "0.00",
"UnpaidInt" : "38.8669",
"EndBal" : "8320.47"
},
{
"Idx" : "10",
"Date" : "2023-07-01",
"BegBal" : "8320.47",
"Pmt" : "0.00",
"Int" : "0.00",
"Prin" : "0.00",
"UnpaidInt" : "76.4799",
"EndBal" : "8320.47"
},
{
"Idx" : "11",
"Date" : "2023-08-01",
"BegBal" : "8320.47",
"Pmt" : "0.00",
"Int" : "0.00",
"Prin" : "0.00",
"UnpaidInt" : "115.3468",
"EndBal" : "8320.47"
},
{
"Idx" : "12",
"Date" : "2023-09-01",
"BegBal" : "8320.47",
"Pmt" : "253.55",
"Int" : "154.21",
"Prin" : "99.34",
"EndBal" : "8221.13"
},
...,
{
"Idx" : "60",
"Date" : "2027-09-01",
"BegBal" : "248.71",
"Pmt" : "253.55",
"Int" : "4.61",
"Prin" : "248.94",
"EndBal" : "-0.23"
}
]
}
}
}
Skip, Pickup, and Irregular Payment Loan Module - Request
The fields of the Data object supported by an Irregular module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹Country,🔸InterestPmts,🔸InterestPmtRate,🔸IntRate,🔹IntStartDate,🔹IrregType,🔸LoanDate,🔸PmtDate,🔹PPY,🔹Proceeds,🔹Term,🔹TotalDown,🔹UseIntOnlyNotSkips,🔹UsePrinPlusNotIrregsObjects:
🟦 Apr,🟦 Construction,🟦 Fees[],🟦 Format,🟦 ODI,🟦 Protection,🟦 Settings
The fields of the Data object supported by an Equal Pmt module request are
defined in alphabetical order below:
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
This field allows the calling application to specify a two (2) character or
three (3) digit country code. If none is provided, then a default value of US
will be used. Please see the Countries Appendix for
the list of supported countries and their associated codes.
Specifying the Country will also set the default value for the
APR.Method and
Format.CurrencyDecimals fields, as appropriate for
the country specified.
🔹 Data.InterestPmts
| Type | Required | Values |
|---|---|---|
| String | no | Integer > 1 |
This field contains the number of interest payments that precede the regularly payments.
🔹 Data.InterestPmtRate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
This field contains the interest rate that applies to the interest only payments.
🔸 Data.IntRate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
Determine the interest rate used for the loan.
The interest rate should be expressed as a percentage. For example,
a loan computed with a rate of 5.125% would be specified as
"IntRate" : "5.125".
🔹 Data.IntStartDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | same value as LoanDate |
This field contains the date on which interest begins to accrue on the loan's principal balance. If this field is not specified, then the interest start date is set equal the loan date. Also note that the interest start date must be equal to the loan date when computing a construction loan.
The interest start date (when specified) must be on or after the loan date, as well as on or before the first payment date.
🔹 Data.IrregType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Irregular, Pickup | Irregular |
The IrregType field defines how the IrregPmts[].Payment
field is interpreted.
If the value of this field is set to Pickup, then
IrregPmts[].Payment fields with a value greater than zero
will be treated as a pickup payment. A pickup payment is a payment which exceeds
the computed regular payment by a given amount.
If this field is omitted, or if the value of this field is Irregular, then
IrregPmts[].Payment fields with a value greater than zero
will be treated in the following manner:
- If the
UsePrinPlusNotIrregsfield is omitted or set to false, then the specified payment amount will be treated as the entire payment amount. - If the
UsePrinPlusNotIrregsfield is set to true, then the specified payment amount will be treated as a specified principal payment (with interest due added to the specified amount).
🔸 Data.LoanDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field holds the date on which the loan amount is disbursed and interest
begins to accrue. All dates must be in the form of YYYY-MM-DD, and be 10
characters long.
🔸 Data.PmtDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field specifies the first (and for single payment notes, only) payment date
in the loan's repayment schedule. All dates must be in the form of YYYY-MM-DD,
and be 10 characters long.
🔹 Data.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for payments per year, and determines the payment
frequency for the requested loan. The default value of 12 will result in a
loan with 12 payments per year. If you require a loan with a payment frequency
other than monthly, specify it using this field.
🔹 Data.Proceeds
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | n/a |
The proceeds specified indicate the amount of money the borrower is requesting, and does not include financed fees, financed insurances, etc.
🔹 Data.TotalDown
| Type | Required | Values |
|---|---|---|
| String | no | Currency > 0 |
This optional field represents the total down payment that the borrower has applied to reduce the requested proceeds. It may consist of a cash down payment, net trade-in value, or rebate. You only need to specify a total down payment if the loan needs to disclose a total sale price. Typical examples of these loan types are auto and boat loans.
🔹 Data.Term
| Type | Required | Values |
|---|---|---|
| String | no | Integer > 1 |
The Term field indicates the the number of payments to be made at the
specified payment frequency (see the PPY field above), after
which the loan is scheduled to be paid off.
🔹 Data.UseIntOnlyNotSkips
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then any specified skipped payments
(see Irregs[] above) will be treated as interest only payments
instead of skipped payments.
🔹 Data.UsePrinPlusNotIrregs
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to true and if the IrregType field
is set to Irregular, then any specified irregular payments (e.g.
IrregPmts[] objects with a Payment field
greater than zero) will be treated as a specified principal payment (with
interest due added to the specified amount) instead of the entire specified
payment.
🟦 Data.Apr
| Type | Required |
|---|---|
| Object | no |
Settings related to the computed effective rate returned by the SCE (most commonly, the Regulation Z APR in the United States of America) are contained in the fields of this object.
Fields:
🔹MAPR_Max,🔹Method,🔹UseMAPRObjects:
None
🔹 Data.Apr.MAPR_Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 36.0 |
If you are computing the Military APR (see UseMAPR below) and
wish to override the default maximum APR value of 36%, then specify the desired
maximum as the value of this field.
🔹 Data.Apr.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, actuarial, eu, ca, xirr, xirr360, irr | default |
This field allows the calling application to specify an APR calculation
method which will override the default value found in the setup file for the given
Account. If this field is set to a valid value, then the
specified method will be used to compute the APR for this loan calculation.
If the Country field has been set by the calling application and
this field is not set, then the APR method used will be determined by the
specified country. For the United States of America, the default APR method is
actuarial. For a country in the European Union, the default value is
eu (European Union APR). For Canada, the default APR method is
ca (Canadian APR).
The xirr value implements the internal rate of return method as
implemented in Microsoft\textregistered Excel via the XIRR() function,
and is based on an actual day calendar with a 365 day divisor.
The xirr360 value implements the internal rate of return method based
upon a unit period calendar with a 360 day divisor.
The irr value implements a common spreadsheet internal rate of return
method which assumes strict regular periods. Deviating from a strict regular
periodicity may produce unreliable results.
If this field is not specified and the Country field is not
specified, then the value of default will be used which informs the
SCE to use the APR method defined in the setup file for the specified
Account.
🔹 Data.Apr.UseMAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to a value of true, then the SCE will compute the
Military APR in addition to the Regulation Z APR.
TheMAPR object will be included in the loan
response.
🟦 Data.Construction
| Type | Required |
|---|---|
| Object | no |
The Construction object determines if this loan is a construction to permanent
loan request. If you wish to compute a construction loan without an attached
permanent loan, you will need to use either the
Construction or Loan modules.
Fields:
🔹HalfCommitment,🔹PPY,🔸Rate,🔸TermObjects:
None
🔹 Data.Construction.HalfCommitment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
During the term of the construction loan, the estimated interest for disclosure
purposes may be either computed on the full or half commitment amounts. By
setting this field to true, interest will be estimated using half of the
initial commitment amount (i.e. the principal balance). The default value of
false will cause interest to be estimated using the entire initial commitment
amount.
🔹 Data.Construction.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
The PPY field allows the calling application to specify the payment frequency
during the construction period. The default value of 12 will result in a
construction loan with 12 payments per year. If you require a payment frequency
during the construction period other than monthly, then specify it using this
field. Note that the permanent loan's payment frequency may differ from the
construction period's payment frequency.
🔸 Data.Construction.Rate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number in [-99.999...600] | n/a |
This field determines the rate applied to the appropriate commitment amount during the term of the construction loan.
🔸 Data.Construction.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Integer > 0 | n/a |
The term of the construction loan (in payments) is specified using this field. Please note that the term may not exceed five years.
🟦 Data.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
This array of Fee objects allows the calling application to specify one ore
more Fee objects to be included with the loan.
Fields:
🔹AddToFinChg,🔹AddToPrin,🔹Adjust,🔹CalcType,🔹Entry,🔹IsLoanCost,🔹MAPR,🔹Max,🔹Min,🔹NameObjects:
None
🔹 Data.Fees[].AddToFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this fee should be included in the computed Finance Charge (and hence, affect
the APR), then set this field to true. The default value of false indicates
that the fee does not affect the Finance Charge nor APR.
🔹 Data.Fees[].AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If this fee should be added to the principal balance (e.g. the fee is financed
along with the advance(s)), then set this field to true. If set to false,
then the fee is paid up front out of the borrower's pocket.
🔹 Data.Fees[].Adjust
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | 0 |
The optional Adjust field allows the calling application
to increase or decrease the base amount on which a fee is calculated.
If a negative value is specified and this adjustment would produce a
negative base amount, then a value of zero is returned for the given fee.
This field has no effect on fees with a CalcType of Dollar.
As an example, in Tennessee you may need to define a financed, non-APR affecting fee to be computed by decreasing the amount financed by $2,000, and then multiplying this reduced amount by 0.115. The way to accomplish this in the SCE is as follows:
{
"Fees" : [
{
"Name" : "TN Fee",
"CalcType" : "OnAmtFin",
"Adjust" : "-2000.00",
"Entry" : "0.115",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
🔹 Data.Fees[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Dollar, OnProceeds, OnPrincipal, OnAmtFin | Dollar |
This field specifies how the fee is to be computed, as described in the following table.
| Fee Calc Type | Description |
|---|---|
Dollar | The Entry field is understood as a flat dollar amount. |
OnProceeds | The Entry field is understood as a percentage value, to be applied to the loan's proceeds, defined as the sum of advances. An Entry of 0.25 would represent a fee of 0.25% of the total proceeds. |
OnPrincipal | The Entry field is understood as a percentage value, to be applied to the loan's principal balance. An Entry of 0.125 would represent a fee of 0.125% of the principal balance. |
OnAmtFin | The Entry field is understood as a percentage value, to be applied to the loan's Regulation Z Amount Financed. An Entry of 0.33 would represent a fee of 0.33% of the amount financed. |
🔹 Data.Fees[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
How this field is interpreted depends upon the Fee.CalcType field.
Please see the documentation for this field for further information.
🔹 Data.Fees[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which fees need to be considered "borrower paid loan costs",
as defined in the rule. Please note that if the fee is paid by a lender or other
third party, then the fee does not affect the loan calculation and should not be
sent to the SCE. If it is sent, then the value of this field should be set
to false.
🔹 Data.Fees[].MAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If you wish to compute the Military APR, then certain fees may not be considered Regulation Z APR affecting fees, but are considered Military APR affecting fees. In this case, you will need to set the value of this field to true.
Fees which are added to the finance charge (e.g. "AddToFinChg"
: true) are always considered MAPR fees, regardless of the stated value of this
field.
Note that debt protection products are automatically included in the calculation of the Military APR, no matter what method is used for payment (e.g. single premium vs. monthly outstanding balance).
🔹 Data.Fees[].Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then the maximum value will be used instead. If no maximum value is specified or is set to a value of zero, then no maximum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified maximum value is checked after enforcing a specified minimum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Min
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a minimum value for the fee is specified and is greater than zero, then if the computed fee is less than this minimum value, then the minimum value will be used instead. If no minimum value is specified or is set to a value of zero, then no minimum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified minimum value is checked before enforcing a specified maximum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the fee in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value will be determined by the value of the
Country field. For most countries, the default value is 2.
If no country code is specified,
then the default value for this field is 2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
🟦 Data.IrregPmts[]
| Type | Required |
|---|---|
| array of IrregPmt Objects | no |
This array of IrregPmt objects allows the calling application to specify one ore more skipped / interest only payments to be scheduled in the repayment plan, depending upon the value of the UseIntOnlyNotSkips field.
Objects: None
🔹 Data.IrregPmts[].Index
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | empty |
Instead of specifying a month (and optionally, a year) for a given skipped payment, you may instead specify a payment number using the Index field. Thus, if you wish to specify that the first payment be skipped, you would set "Index" : "1".
Note that if you specify a payment index, then omit the Month and Year fields.
🔹 Data.IrregPmts[].Month
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0..12] | empty |
The Month field allows the user to specify a month during which the skipped / interest only payment is applicable. If the Year field is not set for this element, then the skipped / interest only payment will be applied for each payment falling in the given month, throughout the entire term of the loan.
On the other hand, if the Year field is set for this element, then the skipped / interest only payment will only be applied to those payments falling in the given month and year.
If the value of the Month field is set to zero (0), then this skipped /
interest only payment specification is ignored.
If you wish to specify a skipped payment for a specific payment number (instead
of specifying the month and optionally, the year), then use the
Index field and omit the Month and Year fields.
🔹 Data.IrregPmts[].Payment
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The amount of the pickup / specified payment. A zero entry instructs the SCE to treat the payment as a skipped payment.
🔹 Data.IrregPmts[].Year
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0..12] | empty |
IrregPmt.Year is explained in the Month.
🟦 Data.ODI
| Type | Required |
|---|---|
| Object | no |
If odd days should be treated as a prepaid finance charge or added to the first payment in a manner different from how interest is accruing, then the request needs to define how odd days interest is computed and handled using the fields of this object.
Fields:
🔹AccrualCode,🔹AddToPmt,🔹AddToPrin,🔹AnchorDate,🔹ForceUnitPeriod,🔹NoCap,🔹UseDailyCost,🔹UseNegODIObjects:
None
🔹 Data.ODI.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 204, 205, 210, 211, 220, 221, 230, 231, 250 | default |
The accrual code defines how the odd days interest is computed. The meaning of the allowed accrual codes is defined below.
Note that accrual code 250 ("Variable Days Per Year") defines the basis
divisor days to be equal to 12 multiplied by the number of days in the month of
the date on which interest begins to accrue. Thus, if the interest start date
falls in November, then the number of basis days is 360. If the interest start
date falls in a month with 31 days, then the number of basis days is 372. For an
interest start date in February, the number of basis days will either be 336 or
348, depending upon whether or not it is a leap year.
| Accrual Code | Description |
|---|---|
204 | True360/360 |
205 | True360/365 |
210 | Actual/360 |
211 | True365/360 |
220 | Actual/365 |
221 | True365/365 |
230 | Actual/Actual |
231 | Midnight 366 |
250 | Actual/Variable Days Per Year |
🔹 Data.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application wants the odd days interest to be added to the first
payment, then set the value of this field to true. A value of false
indicates that the odd days interest will be treated as a prepaid finance
charge.
🔹 Data.ODI.AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If any odd days interest should be treated as a financed prepaid fee, then set
the value of this field to true. Note that if both AddToPmt and AddToPrin
are set to true, then a warning message will be returned by the SCE and the
value of AddToPrin will be set to false.
🔹 Data.ODI.AnchorDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | BackUnitPeriod, BackDaysPerPeriod | BackUnitPeriod |
The computed number of odd days is the number of days between the loan date and
the anchor date. This field determines how to arrive at the anchor date. A value
of BackUnitPeriod means that the anchor date is one unit period prior to the
specified first payment date. A value of BackDaysPerPeriod means that the
anchor date is the number of days per period prior to the first payment date.
Please note that for both of these methods, the period used will be that
associated with the payment stream in which the first payment occurs.
🔹 Data.ODI.ForceUnitPeriod
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Some unit period methods will not use a strict unit period interest accrual
factor in the period to the first payment. For example, code 302 will count
the days to the first payment and divide by 365. For a monthly loan, setting
this field to true will use a 1/12 factor instead of Days/365.
🔹 Data.ODI.NoCap
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When the odd days interest is financed, setting this field to true prevents
interest from being computed on interest. The default is false, which means
interest will be computed on interest.
🔹 Data.ODI.UseDailyCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the total odd days prepaid fee is computed by first generating a rounded (to
the nearest penny) daily cost and then multiplying this value by the computed
number of odd days, then set the value of this property to true.
A value of false means that the daily cost is left unrounded, and the total
prepaid fee is rounded after the computation is complete.
🔹 Data.ODI.UseNegODI
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If there are negative odd days in the loan, then the value of this field
determines if a negative odd days interest fee is computed. If the value of this
field is false, then negative odd days fees are not allowed, the SCE will
return a value of zero in this situation, and the computed payment will be
adjusted to take into account the negative odd days. A value of true will
return a negative odd days interest fee (in effect, it then becomes and odd days
interest credit) when there are negative odd days in a loan.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
The Protection object is used by the calling application to request one or
more payment protection products (e.g. life, disability, involuntary
unemployment, or personal property) be included in the loan calculation. Each of
these products is requested by including its own child object, along with
the borrower birthdays.
Fields:
🔹Birthday1,🔹Birthday2,🔹LineOfCredit,🔹Mandatory,🔹ShowBorrowerInfo,🔹ShowCapsObjects:
🟦 Disability,🟦 Life,
🔹 Data.Protection.Birthday1
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the secondary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday2" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower2 or both.
🔹 Data.Protection.Birthday2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the primary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday1" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower1 or both.
🔹 Data.Protection.Financed
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the computed premiums for single premium debt protection products should be
financed along with the proceeds, then this field should be set to true (which
is the default value if not specified). A value of false indicates that the
computed premiums will not be financed with the proceeds, and hence will be paid
out of pocket by the borrower. Note that this applies to single premium
insurance products only!
🔹 Data.Protection.LineOfCredit
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this is an account using TruStage's MOB insurance, and if this loan is a
line of credit where product term caps should be ignored, then set this field to
true. Otherwise, omit this field or set it to false.
🔹 Data.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then any computed payment
protection premium or fee will be considered a mandatory fee which will be
included as a part of the Finance Charge, and hence affect the disclosed APR.
If the Mandatory field is set to false, then the loan will treat any
premiums / fees as normal.
🔹 Data.Protection.ShowBorrowerInfo
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have data returned for each specified
borrower instead of a single Term object, then set the value of this field to
true. Otherwise, omit this field or set it to false. See the Borrower and
Term objects defined in the response section for more information.
🔹 Data.Protection.ShowCaps
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have cap information (e.g. maximum
terms, coverage amounts, ages, etc.) returned for each product offered, set the
value of this field to true. Otherwise, omit this field or set it to false.
See the Caps object defined in the response section for more information.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
The Disability object determines what type of disability coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTerm,🔹TableObjects:
None
🔹 Data.Protection.Disability.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Disability.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Disability object altogether or specify a value of none.
🔹 Data.Protection.Disability.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Disability.Table
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0...19] | 0 |
If the specified account has been set up with multiple disability or debt cancellation plans, then this field determines which plan number will be used. If no table number is specified, the first table (table zero) will be used.
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
The Life object determines what type of life coverage is
requested for the loan.
Fields:
🔹CovAmount,🔹Covers,🔹CovTerm,🔹Dismemberment,🔹Method,🔹UseLevelRatesObjects:
None
🔹 Data.Protection.Life.CovAmount
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a coverage amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum coverage amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user specified coverage amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Life.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Life object altogether or specify a value of none.
🔹 Data.Protection.Life.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Life.Dismemberment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer life protection products with
optional dismemberment coverage, and if the optional dismemberment coverage is
desired, then set this field's value to true. Otherwise, use the default value
of false.
🔹 Data.Protection.Life.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Default, Gross, Net | Default |
Some accounts are configured to offer different types of credit life products (usually gross and net). In these accounts, this field allows the calling application to specify which method to use for a given loan. If no method is present in the request, then the default method will be used.
🔹 Data.Protection.Life.UseLevelRates
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer single premium credit life
using level rates instead of the normal decreasing rates, and if you wish to use
level rates instead of decreasing, then set this field's value to true.
Otherwise, use the default value of false.
🟦 Data.Settings
| Type | Required |
|---|---|
| Object | no |
The Settings object allows the calling application to alter the default
loan calculation options.
Fields:
🔹Account,🔹AccrualCode,🔹ConMethod,🔹DataPath,🔹Lastday,🔹PmtDollarRound,🔹PmtRound,🔹ShowAmTable,🔹TILARESPA2015,🔹YieldPPYObjects:
None
🔹 Data.Settings.Account
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..9999] | 1 |
The Account field specifies the numeric setup file account number that will be
used to compute the requested loan. Each account is numbered from 1 to 9,999,
and each account corresponds to a set of setup file which define numerous
settings which may affect the loan calculation, such as the accrual method,
insurance methods / rates / caps, etc.
🔹 Data.Settings.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | see table | default |
The method of interest accrual is defined by this field. A value of default
informs the SCE to use the interest accrual method defined in the setup file for
the specified Account. All other valid accrual codes
are described in the table below.
🔹 Data.Settings.ConMethod
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, simple, interestonly | default |
When computing a construction loan, there are two supported methods for computing interest during the constrcution period:
If the value of this field is simple, then the estimated construction
interets will be computed and disclosed as a lup-sum prepaid fee (see
the Moneys.ConstructInterest
response field).
If the value of this field is interestonly, then the construction and
permanent loans are combined into a single loan, with the construction (and
permanent) loan's interest being reflected in the
Moneys.Interest field, and
both loans reflected in a single, combined amortization schedule.
A value of default instructs the SCE to use the construction method specified
in the setup file for the given account.
🔹 Data.Settings.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔹 Data.Settings.Lastday
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | as configured in setup file |
If present, this field overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day accrual calendar where the first payment date falls at the end of a month with fewer than 31 days. As an example, if the first payment date is on April 30, should the following payment dates be made on the 30th of each month, or on the last day of the month?
If no value is specified for this field, then the setup file setting will be
used. If true is specified, then conditions triggering a last day situation
will result in payments which fall at the end of the month. A value of false
indicates that when dictated, subsequent payment dates will not be moved to the
last day of the month.
🔹 Data.Settings.OddFinal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Following the last payment of an amortization schedule, the ending balance is unlikely to be zero due to the rounding of the payment. In order to assure perfect amortization, lenders will use an odd final payment to perfectly amortize the loan.
Set OddFinal to true to ensure perfect amortization with a payment that
pays off the loan.
🔹 Data.Settings.PmtDollarRound
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Payments are normally rounded to the penny, according to the method specified by
in the setup file, or vy theSettings.PmtRound field. If
the payment should be rounded to the dollar instead of the penny, then set
the value of this field to true.
Note that for some loans (such as those with longer terms or relatively small proceeds), rounding the payment up or to the nearest dollar may require a shortened loan term to prevent one or more negative payments at the end of the loan.
🔹 Data.Settings.PmtRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, nearest, up, down, best | default |
How are calculated payments to be rounded at and beyond this event? best means
to choose the payment that returns a minimal ending balance at the end of
amortization. If two payments result in the same minimal error magnitude, the
smaller payment is chosen. default means that the setting should be configured
as specified in the setup file.
🔹 Data.Settings.ShowAmTable
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
To supress the entire amortization schedule from the response, set value of this
field to false; otherwise, the amortization schedule will be returned with the
response.
🔹 Data.Settings.TILARESPA2015
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will include data for the
Integrated Mortgage Disclosures under the Real Estate Settlement Procedures Act
(Regulation X) and the Truth In Lending Act (Regulation
Z) rule, which is
required as of August 1st, 2015. If the field is omitted or set to false, then
the TILA RESPA outputs will not be generated.
Note that this field is supported for equal payment loans, balloon payment loans, single payment notes, interest only loans, fixed principal plus interest loans, skips, pickups and irregulars, and ARMs.
🔹 Data.Settings.YieldPPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0, 2, 4, 6, 12 | 0 |
Canadian mortgages may compute periodic interest using a fractional power of a periodic yield. If set to a value other than `0', this field determines the period. Please contact us for further information if you support mortgage calculations in Canada. Note that when using this field with a value other than zero, the calling application must include an odd days prepaid fee in the request.
Skip, Pickup, and Irregular Payment Loan Module - Response
The Data object for a response from the Irregular module is defined below, in the
order the fields are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔹CountryObjects:
🟥 Errors[],🟥 Warnings[],🟥 Results,🟦 FedBox,🟦 TILARESPA2015,🟦 Moneys,🟦 Accrual,🟦 PmtStreams[],🟦 Protection,🟦 AmTable
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
If the request specified a two-character or three-digit Country code, then
this field will be present and will contain the full name of the country
associated with the specified code. Please see the Countries
Appendix for the list of supported countries and their
associated codes.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Irregular",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?",
"IntRate" : "4.50",
"Proceeds" : "5000.00",
"Term" : "12"
}
}
{
"Result" : 200,
"Module" : "Irregular",
"Data" : {
"Errors" : [
"Data.LoanDate (StringDate) not found.",
"Data.PmtDate (StringDate) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟦 Data.Results
| Type | Required |
|---|---|
| Object | no |
This field(s) of this object represent the most important numerical results for the loan request.
Fields:
🔸Payment,🔸Number of Skips,🔸Payments Specified,Objects:
None
🔸 Data.Results.Payment
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The regular payment for the irregular payment loan.
🔹 Data.Results.Number of Skips
| Type | Required | Values |
|---|---|---|
| String | no | Integer |
The total number of payments that are skipped are reported here.
🔹 Data.Results.Payments Specified
| Type | Required | Values |
|---|---|---|
| String | no | Integer |
The total number of specified payments are reported here.
🟦 Data.FedBox
| Type | Required |
|---|---|
| Object | no |
This object groups together all fields which contain important numerical information, as defined in the Truth-In-Lending laws (Regulation Z).
Fields:
🔸AmtFin,🔸FinChg,🔸TotPmts,🔹TotalSalePrice
🔸 Data.FedBox.AmtFin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The Regulation Z Amount Financed, which is defined as the amount of credit provided to the borrower or on their behalf.
🔸 Data.FedBox.FinChg
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost the borrower.
🔸 Data.FedBox.TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The amount which the borrower will have paid when the borrower has made all scheduled payments.
🔹 Data.FedBox.TotalSalePrice
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The sum of the total of payments plus the total down payment. Please note that
if no TotalDown field was included in
the request, then this element will not be present.
🟥 Data.FedBox.APR
| Type | Required |
|---|---|
| Object | yes |
The APR object contains fields which return the value and APR method used.
Fields:
🔸Value,🔹Max,🔹MaxExceeded,🔸TypeObjects:
None
🔸 Data.FedBox.APR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed APR, which is the cost of the extension of credit expressed as a yearly rate.
🔹 Data.FedBox.APR.Max
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Number | n/a |
This field returns the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this field will not be present in the response. The value of this field should be displayed as a percentage.
🔹 Data.FedBox.APR.MaxExceeded
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If a maximum APR is configured in the account's setup files, then the value of this field indicates whether or not the current loan exceeds the maximum APR. If no maximum APR has been specified, then this field will not be present in the response.
🔸 Data.FedBox.APR.Type
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field returns the APR method used to compute the reported APR.
🟦 Data.FedBox.MAPR
| Type | Required |
|---|---|
| Object | no |
The MAPR (military APR) object is only returned with the response if the value
of the Apr.UseMAPR request field is
true.
Fields:
🔸Value,🔸Advance,🔸Max,🔸MaxExceededObjects:
None
🔸 Data.FedBox.MAPR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed military APR.
🔸 Data.FedBox.MAPR.Advance
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.
🔸 Data.FedBox.MAPR.Max
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
This field holds the maximum Military APR as specified in the input XML (see
Apr.MAPR_Max). If not specified, a default value
of 36% is assumed. The value of this field should be displayed as a percentage.
As an example, for "Max" :"36.000", you would disclose a maximum Military APR
of 36%.
🔸 Data.FedBox.MAPR.MaxExceeded
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
The value of this field indicates whether or not the current loan exceeds the
maximum allowed Military APR. As an example, if the maximum APR has been set to
36% and the Military APR for the returned loan was 37.125%, the MAPR object
would be:
{
"MAPR" : {
"Value" : "37.125",
"Advance" : "1350.00",
"Max" : "36.000",
"MaxExceeded" : true
}
}
🟦 Data.TILARESPA2015
| Type | Required |
|---|---|
| Object | no |
This object contains fields which are of interest to fulfilling the 2015 TILA
RESPA rule. It will only be present if the
Settings.TILARESPA2015 field
in the request is set to true.
Fields:
🔸TotalLoanCost,🔸CD_TotPmts,🔸TIPObjects:
🟥 LoanCosts[],🟥 In5Years,🟥 MaxPnIPmt,🟥 MinRate,🟥 MaxRate,🟥 ProjectedPaymentsTable[]
🔸 Data.TILARESPA2015.TotalLoanCost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The value of this field is the sum of all borrower paid loan costs. Since all
LoanCost values are rounded dollar amounts, the value of this
element will also be a rounded dollar amount.
🔸 Data.TILARESPA2015.CD_TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the sum of the total of payments, all borrower paid loan costs, and any odd days interest that is prepaid at loan closing. This value should be disclosed on the Closing Disclosure form in the Total of Payments field.
🔸 Data.TILARESPA2015.TIP
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The total interest percentage, rounded to three or fewer decimal places - as required.
🟥 Data.TILARESPA2015.LoanCosts[]
| Type | Required |
|---|---|
| Array of LoanCost Objects | yes |
For every object in the Fees[] array present in
the request which has its IsLoanCost
field set to true (and hence, is a borrower paid loan cost) and whose amount
is greater than zero (except odd days interest fee types, as explained in the
previous documentation of the Fee and object),
there will be a corresponding LoanCost object.
Fields:
🔹Name,🔹In5Years,🔸ValueObjects:
None
🔹 Data.TILARESPA2015.LoanCosts[].Name
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔹 Data.TILARESPA2015.LoanCosts[].In5Years
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | Same as Value |
If the entire amount of the fee is different from the amount collected over the first five years (for example, a service charge), then this field will be present and disclose the portion of this loan coast that is accrued during the first five years.
🔸 Data.TILARESPA2015.LoanCosts[].Value
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field is the numerical value of the fee, rounded to the nearest dollar.
🟥 Data.TILARESPA2015.In5Years
| Type | Required |
|---|---|
| Object | yes |
This object contains all important values required for the new "In 5 Years" section of the disclosure.
Fields:
🔸PaidTotal,🔸PaidPrincipalObjects:
None
🔸 Data.TILARESPA2015.In5Years.PaidTotal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds the sum of all "principal, interest, mortgage insurance, and borrower paid loan costs scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🔸 Data.TILARESPA2015.In5Years.PaidPrincipal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds "the principal scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🟥 Data.TILARESPA2015.MaxPnIPmt
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold the maximum sceduled principal and interest payment during the term of the loan, as well as the date on which that payment is made.
Objects:
None
🔸 Data.TILARESPA2015.MaxPnIPmt.Date
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field returns the date on which the maximum scheduled principal and interest payment is made. If the maximum scheduled payment occurs more than once, then the date returned is that of the first instance.
🔸 Data.TILARESPA2015.MaxPnIPmt.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The maximum sceduled principal and interest payment during the term of the loan.
🟥 Data.TILARESPA2015.MinRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the minimum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MinRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the minimum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MinRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the minimum rate is first applicable.
🟥 Data.TILARESPA2015.MaxRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the maximum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MaxRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the maximum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MaxRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the maximum rate is first applicable.
🟥 Data.TILARESPA2015.ProjectedPaymentsTable[]
| Type | Required |
|---|---|
Array of PPCol Objects | yes |
Fields:
🔸Num,🔸Title,🔸YearStart,🔸YearEnd,🔸PnIPmtMin,🔸PnIPmtMax,🔸IntOnly,🔸Balloon,🔸MIPmt,🔸TotalPmtMin,🔸TotalPmtMaxObjects:
None
This field returns an Array of projected payment table columns (PPCol), with
each array member detailing a single column. Per the regulation, there will be a
minimum of one column and a maximum of four columns, depending upon the
parameters of the loan.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Num
| Type | Required | Value |
|---|---|---|
| String | yes | Integer in [1...4] |
The value of this field identifies the number of the column to which the following fields apply. The value will be from 1 to 4.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Title
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
The value of this field is the title for the column. Most of the time, it will
be in the form of Years X - Y, or Year X, or Final Payment in the case of
a final balloon payment.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearStart
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The beginning year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearEnd
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The ending year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The minimum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The maximum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].IntOnly
| Type | Required | Value |
|---|---|---|
| String | yes | none, some, all |
If none of the payments associated with this column are interest only payments,
then the value of this field will be none. A value of some means that some
of the payments (but not all) associated with this columnt are interest only.
Finally, a value of all indicates that all payments associated with this
columnt are interest only.
Note that for the purposes of this field, a scheduled payment is considered an interest only payment if the payment amount pays off all interest due at the time of the payment, with no reduction in the principal balance.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Balloon
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
If any of the payments associated with this column are balloon payments (e.g.
isolated payments that are more than twice the value of a regular periodic
payment), then the value of this field will be true.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].MIPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The value of this field holds the mortgage insurance premium associated with this column, rounded to the nearest dollar. If no mortgage insurance is present or coverage has been dropped, a value of zero will be present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the minimum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the maximum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🟦 Data.Moneys
| Type | Required |
|---|---|
| Object | no |
This element groups together those other major cash result amounts not disclosed
under the FedBox object, such as the principal balance, interest charge,
and fee amounts.
Fields:
🔸Principal,🔸Interest,🔹ConstructInterest,🔹FinFees,🔹Prepaid,🔹PocketFees,🔹MAPRFees,🔹MinIntChgAdj,🔹MinFinChgAdjObjects:
🟦 ODI,🟦 Fees[],🟦 ServiceCharges[],🟦 Protection
🔸 Data.Moneys.Principal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance is the amount on which interest is accrued. The principal balance consists of all advances requested by the borrower, as well as any fees and/or protection products which are financed.
🔸 Data.Moneys.Interest
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This value of this field holds the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.
🔹 Data.Moneys.ConstructInterest
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If the requested loan is a construction loan with a permanent loan attached and the account specified is set up to compute construction loans via the "Simple" method, then this field will contain the construction interest for the requested loan.
Note that if a permanent loan is attached to a construction loan and the
account is set up to use the "LaserPro" method, then the construction
and permanent loans are combined into a single loan, with the construction
(and permanent) loan's interest being reflected in the
Moneys.Interest field, and both loans reflected in a single,
combined amortization schedule.
If the requested loan is a construction loan without a permanent loan
attached, then the construction interest will be disclosed in the
Moneys.Interest field.
If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this field will not appear in the response.
🔹 Data.Moneys.FinFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field contains the sum of all fees having AddToPrin
set to true and occuring on the date of an advance. If this
value is zero, the field will not appear in the response.
🔹 Data.Moneys.Prepaid
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field represents all prepaid finance charges and contains the sum of all
fees occurring on an advance and having AddToFinChg
set to true. If this value is zero, the field will not be found in the response.
🔹 Data.Moneys.PocketFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are neither financed, nor added to the finance charge. In essence, they are paid out of the borrower's pocket. If no out of pocket fees were requested, then this field will not show up in the response.
🔹 Data.Moneys.MAPRFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are Military APR fees (including protection products), and will only appear if the Military APR has been requested.
🔹 Data.Moneys.MinIntChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum interest charge is configured in the account's setup files and the final payment was adjusted to meet this minimum interest charge, then this field will be returned in the response and will contain the value of the minimum interest charge adjustment.
🔹 Data.Moneys.MinFinChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum finance charge is configured in the account's setup files and the final payment was adjusted to meet this minimum finance charge, then this field will be returned in the response and will contain the value of the minimum finance charge adjustment.
🟦 Data.Moneys.ODI
| Type | Required |
|---|---|
| Object | no |
This object, if present, contains information regarding odd days interest. If no odd days interest was requested, then this object will not be present in the response.
Fields:
🔹AddToPmt,🔸Count,🔸Fee,🔹Months,🔹DailyCostObjects:
None
🔹 Data.Moneys.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If the odd days interest has been added to the first payment, then this field
will be present in the response with a value of true. If the odd days interest
has been treated as a prepaid finance charge, then this field will not be
present and a default value of false should be assumed.
🔸 Data.Moneys.ODI.Count
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Discloses the number of odd days computed by the SCE for the requested loan.
🔸 Data.Moneys.ODI.Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total amount odd days interest charge.
🔹 Data.Moneys.ODI.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field holds the number of odd months computed by the SCE for the requested
loan when using odd days accrual method 250. If the odd days accrual method is
a value other than 250, then this field will not be present in the ODI
object of the response.
🔹 Data.Moneys.ODI.DailyCost
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | n/a |
If the odd days interest fee is computed using a rounded daily cost, then the value of this field will hold that value. If the odd days interest is not computed using a rounded daily cost, then this field will not be present in the response.
🟦 Data.Moneys.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
If the requested loan included fees, then for each fee in the loan there will be a Fee object in this array containing the name of the fee and the computed fee amount.
If there were no fees requested with the loan, then the Moneys.Fees[] array
will not be included in the response.
Objects:
None
🔹 Data.Moneys.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.Fees[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed fee amount.
🟦 Data.Moneys.ServiceCharges[]
| Type | Required |
|---|---|
| Array of ServiceCharge Objects | no |
If the requested loan included service charges, then for each service charge in the loan there will be a ServiceCharge object in this array containing the name of the service charge and the computed service charge amount.
If there were no service charges requested with the loan, then the
Moneys.ServiceCharges[] array will not be included in the response.
Objects:
None
🔹 Data.Moneys.ServiceCharges[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the service charge, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.ServiceCharges[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed service charge amount.
🟦 Data.Moneys.Protection
| Type | Required |
|---|---|
| Object | no |
This object returns summary information on all payment protection products computed with the loan. If no protection products were included with the loan, then this object will be omitted from the response.
Fields:
🔸Cost,🔸PerPmt,🔸PerDay,🔸Category,🔹IsDP,🔹MandatoryObjects:
None
🔸 Data.Moneys.Protection.Cost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total cost of all protection plans included with the
computed loan. For the individual plan costs, see the
Protection field described below.
🔸 Data.Moneys.Protection.PerPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per payment.
🔸 Data.Moneys.Protection.PerDay
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per day.
🔸 Data.Moneys.Protection.Category
| Type | Required | Values |
|---|---|---|
| String | yes | None, SP, MOB, TrueMOB, PaidSP |
Te value of this field specifies the category under which the computed loan protection falls. The categories are described below:
| Category | Description |
|---|---|
None | No loan protection products were computed with this loan. |
SP | Financed single premium coverage. |
MOB | Monthly outstanding balance coverage. |
TrueMOB | TruStage's monthly outstanding balance method. |
PaidSP | Non-financed single premium coverage. |
🔹 Data.Moneys.Protection.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field indicates if the specified account's protection is set up as debt
protection. If this field is not present, then the default value of false
should be used (which indicates that the account's protection is set up as
insurance instead).
🔹 Data.Moneys.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field should only appear in the response if the value of the is true.
If this field does not appear in the output, then the value should default to
false.
If the value of the Mandatory field is true, then the total premium / fee
amount for all insurance / debt protection products has been treated as a part
of the Finance Charge, and hence will affect the effective APR.
🟦 Data.Accrual
| Type | Required |
|---|---|
| Object | no |
This object groups together interest accrual information, such as the accrual method(s) used, days to the first payment and the loan's maturity date.
Fields:
🔸Method,🔸Days1Pmt,🔸DayCount,🔸MaturityObjects:
None
🔸 Data.Accrual.Method
| Type | Required | Values |
|---|---|---|
| String | yes | Text |
The Method field contains a textual description of the interest accrual method
used to compute the loan (e.g. "Unit Period 365 Simple".)
🔸 Data.Accrual.Days1Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field contains the number of days between the date of the first
advance and the date of first payment, computed by one of two
methods as specified in by Accrual.DayCount (below).
🔸 Data.Accrual.DayCount
| Type | Required | Values |
|---|---|---|
| String | yes | True360, Actual |
This field specifies the method used to compute the number of days from the date
of the first advance until the first payment date. Actual means that the
actual number of days between these two dates are used, whereas the True360
method use a 360 day calendar.
🔸 Data.Accrual.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
Holds the maturity date of the loan, which is the date on which the last
payment is scheduled. All dates are in the form of YYYY-MM-DD, and must
be 10 characters long.
🟦 Data.PmtStreams[]
| Type | Required |
|---|---|
| Object | no |
The PmtStreams[] array is made up of one or more PmtStream objects (there
will always be at least one of these elements, and there may be more than one
depending upon the loan type). The PmtStream objects describe the scheduled
stream of payments for the computed loan. Instead of disclosing each and every
payment individually (which can be done with the AmTable object),
the payment stream groups together consecutive equal payments at the same
interest rate to produce output along the lines of:
{
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "50.13",
"Rate" : "4.500",
"Begin" : "2022-10-01"
},
{
"Term" : "10",
"Pmt" : "37.59",
"Rate" : "4.500",
"Begin" : "2022-11-01"
},
{
"Term" : "1",
"Pmt" : "10062.59",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
]
}
Each object describes a single stream of equal payments at the same interest rate, using the following fields to define the important properties of each payment stream.
Fields:
🔸Term,🔸Pmt,🔸Rate,🔸BeginObjects:
Note
🔸 Data.PmtStreams[].Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The Term field holds the number of payments that make up the given payment
stream.
🔸 Data.PmtStreams[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The Pmt field holds the computed payment amount for this payment stream.
🔹 Data.PmtStreams[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number |
Contains the interest rate used for the duration of this payment stream. If this payment stream accrued interest using split-rate tiers, then this field will not be returned.
🔸 Data.PmtStreams[].Begin
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field identifies the date on which the first payment for this given payment
stream is scheduled to be made. All dates are in the form of YYYY-MM-DD, and
must be 10 characters long.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
If protection products are requested, then this object will be present in the response, along with a field for each requested protection product.
Fields :
NoneObjects:
🟦 Life,🟦 Level,🟦 Disability
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
If life protection was requested with the loan and decreasing life was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing life coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Life.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Life.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Life.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Life.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Life.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Life.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Life.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Life.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Life.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary life product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Life.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Life.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Life.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Life.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this object
will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Life.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Life.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Life.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps field
of the Protection request object is set to
true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Life.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Level
| Type | Required |
|---|---|
| Object | no |
If level protection was requested with the loan and decreasing level was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing level coverage.
Objects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Level.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Level.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🟦 Data.Protection.Level.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Level.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Level.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Level.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Level.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Level.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary Level product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Level.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Level.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Level.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Level.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Level.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Level.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Level.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Level.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
If disability protection was requested with the loan and decreasing disability was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing disability coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Disability.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Disability.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Disability.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Disability.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Disability.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Disability.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Disability.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Disability.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Disability.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Disability.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Disability.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Disability.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Disability.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Disability.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Disability.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Disability.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Borrower2
| Type | Required |
|---|---|
| Object | no |
The borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps
field of the Protection request object is set
to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Disability.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.AmTable
| Type | Required |
|---|---|
| Object | no |
This object contains fields which summarize and describe the loan's amortization
schedule. If
Settings.ShowAmTable is set to
false, then this object will not be found in the response.
Fields:
🔹Months,🔹Weeks,🔹OddDaysObjects:
🟦 GrandTotals,🟦 SubTotals[],🟥 AmLines[]
🔹 Data.AmTable.AvgBal
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the average balance of the loan used in the Canadian APR calculation.
🔹 Data.AmTable.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of months in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.Weeks
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of weeks in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.OddDays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the number of odd days in the term of the loan used in the Canadian APR calculation. Odd days are computed by moving backwards from the maturity date the number of disclosed months or weeks, and then counting the additional number of days required to land on the loan date.
🟦 Data.AmTable.GrandTotals
| Type | Required |
|---|---|
| Object | no |
This object describes the total amounts of various categories throughout the life of the loan. As an example, the total amount paid to interest and principal, as well as the total of payments are all contained in fields of this object.
Fields:
🔸PmtTot,🔸IntTot,🔸PrinTot,🔹CLTot,🔹AHTotObjects:
None
🔸 Data.AmTable.GrandTotals.PmtTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total of payments scheduled for the computed loan.
🔸 Data.AmTable.GrandTotals.IntTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total amount paid to interest over the life of the loan, assuming all payments are made as scheduled.
🔸 Data.AmTable.GrandTotals.PrinTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.
🔹 Data.AmTable.GrandTotals.CLTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLTot field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life over the duration of the loan.
🔹 Data.AmTable.GrandTotals.AHTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHTot field will only appear on loans with certain types of disability or
debt protection products, such as those based on a monthly outstanding balance.
It contains the total amount paid for this protection over the duration of the
loan.
🟦 Data.AmTable.SubTotals[]
| Type | Required |
|---|---|
| Array of SubTotal Objects | no |
Describes the total amounts of various categories paid during a given calendar year.
For each year in which the computed loan has scheduled payments, there will be
a SubTotal object in the array.
Fields:
🔸Year,🔸Start,🔸Events,🔸PmtSub,🔸IntSub,🔸PrinSub,🔹CLSub,🔹AHSubObjects:
None
🔸 Data.AmTable.SubTotals[].Year
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The calendar year for which the subtotal data is applicable.
🔸 Data.AmTable.SubTotals[].Start
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the first amortization event which falls in the specified
calendar year. To find the AmLines[] object which corresponds to
this value, match the Idx field of the AmLine
object.
🔸 Data.AmTable.SubTotals[].Events
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the number of amortization events which belong to this calendar year.
🔸 Data.AmTable.SubTotals[].PmtSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total of payments scheduled for the calendar year.
🔸 Data.AmTable.SubTotals[].IntSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Holds the total amount paid to interest over the calendar year, assuming all payments are made as scheduled.
🔸 Data.AmTable.SubTotals[].PrinSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total amount paid to principal during the calendar year, assuming all payments are made as scheduled.
🔹 Data.AmTable.SubTotals[].CLSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLSub field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life during the year.
🔹 Data.AmTable.SubTotals[].AHSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHSub field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection during the year.
🟥 Data.AmTable.AmLines[]
| Type | Required |
|---|---|
| Array of AmLine Objects | yes |
There is one AmLine object for each amortization event which occurs during
the life of a loan. Most of the time, each event will describe a payment, and
detail how that payment is applied (to interest, principal, loan protection
products, etc.). Some events, such as capitalizing interest, will not have
payments but will show how the loan amortizes.
Fields:
🔸Idx,🔸Date,🔸BegBal,🔸Pmt,🔸Int,🔸Prin,🔹CL,🔹AH,🔹UnpaidInt,🔸EndBalObjects:
None
🔸 Data.AmTable.AmLines[].Idx
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The index of the amortization event, which is either the payment number, or zero. A value of zero designates an event that is either not a payment or is a skipped payment.
🔸 Data.AmTable.AmLines[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the amortization event is scheduled to occur. All dates are in
the form of YYYY-MM-DD, and must be 10 characters long.
🔸 AmData.AmTable.AmLines[]ine.BegBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance before the amortization event occurs.
🔸 Data.AmTable.AmLines[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The payment amount for this event.
🔸 Data.AmTable.AmLines[].Int
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of interest paid at this event.
🔸 Data.AmTable.AmLines[].Prin
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of principal paid at this event.
🔹 Data.AmTable.AmLines[].CL
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CL field will only appear on loans with certain types of life protection
products, such as those based on a monthly outstanding balance. It contains the
amount of the payment which is marked for life coverage.
🔹 Data.AmTable.AmLines[].AH
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AH field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for disability /
debt protection coverage.
🔹 Data.AmTable.AmLines[].UnpaidInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear on an amortization line when interest has been accrued, but has not yet been paid or added to the principal balance. If the interest accrued has not yet been rounded, then the unpaid interest will be displayed to four (4) decimal placed. If rounded, then the unpaid interest is displayed to two (2) decimal places.
🔸 Data.AmTable.AmLines[].EndBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The principal balance amount, after the amortization event has taken place.
Adjustable Rate Mortgages (ARMs)
An adjustable rate mortgage is a loan whose interest rate varies during the repayment term. These types of loans are most often found in the real estate market, hence their name. In this chapter, we will refer to adjustable rate mortgages as ARMs.
Sample Request
The following example is a request for an ARM loan with proceeds of $10,000,
interest will accrue at a teaser rate of 4.0% for a term of 12 months, after
which the rate will adjust annually to the index + margin of 8.0%, with a
maximum annual rate increase of 2.0%. The interest accrual method requested is
unit period / 365 U. S. Rule accrual method (accrual code 302).
{
"Module" : "Arm",
"Data" : {
"CalcType" : "Payments",
"LoanDate" : "2022-11-15",
"PmtDate" : "2023-01-01",
"Proceeds" : "10000.00",
"Term" : "120",
"PPY" : "monthly",
"TeaserTerm" : "12",
"TeaserRate" : "4.000",
"Index" : "6.00",
"Margin" : "2.00",
"TermStep" : "12",
"AnnualRateIncrease" : "2.00",
"Settings" : {
"AccrualCode" : "302"
}
}
}
Sample Response
The following example is the response returned from the SCE for the request provided at the beginning of the previous section.
{
"Result" : 200,
"Module" : "Arm",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Results" : {
"Number of Groups" : "3"
},
"FedBox" : {
"AmtFin" : "10000.00",
"FinChg" : "3930.08",
"TotPmts" : "13930.08",
"APR" : {
"Value" : "6.778",
"Type" : "Actuarial"
}
},
"Moneys" : {
"Principal" : "10000.00",
"Interest" : "3930.08"
},
"Accrual" : {
"Method" : "Unit Period 365 US Rule",
"Days1Pmt" : "47",
"DayCount" : "Actual",
"Maturity" : "2032-12-01"
},
"PmtStreams" : [
{
"Term" : "12",
"Pmt" : "101.43",
"Rate" : "4.000",
"Begin" : "2023-01-01"
},
{
"Term" : "12",
"Pmt" : "110.29",
"Rate" : "6.000",
"Begin" : "2024-01-01"
},
{
"Term" : "96",
"Pmt" : "118.64",
"Rate" : "8.000",
"Begin" : "2025-01-01"
}
],
"AmTable" : {
"GrandTotals" : {
"PmtTot" : "13930.08",
"IntTot" : "3930.68",
"PrinTot" : "9999.40"
},
"SubTotals" : [
{
"Year" : "2023",
"Start" : "1",
"Events" : "12",
"PmtSub" : "1217.16",
"IntSub" : "403.71",
"PrinSub" : "813.45"
},
...,
{
"Year" : "2032",
"Start" : "109",
"Events" : "12",
"PmtSub" : "1423.68",
"IntSub" : "59.89",
"PrinSub" : "1363.79"
}
],
"AmLines" : [
{
"Idx" : "1",
"Date" : "2023-01-01",
"BegBal" : "10000.00",
"Pmt" : "101.43",
"Int" : "51.51",
"Prin" : "49.92",
"EndBal" : "9950.08"
},
{
"Idx" : "2",
"Date" : "2023-02-01",
"BegBal" : "9950.08",
"Pmt" : "101.43",
"Int" : "33.17",
"Prin" : "68.26",
"EndBal" : "9881.82"
},
...,
{
"Idx" : "120",
"Date" : "2032-12-01",
"BegBal" : "118.45",
"Pmt" : "118.64",
"Int" : "0.79",
"Prin" : "117.85",
"EndBal" : "0.60"
}
]
}
}
}
ARM Loan Module - Request
The fields of the Data object supported by a Arm module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹AdjFirstInc,🔹AmortTerm,🔸AnnualRateIncrease,🔹BlendedIntOnly,🔹CalcType,🔹Country,🔹ExemptPostTeaserMax,🔹ExemptTeaserMax,🔹ExemptPostTeaserMin,🔹ExemptTeaserMin,🔹FirstRateIncrease,🔹ForceTeaserSegment,🔸Index,🔹InterestPmtRate,🔹InterestPmts,🔹IntStartDate,🔸LoanDate,🔹Margin,🔹MaxRate,🔹MaxRateIncrease,🔹MinRate,🔸PmtDate,🔹PPY,🔸Proceeds,🔹Round,🔹RoundRate,🔹StairStepDown,🔸TeaserRate,🔸TeaserTerm,🔸Term,🔸TermStep,🔹TotalDown,🔹UseMarginAsMinObjects:
🟦 Apr,🟦 Construction,🟦 Fees[],🟦 Format,🟦 MI,🟦 ODI,🟦 Protection,🟦 Settings
The fields of the Data object supported by an Equal Pmt module request are
defined in alphabetical order below:
🔹 Data.AdjFirstInc
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is false, then the first rate increase following
the teaser term is equal to annual rate increase. If true, then the first rate
increase following the teaser term is equal to periodic rate increase (see
TermStep).
🔹 Data.AmortTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= Term | 0 |
The value of the AmortTerm field contains the desired amortization term
(specified as the number of payments) to be used to compute the regular payment.
The amortization term must be greater than the balloon loan term (e.g.
Term), or else the balloon loan will not be able to be computed.
🔸 Data.AnnualRateIncrease
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
Just how much the interest rate increases when a rate increase is due depends
upon this field, in conjunction with the TermStep field. In
our example, the annual rate increase is specified as 2%, with rate adjustments
every twelve monthly payments. Thus, each rate adjustment will see the interest
rate increase by 2%.
🔹 Data.BlendedIntOnly
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Blended interest only payments do not consider the initial stream of interest
payments to be outside the scheme of rate increases. For example, if the value
of this field is set to true with InterestPmts set to
12 and TeaserTerm set to 48, the payment stream resulting
will be 12 interest only payments followed by 36 principal and interest payments
(and the rest of the tiered P&I payments). If set to false, then the payment
stream would be 12 interest only payments (accrued at a rate determined by the
InterestPmtRate field) followed by 48 P&I payments.
If the value of this field is set to true, then the
InterestPmtRate field is ignored. Please note that
blended interest only payments are not allowed with ARM loans computed using a
CalcType of Balloon.
🔹 Data.CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Payments, Balloon | Payments |
This field specifies how the payment stream is adjusted for rate changes
during the term of the loan. If this field holds a value of Payments,
then the disclosed payment will change with each rate change. A value of
Balloon indicates that the payment computed for the teaser term will be
used for all but the last payment, with the final payment equal to the amount
needed to pay off the loan.
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
This field allows the calling application to specify a two (2) character or
three (3) digit country code. If none is provided, then a default value of US
will be used. Please see the Countries Appendix for
the list of supported countries and their associated codes.
Specifying the Country will also set the default value for the
APR.Method and
Format.CurrencyDecimals fields, as appropriate for
the country specified.
🔹 Data.ExemptPostTeaserMax
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field determines whether or not the post teaser rate (if one has been
specified) is excluded from the maximum rate constraint (see
MaxRate). If the value of this field is set to true, then
the post teaser rate may be greater than the specified maximum rate. If the
value of this field is set to false, then the rate during the post teaser term
can not be greater than the specified maximum rate.
🔹 Data.ExemptTeaserMax
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
This field determines whether or not the teaser rate is excluded from the
maximum rate constraint (see MaxRate). If the value of this
field is set to true, then the teaser rate may be greater than the specified
maximum rate. If the value of this field is set to false, then rate during the
teaser term can not be greater than the specified maximum rate.
🔹 Data.ExemptPostTeaserMin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field determines whether or not the post teaser rate (if one has been
specified) is excluded from the minimum rate constraint (see
MinRate). If the value of this field is set to true, then
the post teaser rate may be less than the specified minimum rate. If the value
of this field is set to false, then the rate during the post teaser term can
not be less than the specified minimum rate.
🔹 Data.ExemptTeaserMin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field determines whether or not the teaser rate is excluded from the
minimum rate constraint (see MinRate). If the value of this
field is set to true, then the teaser rate may be less than the specified
minimum rate. If the value of this field is set to false, then the rate during
the teaser term can not be less than the specified minimum rate.
🔹 Data.FirstRateIncrease
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 0 |
If the value contained in this field is greater than zero and less than or equal
to ten, then the first rate adjustment (which occurs at the conclusion of the
teaser term) for the first TermStep number of payments will
be in this amount. After that, the rate will adjust as described in
AnnualRateIncrease. Note that this adjustment is
always from the teaser rate towards the sum of the specified index and margin.
Thus, if the sum of the index and margin is greater than the teaser rate, then
the teaser rate will increase by the specified value. Similarly, if the sum of
the index and margin is less than the teaser rate (and if rates are allowed to
stair step down [see the StairStepDown field]), then
the rate will decrease by the specified value.
Note that the calling application may specify either the FirstRateIncrease
or the PostTeaserRate (see below), but not both.
🔹 Data.ForceTeaserSegment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the ARM loan has a constant rate over the term of the loan, should the teaser term portion of the loan be disclosed as a separate payment stream?
🔸 Data.Index
| Type | Required | Values |
|---|---|---|
| String | no | Number in [-99.999...600] |
This field holds the current value of the rate index at loan closing. When added
together with the value of the Margin field, it produces the
interest rate for the loan.
🔹 Data.InterestPmtRate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 0 |
If this loan has interest only payments preceding the ARM loan (i.e. the value
contained in the InterestPmts field is greater than
zero), then this field determines the interest rate charged during the interest
only payment stream if the BlendedIntOnly field is
false.
If no interest only payments precede the irregular loan, or if the interest only
payments are blended (e.g BlendedIntOnly is set to
true), then this element need not be specified and will be ignored if present.
🔹 Data.InterestPmts
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer | 0 |
If present, this field determines the number of interest only payments made at the start of the ARM loan. After the specified number of interest only payments are made, then the loan continues with P&I payments.
🔹 Data.IntStartDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | same value as LoanDate |
This field contains the date on which interest begins to accrue on the loan's principal balance. If this field is not specified, then the interest start date is set equal the loan date. Also note that the interest start date must be equal to the loan date when computing a construction loan.
The interest start date (when specified) must be on or after the loan date, as well as on or before the first payment date.
🔸 Data.LoanDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field holds the date on which the loan amount is disbursed and interest
begins to accrue. All dates must be in the form of YYYY-MM-DD, and be 10
characters long.
🔹 Data.Margin
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 0 |
As noted in the documentation for the Index field, the Margin
is closely tied with the Index, and represents the difference
between the interest rate and index rate. The lender determines the margin at
the time of loan closing, and it remains fixed for the duration of the loan.
🔹 Data.MaxRate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number in [-99.999...600] | 0 |
This is another optional field which allows the calling application to specify an absolute interest rate maximum during the term of the ARM. If the interest rate ever exceeds this rate maximum, then it will be capped at this value. If left unspecified (or zero), then no absolute rate maximum will be enforced.
Note that there are three different ways to specify interest rate maximums: (i)
Index + Margin, (ii)
TeaserRate + MaxRateIncrease,
and (iii) MaxRate.
🔹 Data.MaxRateIncrease
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number in [-99.999...600] | 0 |
This optional field allows the calling application to specify a maximum value that the interest rate may increase from the specified teaser rate, during the term of the loan. If an interest rate adjustment would exceed the maximum rate increase, then the interest rate will be capped at a value equal to the teaser rate plus the maximum rate increase. If left unspecified (or zero), then no maximum rate increase will be enforced.
🔹 Data.MinRate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number in [-99.999...600] | 0 |
The contents of this optional field allow you to specify a minimum interest rate for the ARM. Should the interest rate ever dip below this value, then the minimum rate specified will be used instead. If left unspecified (or zero), then no rate minimum will be enforced.
🔸 Data.PmtDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field specifies the first (and for single payment notes, only) payment date
in the loan's repayment schedule. All dates must be in the form of YYYY-MM-DD,
and be 10 characters long.
🔹 Data.PostTeaserRate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 0 |
Instead of specifying a first rate adjustment using the
FirstRateIncrease field above, the calling
application can instead specify an interest rate that applies following the
teaser term. This will allow for loans with a teaser rate, followed by a post
teaser rate less than the teaser rate, which will then adjust to the sum of the
index and margin greater than the teaser rate.
Note that the calling application may either specify the FirstRateIncrease
(see above) or the PostTeaserRate, but not both.
🔹 Data.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for payments per year, and determines the payment
frequency for the requested loan. The default value of 12 will result in a
loan with 12 payments per year. If you require a loan with a payment frequency
other than monthly, specify it using this field.
🔸 Data.Proceeds
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The proceeds specified indicate the amount of money the borrower is requesting, and does not include financed fees, financed insurances, etc.
🔹 Data.Round
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | up, down, nearest | nearest |
If a value is specified for the RoundRate field (see
below), then the value of this field determines how the rounding will be
performed.
🔹 Data.RoundRate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number | 0 |
If the value of this field is greater than zero, then the sum of the specified
index and margin (i.e. the sum of the unrounded values specified in the
response) will be rounded according to this value and the Round
field defined above.
As an example, if the sum of the specified index and margin is 5.01 and the
value of this element is 0.125 (1/8th of a percent), then the computed index +
margin will be rounded to either 5.0 or 5.125 depending upon the value of the
Round field specified.
If no value is specified for this element, then no rounding of the index plus margin (nor any other rates) will occur.
🔹 Data.StairStepDown
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false, default | default |
If the final rate is less than the teaser rate, a value of false will keep the
rate at the teaser rate for the duration of the loan. If your institution allows
the rate to decrease below the teaser rate over the term of the loan, then set
the value of this field to true. A default value instructs the SCE to use
the value stored in the setup file.
🔸 Data.TeaserRate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The teaser rate is the interest rate initially applied to the loan during the
TeaserTerm. These rates are in effect for a given number
of payments (see TeaserTerm below), after which regular
rate adjustments will take place during the life of the loan. In our sample
above, the teaser rate is set to 4%.
🔸 Data.TeaserTerm
| Type | Required | Values |
|---|---|---|
| String | yes | Integer |
This field specifies the number of payments that the
TeaserRate (see above) is in effect. No interest rate
increase will take place during the teaser term. In our sample above, the teaser
rate of 4% is applicable for the first twelve months of the loan. After the
twelfth payment, the rates will be adjusted as dictated to the
Index + Margin.
🔸 Data.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer > 1 |
The Term field indicates the the number of payments to be made at the
specified payment frequency (see the PPY field above), after
which the loan is scheduled to be paid off.
🔸 Data.TermStep
| Type | Required | Values |
|---|---|---|
| String | yes | Integer |
This field specifies the number of payments between interest rate increases after the teaser term has passed. In our sample above, the teaser term is 12 months, with a term step of 12 months. This means that the first 12 months will use the teaser rate as the interest rate. Then, the next twelve months will use an increased rate, with the next twelve months increasing the rate again, etc.
If the value of this field is greater than the number of payments per year, then any value is valid, and the rate increase per step is equal to the annual rate increase.
If the value of this field is less than or equal to the number of payments per
year, then the value of the TermStep field must evenly divide the number of
payments per year. In this case, the rate increase per step is equal to the
annual rate increase multiplied by the term step divided by the number of
payments per year.
🔹 Data.TotalDown
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
This optional field represents the total down payment that the borrower has applied to reduce the requested proceeds. It may consist of a cash down payment, net trade-in value, or rebate. You only need to specify a total down payment if the loan needs to disclose a total sale price. Typical examples of these loan types are auto and boat loans.
🔹 Data.UseMarginAsMin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the MinRate field is not present in the request and the value of this field
is true, then the value of the Margin field will be treated as the specified
minimum rate for all purposes, including the TILA RESPA 2015 disclosures.
🟦 Data.Apr
| Type | Required |
|---|---|
| Object | no |
Settings related to the computed effective rate returned by the SCE (most commonly, the Regulation Z APR in the United States of America) are contained in the fields of this object.
Fields:
🔹MAPR_Max,🔹Method,🔹UseMAPRObjects:
None
🔹 Data.Apr.MAPR_Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 36.0 |
If you are computing the Military APR (see UseMAPR below) and
wish to override the default maximum APR value of 36%, then specify the desired
maximum as the value of this field.
🔹 Data.Apr.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, actuarial, eu, ca, xirr, xirr360, irr | default |
This field allows the calling application to specify an APR calculation
method which will override the default value found in the setup file for the given
Account. If this field is set to a valid value, then the
specified method will be used to compute the APR for this loan calculation.
If the Country field has been set by the calling application and
this field is not set, then the APR method used will be determined by the
specified country. For the United States of America, the default APR method is
actuarial. For a country in the European Union, the default value is
eu (European Union APR). For Canada, the default APR method is
ca (Canadian APR).
The xirr value implements the internal rate of return method as
implemented in Microsoft\textregistered Excel via the XIRR() function,
and is based on an actual day calendar with a 365 day divisor.
The xirr360 value implements the internal rate of return method based
upon a unit period calendar with a 360 day divisor.
The irr value implements a common spreadsheet internal rate of return
method which assumes strict regular periods. Deviating from a strict regular
periodicity may produce unreliable results.
If this field is not specified and the Country field is not
specified, then the value of default will be used which informs the
SCE to use the APR method defined in the setup file for the specified
Account.
🔹 Data.Apr.UseMAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to a value of true, then the SCE will compute the
Military APR in addition to the Regulation Z APR. The
MAPR object will be included in the loan response.
🟦 Data.Construction
| Type | Required |
|---|---|
| Object | no |
The Construction object determines if this loan is a construction to permanent
loan request. If you wish to compute a construction loan without an attached
permanent loan, you will need to use either the
Construction or Loan modules.
Fields:
🔹HalfCommitment,🔹PPY,🔸Rate,🔸TermObjects:
None
🔹 Data.Construction.HalfCommitment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
During the term of the construction loan, the estimated interest for disclosure
purposes may be either computed on the full or half commitment amounts. By
setting this field to true, interest will be estimated using half of the
initial commitment amount (i.e. the principal balance). The default value of
false will cause interest to be estimated using the entire initial commitment
amount.
🔹 Data.Construction.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
The PPY field allows the calling application to specify the payment frequency
during the construction period. The default value of 12 will result in a
construction loan with 12 payments per year. If you require a payment frequency
during the construction period other than monthly, then specify it using this
field. Note that the permanent loan's payment frequency may differ from the
construction period's payment frequency.
🔸 Data.Construction.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
This field determines the rate applied to the appropriate commitment amount during the term of the construction loan.
🔸 Data.Construction.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer > 0 |
The term of the construction loan (in payments) is specified using this field. Please note that the term may not exceed five years.
🟦 Data.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
This array of Fee objects allows the calling application to specify one ore
more Fee objects to be included with the loan.
Fields:
🔹AddToFinChg,🔹AddToPrin,🔹Adjust,🔹CalcType,🔹Entry,🔹IsLoanCost,🔹MAPR,🔹Max,🔹Min,🔹NameObjects:
None
🔹 Data.Fees[].AddToFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this fee should be included in the computed Finance Charge (and hence, affect
the APR), then set this field to true. The default value of false indicates
that the fee does not affect the Finance Charge nor APR.
🔹 Data.Fees[].AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If this fee should be added to the principal balance (e.g. the fee is financed
along with the advance(s)), then set this field to true. If set to false,
then the fee is paid up front out of the borrower's pocket.
🔹 Data.Fees[].Adjust
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | 0 |
The optional Adjust field allows the calling application
to increase or decrease the base amount on which a fee is calculated.
If a negative value is specified and this adjustment would produce a
negative base amount, then a value of zero is returned for the given fee.
This field has no effect on fees with a CalcType of Dollar.
As an example, in Tennessee you may need to define a financed, non-APR affecting fee to be computed by decreasing the amount financed by $2,000, and then multiplying this reduced amount by 0.115. The way to accomplish this in the SCE is as follows:
{
"Fees" : [
{
"Name" : "TN Fee",
"CalcType" : "OnAmtFin",
"Adjust" : "-2000.00",
"Entry" : "0.115",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
🔹 Data.Fees[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Dollar, OnProceeds, OnPrincipal, OnAmtFin | Dollar |
This field specifies how the fee is to be computed, as described in the following table.
| Fee Calc Type | Description |
|---|---|
Dollar | The Entry field is understood as a flat dollar amount. |
OnProceeds | The Entry field is understood as a percentage value, to be applied to the loan's proceeds, defined as the sum of advances. An Entry of 0.25 would represent a fee of 0.25% of the total proceeds. |
OnPrincipal | The Entry field is understood as a percentage value, to be applied to the loan's principal balance. An Entry of 0.125 would represent a fee of 0.125% of the principal balance. |
OnAmtFin | The Entry field is understood as a percentage value, to be applied to the loan's Regulation Z Amount Financed. An Entry of 0.33 would represent a fee of 0.33% of the amount financed. |
🔹 Data.Fees[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
How this field is interpreted depends upon the Fee.CalcType field.
Please see the documentation for this field for further information.
🔹 Data.Fees[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which fees need to be considered "borrower paid loan costs",
as defined in the rule. Please note that if the fee is paid by a lender or other
third party, then the fee does not affect the loan calculation and should not be
sent to the SCE. If it is sent, then the value of this field should be set
to false.
🔹 Data.Fees[].MAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If you wish to compute the Military APR, then certain fees may not be considered Regulation Z APR affecting fees, but are considered Military APR affecting fees. In this case, you will need to set the value of this field to true.
Fees which are added to the finance charge (e.g. "AddToFinChg"
: true) are always considered MAPR fees, regardless of the stated value of this
field.
Note that debt protection products are automatically included in the calculation of the Military APR, no matter what method is used for payment (e.g. single premium vs. monthly outstanding balance).
🔹 Data.Fees[].Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then the maximum value will be used instead. If no maximum value is specified or is set to a value of zero, then no maximum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified maximum value is checked after enforcing a specified minimum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Min
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a minimum value for the fee is specified and is greater than zero, then if the computed fee is less than this minimum value, then the minimum value will be used instead. If no minimum value is specified or is set to a value of zero, then no minimum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified minimum value is checked before enforcing a specified maximum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the fee in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value will be determined by the value of the
Country field. For most countries, the default value is
2. If no country code is specified, then the default value for this field is
2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
🟦 Data.MI
| Type | Required |
|---|---|
| Object | no |
The MI object determines if this loan includes one of the supported types of
mortgage insurance (MI): PMI or FHA. This object contains fields which further
specify mortgage insurance options.
Fields:
🔹CashDown🔹LoanAmt,🔸PropertyValue,🔹TypeObjects:
🟦 Periodic,🟥 Rates[],🟦 UpFront
🔹 Data.MI.CashDown
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The CashDown field represents a cash down payment made at closing. If
specified and greater than zero, this amount will be deducted from the principal
balance. If not specified, the cash down payment will default to zero.
🔹 Data.MI.LoanAmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field represents the amount by which the PMI rates are multiplied to produce a level PMI premium. If not specified, then the principal balance will be used to compute the annual premium.
🔸 Data.MI.PropertyValue
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
This field's value represents the appraised property value, and will be used in the calculation of the loan to value ratio.
🔹 Data.MI.Type
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | fha, pmi | pmi |
This field determines the type of mortgage insurance to include with the loan.
If the value of this field is set to fha, then a different MI premium is
computed every twelve months based upon the average outstanding principal
balance during that same term. The MI calculation adheres strictly to the HUD
regulation.
If the value of this field is set to pmi, then each defined MI rate produces a
level MI premium based upon the inital loan amount.
🟦 Data.MI.Periodic
| Type | Required |
|---|---|
| Object | no |
The fields of this object determine the conditions when MI is no longer included.
Fields:
🔹DropLTV,🔹Term,🔹WarnLTVObjects:
None
🔹 Data.MI.Periodic.DropLTV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
The value of this field determines the loan to value ratio at which MI should be
removed, and is expressed as a percentage. For example, if you wish to
automatically drop MI when the loan to value ratio first equals or falls below
78%, then you would specify "DropLTV" : "78.0".
🔹 Data.MI.Periodic.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
The value of this field represents the the term (in payments) beyond which MI will be removed.
As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify
{
"MI" : {
"Periodic" : { "Term" : "180"}
}
}
🔹 Data.MI.Periodic.WarnLTV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
The value of this field determines the loan to value ratio at which a warning
should be issued, and is expressed as a percentage of LTV (loan to value). For
example,if you wish to know when the loan to value ratio first equals or falls
below 80%, then you would specify "WarnLTV" : "80.0".
🟥 Data.MI.Rates[]
| Type | Required |
|---|---|
| Array of Rate Objects | yes |
This array if Rate objects defines the rates used to compute MI on the loan.
There must be at least one Rate object in the Rates[] array, and there can
be more than one if rates are set to switch at a specified payment number.
Objects:
None
🔸 Data.MI.Rates[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number>= 0.0 |
The value of this field specifies the cost of mortgage insurance per $100 of the loan amount. As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as
{
"MI" : {
"Rates" : [
{ "Rate" : "1.50"}
]
}
}
🔹 Data.MI.Rates[].Switch
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
This optional field defines the payment number beyond which the associated MI rate will apply. If not specified, the value will default to zero.
Thus, if there is only a single MI rate, one may omit this field (see example above).
Example of a MI multiple rate structure (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):
{
"MI" : {
"Rates" : [
{ "Rate" : "1.50"},
{ "Rate" : "0.20" , "Switch" : "120"}
]
}
}
🟦 Data.MI.UpFront
| Type | Required |
|---|---|
| Object | no |
This object determines if there is an up front fee for mortgage insurance, and if so, how it is computer. If this object is not present in the request, then no up front fee will be computed. Note that ZOMP (zero option monthly premium) products do not have an up front fee, which means that this object should be omitted.
Fields:
🔹Paid,🔹Reduce,🔹Units,🔹ValueObjects:
None
🔹 Data.MI.UpFront.Paid
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | atclosing, bylender, financed | atclosing |
If the value of this field is set to financed, then the computed up front fee
will be added to the principal balance and the finance charge. A value of
atclosing will cause the value of the fee to be added to the finance charge
alone. Finally, a value of bylender means that the up front fee is to be paid
by the lender, hence the value of the fee is not added to either the principal
balance nor the finance charge.
🔹 Data.MI.UpFront.Reduce
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the specified number of periodic premiums to include as an up front fee is greater than zero, then this field determines if the term of coverage for PMI will be reduced by the same amount.
🔹 Data.MI.UpFront.Units
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | months, points, years | months |
If the Units field is set to months, then
UpFront.Value represents the number of periodic MI
premiums to be paid at closing.
If the Units field is set to Years, then
UpFront.Value represents the number of annual MI premiums
to be paid at closing. Many single premium products define the up front fee as a
number of years of MI to be paid up front.
Finally, if the Units field is set to Points, then
UpFront.Value represents the percentage of principal to
be paid up front. As of October 3, 2011, FHA loans use points.
🔹 Data.MI.UpFront.Value
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If part of the MI fees are to be paid up front, then value of this field must be
grater than zero. How the value of this field is interpreted depends upon the
Units field (see below).
The default value of zero means that no up front fee will be computed.
🟦 Data.ODI
| Type | Required |
|---|---|
| Object | no |
If odd days should be treated as a prepaid finance charge or added to the first payment in a manner different from how interest is accruing, then the request needs to define how odd days interest is computed and handled using the fields of this object.
Fields:
🔹AccrualCode,🔹AddToPmt,🔹AddToPrin,🔹AnchorDate,🔹ForceUnitPeriod,🔹NoCap,🔹UseDailyCost,🔹UseNegODIObjects:
None
🔹 Data.ODI.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 204, 205, 210, 211, 220, 221, 230, 231, 250 | default |
The accrual code defines how the odd days interest is computed. The meaning of the allowed accrual codes is defined below.
Note that accrual code 250 ("Variable Days Per Year") defines the basis
divisor days to be equal to 12 multiplied by the number of days in the month of
the date on which interest begins to accrue. Thus, if the interest start date
falls in November, then the number of basis days is 360. If the interest start
date falls in a month with 31 days, then the number of basis days is 372. For an
interest start date in February, the number of basis days will either be 336 or
348, depending upon whether or not it is a leap year.
| Accrual Code | Description |
|---|---|
204 | True360/360 |
205 | True360/365 |
210 | Actual/360 |
211 | True365/360 |
220 | Actual/365 |
221 | True365/365 |
230 | Actual/Actual |
231 | Midnight 366 |
250 | Actual/Variable Days Per Year |
🔹 Data.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application wants the odd days interest to be added to the first
payment, then set the value of this field to true. A value of false
indicates that the odd days interest will be treated as a prepaid finance
charge.
🔹 Data.ODI.AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If any odd days interest should be treated as a financed prepaid fee, then set
the value of this field to true. Note that if both AddToPmt and AddToPrin
are set to true, then a warning message will be returned by the SCE and the
value of AddToPrin will be set to false.
🔹 Data.ODI.AnchorDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | BackUnitPeriod, BackDaysPerPeriod | BackUnitPeriod |
The computed number of odd days is the number of days between the loan date and
the anchor date. This field determines how to arrive at the anchor date. A value
of BackUnitPeriod means that the anchor date is one unit period prior to the
specified first payment date. A value of BackDaysPerPeriod means that the
anchor date is the number of days per period prior to the first payment date.
Please note that for both of these methods, the period used will be that
associated with the payment stream in which the first payment occurs.
🔹 Data.ODI.ForceUnitPeriod
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Some unit period methods will not use a strict unit period interest accrual
factor in the period to the first payment. For example, code 302 will count
the days to the first payment and divide by 365. For a monthly loan, setting
this field to true will use a 1/12 factor instead of Days/365.
🔹 Data.ODI.NoCap
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When the odd days interest is financed, setting this field to true prevents
interest from being computed on interest. The default is false, which means
interest will be computed on interest.
🔹 Data.ODI.UseDailyCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the total odd days prepaid fee is computed by first generating a rounded (to
the nearest penny) daily cost and then multiplying this value by the computed
number of odd days, then set the value of this property to true.
A value of false means that the daily cost is left unrounded, and the total
prepaid fee is rounded after the computation is complete.
🔹 Data.ODI.UseNegODI
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If there are negative odd days in the loan, then the value of this field
determines if a negative odd days interest fee is computed. If the value of this
field is false, then negative odd days fees are not allowed, the SCE will
return a value of zero in this situation, and the computed payment will be
adjusted to take into account the negative odd days. A value of true will
return a negative odd days interest fee (in effect, it then becomes and odd days
interest credit) when there are negative odd days in a loan.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
The Protection object is used by the calling application to request one or
more payment protection products (e.g. life, disability, involuntary
unemployment, or personal property) be included in the loan calculation. Each of
these products is requested by including its own child object, along with
the borrower birthdays.
Fields:
🔹Birthday1,🔹Birthday2,🔹LineOfCredit,🔹Mandatory,🔹ShowBorrowerInfo,🔹ShowCapsObjects:
🟦 Disability,🟦 Life,🟦 Unemployment
🔹 Data.Protection.Birthday1
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the secondary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday2" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower2 or both.
🔹 Data.Protection.Birthday2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This field holds the date of birth for the primary borrower. All dates must be
in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of April
9, 1972 would be specified as "Birthday1" : "1972-04-09". Note that this
element must be set if the Covers field of any of the four payment
protection objects is set to borrower1 or both.
🔹 Data.Protection.Financed
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If the computed premiums for single premium debt protection products should be
financed along with the proceeds, then this field should be set to true (which
is the default value if not specified). A value of false indicates that the
computed premiums will not be financed with the proceeds, and hence will be paid
out of pocket by the borrower. Note that this applies to single premium
insurance products only!
🔹 Data.Protection.LineOfCredit
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this is an account using TruStage's MOB insurance, and if this loan is a
line of credit where product term caps should be ignored, then set this field to
true. Otherwise, omit this field or set it to false.
🔹 Data.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is set to true, then any computed payment
protection premium or fee will be considered a mandatory fee which will be
included as a part of the Finance Charge, and hence affect the disclosed APR.
If the Mandatory field is set to false, then the loan will treat any
premiums / fees as normal.
🔹 Data.Protection.ShowBorrowerInfo
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have data returned for each specified
borrower instead of a single Term object, then set the value of this field to
true. Otherwise, omit this field or set it to false. See the Borrower and
Term objects defined in the response section for more information.
🔹 Data.Protection.ShowCaps
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application would like to have cap information (e.g. maximum
terms, coverage amounts, ages, etc.) returned for each product offered, set the
value of this field to true. Otherwise, omit this field or set it to false.
See the Caps object defined in the response section for more information.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
The Disability object determines what type of disability coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTerm,🔹TableObjects:
None
🔹 Data.Protection.Disability.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Disability.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Disability object altogether or specify a value of none.
🔹 Data.Protection.Disability.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Disability.Table
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0...19] | 0 |
If the specified account has been set up with multiple disability or debt cancellation plans, then this field determines which plan number will be used. If no table number is specified, the first table (table zero) will be used.
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
The Life object determines what type of life coverage is
requested for the loan.
Fields:
🔹CovAmount,🔹Covers,🔹CovTerm,🔹Dismemberment,🔹Method,🔹UseLevelRatesObjects:
None
🔹 Data.Protection.Life.CovAmount
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a coverage amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum coverage amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user specified coverage amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Life.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Life object altogether or specify a value of none.
🔹 Data.Protection.Life.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🔹 Data.Protection.Life.Dismemberment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer life protection products with
optional dismemberment coverage, and if the optional dismemberment coverage is
desired, then set this field's value to true. Otherwise, use the default value
of false.
🔹 Data.Protection.Life.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Default, Gross, Net | Default |
Some accounts are configured to offer different types of credit life products (usually gross and net). In these accounts, this field allows the calling application to specify which method to use for a given loan. If no method is present in the request, then the default method will be used.
🔹 Data.Protection.Life.UseLevelRates
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the account specified has been set up to offer single premium credit life
using level rates instead of the normal decreasing rates, and if you wish to use
level rates instead of decreasing, then set this field's value to true.
Otherwise, use the default value of false.
🟦 Data.Protection.Unemployment
| Type | Required |
|---|---|
| Object | no |
The Unemployment object determines what type of unemployment coverage is
requested for the loan.
Fields:
🔹Benefit,🔹Covers,🔹CovTermObjects:
None
🔹 Data.Protection.Unemployment.Benefit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If you wish to specify a benefit amount less than the maximum allowed, then do so with this field. Omitting this field will ensure that the maximum benefit amount allowed will be used in the loan calculation. Note that if the specified account has not been set up to allow for user-specified benefit amounts for the product in question, then this field will be ignored.
🔹 Data.Protection.Unemployment.Covers
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | none, borrower1, both, borrower2 | borrower1 |
The value of this field determines what type of coverage is being requested on
the loan. The values borrower1 and borrower2 represent single coverage on
the appropriate borrower (whose birthdays are contained in appropriate Birthday
objects described above). A request for joint coverage on both borrowers is
indicated by a value of both. Finally, if no coverage is desired, simple omit
the Unemployment object altogether or specify a value of none.
🔹 Data.Protection.Unemployment.CovTerm
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | 0 |
If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this field. If this field is omitted, then the loan will be covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms for this product, then this field will be ignored.
🟦 Data.Settings
| Type | Required |
|---|---|
| Object | no |
The Settings object allows the calling application to alter the default
loan calculation options.
Fields:
🔹Account,🔹AccrualCode,🔹ConMethod,🔹DataPath,🔹Lastday,🔹PmtDollarRound,🔹PmtRound,🔹ShowAmTable,🔹TILARESPA2015,🔹YieldPPYObjects:
🟦 TILARESPA2015
🔹 Data.Settings.Account
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..9999] | 1 |
The Account field specifies the numeric setup file account number that will be
used to compute the requested loan. Each account is numbered from 1 to 9,999,
and each account corresponds to a set of setup file which define numerous
settings which may affect the loan calculation, such as the accrual method,
insurance methods / rates / caps, etc.
🔹 Data.Settings.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | see table | default |
The method of interest accrual is defined by this field. A value of default
informs the SCE to use the interest accrual method defined in the setup file for
the specified Account. All other valid accrual codes
are described in the table below.
🔹 Data.Settings.ConMethod
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, simple, interestonly | default |
When computing a construction loan, there are two supported methods for computing interest during the constrcution period:
If the value of this field is simple, then the estimated construction
interets will be computed and disclosed as a lup-sum prepaid fee (see
the Moneys.ConstructInterest
response field).
If the value of this field is interestonly, then the construction and
permanent loans are combined into a single loan, with the construction (and
permanent) loan's interest being reflected in the
Moneys.Interest field, and
both loans reflected in a single, combined amortization schedule.
A value of default instructs the SCE to use the construction method specified
in the setup file for the given account.
🔹 Data.Settings.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔹 Data.Settings.Lastday
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | as configured in setup file |
If present, this field overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day accrual calendar where the first payment date falls at the end of a month with fewer than 31 days. As an example, if the first payment date is on April 30, should the following payment dates be made on the 30th of each month, or on the last day of the month?
If no value is specified for this field, then the setup file setting will be
used. If true is specified, then conditions triggering a last day situation
will result in payments which fall at the end of the month. A value of false
indicates that when dictated, subsequent payment dates will not be moved to the
last day of the month.
🔹 Data.Settings.OddFinal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Following the last payment of an amortization schedule, the ending balance is unlikely to be zero due to the rounding of the payment. In order to assure perfect amortization, lenders will use an odd final payment to perfectly amortize the loan.
Set OddFinal to true to ensure perfect amortization with a payment that
pays off the loan.
🔹 Data.Settings.PmtDollarRound
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Payments are normally rounded to the penny, according to the method specified by
in the setup file, or vy theSettings.PmtRound field. If
the payment should be rounded to the dollar instead of the penny, then set
the value of this field to true.
Note that for some loans (such as those with longer terms or relatively small proceeds), rounding the payment up or to the nearest dollar may require a shortened loan term to prevent one or more negative payments at the end of the loan.
🔹 Data.Settings.PmtRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, nearest, up, down, best | default |
How are calculated payments to be rounded at and beyond this event? best means
to choose the payment that returns a minimal ending balance at the end of
amortization. If two payments result in the same minimal error magnitude, the
smaller payment is chosen. default means that the setting should be configured
as specified in the setup file.
🔹 Data.Settings.ShowAmTable
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
To supress the entire amortization schedule from the response, set value of this
field to false; otherwise, the amortization schedule will be returned with the
response.
🔹 Data.Settings.TILARESPA2015
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This setting can defined as a TILARESPA2015
object or as a boolean field, described here. If the Min and Max payments at
each line of the amortization table need to be broken up into their principal
and interest components, use the object version of this setting to request
disclosure of these components.
If the value of this field is true, then the SCE will include data for the
Integrated Mortgage Disclosures under the Real Estate Settlement Procedures Act
(Regulation X) and the Truth In Lending Act (Regulation
Z) rule, which is
required as of August 1st, 2015.
If the field is omitted or set to false, then the TILA RESPA outputs will not
be generated.
As of the 2024-10 release, the TILARESPA2015 field may also be passed in as an object,
with "TILARESPA2015" : {} equivalent to "TILARESPA2015" : true.
🔹 Data.Settings.YieldPPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0, 2, 4, 6, 12 | 0 |
Canadian mortgages may compute periodic interest using a fractional power of a periodic yield. If set to a value other than `0', this field determines the period. Please contact us for further information if you support mortgage calculations in Canada. Note that when using this field with a value other than zero, the calling application must include an odd days prepaid fee in the request.
🟦 Data.Settings.TILARESPA2015
As of the 2024-10 release, the TILARESPA2015 field may also be passed in as an
object, with "TILARESPA2015" : {} equivalent to "TILARESPA2015" : true.
The purpose of including TILARESPA2015 as an object, rather than a boolean field would be to include extra information with the
maximum and minimum PnI payments.
Fields:
MaxPnIDetails,MinPnIDetailsObjects:
None
🔹 Data.Settings.TILARESPA2015.MaxPnIDetails
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the ARM loan specified a maximum lifetime interest rate (see MaxRate), and if the calling application requires the principal and interest breakdown for each MaxPnI payment returned in the amortization schedule, then set the value of this field to true.
Doing so will return MaxInt and MaxPrin fields of the AmLine object associated with each MaxPnI payment.
🔹 Data.Settings.TILARESPA2015.MinPnIDetails
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the ARM loan specified a minimum lifetime interest rate (see MinRate), and if the calling application requires the principal and interest breakdown for each MinPnI payment returned in the amortization schedule, then set the value of this field to true.
Doing so will return MinInt and MinPrin fields of the AmLine object associated with each MinPnI payment.
ARM Loan Module - Response
The Data object for a response from the Arm module is defined below, in the
order the fields are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔹CountryObjects:
🟥 Errors[],🟥 Warnings[],🟥 Results,🟦 FedBox,🟦 TILARESPA2015,🟦 Moneys,🟦 Accrual,🟦 PMI,🟦 PmtStreams[],🟦 Protection,🟦 AmTable
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
If the request specified a two-character or three-digit Country code, then
this field will be present and will contain the full name of the country
associated with the specified code. Please see the Countries
Appendix for the list of supported countries and their
associated codes.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Arm",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "Arm",
"Data" : {
"Errors" : [
"Data.LoanDate (StringDate) not found.",
"Data.PmtDate (StringDate) not found.",
"Data.Term (StringInt) not found.",
"Data.Proceeds (StringFloat) not found.",
"Data.TeaserTerm (StringInt) not found.",
"Data.TeaserRate (StringFloat) not found.",
"Data.Index (StringFloat) not found.",
"Data.TermStep (StringInt) not found.",
"Data.AnnualRateIncrease (StringFloat) not found."
],
"Warnings" : [
"Data.Margin (StringFloat) not found.",
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟦 Data.Results
| Type | Required |
|---|---|
| Object | no |
This field(s) of this object represent the most important numerical results for the loan request.
Fields:
🔸Number of GroupsObjects:
None
🔸 Data.Results.Number of Groups
| Type | Required | Values |
|---|---|---|
| String | no | Integer |
ARM loans are characterized by variable payment streams. The Number of Groups
field reports the number of PmtStreams[] objects.
🟦 Data.FedBox
| Type | Required |
|---|---|
| Object | no |
This object groups together all fields which contain important numerical information, as defined in the Truth-In-Lending laws (Regulation Z).
Fields:
🔸AmtFin,🔸FinChg,🔸TotPmts,🔹TotalSalePrice
🔸 Data.FedBox.AmtFin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The Regulation Z Amount Financed, which is defined as the amount of credit provided to the borrower or on their behalf.
🔸 Data.FedBox.FinChg
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost the borrower.
🔸 Data.FedBox.TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The amount which the borrower will have paid when the borrower has made all scheduled payments.
🔹 Data.FedBox.TotalSalePrice
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The sum of the total of payments plus the total down payment. Please note that
if no TotalDown field was included in
the request, then this element will not be present.
🟥 Data.FedBox.APR
| Type | Required |
|---|---|
| Object | yes |
The APR object contains fields which return the value and APR method used.
Fields:
🔸Value,🔹Max,🔹MaxExceeded,🔸TypeObjects:
None
🔸 Data.FedBox.APR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed APR, which is the cost of the extension of credit expressed as a yearly rate.
🔹 Data.FedBox.APR.Max
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Number | n/a |
This field returns the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this field will not be present in the response. The value of this field should be displayed as a percentage.
🔹 Data.FedBox.APR.MaxExceeded
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If a maximum APR is configured in the account's setup files, then the value of this field indicates whether or not the current loan exceeds the maximum APR. If no maximum APR has been specified, then this field will not be present in the response.
🔸 Data.FedBox.APR.Type
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field returns the APR method used to compute the reported APR.
🟦 Data.FedBox.MAPR
| Type | Required |
|---|---|
| Object | no |
The MAPR (military APR) object is only returned with the response if the value
of the Apr.UseMAPR request field is true.
Fields:
🔸Value,🔸Advance,🔸Max,🔸MaxExceededObjects:
None
🔸 Data.FedBox.MAPR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed military APR.
🔸 Data.FedBox.MAPR.Advance
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.
🔸 Data.FedBox.MAPR.Max
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
This field holds the maximum Military APR as specified in the input XML (see
Apr.MAPR_Max). If not specified, a default value
of 36% is assumed. The value of this field should be displayed as a percentage.
As an example, for "Max" :"36.000", you would disclose a maximum Military APR
of 36%.
🔸 Data.FedBox.MAPR.MaxExceeded
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
The value of this field indicates whether or not the current loan exceeds the
maximum allowed Military APR. As an example, if the maximum APR has been set to
36% and the Military APR for the returned loan was 37.125%, the MAPR object
would be:
{
"MAPR" : {
"Value" : "37.125",
"Advance" : "1350.00",
"Max" : "36.000",
"MaxExceeded" : true
}
}
🟦 Data.TILARESPA2015
| Type | Required |
|---|---|
| Object | no |
This object contains fields which are of interest to fulfilling the 2015 TILA
RESPA rule. It will only be present if the
Settings.TILARESPA2015 field in the
request is set to true.
Fields:
🔸TotalLoanCost,🔸CD_TotPmts,🔸TIPObjects:
🟥 LoanCosts[],🟥 In5Years,🟥 MaxPnIPmt,🟥 MinRate,🟥 MaxRate,🟥 ProjectedPaymentsTable[]
🔸 Data.TILARESPA2015.TotalLoanCost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The value of this field is the sum of all borrower paid loan costs. Since all
LoanCost values are rounded dollar amounts, the value of this
element will also be a rounded dollar amount.
🔸 Data.TILARESPA2015.CD_TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the sum of the total of payments, all borrower paid loan costs, and any odd days interest that is prepaid at loan closing. This value should be disclosed on the Closing Disclosure form in the Total of Payments field.
🔸 Data.TILARESPA2015.TIP
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The total interest percentage, rounded to three or fewer decimal places - as required.
🟥 Data.TILARESPA2015.LoanCosts[]
| Type | Required |
|---|---|
| Array of LoanCost Objects | yes |
For every object in the Fees[] array present in the
request which has its IsLoanCost field set
to true (and hence, is a borrower paid loan cost) and whose amount is greater
than zero (except odd days interest fee types, as explained in the previous
documentation of the Fee and object), there will be a
corresponding LoanCost object.
Fields:
🔹Name,🔹In5Years,🔸ValueObjects:
None
🔹 Data.TILARESPA2015.LoanCosts[].Name
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔹 Data.TILARESPA2015.LoanCosts[].In5Years
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | Same as Value |
If the entire amount of the fee is different from the amount collected over the first five years (for example, a service charge), then this field will be present and disclose the portion of this loan coast that is accrued during the first five years.
🔸 Data.TILARESPA2015.LoanCosts[].Value
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field is the numerical value of the fee, rounded to the nearest dollar.
🟥 Data.TILARESPA2015.In5Years
| Type | Required |
|---|---|
| Object | yes |
This object contains all important values required for the new "In 5 Years" section of the disclosure.
Fields:
🔸PaidTotal,🔸PaidPrincipalObjects:
None
🔸 Data.TILARESPA2015.In5Years.PaidTotal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds the sum of all "principal, interest, mortgage insurance, and borrower paid loan costs scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🔸 Data.TILARESPA2015.In5Years.PaidPrincipal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds "the principal scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🟥 Data.TILARESPA2015.MaxPnIPmt
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold the maximum sceduled principal and interest payment during the term of the loan, as well as the date on which that payment is made.
Objects:
None
🔸 Data.TILARESPA2015.MaxPnIPmt.Date
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field returns the date on which the maximum scheduled principal and interest payment is made. If the maximum scheduled payment occurs more than once, then the date returned is that of the first instance.
🔸 Data.TILARESPA2015.MaxPnIPmt.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The maximum sceduled principal and interest payment during the term of the loan.
🟥 Data.TILARESPA2015.MinRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the minimum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MinRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the minimum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MinRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the minimum rate is first applicable.
🟥 Data.TILARESPA2015.MaxRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the maximum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MaxRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the maximum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MaxRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the maximum rate is first applicable.
🟥 Data.TILARESPA2015.ProjectedPaymentsTable[]
| Type | Required |
|---|---|
Array of PPCol Objects | yes |
Fields:
🔸Num,🔸Title,🔸YearStart,🔸YearEnd,🔸PnIPmtMin,🔸PnIPmtMax,🔸IntOnly,🔸Balloon,🔸MIPmt,🔸TotalPmtMin,🔸TotalPmtMaxObjects:
None
This field returns an Array of projected payment table columns (PPCol), with
each array member detailing a single column. Per the regulation, there will be a
minimum of one column and a maximum of four columns, depending upon the
parameters of the loan.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Num
| Type | Required | Value |
|---|---|---|
| String | yes | Integer in [1...4] |
The value of this field identifies the number of the column to which the following fields apply. The value will be from 1 to 4.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Title
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
The value of this field is the title for the column. Most of the time, it will
be in the form of Years X - Y, or Year X, or Final Payment in the case of
a final balloon payment.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearStart
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The beginning year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearEnd
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The ending year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The minimum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The maximum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].IntOnly
| Type | Required | Value |
|---|---|---|
| String | yes | none, some, all |
If none of the payments associated with this column are interest only payments,
then the value of this field will be none. A value of some means that some
of the payments (but not all) associated with this columnt are interest only.
Finally, a value of all indicates that all payments associated with this
columnt are interest only.
Note that for the purposes of this field, a scheduled payment is considered an interest only payment if the payment amount pays off all interest due at the time of the payment, with no reduction in the principal balance.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Balloon
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
If any of the payments associated with this column are balloon payments (e.g.
isolated payments that are more than twice the value of a regular periodic
payment), then the value of this field will be true.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].MIPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The value of this field holds the mortgage insurance premium associated with this column, rounded to the nearest dollar. If no mortgage insurance is present or coverage has been dropped, a value of zero will be present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the minimum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the maximum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🟦 Data.Moneys
| Type | Required |
|---|---|
| Object | no |
This element groups together those other major cash result amounts not disclosed
under the FedBox object, such as the principal balance, interest charge,
and fee amounts.
Fields:
🔸Principal,🔸Interest,🔹ConstructInterest,🔹FinFees,🔹Prepaid,🔹PocketFees,🔹MAPRFees,🔹PMI_Fee,🔹MinIntChgAdj,🔹MinFinChgAdjObjects:
🟦 ODI,🟦 Fees[],🟦 Protection
🔸 Data.Moneys.Principal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance is the amount on which interest is accrued. The principal balance consists of all advances requested by the borrower, as well as any fees and/or protection products which are financed.
🔸 Data.Moneys.Interest
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This value of this field holds the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.
🔹 Data.Moneys.ConstructInterest
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If the requested loan is a construction loan with a permanent loan attached and the account specified is set up to compute construction loans via the "Simple" method, then this field will contain the construction interest for the requested loan.
Note that if a permanent loan is attached to a construction loan and the
account is set up to use the "LaserPro" method, then the construction
and permanent loans are combined into a single loan, with the construction
(and permanent) loan's interest being reflected in the
Moneys.Interest field, and both loans reflected in a single,
combined amortization schedule.
If the requested loan is a construction loan without a permanent loan
attached, then the construction interest will be disclosed in the
Moneys.Interest field.
If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this field will not appear in the response.
🔹 Data.Moneys.FinFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field contains the sum of all fees having AddToPrin
set to true and occuring on the date of an advance. If this
value is zero, the field will not appear in the response.
🔹 Data.Moneys.Prepaid
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field represents all prepaid finance charges and contains the sum of all
fees occurring on an advance and having AddToFinChg
set to true. If this value is zero, the field will not be found in the response.
🔹 Data.Moneys.PocketFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are neither financed, nor added to the finance charge. In essence, they are paid out of the borrower's pocket. If no out of pocket fees were requested, then this field will not show up in the response.
🔹 Data.Moneys.MAPRFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are Military APR fees (including protection products), and will only appear if the Military APR has been requested.
🔹 Data.Moneys.PMI_Fee
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If PMI has been requested on the loan, and if a number of UpFront
payments have been specified, then this field will return the total PMI
fee for all up front payments.
🔹 Data.Moneys.MinIntChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum interest charge is configured in the account's setup files and the final payment was adjusted to meet this minimum interest charge, then this field will be returned in the response and will contain the value of the minimum interest charge adjustment.
🔹 Data.Moneys.MinFinChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum finance charge is configured in the account's setup files and the final payment was adjusted to meet this minimum finance charge, then this field will be returned in the response and will contain the value of the minimum finance charge adjustment.
🟦 Data.Moneys.ODI
| Type | Required |
|---|---|
| Object | no |
This object, if present, contains information regarding odd days interest. If no odd days interest was requested, then this object will not be present in the response.
Fields:
🔹AddToPmt,🔸Count,🔸Fee,🔹Months,🔹DailyCostObjects:
None
🔹 Data.Moneys.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If the odd days interest has been added to the first payment, then this field
will be present in the response with a value of true. If the odd days interest
has been treated as a prepaid finance charge, then this field will not be
present and a default value of false should be assumed.
🔸 Data.Moneys.ODI.Count
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Discloses the number of odd days computed by the SCE for the requested loan.
🔸 Data.Moneys.ODI.Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total amount odd days interest charge.
🔹 Data.Moneys.ODI.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field holds the number of odd months computed by the SCE for the requested
loan when using odd days accrual method 250. If the odd days accrual method is
a value other than 250, then this field will not be present in the ODI
object of the response.
🔹 Data.Moneys.ODI.DailyCost
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | n/a |
If the odd days interest fee is computed using a rounded daily cost, then the value of this field will hold that value. If the odd days interest is not computed using a rounded daily cost, then this field will not be present in the response.
🟦 Data.Moneys.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
If the requested loan included fees, then for each fee in the loan there will be a Fee object in this array containing the name of the fee and the computed fee amount.
If there were no fees requested with the loan, then the Moneys.Fees[] array
will not be included in the response.
Objects:
None
🔹 Data.Moneys.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.Fees[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed fee amount.
🟦 Data.Moneys.Protection
| Type | Required |
|---|---|
| Object | no |
This object returns summary information on all payment protection products computed with the loan. If no protection products were included with the loan, then this object will be omitted from the response.
Fields:
🔸Cost,🔸PerPmt,🔸PerDay,🔸Category,🔹IsDP,🔹MandatoryObjects:
None
🔸 Data.Moneys.Protection.Cost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total cost of all protection plans included with the
computed loan. For the individual plan costs, see the
Protection field described below.
🔸 Data.Moneys.Protection.PerPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per payment.
🔸 Data.Moneys.Protection.PerDay
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of all loan protection products expressed as dollars per day.
🔸 Data.Moneys.Protection.Category
| Type | Required | Values |
|---|---|---|
| String | yes | None, SP, MOB, TrueMOB, PaidSP |
Te value of this field specifies the category under which the computed loan protection falls. The categories are described below:
| Category | Description |
|---|---|
None | No loan protection products were computed with this loan. |
SP | Financed single premium coverage. |
MOB | Monthly outstanding balance coverage. |
TrueMOB | TruStage's monthly outstanding balance method. |
PaidSP | Non-financed single premium coverage. |
🔹 Data.Moneys.Protection.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field indicates if the specified account's protection is set up as debt
protection. If this field is not present, then the default value of false
should be used (which indicates that the account's protection is set up as
insurance instead).
🔹 Data.Moneys.Protection.Mandatory
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field should only appear in the response if the value of the is true.
If this field does not appear in the output, then the value should default to
false.
If the value of the Mandatory field is true, then the total premium / fee
amount for all insurance / debt protection products has been treated as a part
of the Finance Charge, and hence will affect the effective APR.
🟦 Data.Accrual
| Type | Required |
|---|---|
| Object | no |
This object groups together interest accrual information, such as the accrual method(s) used, days to the first payment and the loan's maturity date.
Fields:
🔸Method,🔸Days1Pmt,🔸DayCount,🔸MaturityObjects:
None
🔸 Data.Accrual.Method
| Type | Required | Values |
|---|---|---|
| String | yes | Text |
The Method field contains a textual description of the interest accrual method
used to compute the loan (e.g. "Unit Period 365 Simple".)
🔸 Data.Accrual.Days1Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field contains the number of days between the date of the first
advance and the date of first payment, computed by one of two
methods as specified in by Accrual.DayCount (below).
🔸 Data.Accrual.DayCount
| Type | Required | Values |
|---|---|---|
| String | yes | True360, Actual |
This field specifies the method used to compute the number of days from the date
of the first advance until the first payment date. Actual means that the
actual number of days between these two dates are used, whereas the True360
method use a 360 day calendar.
🔸 Data.Accrual.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
Holds the maturity date of the loan, which is the date on which the last
payment is scheduled. All dates are in the form of YYYY-MM-DD, and must
be 10 characters long.
🟦 Data.PMI
| Type | Required |
|---|---|
| Object | no |
The PMI object will only appear if PMI has been computed with the loan. Please
note that the PMI premiums are not reflected in the amount reported in the the
PmtStreams[] array, the FedBox.TotPmts
field, nor the Pmt field of the AmLines[]
objects.
Fields:
🔸Rate,🔸LTV,🔸PremiumPerYear,🔸PremiumPerPeriod,🔹IndexToWarn,🔹IndexToRemoveObjects:
None
🔸 Data.PMI.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | % >= 0 |
The percentage rate used in the PMI calculation.
🔸 Data.PMI.LTV
| Type | Required | Values |
|---|---|---|
| String | yes | % >= 0 |
The loan to value ratio of the computed loan, expressed as a percentage.
🔸 Data.PMI.PremiumPerYear
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The annual PMI premium amount.
🔸 Data.PMI.PremiumPerPeriod
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The periodic PMI premium amount.
🔹 Data.PMI.IndexToWarn
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
This field only appears if the
WarnLTV PMI input field is specified,
and indicates that the payment index on which the remaining principal balance to
home value ratio drops below the specified percentage.
🔹 Data.PMI.IndexToRemove
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
This field only appears if the
DropLTV PMI input field is specified,
and indicates that the payment index on which the remaining principal balance to
home value ratio drops below the specified percentage. PMI coverage stops
after this payment.
🟦 Data.PmtStreams[]
| Type | Required |
|---|---|
| Object | no |
The PmtStreams[] array is made up of one or more PmtStream objects (there
will always be at least one of these elements, and there may be more than one
depending upon the loan type). The PmtStream objects describe the scheduled
stream of payments for the computed loan. Instead of disclosing each and every
payment individually (which can be done with the AmTable object),
the payment stream groups together consecutive equal payments at the same
interest rate to produce output along the lines of:
{
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "50.13",
"Rate" : "4.500",
"Begin" : "2022-10-01"
},
{
"Term" : "10",
"Pmt" : "37.59",
"Rate" : "4.500",
"Begin" : "2022-11-01"
},
{
"Term" : "1",
"Pmt" : "10062.59",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
]
}
Each object describes a single stream of equal payments at the same interest rate, using the following fields to define the important properties of each payment stream.
Fields:
🔸Term,🔸Pmt,🔸Rate,🔸BeginObjects:
Note
🔸 Data.PmtStreams[].Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The Term field holds the number of payments that make up the given payment
stream.
🔸 Data.PmtStreams[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The Pmt field holds the computed payment amount for this payment stream.
🔹 Data.PmtStreams[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number |
Contains the interest rate used for the duration of this payment stream. If this payment stream accrued interest using split-rate tiers, then this field will not be returned.
🔸 Data.PmtStreams[].Begin
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field identifies the date on which the first payment for this given payment
stream is scheduled to be made. All dates are in the form of YYYY-MM-DD, and
must be 10 characters long.
🟦 Data.Protection
| Type | Required |
|---|---|
| Object | no |
If protection products are requested, then this object will be present in the response, along with a field for each requested protection product.
Fields :
NoneObjects:
🟦 Life,🟦 Level,🟦 Disability,🟦 Unemployment
🟦 Data.Protection.Life
| Type | Required |
|---|---|
| Object | no |
If life protection was requested with the loan and decreasing life was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing life coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Life.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Life.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Life.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Life.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Life.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Life.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Life.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Life.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Life.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary life product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Life.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Life.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Life.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Life.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this object
will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Life.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Life.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Life.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Life.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Life.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Life.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Life.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Life.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Life.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Life.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Life.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object
will only be present if the ShowCaps
field of the Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Life.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Life.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Level
| Type | Required |
|---|---|
| Object | no |
If level protection was requested with the loan and decreasing level was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing level coverage.
Objects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Level.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Level.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🟦 Data.Protection.Level.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,🔹Premium2,🔹PerPmt2,🔹PerDay2,🔹Factor2Objects:
None
🔸 Data.Protection.Level.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Level.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Level.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Level.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🔹 Data.Protection.Level.Cost.Premium2
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency >= 0 | n/a |
The only time the Premium2 field will be present is when the account has been
setup to use an ordinary Level product and the user has requested joint
coverage. If this is the case, then the Premium2 field is provided so that the
calling application can disclose two premiums instead of a single aggregate
joint premium.
🔹 Data.Protection.Life.Cost.PerPmt2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per payment. See Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.PerDay2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The cost of coverage for the secondary ordinary life borrower, expressed as
currency per dey. Please see Cost.Premium2 above for
further information.
🔹 Data.Protection.Life.Cost.Factor2
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | n/a |
The rate factor used to compute the premium for the secondary ordinary life
borrower. Please see Cost.Premium2 above for further information.
🟦 Data.Protection.Level.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Level.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Level.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Level.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Level.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Level.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Level.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Level.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Level.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Level.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Level.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Level.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Level.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Level.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Level.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps field of the
Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Level.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Level.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Disability
| Type | Required |
|---|---|
| Object | no |
If disability protection was requested with the loan and decreasing disability was
configured for this loan type, then the Life object will be present in the
response to return information on decreasing disability coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Disability.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Disability.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Disability.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Disability.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Disability.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Disability.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Disability.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Disability.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Disability.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Disability.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Disability.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Disability.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Disability.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Disability.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Disability.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Disability.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Disability.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Borrower2
| Type | Required |
|---|---|
| Object | no |
The borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Disability.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Disability.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Disability.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Disability.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Disability.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Disability.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Disability.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Disability.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps field of the
Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Disability.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Disability.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.Protection.Unemployment
| Type | Required |
|---|---|
| Object | no |
If unemployment protection was requested with the loan and decreasing unemployment
was configured for this loan type, then the Life object will be present in the
response to return information on decreasing unemployment coverage.
Fields:
🔸Result,🔸Formula,🔸RateTypeObjects:
🟦 Cost,🟦 Coverage,🟦 Term,🟦 Borrower1,🟦 Borrower2
🔸 Data.Protection.Unemployment.Result
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
This field contains the calculation result for the requested protection product.
If it contains a value of Valid Calculation, then the requested product was
computed and factored into the loan. Parse the other fields and child objects
for further details.
A value other than Valid Calculation means that the requested product was
not computed with the loan, and the value describes why. In this case, there is
no need to parse through the other fields or child objects, as the product was
not computed.
🔸 Data.Protection.Unemployment.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See table |
The Formula field contains an abbreviated description of the formula used to
compute the desired protection product. The formula codes are for the use of the
J. L. Sherman and Associates, Inc. support team.
🔸 Data.Protection.Unemployment.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Fixed, Variable |
This field will only be present in the response if the protection product has
been configured to allow for coverage to switch from joint to single during the
term of coverage, should one of the borrowers exceed an age at termination cap.
If the field is not present, then a value of Fixed should be assumed as only
one rate has been used in the protection calculation.
If this field is present, then there is the possibility that the rate used to
compute the protection may have changed (in the case of coverage for one
borrower ending while coverage for the other borrower continues). If this is the
case, then the field will indicate this rate change with a value of Variable.
🟦 Data.Protection.Unemployment.Cost
| Type | Required |
|---|---|
| Object | yes |
Fields of this object provide the cost of the protection product in total, per payment, and per day. It also provides the rate factor used to compute the premiums.
Fields:
🔸Premium,🔸PerPmt,🔸PerDay,🔸Factor,Objects:
None
🔸 Data.Protection.Unemployment.Cost.Premium
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The total cost for this protection over the term of the loan.
🔸 Data.Protection.Unemployment.Cost.PerPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per payment.
🔸 Data.Protection.Unemployment.Cost.PerDay
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The cost of coverage expressed as currency per dey.
🔸 Data.Protection.Unemployment.Cost.Factor
| Type | Required | Values |
|---|---|---|
| String | yes | Number >= 0 |
The rate factor used to compute the premium for the requested protection product.
🟦 Data.Protection.Unemployment.Coverage
| Type | Required |
|---|---|
| Object | yes |
The aggregate coverage amount and note are provided in the following fields of this object:
Objects:
None
🔸 Data.Protection.Unemployment.Coverage.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The aggregate coverage amount for this protection product.
🔸 Data.Protection.Unemployment.Coverage.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If full coverage
has been provided on the aggregate coverage, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Unemployment.Benefit
| Type | Required |
|---|---|
| Object | yes |
The protection product's benefit amount and note are provided in the following fields of this object:
Fields:
🔸Amount,🔹Periodic,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Benefit.Amount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The monthly benefit amount for this protection product.
🔹 Data.Protection.Unemployment.Benefit.Periodic
| Type | Required | Values |
|---|---|---|
| String | no | Currency >= 0 |
If the account has been configured to disclose periodic benefits (as opposed
to monthly benefit amounts, which are returned in the Amount field
described above), and if the specified payment frequency is other than monthly,
then this field will be present and will hold the periodic benefit amount.
🔸 Data.Protection.Unemployment.Benefit.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field describes the type of coverage provided. If full coverage has
been provided on the benefit, then the note will contain Full Coverage.
Otherwise, the note will describe the type of partial coverage used.
🟦 Data.Protection.Unemployment.Term
| Type | Required |
|---|---|
| Object | no |
The Term object provides the calling application with data about the term of
coverage for the requested product. If the input request has specified
"ShowBorrowerInfo" : true, then this
object will not be present.
Fields:
🔸InMonths,🔸InPmts,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Term.InMonths
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Term.InPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the number of payments covered.
🔸 Data.Protection.Unemployment.Term.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the maturity date for the requested coverage.
🔸 Data.Protection.Unemployment.Term.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The Note field will describe the type of coverage provided. If
full term coverage has been provided, then the note will contain
Full Coverage. Otherwise, the note will describe the type of truncated
coverage used.
🟦 Data.Protection.Unemployment.Borrower1
| Type | Required |
|---|---|
| Object | no |
The Borrower1 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Borrower1.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Unemployment.Borrower1.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Unemployment.Borrower1.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Unemployment.Borrower1.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Unemployment.Borrower1.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Borrower1.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Unemployment.Borrower1.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Unemployment.Borrower2
| Type | Required |
|---|---|
| Object | no |
The Borrower2 object provides the calling application with data about the term
of coverage of a borrower, for the requested product. Note that this object will
only be present if the request has specified "ShowBorrowerInfo" : true,
and a valid birthdate was provided.
Fields:
🔸Birthday,🔸AgeAtIssue,🔸AgeAtMaturity,🔸Pmts,🔸Months,🔸Maturity,🔸NoteObjects:
None
🔸 Data.Protection.Unemployment.Borrower2.Birthday
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The birthday associated with the borrower, as specified in the request.
🔸 Data.Protection.Unemployment.Borrower2.AgeAtIssue
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at issue of the borrower in a special date-like format of YYYY-MM-DD,
where the borrower is YYYY years, MM months, and DD days old when coverage
begins.
🔸 Data.Protection.Unemployment.Borrower2.AgeAtMaturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
If coverage is written on this borrower, then the value of this field represents
the age at maturity of the borrower in a special date-like format of
YYYY-MM-DD, where the borrower is YYYY years, MM months, and DD days old
when coverage terminates.
🔸 Data.Protection.Unemployment.Borrower2.Pmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of payments.
🔸 Data.Protection.Unemployment.Borrower2.Months
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The term of coverage expressed as a number of months.
🔸 Data.Protection.Unemployment.Borrower2.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The coverage maturity date for this particular borrower.
🔸 Data.Protection.Unemployment.Borrower2.Note
| Type | Required | Values |
|---|---|---|
| String | yes | Text - See below |
The value of this field will describe the type of coverage provided. If full
term coverage has been provided, then the note will contain Full Coverage.
Otherwise, the note will describe the type of truncated coverage used.
🟦 Data.Protection.Unemployment.Caps
| Type | Required |
|---|---|
| Object | no |
The Caps object provides the calling application with data about the maximum
terms, amounts, and ages associated with the requested product. This object will
only be present if the ShowCaps field of the
Protection request object is set to true.
Fields:
🔸Cov,🔸Ben,🔸Term,🔸InceptAge,🔸AttainAgeObjects:
None
🔸 Data.Protection.Unemployment.Caps.Cov
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum aggregate coverage amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.Ben
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
Contains the maximum monthly benefit amount. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.InceptAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🔸 Data.Protection.Unemployment.Caps.AttainAge
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Contains the maximum age a borrower may attain during the term of the loan, expressed in years. If no cap is present or applicable, then a value of zero is returned.
🟦 Data.AmTable
| Type | Required |
|---|---|
| Object | no |
This object contains fields which summarize and describe the loan's amortization
schedule. If Settings.ShowAmTable is
set to false, then this object will not be found in the response.
Fields:
🔹Months,🔹Weeks,🔹OddDaysObjects:
🟦 GrandTotals,🟦 SubTotals[],🟥 AmLines[]
🔹 Data.AmTable.AvgBal
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the average balance of the loan used in the Canadian APR calculation.
🔹 Data.AmTable.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of months in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.Weeks
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of weeks in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.OddDays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the number of odd days in the term of the loan used in the Canadian APR calculation. Odd days are computed by moving backwards from the maturity date the number of disclosed months or weeks, and then counting the additional number of days required to land on the loan date.
🟦 Data.AmTable.GrandTotals
| Type | Required |
|---|---|
| Object | no |
This object describes the total amounts of various categories throughout the life of the loan. As an example, the total amount paid to interest and principal, as well as the total of payments are all contained in fields of this object.
Fields:
🔸PmtTot,🔸IntTot,🔸PrinTot,🔹CLTot,🔹AHTot,🔹IUTot,🔹PMITotObjects:
None
🔸 Data.AmTable.GrandTotals.PmtTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total of payments scheduled for the computed loan.
🔸 Data.AmTable.GrandTotals.IntTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total amount paid to interest over the life of the loan, assuming all payments are made as scheduled.
🔸 Data.AmTable.GrandTotals.PrinTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.
🔹 Data.AmTable.GrandTotals.CLTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLTot field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life over the duration of the loan.
🔹 Data.AmTable.GrandTotals.AHTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHTot field will only appear on loans with certain types of disability or
debt protection products, such as those based on a monthly outstanding balance.
It contains the total amount paid for this protection over the duration of the
loan.
🔹 Data.AmTable.GrandTotals.IUTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IUTot field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection over the duration
of the loan.
🔹 Data.AmTable.GrandTotals.PMITot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The PMITot field will only appear on loans with PMI insurance where the
PMI premiums were requested in the amortization schedule. It contains the total
PMI amount paid (not including any up front periodic PMI premiums)for PMI over
the duration of the loan.
🟦 Data.AmTable.SubTotals[]
| Type | Required |
|---|---|
| Array of SubTotal Objects | no |
Describes the total amounts of various categories paid during a given calendar year.
For each year in which the computed loan has scheduled payments, there will be
a SubTotal object in the array.
Fields:
🔸Year,🔸Start,🔸Events,🔸PmtSub,🔸IntSub,🔸PrinSub,🔹CLSub,🔹AHSub,🔹IUSub,🔹PMISubObjects:
None
🔸 Data.AmTable.SubTotals[].Year
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The calendar year for which the subtotal data is applicable.
🔸 Data.AmTable.SubTotals[].Start
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the first amortization event which falls in the specified
calendar year. To find the AmLines[] object which corresponds to
this value, match the Idx field of the AmLine
object.
🔸 Data.AmTable.SubTotals[].Events
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the number of amortization events which belong to this calendar year.
🔸 Data.AmTable.SubTotals[].PmtSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total of payments scheduled for the calendar year.
🔸 Data.AmTable.SubTotals[].IntSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Holds the total amount paid to interest over the calendar year, assuming all payments are made as scheduled.
🔸 Data.AmTable.SubTotals[].PrinSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total amount paid to principal during the calendar year, assuming all payments are made as scheduled.
🔹 Data.AmTable.SubTotals[].CLSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLSub field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life during the year.
🔹 Data.AmTable.SubTotals[].AHSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHSub field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection during the year.
🔹 Data.AmTable.SubTotals[].IUSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IUSub field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for involuntary unemployment during
the year.
🔹 Data.AmTable.SubTotals[].PMISub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The PMISub field will only appear on loans with PMI insurance where the PMI
premiums were requested in the amortization schedule. It contains the total PMI
amount paid (not including any up front periodic PMI premiums) for PMI during
the year.
🟥 Data.AmTable.AmLines[]
| Type | Required |
|---|---|
| Array of AmLine Objects | yes |
There is one AmLine object for each amortization event which occurs during
the life of a loan. Most of the time, each event will describe a payment, and
detail how that payment is applied (to interest, principal, loan protection
products, etc.). Some events, such as capitalizing interest, will not have
payments but will show how the loan amortizes.
Fields:
🔸Idx,🔸Date,🔸BegBal,🔸Pmt,🔸Int,🔸Prin,🔹CL,🔹AH,🔹IU,🔹PMI,🔹UnpaidInt,🔸EndBal🔹MinPnI,🔹MinInt,🔹MinPrin,🔹MaxPnI,🔹MaxInt,🔹MaxPrinObjects:
None
🔸 Data.AmTable.AmLines[].Idx
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The index of the amortization event, which is either the payment number, or zero. A value of zero designates an event that is either not a payment or is a skipped payment.
🔸 Data.AmTable.AmLines[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the amortization event is scheduled to occur. All dates are in
the form of YYYY-MM-DD, and must be 10 characters long.
🔸 AmData.AmTable.AmLines[]ine.BegBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance before the amortization event occurs.
🔸 Data.AmTable.AmLines[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The payment amount for this event.
🔸 Data.AmTable.AmLines[].Int
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of interest paid at this event.
🔸 Data.AmTable.AmLines[].Prin
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of principal paid at this event.
🔹 Data.AmTable.AmLines[].CL
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CL field will only appear on loans with certain types of life protection
products, such as those based on a monthly outstanding balance. It contains the
amount of the payment which is marked for life coverage.
🔹 Data.AmTable.AmLines[].AH
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AH field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for disability /
debt protection coverage.
🔹 Data.AmTable.AmLines[].IU
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IU field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for this
coverage.
🔹 Data.AmTable.AmLines[].PMI
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field contains the PMI premium for this payment, and will only show up if PMI has been computed for this payment and if PMI premiums should be displayed in the amortization schedule.
🔹 Data.AmTable.AmLines[].UnpaidInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear on an amortization line when interest has been accrued, but has not yet been paid or added to the principal balance. If the interest accrued has not yet been rounded, then the unpaid interest will be displayed to four (4) decimal placed. If rounded, then the unpaid interest is displayed to two (2) decimal places.
🔸 Data.AmTable.AmLines[].EndBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The principal balance amount, after the amortization event has taken place.
🔹 Data.AmTable.AmLines[].MinPnI
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
If the ARM loan specified a minimum lifetime interest rate (see
MinRate), and if TILA RESPA data has been
requested (using the
Settings.TILARESPA2015 field),
then this field will be present in each AmLine object that represents a payment.
The value of this field represents the minimum principal and interest payment
possible, should the index +
margin rate trend towards the minimum lifetime
rate after the teaser term has expired.
🔹 Data.AmTable.AmLines[].MinInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The value of this field represents the amount of the MinPnI payment which has
been used to pay interest. This field will only be present if the MinPnI field
is present and if the request included
"TILARESPA2015.MinPnIDetails" :
true.
🔹 Data.AmTable.AmLines[].MinPrin
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The value of this field represents the amount of the MinPnI payment which has
been used to pay down the principal balance. This field will only be present if
the MinPnI field is present and if the request included
"TILARESPA2015.MinPnIDetails" :
true.
🔹 Data.AmTable.AmLines[].MaxPnI
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
If the ARM loan specified a maximum lifetime interest rate (see MaxRate), and if
TILA RESPA data has been requested (using the
Settings.TILARESPA2015 field),
then this field will be present in each AmLine object that represents a payment.
The value of this field represents the maximum principal and interest payment
possible, should the index +
margin rate trend towards the minimum lifetime
rate after the teaser term has expired.
🔹 Data.AmTable.AmLines[].MaxInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The value of this field represents the amount of the MaxPnI
payment which has been used to pay interest. This field will only be present if
the MaxPnI field is present and if the request included
"TILARESPA2015.MaxPnIDetails" :
true.
🔹 Data.AmTable.AmLines[].MaxPrin
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The value of this field represents the amount of the MaxPnI
payment which has been used to pay down the principal balance. This field will
only be present if the MaxPnI field is present and if the request included
"TILARESPA2015.MaxPnIDetails" :
true.
Construction Loans
Construction loans are multiple advance loans to finance construction of a
dwelling that may be permanently financed by the same creditor either as a
single transaction or as more than one transaction. This module should be used
if the creditor chooses to disclose the construction phase separately. If the
creditor chooses to disclose the construction and the permanent financing as one
transaction, please see the Construction field for the appropriate Loan module
which supports the permanent loan's repayment structure.
Sample Request
The following example is a request for a construction loan with no permanent
loan attached, with a proceeds of $100,000, interest will accrue at a 4.5% rate
using a unit period / 360 U. S. Rule accrual method (accrual code 301). There
will be 11 monthly interest only payments with an additional final payment
paying off the loan. As the schedule of advances are not known at this time and
interest is only due on the outstanding balance, we will assume that half the
commitment amount is outstanding during the term of the loan. Furthermore, we
will ask the SCE to return the individual interest only payments instead of
using the Simple method which returs a single lump sum interest amount.
{
"Module" : "Construction",
"Data" : {
"LoanDate" : "2022-08-24",
"PmtDate" : "2022-10-01",
"IntRate" : "4.500",
"Term" : "12",
"PPY" : "12",
"Proceeds" : "100000.00",
"HalfCommitment" : true,
"Settings" : {
"AccrualCode" : "301",
"ConMethod" : "InterestOnly"
}
}
}
Sample Response
The following example is the response returned from the SCE for the request provided at the beginning of the previous section.
{
"Result" : 200,
"Module" : "Construction",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Results" : {
"Payment" : "100000.00"
},
"FedBox" : {
"AmtFin" : "100000.00",
"FinChg" : "2306.25",
"TotPmts" : "102306.25",
"APR" : {
"Value" : "4.509",
"Type" : "Actuarial"
}
},
"Moneys" : {
"Principal" : "100000.00",
"Interest" : "2306.25"
},
"Accrual" : {
"Method" : "Unit Period 360 US Rule",
"Days1Pmt" : "38",
"DayCount" : "Actual",
"Maturity" : "2023-09-01"
},
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "237.50",
"Rate" : "4.500",
"Begin" : "2022-10-01"
},
{
"Term" : "10",
"Pmt" : "187.50",
"Rate" : "4.500",
"Begin" : "2022-11-01"
},
{
"Term" : "1",
"Pmt" : "100193.75",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
],
"AmTable" : {
"GrandTotals" : {
"PmtTot" : "102306.25",
"IntTot" : "2306.25",
"PrinTot" : "100000.00"
},
"SubTotals" : [
{
"Year" : "2022",
"Start" : "1",
"Events" : "3",
"PmtSub" : "612.50",
"IntSub" : "612.50",
"PrinSub" : "0.00"
},
{
"Year" : "2023",
"Start" : "4",
"Events" : "9",
"PmtSub" : "101693.75",
"IntSub" : "1693.75",
"PrinSub" : "100000.00"
}
],
"AmLines" : [
{
"Idx" : "1",
"Date" : "2022-10-01",
"BegBal" : "50000.00",
"Pmt" : "237.50",
"Int" : "237.50",
"Prin" : "0.00",
"EndBal" : "50000.00"
},
{
"Idx" : "2",
"Date" : "2022-11-01",
"BegBal" : "50000.00",
"Pmt" : "187.50",
"Int" : "187.50",
"Prin" : "0.00",
"EndBal" : "50000.00"
},
...,
{
"Idx" : "12",
"Date" : "2023-09-01",
"BegBal" : "100000.00",
"Pmt" : "100193.75",
"Int" : "193.75",
"Prin" : "100000.00",
"EndBal" : "0.00"
}
]
}
}
}
Construction Loan Module - Request
The fields of the Data object supported by a Construction module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹Country,🔹HalfCommitment,🔸IntRate,🔹IntStartDate,🔸LoanDate,🔸PmtDate,🔹PPY,🔸Proceeds,🔸Term,🔹TotalDownObjects:
🟦 Apr,🟦 Fees[],🟦 Format,🟦 ODI,🟦 Settings
The fields of the Data object supported by an Equal Pmt module request are
defined in alphabetical order below:
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
This field allows the calling application to specify a two (2) character or
three (3) digit country code. If none is provided, then a default value of US
will be used. Please see the Countries Appendix for
the list of supported countries and their associated codes.
Specifying the Country will also set the default value for the
APR.Method and
Format.CurrencyDecimals fields, as appropriate for
the country specified.
🔹 Data.HalfCommitment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
During the term of the construction loan, the estimated interest for disclosure
purposes may be either computed on the full or half commitment amounts. By
setting this field to true, interest will be estimated using half of the
initial commitment amount (i.e. the principal balance). The default value of
false will cause interest to be estimated using the entire initial commitment
amount.
🔸 Data.IntRate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
Determine the interest rate used for the loan.
The interest rate should be expressed as a percentage. For example,
a loan computed with a rate of 5.125% would be specified as
"IntRate" : "5.125".
🔹 Data.IntStartDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | same value as LoanDate |
This field contains the date on which interest begins to accrue on the loan's principal balance. If this field is not specified, then the interest start date is set equal the loan date. Also note that the interest start date must be equal to the loan date when computing a construction loan.
The interest start date (when specified) must be on or after the loan date, as well as on or before the first payment date.
🔸 Data.LoanDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field holds the date on which the loan amount is disbursed and interest
begins to accrue. All dates must be in the form of YYYY-MM-DD, and be 10
characters long.
🔸 Data.PmtDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field specifies the first (and for single payment notes, only) payment date
in the loan's repayment schedule. All dates must be in the form of YYYY-MM-DD,
and be 10 characters long.
🔹 Data.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for payments per year, and determines the payment
frequency for the requested loan. The default value of 12 will result in a
loan with 12 payments per year. If you require a loan with a payment frequency
other than monthly, specify it using this field.
🔸 Data.Proceeds
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The proceeds specified indicate the amount of money the borrower is requesting, and does not include financed fees, financed insurances, etc.
🔸 Data.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer > 1 |
The Term field indicates the the number of payments to be made at the
specified payment frequency (see the PPY field above), after
which the loan is scheduled to be paid off.
🔹 Data.TotalDown
| Type | Required | Values |
|---|---|---|
| String | no | Currency > 0 |
This optional field represents the total down payment that the borrower has applied to reduce the requested proceeds. It may consist of a cash down payment, net trade-in value, or rebate. You only need to specify a total down payment if the loan needs to disclose a total sale price. Typical examples of these loan types are auto and boat loans.
🟦 Data.Apr
| Type | Required |
|---|---|
| Object | no |
Settings related to the computed effective rate returned by the SCE (most commonly, the Regulation Z APR in the United States of America) are contained in the fields of this object.
Fields:
🔹MAPR_Max,🔹Method,🔹UseMAPRObjects:
None
🔹 Data.Apr.MAPR_Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 36.0 |
If you are computing the Military APR (see UseMAPR below) and
wish to override the default maximum APR value of 36%, then specify the desired
maximum as the value of this field.
🔹 Data.Apr.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, actuarial, eu, ca, xirr, xirr360, irr | default |
This field allows the calling application to specify an APR calculation
method which will override the default value found in the setup file for the given
Account. If this field is set to a valid value, then the
specified method will be used to compute the APR for this loan calculation.
If the Country field has been set by the calling application and
this field is not set, then the APR method used will be determined by the
specified country. For the United States of America, the default APR method is
actuarial. For a country in the European Union, the default value is
eu (European Union APR). For Canada, the default APR method is
ca (Canadian APR).
The xirr value implements the internal rate of return method as
implemented in Microsoft\textregistered Excel via the XIRR() function,
and is based on an actual day calendar with a 365 day divisor.
The xirr360 value implements the internal rate of return method based
upon a unit period calendar with a 360 day divisor.
The irr value implements a common spreadsheet internal rate of return
method which assumes strict regular periods. Deviating from a strict regular
periodicity may produce unreliable results.
If this field is not specified and the Country field is not
specified, then the value of default will be used which informs the
SCE to use the APR method defined in the setup file for the specified
Account.
🔹 Data.Apr.UseMAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to a value of true, then the SCE will compute the
Military APR in addition to the Regulation Z APR. The
MAPR object will be included in the loan
response.
🟦 Data.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
This array of Fee objects allows the calling application to specify one ore
more Fee objects to be included with the loan.
Fields:
🔹AddToFinChg,🔹AddToPrin,🔹Adjust,🔹CalcType,🔹Entry,🔹IsLoanCost,🔹MAPR,🔹Max,🔹Min,🔹NameObjects:
None
🔹 Data.Fees[].AddToFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this fee should be included in the computed Finance Charge (and hence, affect
the APR), then set this field to true. The default value of false indicates
that the fee does not affect the Finance Charge nor APR.
🔹 Data.Fees[].AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
If this fee should be added to the principal balance (e.g. the fee is financed
along with the advance(s)), then set this field to true. If set to false,
then the fee is paid up front out of the borrower's pocket.
🔹 Data.Fees[].Adjust
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | 0 |
The optional Adjust field allows the calling application
to increase or decrease the base amount on which a fee is calculated.
If a negative value is specified and this adjustment would produce a
negative base amount, then a value of zero is returned for the given fee.
This field has no effect on fees with a CalcType of Dollar.
As an example, in Tennessee you may need to define a financed, non-APR affecting fee to be computed by decreasing the amount financed by $2,000, and then multiplying this reduced amount by 0.115. The way to accomplish this in the SCE is as follows:
{
"Fees" : [
{
"Name" : "TN Fee",
"CalcType" : "OnAmtFin",
"Adjust" : "-2000.00",
"Entry" : "0.115",
"AddToPrin" : true,
"AddToFinChg" : false
}
]
}
🔹 Data.Fees[].CalcType
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Dollar, OnProceeds, OnPrincipal, OnAmtFin | Dollar |
This field specifies how the fee is to be computed, as described in the following table.
| Fee Calc Type | Description |
|---|---|
Dollar | The Entry field is understood as a flat dollar amount. |
OnProceeds | The Entry field is understood as a percentage value, to be applied to the loan's proceeds, defined as the sum of advances. An Entry of 0.25 would represent a fee of 0.25% of the total proceeds. |
OnPrincipal | The Entry field is understood as a percentage value, to be applied to the loan's principal balance. An Entry of 0.125 would represent a fee of 0.125% of the principal balance. |
OnAmtFin | The Entry field is understood as a percentage value, to be applied to the loan's Regulation Z Amount Financed. An Entry of 0.33 would represent a fee of 0.33% of the amount financed. |
🔹 Data.Fees[].Entry
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number >= 0 | 0 |
How this field is interpreted depends upon the Fee.CalcType field.
Please see the documentation for this field for further information.
🔹 Data.Fees[].IsLoanCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When requesting TILA RESPA outputs (via the
Settings.TILARESPA2015 field), the
SCE needs to know which fees need to be considered "borrower paid loan costs",
as defined in the rule. Please note that if the fee is paid by a lender or other
third party, then the fee does not affect the loan calculation and should not be
sent to the SCE. If it is sent, then the value of this field should be set
to false.
🔹 Data.Fees[].MAPR
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If you wish to compute the Military APR, then certain fees may not be considered Regulation Z APR affecting fees, but are considered Military APR affecting fees. In this case, you will need to set the value of this field to true.
Fees which are added to the finance charge (e.g. "AddToFinChg"
: true) are always considered MAPR fees, regardless of the stated value of this
field.
Note that debt protection products are automatically included in the calculation of the Military APR, no matter what method is used for payment (e.g. single premium vs. monthly outstanding balance).
🔹 Data.Fees[].Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then the maximum value will be used instead. If no maximum value is specified or is set to a value of zero, then no maximum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified maximum value is checked after enforcing a specified minimum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Min
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency > 0 | 0 |
If a minimum value for the fee is specified and is greater than zero, then if the computed fee is less than this minimum value, then the minimum value will be used instead. If no minimum value is specified or is set to a value of zero, then no minimum will be enforced. Please note that this field is applied to all fee types supported. Also, note that a specified minimum value is checked before enforcing a specified maximum value, and hence a specified maximum value trumps a specified minimum.
🔹 Data.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
This field is for convenience purposes only, and does not affect the calculation of the fee in any manner. However, the value of this field will be used to identify the fee in the response, and hence it is highly recommended that you name your fees accordingly.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value will be determined by the value of the
Country field. For most countries, the default value is 2.
If no country code is specified, then the default value for this field is 2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
🟦 Data.ODI
| Type | Required |
|---|---|
| Object | no |
If odd days should be treated as a prepaid finance charge or added to the first payment in a manner different from how interest is accruing, then the request needs to define how odd days interest is computed and handled using the fields of this object.
Fields:
🔹AccrualCode,🔹AddToPmt,🔹AddToPrin,🔹AnchorDate,🔹ForceUnitPeriod,🔹NoCap,🔹UseDailyCost,🔹UseNegODIObjects:
None
🔹 Data.ODI.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 204, 205, 210, 211, 220, 221, 230, 231, 250 | default |
The accrual code defines how the odd days interest is computed. The meaning of the allowed accrual codes is defined below.
Note that accrual code 250 ("Variable Days Per Year") defines the basis
divisor days to be equal to 12 multiplied by the number of days in the month of
the date on which interest begins to accrue. Thus, if the interest start date
falls in November, then the number of basis days is 360. If the interest start
date falls in a month with 31 days, then the number of basis days is 372. For an
interest start date in February, the number of basis days will either be 336 or
348, depending upon whether or not it is a leap year.
| Accrual Code | Description |
|---|---|
204 | True360/360 |
205 | True360/365 |
210 | Actual/360 |
211 | True365/360 |
220 | Actual/365 |
221 | True365/365 |
230 | Actual/Actual |
231 | Midnight 366 |
250 | Actual/Variable Days Per Year |
🔹 Data.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the calling application wants the odd days interest to be added to the first
payment, then set the value of this field to true. A value of false
indicates that the odd days interest will be treated as a prepaid finance
charge.
🔹 Data.ODI.AddToPrin
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If any odd days interest should be treated as a financed prepaid fee, then set
the value of this field to true. Note that if both AddToPmt and AddToPrin
are set to true, then a warning message will be returned by the SCE and the
value of AddToPrin will be set to false.
🔹 Data.ODI.AnchorDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | BackUnitPeriod, BackDaysPerPeriod | BackUnitPeriod |
The computed number of odd days is the number of days between the loan date and
the anchor date. This field determines how to arrive at the anchor date. A value
of BackUnitPeriod means that the anchor date is one unit period prior to the
specified first payment date. A value of BackDaysPerPeriod means that the
anchor date is the number of days per period prior to the first payment date.
Please note that for both of these methods, the period used will be that
associated with the payment stream in which the first payment occurs.
🔹 Data.ODI.ForceUnitPeriod
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Some unit period methods will not use a strict unit period interest accrual
factor in the period to the first payment. For example, code 302 will count
the days to the first payment and divide by 365. For a monthly loan, setting
this field to true will use a 1/12 factor instead of Days/365.
🔹 Data.ODI.NoCap
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
When the odd days interest is financed, setting this field to true prevents
interest from being computed on interest. The default is false, which means
interest will be computed on interest.
🔹 Data.ODI.UseDailyCost
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the total odd days prepaid fee is computed by first generating a rounded (to
the nearest penny) daily cost and then multiplying this value by the computed
number of odd days, then set the value of this property to true.
A value of false means that the daily cost is left unrounded, and the total
prepaid fee is rounded after the computation is complete.
🔹 Data.ODI.UseNegODI
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If there are negative odd days in the loan, then the value of this field
determines if a negative odd days interest fee is computed. If the value of this
field is false, then negative odd days fees are not allowed, the SCE will
return a value of zero in this situation, and the computed payment will be
adjusted to take into account the negative odd days. A value of true will
return a negative odd days interest fee (in effect, it then becomes and odd days
interest credit) when there are negative odd days in a loan.
🟦 Data.Settings
| Type | Required |
|---|---|
| Object | no |
The Settings object allows the calling application to alter the default
loan calculation options.
Fields:
🔹Account,🔹AccrualCode,🔹ConAccrual,🔹ConMethod,🔹ConUnitPeriodDivisor,🔹DataPath,🔹Lastday,🔹PmtRound,🔹ShowAmTable,🔹TILARESPA2015,🔹YieldPPYObjects:
None
🔹 Data.Settings.Account
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..9999] | 1 |
The Account field specifies the numeric setup file account number that will be
used to compute the requested loan. Each account is numbered from 1 to 9,999,
and each account corresponds to a set of setup file which define numerous
settings which may affect the loan calculation, such as the accrual method,
insurance methods / rates / caps, etc.
🔹 Data.Settings.AccrualCode
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | see table | default |
The method of interest accrual is defined by this field. A value of default
informs the SCE to use the interest accrual method defined in the setup file for
the specified Account. All other valid accrual codes
are described in the table below.
🔹 Data.Settings.ConAccrual
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, unitperiod, actual360, actual365 | default |
If the loan request is a construction loan where interest is computed using the
Simple method (see Settings.ConMethod), then this
field allows the calling application to specify the simple accrual method used.
A value of default indicates that the accrual method used will be that which
is specified in the setup files for the given account. unitperiod computes
interest on a pure unit period basis, with odd days optionally taken into
account (see Settings.ConUnitPeriodDivisor
field below for more information). actual360 uses an actual day calendar and
divides the day count by 360 to determine the appropriate interest factor.
actual365 does the same thing, but uses a 365 divisor instead.
🔹 Data.Settings.ConMethod
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, simple, interestonly | default |
When computing a construction loan, there are two supported methods for computing interest during the constrcution period:
If the value of this field is simple, then the estimated construction
interets will be computed and disclosed as a lup-sum prepaid fee (see
the Moneys.ConstructInterest
response field).
If the value of this field is interestonly, then the construction and
permanent loans are combined into a single loan, with the construction (and
permanent) loan's interest being reflected in the
Moneys.Interest field, and
both loans reflected in a single, combined amortization schedule.
A value of default instructs the SCE to use the construction method specified
in the setup file for the given account.
🔹 Data.Settings.ConUnitPeriodDivisor
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Ignore, 360, 365, VarDPY | Ignore |
When specifying a Settings.ConAccrual field value of
unitperiod (see above), this field allows the calling application to specify
how odd days between the loan and first payment dates are taken into account.
🔹 Data.Settings.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔹 Data.Settings.Lastday
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | as configured in setup file |
If present, this field overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day accrual calendar where the first payment date falls at the end of a month with fewer than 31 days. As an example, if the first payment date is on April 30, should the following payment dates be made on the 30th of each month, or on the last day of the month?
If no value is specified for this field, then the setup file setting will be
used. If true is specified, then conditions triggering a last day situation
will result in payments which fall at the end of the month. A value of false
indicates that when dictated, subsequent payment dates will not be moved to the
last day of the month.
🔹 Data.Settings.PmtRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | default, nearest, up, down, best | default |
How are calculated payments to be rounded at and beyond this event? best means
to choose the payment that returns a minimal ending balance at the end of
amortization. If two payments result in the same minimal error magnitude, the
smaller payment is chosen. default means that the setting should be configured
as specified in the setup file.
🔹 Data.Settings.ShowAmTable
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
To supress the entire amortization schedule from the response, set value of this
field to false; otherwise, the amortization schedule will be returned with the
response.
🔹 Data.Settings.TILARESPA2015
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will include data for the
Integrated Mortgage Disclosures under the Real Estate Settlement Procedures Act
(Regulation X) and the Truth In Lending Act (Regulation
Z) rule, which is
required as of August 1st, 2015. If the field is omitted or set to false, then
the TILA RESPA outputs will not be generated.
Note that this field is supported for equal payment loans, balloon payment loans, single payment notes, interest only loans, fixed principal plus interest loans, skips, pickups and irregulars, and ARMs.
🔹 Data.Settings.YieldPPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0, 2, 4, 6, 12 | 0 |
Canadian mortgages may compute periodic interest using a fractional power of a periodic yield. If set to a value other than `0', this field determines the period. Please contact us for further information if you support mortgage calculations in Canada. Note that when using this field with a value other than zero, the calling application must include an odd days prepaid fee in the request.
Construction Loan Module - Response
The Data object for a response from the Construction module is defined below,
in the order the fields are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔹CountryObjects:
🟥 Errors[],🟥 Warnings[],🟥 Results,🟦 FedBox,🟦 TILARESPA2015,🟦 Moneys,🟦 Accrual,🟦 PmtStreams[],🟦 AmTable
🔹 Data.Country
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Alpha-2 or Numeric-3 code | US |
If the request specified a two-character or three-digit Country code, then
this field will be present and will contain the full name of the country
associated with the specified code. Please see the Countries
Appendix for the list of supported countries and their
associated codes.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Construction",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "Construction",
"Data" : {
"Errors" : [
"Data.LoanDate (StringDate) not found.",
"Data.PmtDate (StringDate) not found.",
"Data.Term (StringInt) not found.",
"Data.IntRate (StringFloat) not found.",
"Data.Proceeds (StringFloat) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟦 Data.Results
| Type | Required |
|---|---|
| Object | no |
This field(s) of this object represent the most important numerical results for the loan request.
Fields:
🔸Payment,Objects:
None
🔸 Data.Results.Payment
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The loan payment is shown here.
🟦 Data.FedBox
| Type | Required |
|---|---|
| Object | no |
This object groups together all fields which contain important numerical information, as defined in the Truth-In-Lending laws (Regulation Z).
Fields:
🔸AmtFin,🔸FinChg,🔸TotPmts,🔹TotalSalePrice
🔸 Data.FedBox.AmtFin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The Regulation Z Amount Financed, which is defined as the amount of credit provided to the borrower or on their behalf.
🔸 Data.FedBox.FinChg
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost the borrower.
🔸 Data.FedBox.TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The amount which the borrower will have paid when the borrower has made all scheduled payments.
🔹 Data.FedBox.TotalSalePrice
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The sum of the total of payments plus the total down payment. Please note that
if no TotalDown field was included in
the request, then this element will not be present.
🟥 Data.FedBox.APR
| Type | Required |
|---|---|
| Object | yes |
The APR object contains fields which return the value and APR method used.
Fields:
🔸Value,🔹Max,🔹MaxExceeded,🔸TypeObjects:
None
🔸 Data.FedBox.APR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed APR, which is the cost of the extension of credit expressed as a yearly rate.
🔹 Data.FedBox.APR.Max
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Number | n/a |
This field returns the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this field will not be present in the response. The value of this field should be displayed as a percentage.
🔹 Data.FedBox.APR.MaxExceeded
| Type | Required | Value | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If a maximum APR is configured in the account's setup files, then the value of this field indicates whether or not the current loan exceeds the maximum APR. If no maximum APR has been specified, then this field will not be present in the response.
🔸 Data.FedBox.APR.Type
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
This field returns the APR method u sed to compute the reported APR.
🟦 Data.FedBox.MAPR
| Type | Required |
|---|---|
| Object | no |
The MAPR (military APR) object is only returned with the response if the value
of the Apr.UseMAPR request field is
true.
Fields:
🔸Value,🔸Advance,🔸Max,🔸MaxExceededObjects:
None
🔸 Data.FedBox.MAPR.Value
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The computed military APR.
🔸 Data.FedBox.MAPR.Advance
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.
🔸 Data.FedBox.MAPR.Max
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
This field holds the maximum Military APR as specified in the input XML (see
Apr.MAPR_Max). If not specified, a default value
of 36% is assumed. The value of this field should be displayed as a percentage.
As an example, for "Max" :"36.000", you would disclose a maximum Military APR
of 36%.
🔸 Data.FedBox.MAPR.MaxExceeded
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
The value of this field indicates whether or not the current loan exceeds the
maximum allowed Military APR. As an example, if the maximum APR has been set to
36% and the Military APR for the returned loan was 37.125%, the MAPR object
would be:
{
"MAPR" : {
"Value" : "37.125",
"Advance" : "1350.00",
"Max" : "36.000",
"MaxExceeded" : true
}
}
🟦 Data.TILARESPA2015
| Type | Required |
|---|---|
| Object | no |
This object contains fields which are of interest to fulfilling the 2015 TILA
RESPA rule. It will only be present if the
Settings.TILARESPA2015
field in the request is set to true.
Fields:
🔸TotalLoanCost,🔸CD_TotPmts,🔸TIPObjects:
🟥 LoanCosts[],🟥 In5Years,🟥 MaxPnIPmt,🟥 MinRate,🟥 MaxRate,🟥 ProjectedPaymentsTable[]
🔸 Data.TILARESPA2015.TotalLoanCost
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
The value of this field is the sum of all borrower paid loan costs. Since all
LoanCost values are rounded dollar amounts, the value of this
element will also be a rounded dollar amount.
🔸 Data.TILARESPA2015.CD_TotPmts
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0.0 |
This field returns the sum of the total of payments, all borrower paid loan costs, and any odd days interest that is prepaid at loan closing. This value should be disclosed on the Closing Disclosure form in the Total of Payments field.
🔸 Data.TILARESPA2015.TIP
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The total interest percentage, rounded to three or fewer decimal places - as required.
🟥 Data.TILARESPA2015.LoanCosts[]
| Type | Required |
|---|---|
| Array of LoanCost Objects | yes |
For every object in the Fees[] array present
in the request which has its
IsLoanCost field set to true (and
hence, is a borrower paid loan cost) and whose amount is greater than zero
(except odd days interest fee types, as explained in the previous documentation
of the Fee and object), there will be a
corresponding LoanCost object.
Fields:
🔹Name,🔹In5Years,🔸ValueObjects:
None
🔹 Data.TILARESPA2015.LoanCosts[].Name
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Text | n/a |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔹 Data.TILARESPA2015.LoanCosts[].In5Years
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0 | Same as Value |
If the entire amount of the fee is different from the amount collected over the first five years (for example, a service charge), then this field will be present and disclose the portion of this loan coast that is accrued during the first five years.
🔸 Data.TILARESPA2015.LoanCosts[].Value
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field is the numerical value of the fee, rounded to the nearest dollar.
🟥 Data.TILARESPA2015.In5Years
| Type | Required |
|---|---|
| Object | yes |
This object contains all important values required for the new "In 5 Years" section of the disclosure.
Fields:
🔸PaidTotal,🔸PaidPrincipalObjects:
None
🔸 Data.TILARESPA2015.In5Years.PaidTotal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds the sum of all "principal, interest, mortgage insurance, and borrower paid loan costs scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🔸 Data.TILARESPA2015.In5Years.PaidPrincipal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
This field holds "the principal scheduled to be paid through the end of the 60th month after the due date of the first periodic payment". Note that this value is rounded to the nearest whole dollar.
🟥 Data.TILARESPA2015.MaxPnIPmt
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold the maximum sceduled principal and interest payment during the term of the loan, as well as the date on which that payment is made.
Objects:
None
🔸 Data.TILARESPA2015.MaxPnIPmt.Date
| Type | Required | Value |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field returns the date on which the maximum scheduled principal and interest payment is made. If the maximum scheduled payment occurs more than once, then the date returned is that of the first instance.
🔸 Data.TILARESPA2015.MaxPnIPmt.Amount
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The maximum sceduled principal and interest payment during the term of the loan.
🟥 Data.TILARESPA2015.MinRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the minimum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MinRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the minimum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MinRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the minimum rate is first applicable.
🟥 Data.TILARESPA2015.MaxRate
| Type | Required |
|---|---|
| Object | yes |
The fields of this object hold information regarding the maximum possible interest rate applied during the term of the loan.
Objects:
None
🔸 Data.TILARESPA2015.MaxRate.Rate
| Type | Required | Value |
|---|---|---|
| String | yes | Number |
The value of the maximum interest rate applied during the term of the loan.
🔸 Data.TILARESPA2015.MaxRate.Idx
| Type | Required | Value |
|---|---|---|
| String | yes | Integer > 0 |
This field returns the payment number for which the maximum rate is first applicable.
🟥 Data.TILARESPA2015.ProjectedPaymentsTable[]
| Type | Required |
|---|---|
Array of PPCol Objects | yes |
Fields:
🔸Num,🔸Title,🔸YearStart,🔸YearEnd,🔸PnIPmtMin,🔸PnIPmtMax,🔸IntOnly,🔸Balloon,🔸MIPmt,🔸TotalPmtMin,🔸TotalPmtMaxObjects:
None
This field returns an Array of projected payment table columns (PPCol), with
each array member detailing a single column. Per the regulation, there will be a
minimum of one column and a maximum of four columns, depending upon the
parameters of the loan.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Num
| Type | Required | Value |
|---|---|---|
| String | yes | Integer in [1...4] |
The value of this field identifies the number of the column to which the following fields apply. The value will be from 1 to 4.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Title
| Type | Required | Value |
|---|---|---|
| String | yes | Text |
The value of this field is the title for the column. Most of the time, it will
be in the form of Years X - Y, or Year X, or Final Payment in the case of
a final balloon payment.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearStart
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The beginning year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].YearEnd
| Type | Required | Value |
|---|---|---|
| String | yes | Integer |
The ending year number for which this column data applies.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The minimum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].PnIPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The maximum principal and interest payment for this column.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].IntOnly
| Type | Required | Value |
|---|---|---|
| String | yes | none, some, all |
If none of the payments associated with this column are interest only payments,
then the value of this field will be none. A value of some means that some
of the payments (but not all) associated with this columnt are interest only.
Finally, a value of all indicates that all payments associated with this
columnt are interest only.
Note that for the purposes of this field, a scheduled payment is considered an interest only payment if the payment amount pays off all interest due at the time of the payment, with no reduction in the principal balance.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].Balloon
| Type | Required | Value |
|---|---|---|
| Boolean | yes | true, false |
If any of the payments associated with this column are balloon payments (e.g.
isolated payments that are more than twice the value of a regular periodic
payment), then the value of this field will be true.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].MIPmt
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
The value of this field holds the mortgage insurance premium associated with this column, rounded to the nearest dollar. If no mortgage insurance is present or coverage has been dropped, a value of zero will be present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMin
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the minimum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🔸 Data.TILARESPA2015.ProjectedPaymentsTable[].TotalPmtMax
| Type | Required | Value |
|---|---|---|
| String | yes | Currency > 0 |
This field returns the maximum estimated total payment for this column. Note that this value does not include any estimated escrow, as the SCE does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.
🟦 Data.Moneys
| Type | Required |
|---|---|
| Object | no |
This element groups together those other major cash result amounts not disclosed
under the FedBox object, such as the principal balance, interest charge,
and fee amounts.
Fields:
🔸Principal,🔸Interest,🔹FinFees,🔹Prepaid,🔹PocketFees,🔹MAPRFees,🔹MinIntChgAdj,🔹MinFinChgAdj
🔸 Data.Moneys.Principal
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance is the amount on which interest is accrued. The principal balance consists of all advances requested by the borrower, as well as any fees and/or protection products which are financed.
🔸 Data.Moneys.Interest
| Type | Required | Value |
|---|---|---|
| String | yes | Currency |
This value of this field holds the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.
🔹 Data.Moneys.FinFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field contains the sum of all fees having AddToPrin
set to true and occuring on the date of an advance. If this
value is zero, the field will not appear in the response.
🔹 Data.Moneys.Prepaid
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field represents all prepaid finance charges and contains the sum of all
fees occurring on an advance and having AddToFinChg
set to true. If this value is zero, the field will not be found in the response.
🔹 Data.Moneys.PocketFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are neither financed, nor added to the finance charge. In essence, they are paid out of the borrower's pocket. If no out of pocket fees were requested, then this field will not show up in the response.
🔹 Data.Moneys.MAPRFees
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
This field holds the sum of all fees which are Military APR fees (including protection products), and will only appear if the Military APR has been requested.
🔹 Data.Moneys.MinIntChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum interest charge is configured in the account's setup files and the final payment was adjusted to meet this minimum interest charge, then this field will be returned in the response and will contain the value of the minimum interest charge adjustment.
🔹 Data.Moneys.MinFinChgAdj
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | 0 |
If a minimum finance charge is configured in the account's setup files and the final payment was adjusted to meet this minimum finance charge, then this field will be returned in the response and will contain the value of the minimum finance charge adjustment.
🟦 Data.Moneys.ODI
| Type | Required |
|---|---|
| Object | no |
This object, if present, contains information regarding odd days interest. If no odd days interest was requested, then this object will not be present in the response.
Fields:
🔹AddToPmt,🔸Count,🔸Fee,🔹Months,🔹DailyCostObjects:
None
🔹 Data.Moneys.ODI.AddToPmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | n/a |
If the odd days interest has been added to the first payment, then this field
will be present in the response with a value of true. If the odd days interest
has been treated as a prepaid finance charge, then this field will not be
present and a default value of false should be assumed.
🔸 Data.Moneys.ODI.Count
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
Discloses the number of odd days computed by the SCE for the requested loan.
🔸 Data.Moneys.ODI.Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the total amount odd days interest charge.
🔹 Data.Moneys.ODI.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field holds the number of odd months computed by the SCE for the requested
loan when using odd days accrual method 250. If the odd days accrual method is
a value other than 250, then this field will not be present in the ODI
object of the response.
🔹 Data.Moneys.ODI.DailyCost
| Type | Required | Value | Default |
|---|---|---|---|
| String | no | Currency >= 0.0 | n/a |
If the odd days interest fee is computed using a rounded daily cost, then the value of this field will hold that value. If the odd days interest is not computed using a rounded daily cost, then this field will not be present in the response.
🟦 Data.Moneys.Fees[]
| Type | Required |
|---|---|
| Array of Fee Objects | no |
If the requested loan included fees, then for each fee in the loan there will be a Fee object in this array containing the name of the fee and the computed fee amount.
If there were no fees requested with the loan, then the Moneys.Fees[] array
will not be included in the response.
Objects:
None
🔹 Data.Moneys.Fees[].Name
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | empty |
If a name was provided for the fee, then it will be included here in the disclosure for identification purposes.
🔸 Data.Moneys.Fees[].Fee
| Type | Required | Value |
|---|---|---|
| String | yes | Currency >= 0 |
Discloses the computed fee amount.
🟦 Data.Accrual
| Type | Required |
|---|---|
| Object | no |
This object groups together interest accrual information, such as the accrual method(s) used, days to the first payment and the loan's maturity date.
Fields:
🔸Method,🔸Days1Pmt,🔸DayCount,🔸MaturityObjects:
None
🔸 Data.Accrual.Method
| Type | Required | Values |
|---|---|---|
| String | yes | Text |
The Method field contains a textual description of the interest accrual method
used to compute the loan (e.g. "Unit Period 365 Simple".)
🔸 Data.Accrual.Days1Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field contains the number of days between the date of the first
advance and the date of first payment, computed by one of two
methods as specified in by Accrual.DayCount (below).
🔸 Data.Accrual.DayCount
| Type | Required | Values |
|---|---|---|
| String | yes | True360, Actual |
This field specifies the method used to compute the number of days from the date
of the first advance until the first payment date. Actual means that the
actual number of days between these two dates are used, whereas the True360
method use a 360 day calendar.
🔸 Data.Accrual.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
Holds the maturity date of the loan, which is the date on which the last
payment is scheduled. All dates are in the form of YYYY-MM-DD, and must
be 10 characters long.
🟦 Data.PmtStreams[]
| Type | Required |
|---|---|
| Object | no |
The PmtStreams[] array is made up of one or more PmtStream objects (there
will always be at least one of these elements, and there may be more than one
depending upon the loan type). The PmtStream objects describe the scheduled
stream of payments for the computed loan. Instead of disclosing each and every
payment individually (which can be done with the AmTable object),
the payment stream groups together consecutive equal payments at the same
interest rate to produce output along the lines of:
{
"PmtStreams" : [
{
"Term" : "1",
"Pmt" : "10062.59",
"Rate" : "4.500",
"Begin" : "2023-09-01"
}
]
}
Each object describes a single stream of equal payments at the same interest rate, using the following fields to define the important properties of each payment stream.
Fields:
🔸Term,🔸Pmt,🔸Rate,🔸BeginObjects:
Note
🔸 Data.PmtStreams[].Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The Term field holds the number of payments that make up the given payment
stream.
🔸 Data.PmtStreams[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
The Pmt field holds the computed payment amount for this payment stream.
🔹 Data.PmtStreams[].Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number |
Contains the interest rate used for the duration of this payment stream. If this payment stream accrued interest using split-rate tiers, then this field will not be returned.
🔸 Data.PmtStreams[].Begin
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field identifies the date on which the first payment for this given payment
stream is scheduled to be made. All dates are in the form of YYYY-MM-DD, and
must be 10 characters long.
🟦 Data.AmTable
| Type | Required |
|---|---|
| Object | no |
This object contains fields which summarize and describe the loan's amortization
schedule. If
Settings.ShowAmTable is set
to false, then this object will not be found in the response.
Fields:
🔹Months,🔹Weeks,🔹OddDaysObjects:
🟦 GrandTotals,🟦 SubTotals[],🟥 AmLines[]
🔹 Data.AmTable.AvgBal
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the average balance of the loan used in the Canadian APR calculation.
🔹 Data.AmTable.Months
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of months in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.Weeks
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the whole number of weeks in the term of the loan used in the Canadian APR calculation. Note that the term is expressed in monthly or weekly units, but never both.
🔹 Data.AmTable.OddDays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 0 | n/a |
This field will only appear if a Canadian APR is disclosed for the computed loan. The value of this field is the number of odd days in the term of the loan used in the Canadian APR calculation. Odd days are computed by moving backwards from the maturity date the number of disclosed months or weeks, and then counting the additional number of days required to land on the loan date.
🟦 Data.AmTable.GrandTotals
| Type | Required |
|---|---|
| Object | no |
This object describes the total amounts of various categories throughout the life of the loan. As an example, the total amount paid to interest and principal, as well as the total of payments are all contained in fields of this object.
Fields:
🔸PmtTot,🔸IntTot,🔸PrinTot,🔹CLTot,🔹AHTot,🔹IUTotObjects:
None
🔸 Data.AmTable.GrandTotals.PmtTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total of payments scheduled for the computed loan.
🔸 Data.AmTable.GrandTotals.IntTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total amount paid to interest over the life of the loan, assuming all payments are made as scheduled.
🔸 Data.AmTable.GrandTotals.PrinTot
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.
🔹 Data.AmTable.GrandTotals.CLTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLTot field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life over the duration of the loan.
🔹 Data.AmTable.GrandTotals.AHTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHTot field will only appear on loans with certain types of disability or
debt protection products, such as those based on a monthly outstanding balance.
It contains the total amount paid for this protection over the duration of the
loan.
🔹 Data.AmTable.GrandTotals.IUTot
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IUTot field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection over the duration
of the loan.
🟦 Data.AmTable.SubTotals[]
| Type | Required |
|---|---|
| Array of SubTotal Objects | no |
Describes the total amounts of various categories paid during a given calendar year.
For each year in which the computed loan has scheduled payments, there will be
a SubTotal object in the array.
Fields:
🔸Year,🔸Start,🔸Events,🔸PmtSub,🔸IntSub,🔸PrinSub,🔹CLSub,🔹AHSub,🔹IUSubObjects:
None
🔸 Data.AmTable.SubTotals[].Year
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The calendar year for which the subtotal data is applicable.
🔸 Data.AmTable.SubTotals[].Start
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the first amortization event which falls in the specified
calendar year. To find the AmLines[] object which corresponds to
this value, match the Idx field of the AmLine
object.
🔸 Data.AmTable.SubTotals[].Events
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
This field defines the number of amortization events which belong to this calendar year.
🔸 Data.AmTable.SubTotals[].PmtSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total of payments scheduled for the calendar year.
🔸 Data.AmTable.SubTotals[].IntSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Holds the total amount paid to interest over the calendar year, assuming all payments are made as scheduled.
🔸 Data.AmTable.SubTotals[].PrinSub
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
Contains the total amount paid to principal during the calendar year, assuming all payments are made as scheduled.
🔹 Data.AmTable.SubTotals[].CLSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CLSub field will only appear on loans with certain types of life
protection products, such as those based on a monthly outstanding balance. It
contains the total amount paid for life during the year.
🔹 Data.AmTable.SubTotals[].AHSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AHSub field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for this protection during the year.
🔹 Data.AmTable.SubTotals[].IUSub
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IUSub field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the total amount paid for involuntary unemployment during
the year.
🟥 Data.AmTable.AmLines[]
| Type | Required |
|---|---|
| Array of AmLine Objects | yes |
There is one AmLine object for each amortization event which occurs during
the life of a loan. Most of the time, each event will describe a payment, and
detail how that payment is applied (to interest, principal, loan protection
products, etc.). Some events, such as capitalizing interest, will not have
payments but will show how the loan amortizes.
Fields:
🔸Idx,🔸Date,🔸BegBal,🔸Pmt,🔸Int,🔸Prin,🔹CL,🔹AH,🔹IU,🔹UnpaidInt,🔸EndBalObjects:
None
🔸 Data.AmTable.AmLines[].Idx
| Type | Required | Values |
|---|---|---|
| String | yes | Integer >= 0 |
The index of the amortization event, which is either the payment number, or zero. A value of zero designates an event that is either not a payment or is a skipped payment.
🔸 Data.AmTable.AmLines[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the amortization event is scheduled to occur. All dates are in
the form of YYYY-MM-DD, and must be 10 characters long.
🔸 AmData.AmTable.AmLines[]ine.BegBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The principal balance before the amortization event occurs.
🔸 Data.AmTable.AmLines[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The payment amount for this event.
🔸 Data.AmTable.AmLines[].Int
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of interest paid at this event.
🔸 Data.AmTable.AmLines[].Prin
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of principal paid at this event.
🔹 Data.AmTable.AmLines[].CL
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The CL field will only appear on loans with certain types of life protection
products, such as those based on a monthly outstanding balance. It contains the
amount of the payment which is marked for life coverage.
🔹 Data.AmTable.AmLines[].AH
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The AH field will only appear on loans with certain types of accident and
health or debt protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for disability /
debt protection coverage.
🔹 Data.AmTable.AmLines[].IU
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The IU field will only appear on loans with certain types of involuntary
unemployment protection products, such as those based on a monthly outstanding
balance. It contains the amount of the payment which is marked for this
coverage.
🔹 Data.AmTable.AmLines[].UnpaidInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
This field will only appear on an amortization line when interest has been accrued, but has not yet been paid or added to the principal balance. If the interest accrued has not yet been rounded, then the unpaid interest will be displayed to four (4) decimal placed. If rounded, then the unpaid interest is displayed to two (2) decimal places.
🔸 Data.AmTable.AmLines[].EndBal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The principal balance amount, after the amortization event has taken place.
Apr Verification and Calculation Module
If a loan is computed outside of the SCE and does not provide the Regulation Z / EU APR, or if you wish to validate a computed APR, then the APR Verification and Calculation functionality found in the SCE and described here will be of interest to you. The SCE supports APR calculation and verification for loans with a single advance, as well as multiple advance loans. For the United States of America, all references to Appendix J of Regulation Z are put in italics at the end of the field's description. For example, Section (a)(1) refers to Appendix J, Section a, Subsection 1 of Regulation Z.
Sample Request
The following is a sample SCE request for an APR check calculation with an Amount Financed of $10,000, and 36 monthly payments of $322.67.
{
"Module" : "Apr",
"Data" : {
"TestApr" : "10.125",
"TestFinChg" : "1616.12",
"TestTotPmt" : "11616.12",
"Advances" : [
{
"Date" : "2022-03-16",
"AmtFin" : "10000.00"
}
],
"PmtStreams" : [
{
"Begin" : "2022-04-16",
"Term" : "36",
"Pmt" : "322.67"
}
]
}
}
Sample Response
{
"Result" : 200,
"Module" : "Apr",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Apr" : {
"Value" : "10.000",
"Method" : "Actuarial",
"UnitPeriod" : "1_Month",
"UnitPeriodBase" : "Month",
"UnitPeriodMult" : "1",
"PeriodsPerYear" : "12"
},
"TestResults" : {
"Apr" : {
"LoanType" : "Regular",
"MultAdv" : false,
"IrregPeriod" : false,
"IrregPmt" : false,
"Value" : "10.000",
"TestValue" : "10.125",
"Difference" : "0.125",
"Tolerance" : "0.125",
"InCompliance" : true,
"OnCusp" : true
},
"FinChg" : {
"Value" : "1616.12",
"TestValue" : "1616.12",
"Difference" : "0.00"
},
"TotPmt" : {
"Value" : "11616.12",
"TestValue" : "11616.12",
"Difference" : "0.00"
}
},
"Loan" : {
"TransactionDate" : "2022-03-16",
"AmountFinanced" : "10000.00",
"NumAdvances" : "1",
"AdvPresVal" : "10000.00",
"FinChg" : "1616.12",
"TotPmt" : "11616.12",
"NumPmts" : "36",
"TotPmtPresVal" : "9999.942"
},
"AmTable" : {
"Error" : "0.058",
"ErrorDown" : "-0.0875",
"ErrorUp" : "0.2035",
"AmLines" : [
{
"Idx" : "0",
"Date" : "2022-03-16",
"Unit" : "0",
"Frac" : "0",
"Adv" : "10000.00",
"PresVal" : "10000.00",
"PresValSum" : "10000.00"
},
{
"Idx" : "1",
"Date" : "2022-04-16",
"Unit" : "1",
"Frac" : "0",
"Pmt" : "322.67",
"PresVal" : "320.0033",
"PresValSum" : "9679.9967"
},
...
]
}
}
}
Apr Module - Request
The fields of the Data object supported by the Apr module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹Decimals,🔹Method,🔹TestApr,🔹TestFinChg,🔹TestTotPmt,🔹TransactionDateObjects:
🟦 ActuarialOpts,🟦 AmTableOpts,🟥 Advances[],🟦 Construction,🟦 PmtStreams[],🟦 Premiums[],🟦 UnitPeriod,🟦 UsRuleOpts
🔹 Data.Decimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..5] | Text - See below |
The number of decimal places of accuracy for the disclosed APR is determined by
this field. The default value of this field depends upon the selected Method.
For all methods other than EU_APR, the default value is 3. For EU_APR, the
default value is 1.
🔹 Data.Method
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Actuarial, USRUle, EU_APR, IRR, YieldIRR, XIRR, XIRR360 | Actuarial |
In the United States of American, Regulation Z allows for APRs to be
computed using two different methods: the actuarial method (Actuarial)
or the US Rule method (USRule). In the European Union, there
is a different method used (EU_APR) to compute the APR. The
SCE also supports the calculation of the internal rate of return as
defined by Microsoft® Excel's XIRR() function (XIRR),
as well as the internal rate of return based upon a unit period 360 days
calendar (XIRR360). The IRR method implements a common
spreadsheet internal rate of return method which assumes strict regular
periods. Deviating from a strict regular periodicity may produce
unreliable results. The YieldIRR method is similar to the
IRR method, except the rate is converted to an annual yield
equivalent, according to the payment frequency.
Use this field to specify the method used to compute the APR. If
a value of USRule is specified, make sure to include the
USRule object as appropriate.
🔹 Data.TestApr
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600.000] | n/a |
The SCE will compute an APR for the given loan, then compare the APR it has computed against this value. The difference between the computed and test APRs will be compared. The SCE will inform the calling application whether or not the provided APR is within compliance. If you do not have a test APR to compare, omit this field. The test APR should be expressed as a percentage.
🔹 Data.TestFinChg
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | n/a |
If this field is present and contains a value greater than zero, then the SCE will compute the Regulation Z Finance Charge for the given loan and compare it to the value specified in this field. The magnitude of the difference between the computed and test values will be returned in the response.
If this field is not present, or if it is present but contains a value less than or equal to zero, then the Finance Charge will not be returned in the response.
🔹 Data.TestTotPmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | n/a |
If this field is present and contains a value greater than zero, then the SCE will compute the Regulation Z Total of Payments for the given loan and compare it to the value specified in this field. The magnitude of the difference between the computed and test values will be returned in the response.
If this field is not present, or if it is present but contains a value less than
or equal to zero, then the Total of Payments is still returned in the results,
however no Difference or TestValue fields will be present.
🔹 Data.TransactionDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | YYYY-MM-DD | Date of earliest Advance |
The transaction date is generally the date of the earliet Advance.
If, for instance, the finance charge begins beyond the date of the first
advance, use this element to define the date the finance charge begins.
See Section (b)(2) Term of the Transaction.
🟦 Data.ActuarialOpts
| Type | Required |
|---|---|
| Object | no |
This object is only considered if the APR Method specified is
Actuarial.
Fields:
🔹ForceSemiMonth,🔹ODI,🔹SemiMonthlyFixedFraction,🔹SinglePayFractionObjects:
None
🔹 Data.ActuarialOpts.ForceSemiMonth
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
The SCE strictly defines a semimonthly unit period as a majority of periods that
have "every other payment a month apart and 15 days between payments" as the
most common period of time. Since Appendix J loosely defines what a semimonthly
period is and a reasonable use of the APR Tool application would allow a looser
definition, the SCE now allows for overriding the strict definition with, for
example, payments on the 1st and 15th being classified as having a unit period
of Semimonth. If an institution wishes a looser definition of semimonth, this
setting should be set to true. Otherwise, the strict rule applies.
🔹 Data.ActuarialOpts.ODI
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Loans that have used an odd days interest prepaid charge, common with mortgage
loans, may use this field to adjust the APR to assume one unit period to the
first payment. Otherwise, choose false.
🔹 Data.ActuarialOpts.SemiMonthlyFixedFraction
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field reflects an unintended consequence of Appendix J to Regulation Z's
characterization of the fraction of a unit period for semimonthly loans.
Applying the rules of Appendix J strictly to each payment in the payment stream
results in an oscillating fraction of a unit period. For a constant fraction of
a unit period, choose true. To apply the Federal Calendar to each payment,
choose false. The latter should typically be selected with an irregular loan.
See Section (b)(5)(iii).
🔹 Data.ActuarialOpts.SinglePayFraction
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | InDays, InMonths | InDays |
This field only applies to single advance, single payment transactions of term
less than one year. For these loans, when the term of the loan is a number of
months, Appendix J allows for the term of the loan to be expressed as either a
number of months over twelve, or the number of actual 24-hour days in the loan
over 365. For the former, use InMonths. For the latter, use InDays.
🟦 Data.AmTableOpts
| Type | Required |
|---|---|
| Object | no |
The fiedls of this object allow the calculation and disclosure of the APR to be adjusted in rarely-needed ways.
Fields:
🔹DollarDec,🔹ForceDay🔹RoundIntObjects:
None
🔹 Data.AmTableOpts.DollarDec
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [3..9] | 4 |
Currency amounts within lines of the amortization schedule are disclosed as full
floating numbers, which can produce long lines of amortization in the
disclosure. The number of decimals for currency quantities may be trimmed to the
number of decimal places indicated by this field. Note that this number does
not affect the calculation. It merely affects to what number of decimals places
to which the floating point number is disclosed. 9 means "do not trim".
🔹 Data.AmTableOpts.ForceDay
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0, 29, 30, 31 | 0 |
End of month considerations may require that a payment's day was intended to be
another day. For instance, if payments were intended to be made on the end of
the month, and the first payment is in April, making this setting 31 causes
the fed calendar to compute time as if the day of the payment was 31, rather
than 30.
🔹 Data.AmTableOpts.RoundInt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | None, Down, Nearest, Up | None |
If interest is rounded within the amortization schedule for US Rule APRs, set the rounding method here.
🟥 Data.Advances[]
| Type | Required |
|---|---|
| array of Advance Objects | yes |
This array of Advance objects must have at least one member, and is used to
specify the advances made to the borrower. The amount of each advance is equal
to the total amount earning interest less any prepaid fees. One may think of
these entries as streams of Amounts Financed (in the RegulationZ sense).
Fields:
🔸AmtFin,🔸Date,🔹LastDay,🔹PPY,🔹TermObjects:
None
🔸 Data.Advances[].AmtFin
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The proceeds to be advanced to the borrower less any prepaid fees for each of
the Term advances is defined using this field.
🔸 Data.Advances[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field's value holds the date on which the advance is made. All dates must
be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an advance date
of January 2, 2021 would be specified as "Date" : "2021-01-02".
🔹 Data.Advances[].LastDay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field is used to resolve ambiguitiess in subsequent advance dates when the
Date falls on the last day of a month with fewer than 31 days. If the value of
the Term field is 1, then the value of this field is ignored.
Set this field's value to true if the intent was to make subsequent advances
occur on the last day of the month. A value of false indicates that subsequent
advance dates will fall on the day number specified by the Date field.
🔹 Data.Advances[].PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for "payments per year", and in the case of the Advance
object, determines the frequency for the advance stream. If the value of the Term
field is 1, then this field is ignored.
🔹 Data.Advances[].Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer | 1 |
The Term field determines the the number of advances to be included at the
specified frequency (see Advance.PPY above), after which the advance stream is
completed. The default value is 1.
🟦 Data.Construction
| Type | Required |
|---|---|
| Object | no |
Loans which have a construction period require data to be passed using this object. All of the information used to define the construction period is contained in the following fields of the object:
Fields:
🔹AsPrepaid,🔸EndDate,🔹HalfCommitment,🔸Interest,🔸PermanentAttached,🔹PrepaidObjects:
None
🔹 Data.Construction.AsPrepaid
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field is only applicable when the PermanentAttached field is true. If
the permanent loan treats the construction interest as a prepaid finance fee,
then set the value of this field to true.
On the other had, if the construction interest is not treated as a prepaid
finance fee and is instead included as a stream of interest only payments during
the construction period, then set the value of this field to false.
🔸 Data.Construction.EndDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date on which the construction period terminates.
All dates must be in the form of "YYYY-MM-DD", and be 10 characters long.
Hence, to end the construction period on July 4, 2021, the field would be
specified as "EndDate" : "2021-07-04".
🔹 Data.Construction.HalfCommitment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
During the construction period, if estimated interest is disclosed based
upon half of the commitment amount, then set the value of this field to true.
If interest is due on the entire commitment amount during the construction
period, then set this value to false. Multiple advance construction loans are
computed with this field set as true.
🔸 Data.Construction.Interest
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total amount of construction interest.
🔸 Data.Construction.PermanentAttached
| Type | Required | Values |
|---|---|---|
| Boolean | true | true, false |
Construction loans may be computed on their own, or they may be attached to a
permanent loan which begins at the conclusion of the construction loan. If a
permanent loan is attached to the construction loan, then set this field's
value to true. If no permanent loan is attached to the construction loan,
then set the field's value to false.
🔹 Data.Construction.Prepaid
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency | 0 |
This field holds the total prepaid charge for points and fees, excluding
construction interest. This field need only be specified when the
PermanentAttached field is false.
🟦 Data.PmtStreams[]
| Type | Required |
|---|---|
| array of PmtStream Objects | yes |
One or more PmtStream objects are required to specify the loan's
payment stream. For an equal payment loan, a single payment stream element is
all that is required. For a balloon payment stream, you will need two. For
highly irregular loans (skips, pickups, interest only, etc.) you will need
many. All necessary data for each payment stream is contained in the object's
fields, which are described below.
Fields:
🔸Begin,🔹LastDay,🔸Pmt,🔹PPY,🔹SemimonthlyDay,🔹TermObjects:
None
🔸 Data.PmtStreams[].Begin
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the date on which this payment stream begins. All dates must be in the form of YYYY-MM-DD, and be 10 characters long.
🔹 Data.PmtStreams[].LastDay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
This field is used to resolve ambiguitiess in subsequent payment
dates when the Begin date falls on the last day of a month
with fewer than 31 days. If the value of the Begin field
is not a valid date, then the value of this field is ignored.
Set this field's value to true if the intent was to make
subsequent payments occur on the last day of the month. A value of
false indicates that subsequent payment dates will fall on the
day number specified by Begin.
As an example, if the calling application specifies a Begin
of `2010-02-281, then subsequent payment dates for a monthly
payment frequency will be:
- on the 28th of each subsequent month if
"LastDay" : false. - on the last day of each subsequent month if
"LastDay : true.
🔸 Data.PmtStreams[].Pmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field defines the principal and interest portion of the payment for
each of the Term payments. If the total payment includes any
protection products such as MOB life or debt protection fees, then these
amounts must be removed as they are not a part of the principal and interest
portion of the payment.
🔹 Data.PmtStreams[].PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for "payments per year", and as one might surmise,
determines the payment frequency for the payment stream. If the value of
the Date field is not a valid date, then the value of this
field is ignored.
🔹 Data.PmtStreams[].SemimonthlyDay
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [0..31] | 0 |
When specifying a semimonthly payment stream, the day number on which the first
payment is made determines the day number for all of the following odd numbered
payments. If you omit this field or specify a value of 0, then the even
numbered payments will be generated using the default method within the SCE.
If you wish to specify the day number on which even numbered payments fall
(overriding the default method used in the SCE), then set the value of this
field to the desired day number. Setting the value of this field
to 31 will cause all even payments to fall on the last day of the month.
As an example, if you want to specify a semi-monthly payment stream beginning on January 1, 2019 with payments that fall on the 1st and 15th of each month for 24 payments, the object should look something like this:
{
"PmtStreams" : [
{
"Begin" : "2019-01-01",
"Term" : "24",
"PPY" : "24",
"SemimonthlyDay" : "15"
}
]
}
🔹 Data.PmtStreams[].Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 1 | 1 |
The term field indicates the the number of payments to be made at the
specified payment frequency (see PmtStream.PPY above),
after which the payment stream is completed. The default value is 1. If the
value of the PmtStream.Begin field is not a valid date,
then the value of this field is ignored, unless it is a replacement payment
using the NNNN-00-00 date format.
🟦 Data.Premiums[]
| Type | Required |
|---|---|
| array of Premium Objects | no |
Fields:
🔸Date,🔹Freq,🔹LastDay,🔸Prem,🔹TermObjects:
None
Only loans that have premiums occurring on dates not equal to the payment dates should use this element for expressing the premium. In the case of TruStage, for example, premiums are paid monthly on the same day of the month, regardless of when payments are made. In this case, please use the Premiums array for specifying loan premiums.
🔸 Data.Premiums[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
This field contains the date on which this premium stream begins. All dates must be in the form of YYYY-MM-DD, and be 10 characters long.
🔹 Data.Premiums[].Freq
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12 | 12 |
The frequency of premiums expressed as a number of premiums per year.
🔹 Data.Premiums[].LastDay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
Was the premium intended for the last day of the month?
🔸 Data.Premiums[].Prem
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The Premium amount.
🔹 Data.Premiums[].Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 1 | 1 |
The number of premiums in the stream.
🟦 Data.UnitPeriod
| Type | Required |
|---|---|
| Object | no |
If this object is not present in the request, then the SCE will compute the unit period. Including this element instructs the SCE to use the unit period specified by the calling application.
As an example, if you wanted to specify a biweekly unit period, then you would include the following in the request:
{
"UnitPeriod" : {
"Period" : "Week",
"Multiple" : "2"
}
}
Similarly, if you wanted to specify a quarterly unit period, then you would include the follwing in the request:
{
"UnitPeriod" : {
"Period" : "Month",
"Multiple" : "3"
}
}
Objects:
None
🔹 Data.UnitPeriod.Multiple
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer | 1 |
This field's value defines the integral number of standard unit periods in the defined unit period.
🔹 Data.UnitPeriod.Period
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Day, Week, Month, Year, or Semimonth | n/a |
This field defines the standard unit period. The unit period will be some
integral multiple of this standard unit period, as specified by the Multiple
field above.
🟦 Data.UsRuleOpts
| Type | Required |
|---|---|
| Object | no |
This object is only relevant if the APR Method specified is
UsRule. The fields of this object allow the calling application
to configure the parameters of the US Rule APR calculation.
Fields:
🔹Calendar,🔹CalendarOption,🔹Divisor,🔹PremBeforePmtObjects:
None
🔹 Data.UsRuleOpts.Calendar
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | ActualDay, UnitPeriod, FedCalendar | ActualDay |
Actual day, unit period, and Federal calendars are supported with US Rule interest accrual.
🔹 Data.UsRuleOpts.CalendarOption
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | None, True360, True365, Midnight366 | None |
True360 means that each month is assumed to have 30 days in all respects.
Typically, a loan computes the actual number of days from the Advance to the
first payment to compute the Term Factor to the first payment.
True365 means that February 29th is not allowed, both in counting days and
assessing the days per year divisor.
Midnight366 only applies to Actual/366 calendars, and means that a day is the
time from midnight of one day to midnight of the other. The number of days
between December 19th 2007 and January 19th 2008 would be 13 Days in a 365 year
plus 18 days in a 366 day year, resulting in a Term Factor of 13/365+18/366.
An Actual/366 calculation not using the Midnight366 setting would compute the
term factor as 12/365+19/366.
🔹 Data.UsRuleOpts.Divisor
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 360, 365, 366, PerPeriod, 365_25, VarDPY | 365 |
Choose the divisor, or number by which to divide the day count to produce term factors.
360 means take the computed days to the first payment and divide them by 360
to compute the term factor.
365 means take the computed days to the first payment and divide them by 365.
366 is understood to mean 366 only in a leap year. Any days accruing
interest in a non-leap year use a 365 divisor. This setting may only be used
with ActualDay calendars.
PerPeriod means 360 for monthly and bimonthly periods, 364 for weekly
multiples, Quarterly, and SemiAnnual repayments, and 365 for annual loans.
VarDPY is understood to mean that the computed days to the first payment are
divided by the number of days in the month of the transaction date, multiplied
by twelve.
365_25 means take the computed days to the first payment and divide them by
365.25 to compute the term factor. This setting may only be used with
ActualDay calendars.
🔹 Data.UsRuleOpts.PremBeforePmt
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | true |
Are premiums processed before or after payments? true means premiums are amortized
before payments, false means payments are processed before premiums.
Apr Module - Response
The Data object for a response from the Apr module is defined below, in the
order the fields are returned:
| Object | Fields |
|---|---|
🟥 Data | |
🟥 Errors[] | |
🟥 Warnings[] | |
🟥 Apr | 🔸Value, 🔸Method, 🔹Accrual, 🔹UnitPeriod, 🔹UnitPeriodBase, 🔹UnitPeriodMult, 🔹PeriodsPerYear |
🟦 TestResults | |
🟦 Apr | 🔹LoanType, 🔹MultAdv, 🔹IrregPeriod, 🔹IrregPmt, 🔸Value, 🔸TestValue, 🔸Difference, 🔹Tolerance, 🔹InCompliance, 🔹OnCusp |
🟦 FinChg | 🔸Value, 🔸TestValue, 🔸Difference |
🟦 TotPmt | 🔸Value, 🔸TestValue, 🔸Difference |
🟥 Loan | 🔸TransactionDate, 🔸AmountFinanced, 🔸NumAdvances, 🔹AdvPresBal, 🔸TotPmt, 🔸NumPmts, 🔹TotPmtPresBal |
🟥 AmTable | 🔸Error, 🔸ErrorDown, 🔸ErrorUp |
🟥 AmLines[] | 🔸Idx, 🔸Date, 🔹Adv, 🔹Pmt, 🔹Prem, 🔹Unit, 🔹Frac, 🔹Factor, 🔹PresVal, 🔹PresValSum, 🔹BegBal, 🔹IntPaid, 🔹IntUnPaid, 🔹EndBal |
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
NoneObjects:
🟥 Errors[],🟥 Warnings[],🟥 Apr,🟦 TestResults,🟥 Loan,🟥 AmTable
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Apr",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "Apr",
"Data" : {
"Errors" : [
"Data.Advances[] (Array) not found.",
"Data.PmtStreams[] (Array) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟥 Data.Apr
| Type | Required |
|---|---|
| Object | yes |
Fields:
🔸Value,🔸Method,🔹Accrual,🔹UnitPeriod,🔹UnitPeriodBase,🔹UnitPeriodMult,🔹PeriodsPerYearObjects:
None
The APR data is contained in the fields of this object.
🔸 Data.Apr.Value
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The numeric value of the computed Apr, expressed as a percentage.
🔸 Data.Apr.Method
| Type | Required | Values |
|---|---|---|
| String | yes | Actuarial, USRule, EU_APR, XIRR, XIRR360, IRR, YieldIRR |
This field returns the Apr method used to compute the numeric Apr value.
🔹 Data.Apr.Accrual
| Type | Required | Values |
|---|---|---|
| String | no | Text - See below |
US Rule APR's will disclose the precise method of interest accrual in this element. All of the variation is in regards to "Term factors". All US Rule interest accrual is governed by the following formula: Interest = APR/100 Term Factor Balance. Each accrual method has its own rules for generating these term factors, which represent how many years interest has been accruing.
🔹 Data.Apr.UnitPeriod
| Type | Required | Values |
|---|---|---|
| String | no | Text - See below |
The value in this field concatenates the
Apr.UnitPeriodMult and
Apr.UnitPeriodBase into one value. For instance, when
with "Base : "Month" and "Mult" : "1", this field's value will be is { "UnitPeriod" : "1_Month" }.
This field will only be present when the Apr method is Actuarial, EU, or US Rule with a unit period calendar.
🔹 Data.Apr.UnitPeriodBase
| Type | Required | Values |
|---|---|---|
| String | no | Day, Week, Month, Year |
The Unit Period for Actuarial, EU, and US Rule (using a unit period calendar) APRs have a basic unit of measurement. The value of this field discloses the basic unit of measurement.
This field will only be present when the Apr method is Actuarial, EU, or US Rule with a unit period calendar.
🔹 Data.Apr.UnitPeriodMult
| Type | Required | Values |
|---|---|---|
| String | no | Integer |
The unit multiple composing the Unit Period. For instance, if the unit period
were 6 months, the Base is Month, the Mult is 6.
This field will only be present when the Apr method is Actuarial, EU, or US Rule with a unit period calendar.
🔹 Data.Apr.PeriodsPerYear
| Type | Required | Values |
|---|---|---|
| String | no | Number |
The value of this field holds the number of periods per year.
This field will only be present when the Apr method is Actuarial or US Rule with a unit period calendar.
🟦 Data.TestResults
| Type | Required |
|---|---|
| Object | no |
The TestResults object is present if the calling application has specified one
of the following: (i) TestApr, (ii)
TestFinChg, or (iii)
TestTotPmt. The child fields of this object
descibe the analysis of each of the three possible tests.
Fields:
None
🟦 Data.TestResults.Apr
| Type | Required |
|---|---|
| Object | no |
This object is only present if the request provided a value greater than zero in
for the value of the TestApr field.
Fields:
🔹LoanType,🔹MultAdv,🔹IrregPeriod,🔹IrregPmt,🔸Value,🔸TestValue,🔸Difference,🔹Tolerance,🔹InCompliance,🔹OnCuspObjects:
None
🔹 Data.TestResults.Apr.LoanType
| Type | Required | Values |
|---|---|---|
| String | no | Regular, Irregular |
The LoanType is either Regular or Irregular. All loans are assumed to be
Regular unless they contain multiple advances, an irregular period other than
the first, or an Irregular Payment other than the first or final, all of which
are defined below. Note: Skipped payment loans are irregular loans, because,
though the payments are regular, the periods are not.
This field is only present when the APR method is Actuarial or US Rule.
🔹 Data.TestResults.Apr.MultAdv
| Type | Required | Values |
|---|---|---|
| Boolean | no | true, false |
If a loan has more than one advance, this value of this field will be true;
otherwise, it is false.
This field is only present when the APR method is Actuarial or US Rule.
🔹 Data.TestResults.Apr.IrregPeriod
| Type | Required | Values |
|---|---|---|
| Boolean | no | true, false |
If a loan has an irregular period between payments, this value of this field is
true; otherwise, it is false. An irregular period is any period between
payments not a unit period. (See 12 C.F.R. § 1026.22(a)(3))
This field is only present when the APR method is Actuarial or US Rule.
🔹 Data.TestResults.Apr.IrregPmt
| Type | Required | Values |
|---|---|---|
| Boolean | no | true, false |
If a loan has an irregular payment, this value of this field is true;
otherwise, it is false. First and final payments are not considered in this
assessment. A loan may only have one payment amount from the 2nd through the
N-1st payments. If two or more payment amounts exist for these middle payments,
this field will be true.
This field is only present when the APR method is Actuarial or US Rule.
🔸 Data.TestResults.Apr.Value
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The APR computed by the SCE.
🔸 Data.TestResults.Apr.TestValue
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The APR specified by the request which is to be tested for compliance.
🔸 Data.TestResults.Apr.Difference
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The magnitude of the difference between the test APR and the computed APR.
🔹 Data.TestResults.Apr.Tolerance
| Type | Required | Values |
|---|---|---|
| String | no | Number in [-99.999...600] |
The tolerance permitted by RegZ for the type of loan in question. In the United
States of America, regular loans have a tolerance of 0.125, while irregular
loans have a tolerance of 0.250. See official staff commentary 226.22(a)(1) - (3)
This field is only present when the APR method is Actuarial or US Rule.
🔹 Data.TestResults.Apr.InCompliance
| Type | Required | Values |
|---|---|---|
| Boolean | no | true, false |
This value of this field is true or false depending on whether the
Difference is greater than the
Tolerance or not. If the difference is greater than the
allowed tolerance, this element returns false. Otherwise, the APR is within
compliance and therefore has true returned.
This field is only present when the APR method is Actuarial or US Rule.
🔹 Data.TestResults.Apr.OnCusp
| Type | Required | Values |
|---|---|---|
| Boolean | no | true, false |
If a test apr is exactly equal to the tolerance, the OnCusp field is true;
otherwise, it is false. Though the loan is within compliance, a loan far
enough out of compliance to be on the cusp of acceptability may want to be
flagged for closer scrutiny.
This field is only present when the APR method is Actuarial or US Rule.
🟦 Data.TestResults.FinChg
| Type | Required |
|---|---|
| Object | no |
This object is only present if the request provided a value greater than zero in
for the value of the TestFinChg field.
Fields:
🔸Value,🔸TestValue,🔸DifferenceObjects:
None
🔸 Data.TestResults.FinChg.Value
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The Finance Charge computed by the SCE.
🔸 Data.TestResults.FinChg.TestValue
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The Finance Charge specified by the request which is to be tested for compliance.
🔸 Data.TestResults.FinChg.Difference
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The magnitude of the difference between the test Finance Charge and the computed Finance Charge.
🟦 Data.TestResults.TotPmt
| Type | Required |
|---|---|
| Object | no |
This object is only present if the request provided a value greater than zero in
for the value of the TestTotPmt field.
Fields:
🔸Value,🔸TestValue,🔸DifferenceObjects:
None
🔸 Data.TestResults.TotPmt.Value
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The Total of Payments computed by the SCE.
🔸 Data.TestResults.TotPmt.TestValue
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The Total of Payments specified by the request which is to be tested for compliance.
🔸 Data.TestResults.TotPmt.Difference
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The magnitude of the difference between the test Total of Payments and the computed Total of Payments.
🟥 Data.Loan
| Type | Required |
|---|---|
| Object | yes |
Fields:
🔸TransactionDate,🔸AmountFinanced,🔸NumAdvances,🔹AdvPresBal,🔸TotPmt,🔸NumPmts,🔹TotPmtPresBalObjects:
None
🔸 Data.Loan.TransactionDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The Transaction Date is one of three values, depending on the input: The date
entered as the TransactionDate from
the request, the date of the first advance if the
TransactionDate was omitted, or one
unit period before the first payment in the case of loans with odd days
interest.
🔸 Data.Loan.AmountFinanced
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total amount financed for the loan.
🔸 Data.Loan.NumAdvances
| Type | Required | Values |
|---|---|---|
| String | yes | Integer |
The value of this field represents the number of advances in the specified loan.
🔹 Data.Loan.AdvPresBal
| Type | Required | Values |
|---|---|---|
| String | no | Number - Floating |
The value of this field is the present value of all advances made in the specified loan.
This field is only present when the APR method is Actuarial.
🔸 Data.Loan.TotPmt
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total of all payments made in the requested loan.
🔸 Data.Loan.NumPmts
| Type | Required | Values |
|---|---|---|
| String | yes | Integer |
The value of this field represents the number of payments made in the specified loan.
🔹 Data.Loan.TotPmtPresBal
| Type | Required | Values |
|---|---|---|
| String | no | Number - Floating |
The value of this field is the present value of all payments made in the specified loan.
This field is only present when the APR method is Actuarial.
🟥 Data.AmTable
| Type | Required |
|---|---|
| Object | yes |
This object holds the amortization table as well as important error function results as fields.
Fields:
🔸Error,🔸ErrorDown,🔸ErrorUpObjects:
🟥AmLines
🔸 Data.AmTable.Error
| Type | Required | Values |
|---|---|---|
| String | yes | Number - Floating |
The balance at the end of amortization using the disclosed APR. The correct APR
is the rate which produces the smallest balance after amortization. Therefore,
the magnitude of both ErrorDown and
ErrorUp fields should be greater than the value of this
field.
🔸 Data.AmTable.ErrorDown
| Type | Required | Values |
|---|---|---|
| String | yes | Number - Floating |
The balance at the end of amortization using the disclosed APR less one rate
unit. As an example, if the disclosed APR is 10.000%, then the ErrorDown
field would contain the error after amortizing the loan with a rate of
9.999%.
The magnitude of this value should never be less than the magnitude of the
Error field, because the rate with a minimum error magnitude
defines the correct APR.
🔸 Data.AmTable.ErrorUp
| Type | Required | Values |
|---|---|---|
| String | yes | Number - Floating |
The balance at the end of amortization using the disclosed APR plus one rate
unit. As an example, if the disclosed RegZAPR is 10.000%, then the ErrorUp
field would contain the error after amortizing the loan with a rate of
10.001%.
The magnitude of this value should never be less than the magnitude of the
Error field, because the rate with a minimum error magnitude
defines the correct APR.
🟥 Data.AmTable.AmLines[]
| Type | Required |
|---|---|
| array of AmLine objects | yes |
This field is an array of AmLine objects, which describe each amortization line in the schedule.
Fields:
🔸Idx,🔸Date,🔹Adv,🔹Pmt,🔹Prem,🔹Unit,🔹Frac,🔹Factor,🔹PresVal,🔹PresValSum,🔹BegBal,🔹IntPaid,🔹IntUnPaid,🔹EndBalObjects:
None
🔸 Data.AmTable.AmLines[].Idx
| Type | Required | Values |
|---|---|---|
| String | yes | Integer |
The index of the amortization event, starting with zero.
🔸 Data.AmTable.AmLines[].Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date of the amortization event.
🔹 Data.AmTable.AmLines[].Adv
| Type | Required | Values |
|---|---|---|
| String | no | Currency |
The amount of the advance.
This field is only present if this AmLine object is an advance event.
🔹 Data.AmTable.AmLines[].Pmt
| Type | Required | Values |
|---|---|---|
| String | no | Currency |
The payment amount.
This field is only present if this AmLine object is a payment event.
🔹 Data.AmTable.AmLines[].Prem
| Type | Required | Values |
|---|---|---|
| String | no | Currency |
The premium amount.
This field is only present if this AmLine object is a premium event.
🔹 Data.AmTable.AmLines[].Unit
| Type | Required | Values |
|---|---|---|
| String | no | Integer |
The number of full unit periods from this event to the transaction date.
See 12 C.F.R. § 1026, Appendix J(b)(5)).
This field is only present when the APR method is Actuarial or US Rule using the Federal Calendar.
🔹 Data.AmTable.AmLines[].Frac
| Type | Required | Values |
|---|---|---|
| String | no | Text |
The number of fractional unit periods from this event to the transaction date.
See 12 C.F.R. § 1026, Appendix J(b)(5)).
This field is only present when the APR method is Actuarial or US Rule using the Federal Calendar.
🔹 Data.AmTable.AmLines[].Factor
| Type | Required | Values |
|---|---|---|
| String | no | Number - Floating |
The Term Factor used to compute interest. (APR/100) Term Factor BegBal = New Interest.
This field is only present when the APR method is not Actuarial.
🔹 Data.AmTable.AmLines[].PresVal
| Type | Required | Values |
|---|---|---|
| String | no | Number - Floating |
The present value of the event cash at the time of the transaction date.
This field is only present when the APR method is not US Rule.
🔹 Data.AmTable.AmLines[].PresValSum
| Type | Required | Values |
|---|---|---|
| String | no | Number - Floating |
The running total present value sum.
This field is only present when the APR method is not US Rule.
🔹 Data.AmTable.AmLines[].BegBal
| Type | Required | Values |
|---|---|---|
| String | no | Number - Floating |
The beginning balance before amortizing this event.
This field is only present when the APR method is US Rule.
🔹 Data.AmTable.AmLines[].IntPaid
| Type | Required | Values |
|---|---|---|
| String | no | Number - Floating |
The amount of interest paid at this event.
This field is only present when the APR method is US Rule.
🔹 Data.AmTable.AmLines[].IntUnPaid
| Type | Required | Values |
|---|---|---|
| String | no | Number - Floating |
The amount of unpaid interest remaining after this event is amortized.
This field is only present when the APR method is US Rule.
🔹 Data.AmTable.AmLines[].EndBal
| Type | Required | Values |
|---|---|---|
| String | no | Number - Floating |
The ending balance after amortizing this event.
This field is only present when the APR method is US Rule.
APY Calculation
The APY Calculation provides an independent verification for the Federal Truth in Savings Act's Annual Percentage Yield on a deposit instrument. By supplying key pieces of data, the SCE will pass back an exhaustive analysis of the APY for the deposit in question.
Sample Request
The following is a sample SCE request for an Apy calculation:
{
"Module": "Apy",
"Data": {
"Compounding": "Daily",
"Decimals": "4",
"Statement": "Monthly",
"Principal": "1000.00",
"Interest": "61.68",
"InvestDate": "2014-04-16",
"MaturityDate": "2015-04-16"
}
}
Sample Response
The following example is the response returned from the SCE for the request provided at the beginning of the previous section.
{
"Result": 200,
"Module": "Apy",
"Data": {
"Errors": [],
"Warnings": [],
"Apy": "6.1680%",
"Formula": "General",
"CompoundingFreq": "Daily",
"CompoundingDays": "1",
"StatementFreq": "Monthly",
"StatementDays": "30",
"InvestDate": "2014-04-16",
"MaturityDate": "2015-04-16",
"DaysToMaturity": "365",
"Principal": "1000.00",
"Interest": "61.68"
}
}
APY Module - Request
The fields of the Data object supported by a Apy module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹Compounding,🔹Decimals,🔸Interest,🔹InvestDate,🔹MaturityDate,🔸Principal,🔹StatementObjects:
🟦 Format
The fields of the Data object supported are
defined in alphabetical order below:
🔹 Data.Compounding
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Annual, Semiannual, Quarterly, Bimonthly, Monthly, Biweekly, Weekly, Daily | Daily |
The Compounding field specifies the frequency that interest is compounded. If
the deposit compounds continuously, then specify a value of Daily.
🔹 Data.Decimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 3, 4, 5 | 3 |
The number of decimal places of accuracy for the disclosed APY is determined by the value of this field.
🔸 Data.Interest
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency | n/a |
The total interest earned on the principal
(a) for the entire duration of the deposit if the compounding frequency is greater than or equal to the statement disclosure frequency, or
(b) for the statement period if statements are disclosed more frequently than the deposit is compounded.
🔹 Data.InvestDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
The value of this optional field contains the date on which interest accrual begins. If statements are disbursed more frequently than interest is compounded, then you may omit this element. As an example, if interest is compunded annually and statements are disclosed monthly, then this element may be omitted.
🔹 Data.MaturityDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YYYY-MM-DD | n/a |
This optional field holds the date on which the deposit matures. If statements are disbursed more frequently than interest is compounded, then you may omit this element. As an example, if interest is compunded annually and statements are disclosed monthly, then this element may be omitted.
🔸 Data.Principal
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency >= 0 | n/a |
The value of this field specifies the total amount earning interest.
🔹 Data.Statement
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Annual, Semiannual, Quarterly, Bimonthly, Monthly | Monthly |
The Statement field determines the frequency that statements are provided to
the customer by the deposit institution.
The Data object for a response from the Apy module is defined below, in the
order the fields are returned:
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
APY Module - Response
The Data object for a response from the Apy module is defined below, in the
order the fields are returned:
| Object | Fields |
|---|---|
🟥 Data | 🔸Apy, 🔸Formula, 🔸CompoundingFreq, 🔸CompoundingDays, 🔸StatementFreq, 🔸StatementDays, 🔸Term, 🔹InvestDate, 🔹MaturityDate, 🔹DaysToMaturity, 🔸Principal, 🔸Interest |
🟥 Errors[] | |
🟥 Warnings[] |
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔸Apy,🔸Formula,🔸CompoundingFreq,🔸CompoundingDays,🔸StatementFreq,🔸StatementDays,🔸Term,🔹InvestDate,🔹MaturityDate,🔹DaysToMaturity,🔸Principal,🔸InterestObjects:
🟥 Errors[],🟥 Warnings[],
🔸 Data.Apy
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The APY, as defined in Appendix A to Part 1030 of Truth in Savings, and computed by the SCE.
🔸 Data.Formula
| Type | Required | Values |
|---|---|---|
| String | yes | General, Special |
The Formula field describes the formula used to compute the APY. The General
formula is described in Appendix A to Part 1030, Part I Section A. The Special
forumula is described in Appendix A to Part 1030, Part II Section B. Note that
the Special formula is only used when statements are sent more frequently than
the deposit is compounded.
🔸 Data.CompoundingFreq
| Type | Required | Values |
|---|---|---|
| String | yes | Daily, Weekly, BiWeekly, Monthly, BiMonthly, Quarterly, SemiAnnual, Annual |
The frequency that interest is compounded.
🔸 Data.CompoundingDays
| Type | Required | Values |
|---|---|---|
| String | yes | Integer > 0 |
The value of this field specifies the number of days in each compounding period.
🔸 Data.StatementFreq
| Type | Required | Values |
|---|---|---|
| String | yes | Monthly, BiMonthly, Quarterly, SemiAnnual, Annual |
The value of this field specifies the frequency that statements are sent to the customer by the deposit institution.
🔸 Data.StatementDays
| Type | Required | Values |
|---|---|---|
| String | yes | Integer > 0 |
The number of days in each statement period.
🔸 Data.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer > 0 |
The Term is the number of unit periods (as specified in the TermUnits field)
between the deposit date and the CD's maturity date.
🔹 Data.InvestDate
| Type | Required | Values |
|---|---|---|
| String | no | YYYY-MM-DD |
Returns the investment date which was passed to the SCE. If no investment date was specified, then this field will not appear in the output.
🔹 Data.MaturityDate
| Type | Required | Values |
|---|---|---|
| String | no | YYYY-MM-DD |
Returns the maturity date which was passed to the SCE. If no maturity date was specified, then this field will not appear in the output.
🔹 Data.DaysToMaturity
| Type | Required | Values |
|---|---|---|
| String | no | YYYY-MM-DD |
The number of days between the investment and maturity dates.
🔸 Data.Principal
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field specifies the total amount earning interest.
🔸 Data.Interest
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field holds the value of the Interest field passed into the SCE.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Apy",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "Apy",
"Data" : {
"Errors" : [
"Data.Interest (StringFloat) not found.",
"Data.Principal (StringFloat) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
High Cost Mortgages (HCM)
A loan is considered a high-cost mortgage if it is a consumer credit transaction that is secured by the consumer's principal dwelling (with a few minor exclusions) and one or more of the following conditions are met:
- the APR test fails;
- the points and fees test fails; or
- the prepayment penalty test fails.
The HCM module will determine if an already computed loan is considered a high-cost mortgage. The calling application must furnish the SCE with the required information, and then the SCE will perform the three required tests mentioned above, returning the loan's status in its output.
Please note that the HCM module requires the use of the Average Prime Offer Rates (APOR) tables, which are published weekly by the federal government. The two files (one for fixed rates and one for adjustable rates) are available for download at this web site. Please note that it is necessary that these files be updated weekly, or else the SCE will not be able to determine if a loan is a HCM for loans whose lock in dates fall outside the range of dates provided in the APOR files. If you are using a version of the SCE that is hosted by J. L. Sherman and Associates, Inc., then the APOR files will be automatically updated weekly for your use.
Also note that there are two values specified in the HCM points and fees test
which will adjust annually. These values are stored in a file named hcm.ini.
This file needs to be located in the same directory as the APOR files mentioned
above. Similar to the APOR files, this file will be updated automatically for
your use if you are using a version of the SCE which is hosted by J. L. Sherman
and Associates, Inc.
Sample Request
The following is a sample SCE request for a Hcm calculation:
{
"Module" : "Hcm",
"Data" : {
"LockInDate" : "2022-03-09",
"LienType" : "first",
"RateType" : "fixed",
"Dwelling" : "personal_property",
"Term" : "360",
"PPY" : "12",
"LoanAmount" : "255102.04",
"AmountFinanced" : "255102.04",
"Apr" : "9.91",
"FinanceCharge" : "292688.40",
"InterestCharge" : "266366.36",
"FederalStatePremiumsFees" : "0",
"PMI" : {
"After" : "20625.00",
"AtOrBefore" : "625.00",
"MaxAllowedAtOrBefore" : "7653.06"
},
"ThirdPartyCharges" : "0.00",
"DiscountPoints" : {
"Points" : "2.0",
"FullRate" : "6.000",
"Fee" : "5102.04"
},
"LoanOriginatorFees" : "0.00",
"RealEstate" : {
"Fees" : "0.00",
"FinanceAmt" : "0.00"
},
"CreditInsurance" : {
"Premiums" : "0.00",
"FinanceAmt" : "0.00"
},
"PrepaymentPenalty" : {
"Max" : "0.00",
"Total" : "0.00",
"FinanceAmt" : "0.00",
"After36Months" : false,
"AmountPrepaid" : "0.00"
}
}
}
Sample Response
{
"Result": 200,
"Module": "Hcm",
"Data": {
"Errors": [],
"Warnings": [],
"IsHcm": false,
"Triggers": {
"Apr": false,
"PointsFees": false,
"Prepayment": false
},
"AprTrigger": {
"Date": "2022-03-07",
"Apor": "3.830",
"Spread": "6.500",
"Difference": "-0.420"
},
"PointsFeesTrigger": {
"TotalLoanAmount": "255102.04",
"TotalPointsFees": "5072.04",
"MaxPointsFees": "12755.10"
},
"PrepaymentTrigger": {
"After36Months": false,
"Total": "0.00",
"Max": "0.00"
}
}
}
Hcm Module - Request
The fields of the Data object supported by a Hcm module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔸AmountFinanced,🔸Apr,🔹DataPath,🔸Dwelling,🔹FederalStatePremiums,🔸FinanceCharge,🔸InterestCharge,🔸LienType,🔸LoanAmount,🔹LoanOriginatorFees,🔸LockInDate,🔹PPY,🔸RateType,🔹Term,🔹TermInYears,🔹ThirdPartyChargesObjects:
🟦 CreditInsurance,🟦 DiscountPoints,🟦 Format,🟦 PMI,🟦 PrepaymentPenalty,🟦 RealEstate
The fields of the Data object supported by a Hcm module request are defined
in alphabetical order below:
🔸 Data.AmountFinanced
| Type | Required | Values |
|---|---|---|
| String | yes | Currency > 0 |
As defined in Regulation Z (Section 1026.18(b)), the amount of credit provided
to the borrower or on the borrower's behalf. As an example, the SCE's Loan
module returns the loan's Amount Financed in the Data.FedBox.AmtFin field.
🔸 Data.Apr
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
This field's value contains the APR applicable to the transaction, which is not the same as the Regulation Z APR. The APR applicable to the transaction is determined as follows (from Section 1026.32(a)(3)):
- If the rate plan is fixed, then the APR equals the interest rate in effect as of the date the interest rate for the transaction is set.
- If the rate plan varies based on an index, then the APR equals the maximum margin allowed during the term of the loan plus the value of the index rate in effect as of the date the interest rate for the transaction is set.
- If the rate plan varies and is \emph{not} based on an index (case 2 above), then the APR equals the maximum interest rate tat may be imposed during the term of the loan.
🔹 Data.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔸 Data.Dwelling
| Type | Required | Values |
|---|---|---|
| String | yes | Other, Personal_property |
If this is a first Lien, then if the dwelling type is personal property and the loan amount is less than fifty thousand, then the rate spread is 8.5%. For all other first lien loans, the rate spread is 6.5%.
🔹 Data.FederalStatePremiums
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The value of this element is the sum of all federal and state mortgage insurance premiums and guarantee fees that are included in the Finance Charge (see Section 1026.32(b)(1)(i)(B)).
🔸 Data.FinanceCharge
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
As defined in Regulation Z (Section 1026.4), the dollar amount that the credit
will cost the borrower. As an example, the SCE's Loan module returns the
loan's Finance Charge in the Data.FedBox.FinChg field.
🔸 Data.InterestCharge
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The value of this field holds the total interest accrued during the term of the loan,
assuming the borrower will make all scheduled payments (see Section 1026.32(b)(1)(i)(A)).
As an example, the SCE's Loan module returns the loan's
Interest Charge in the Data.Moneys.Interest field.
🔸 Data.LienType
| Type | Required | Values |
|---|---|---|
| String | yes | First, Subordinate |
The type of lien plays a part in determining the amount over the APOR (called the rate spread) at which time a loan's APR is considered a HCM. For first-lien loans, that value is 6.5% or 8.5% (depending upon the loan amount and dwelling type); for subordinate-lien loans, that value is 8.5%.
🔸 Data.LoanAmount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency >= 0 |
The Loan Amount is the face amount of the note (i.e., the principal balance).
🔹 Data.LoanOriginatorFees
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The value of this field represents all compensation paid directly or indirectly by a consumer or creditor to a loan originator. See Section 1026.32(b)(1)(ii).
🔸 Data.LockInDate
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The value of this field holds the date on which the interest rate of the loan
was locked in. All dates must be in the form of YYYY-MM-DD, and be 10 characters
long.
The lock in date is used to lookup the APOR rate from the appropriate file. Each row of the file begins with a date, and the row which will be used will have a date which is either on the lock in date, or does not preceed it by more than 6 days. Since the rates are updated weekly, there should never be more than six days between the date of the row used and the specified lock in date.
If the SCE can not find a row in the APOR file which is appropriate for use with the specified lock in date, then an error message will be returned informing the calling application.
🔹 Data.PPY
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 1, 2, 4, 6, 12, 24, 26, 52 | 12 |
PPY is an abbreviation for "payments per year", and specifies the payment
frequency for the initial fixed rate period of the given loan. The default value
of 12 will result ina loan with an initial fixed rate period of 12 payments
per year. If the loan in question uses a payment frequency for the initial fixed
rate period other than monthly, specify it using this field.
🔸 Data.RateType
| Type | Required | Values |
|---|---|---|
| String | yes | Adjustable, Fixed |
The APOR is looked up in one of two tables, determined by the loan's rate type.
If the loan uses a fixed rate, then the SCE will look-up the APOR from the
YieldTableFixed.txt file. If the loan uses a variable or adjustable rate, then
the SCE will look-up the APOR from the YieldTableAdjustable.txt file.
🔹 Data.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
The value of this field holds the number of payments in the initial fixed rate period of the loan. If the loan uses a fixed rate, then this is equal to the total number of payments in the loan term.
Note that the calling application must specify either the Term (and PPY)
or TermInYears field (below).
Note that the calling application must specify either the
Term and PPY fields (above) or TermInYears.
🔹 Data.TermInYears
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | [1..50] | n/a |
The value of this field holds the term of the initial fixed rate period of the loan, in whole years. Valid terms range from 1 year to 50 years, inclusive.
🔹 Data.ThirdPartyCharges
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field holds the sum of all bona fide third-party charges included in the Finance Charge, as defined in Section 1026.32(b)(1)(i)(D).
🟦 Data.CreditInsurance
| Type | Required |
|---|---|
| Object | no |
If credit life, credit disability, credit unemployment, or credit property insurance are included in the loan (or any other life, accident, health, or loss-of-income insurance for which the creditor is a beneficiary), then this object should be included in the request with its fields set as appropriate. See Section 1026.32(b)(1)(iv).
Fields:
🔹Premiums,🔹FinanceAmtObjects:
None
🔹 Data.CreditInsurance.Premiums
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The total of all credit life, credit disability, credit unemployment, or credit property insurance premiums.
🔹 Data.CreditInsurance.FinanceAmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The value of this field specifies the amount of the above specified premiums and/or fees which were financed.
🟦 Data.DiscountPoints
| Type | Required |
|---|---|
| Object | no |
If a loan features discount points, pass the appropriate data using the fields of this object.
Fields:
🔹Fee,🔹FullRate,🔹PointsObjects:
None
🔹 Data.DiscountPoints.Fee
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The total fee due for the discounted interest rate.
🔹 Data.DiscountPoints.FullRate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 0 |
The value of this field specifies the non-discounted rate, or the interest rate without any discount.
🔹 Data.DiscountPoints.Points
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | 0 |
The value of this field specifies the number of bona fide discount points paid by the borrower. According to Section 1026.32(b)(3)(i)(D), a bona fide discount point "means an amount equal to 1 percent of the loan amount paid by the customer that reduces the interest rate".
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value for this field is 2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
🟦 Data.PMI
| Type | Required |
|---|---|
| Object | no |
Hcm requests which include private mortgage insurance require data to be passed using this object.
Fields:
🔹After,🔹AtOrBefore,🔹MaxAllowedAtOrBeforeObjects:
None
🔹 Data.PMI.After
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
This field specifies the private mortgage insurance premiums payable after consummation. See Section 1026.32(b)(1)(i)(C)(1).
🔹 Data.PMI.AtOrBefore
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The value of this field represents private mortgage insurance premiums paid at or before consummation. See Section 1026.32(b)(1)(i)(C)(2).
🔹 Data.PMI.MaxAllowedAtOrBefore
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The maximum private mortgage insurance premium paid at or before consummation allowable under Section 203(c)(2)(A) of the National Housing Act. See Section 1026.32(b)(1)(i)(C)(2).
🟦 Data.PrepaymentPenalty
| Type | Required |
|---|---|
| Object | no |
If the loan features a prepayment penalty, include this object and its relevant fields.
Fields:
🔹After36Months,🔹AmountPrepaid,🔹FinanceAmt,🔹Max,🔹TotalObjects:
None
🔹 Data.PrepaymentPenalty.After36Months
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If, under the terms of the loan contract, the creditor can charge a prepayment
penalty more than 36 months after consummation, then the calling application
should set the value of this field to true.
Setting this value to true will trigger the prepayment penalty test, and his
classify the specified loan as a HCM.
🔹 Data.PrepaymentPenalty.AmountPrepaid
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
If the maximum prepayment penalty exceeds 2% of this field's value, then the prepayment penalty test will be triggered.
🔹 Data.PrepaymentPenalty.FinanceAmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The value of this field specifies the amount of the total prepayment penalty which was financed by the creditor.
🔹 Data.PrepaymentPenalty.Max
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The maximum prepayment penalty that may be charged or collected under the terms of the mortgage loan. See Section 1026.32(b)(1)(v).
🔹 Data.PrepaymentPenalty.Total
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The total prepayment penalty incurred by the consumer if the consumer refinances the existing mortgage loan with the current holder of the existing loan, a servicer acting on behalf of the current holder, or an affiliate of either. See Section 1026.32(b)(1)(vi).
🟦 Data.RealEstate
| Type | Required |
|---|---|
| Object | no |
Please see Section 1026.32(b)(1)(iii) for a discussion of the real estate fees and other charges which should be included here.
Fields:
🔹Fee,🔹FinanceAmtObjects:
None
🔹 Data.RealEstate.Fee
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The total fee due for all appropriate real estate fees and other charges.
🔹 Data.RealEstate.FinanceAmt
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | 0 |
The value of this field specifies the amount of the above specified real estate fees and other charges which were financed.
Hcm Module - Response
The Data object for a response from the Hcm module is defined below, in the
order the fields are returned:
| Object | Fields |
|---|---|
🟥 Data | 🔸IsHcm |
🟥 Errors[] | |
🟥 Warnings[] | |
🟥 Triggers | 🔹Apr, 🔹PointsFees, 🔹Prepayment |
🟥 AprTrigger | 🔸Date, 🔸Apor, 🔸Spread, 🔸Difference |
🟥 PointsFeesTrigger | 🔸TotalLoanAmount, 🔸TotalPointsFees, 🔸MaxPointsFees |
🟥 PrepaymentTrigger | 🔸After36Months, 🔸Total, 🔸Max |
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔸IsHcmObjects:
🟥 Errors[],🟥 Warnings[],🟥 Triggers,🟥 AprTrigger,🟥 PointsFeesTrigger,🟥 PrepaymentTrigger
🔸 Data.IsHcm
| Type | Required | Values |
|---|---|---|
| Boolean | yes | true, false |
The value of this field will either be true or false, and will indicated
whether or not the submitted loan is a high cost mortgage.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Hcm",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result": 200,
"Module": "Hcm",
"Data": {
"Errors": [
"Data.LockInDate (StringDate) not found.",
"Data.LienType (String) not found.",
"Data.RateType (String) not found.",
"Data.Dwelling (String) not found.",
"Data.LoanAmount (StringFloat) not found.",
"Data.AmountFinanced (StringFloat) not found.",
"Data.Apr (StringFloat) not found.",
"Data.FinanceCharge (StringFloat) not found.",
"Data.InterestCharge (StringFloat) not found."
],
"Warnings": [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
🟥 Data.Triggers
| Type | Required |
|---|---|
| Object | yes |
This object informs the calling application about that status of the three possible triggers that can cause a loan to be classified as high cost.
Fields:
🔹Apr,🔹PointsFees,🔹PrepaymentObjects:
None
🔹 Data.Triggers.Apr
| Type | Required | Values |
|---|---|---|
| Boolean | yes | true, false |
If the Apr test was triggered, then the value of this field will be true.
🔹 Data.Triggers.PointsFees
| Type | Required | Values |
|---|---|---|
| Boolean | yes | true, false |
If the Points and Fees test was triggered, then the value of this field will be
true.
🔹 Data.Triggers.Prepayment
| Type | Required | Values |
|---|---|---|
| Boolean | yes | true, false |
If the Prepayment test was triggered, then the value of this field will be
true.
🟥 Data.AprTrigger
| Type | Required |
|---|---|
| Object | yes |
This object provides further information on the high cost mortgage Apr test, which may be of interest to the calling application.
Fields:
🔸Date,🔸Apor,🔸Spread,🔸DifferenceObjects:
None
🔸 Data.AprTrigger.Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The Date field contains the date on which the APOR data was effective. As an example, if the lock in date was 2013-05-09, then the date returned should be 2013-05-06 (if the APOR files are up to date).
🔸 Data.AprTrigger.Apor
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The value of this field contains the Average Prime Offer Rate for the submitted loan. This value is retrieved from the appropriate APOR file (fixed or adjustable).
🔸 Data.AprTrigger.Spread
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The spread value depends upon the type of lien, loan amount, and dwelling type. The resulting spread will either be 6.5 or 8.5.
🔸 Data.AprTrigger.Difference
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The value of this field returns the difference between the submitted APR applicable to the transaction, and the APOR plus the spread. If the difference is greater than zero (which means that the APR is greater than the APOR plus spread), then the loan is a HCM.
🟥 Data.PointsFeesTrigger
Fields:
🔸TotalLoanAmount,🔸TotalPointsFees,🔸MaxPointsFeesObjects:
None
| Type | Required |
|---|---|
| Object | yes |
This object provides further information on the high cost mortgage points and fees test, which may be of interest to the calling application.
🔸 Data.PointsFeesTrigger.TotalLoanAmount
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total loan amount is defined in Section 1026.32(b)(4). It is calculated by taking the Regulation Z Amount Financed and deducting some of the financed fees and charges which are provided as inputs to the calculation.
🔸 Data.PointsFeesTrigger.TotalPointsFees
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The total points and fees value is defined in Section 1026.32(b)(1). It is calculated by taking the Regulation Z Finance Charge and deducting some portions of the Finance Charge, and then adding other fees and charges which are provided as inputs to the calculation.
🔸 Data.PointsFeesTrigger.MaxPointsFees
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
If the computed total points and fees value for the submitted loan exceeds this value, then the loan is a high cost mortgage. The maximum points and fees value calculation is defined in Section 1026.32(a)(1)(ii).
🟥 Data.PrepaymentTrigger
| Type | Required |
|---|---|
| Object | yes |
This object provides further information on the prepayment test, which may be of interest to the calling application.
Fields:
🔸After36Months,🔸Total,🔸MaxObjects:
None
🔸 Data.PrepaymentTrigger.After36Months
| Type | Required | Values |
|---|---|---|
| Boolean | yes | true, false |
If the creditor can charge a prepayment penalty more than 36 months after consummation, then the loan is a high cost mortgage.
🔸 Data.PrepaymentTrigger.Total
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
This field returns the total potential amount of prepayment penalties.
🔸Data.PrepaymentTrigger.Max
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The maximum prepayment penalty is computed acording to Section
1026.32(a)(1)(iii), and is equal to 2% of the specified AmountPrepaid. If the
Total amount exceeds this value, then the loan is a high cost mortgage.
Higher Priced Mortgage Loans (HPML)
Higher Priced Mortgage Loans are defined as consumer-purpose, closed-end loans secured by a consumer's principal dwelling that have an annual percentage rate (APR) equal to or greater than the Average Prime Offer Rate (APOR) by 1.5 percentage points for first-lien loans, or 3.5 percentage points for subordinate-lien loans for a comparable transaction.
The APOR is published weekly by the federal government, and the two files (one for fixed rates and one for adjustable rates) are available for download at this web site. Please note that it is necessary that these files be updated weekly, or else the SCE will not be able to determine if a loan is a HPML for loans whose lock in dates fall outside the range of dates provided in the APOR files. If you are using a version of the SCE that is hosted by J. L. Sherman and Associates, Inc., then the APOR files will be automatically updated weekly for your use.
Sample Request
The following is a sample SCE request for a Hpml calculation:
{
"Module": "Hpml",
"Data": {
"LienType": "first",
"IsJumbo": false,
"RateType": "fixed",
"LockInDate": "2022-03-22",
"RegZApr": "5.125",
"TermInYears": "30"
}
}
Sample Response
The following example is the response returned from the SCE for the request provided at the beginning of the previous section.
{
"Result": 200,
"Module": "Hpml",
"Data": {
"Errors": [],
"Warnings": [],
"IsHpml": false,
"Apor": "4.230",
"Spread": "1.500",
"Difference": "-0.605",
"Date": "2022-03-21"
}
}
Hpml Module - Request
The fields of the Data object supported by a Hpml module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The fields of the Data object supported by a Hcm module request are defined
in alphabetical order below:
Fields:
🔹DataPath,🔸IsJumbo,🔸LienType,🔸LockInDate,🔸RateType,🔸RegZApr,🔸TermInYearsObjects:
🟦 Format
🔹 Data.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text - See below | see below |
If this field is set, the SCE will look for a data folder containing the
APOR files in the path specified. Note that the APOR files must be
named as follows: YieldTableFixed.txt and YieldTableAdjustable.txt.
If this field is not set, the SCE will attempt to locate the file in the default data directory. Note that the AWS hosted version of the SCE API server places the necessary files in the correct default directory, and hence specifying this field is not required.
Since the APOR files are global in nature, you only need to have one copy of these files available even if your installation hosts multiple data paths for different clients. The APOR files are identical to those needed for the Hcm module, and thus a single location containing the APOR files can be used for both modules.
🔸 Data.IsJumbo
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | yes | true, false | n/a |
Effective June 1, 2013, first-lien loans that exceed the maximum principal obligation eligible for purchase by Freddie Mac (i.e., a "jumbo" loan) have a rate spread of 2.5% instead of the normal first-lien value of 1.5%.
Note that the value of this field will be ignored for subordinate-lien loans.
🔸 Data.LienType
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | First, Subordinate | n/a |
The type of lien determines the amount over the APOR at which time a loan's Regulation Z APR is considered a HPML. For first-lien loans, that value is 1.5% (or 2.5% for first-lien jumbo loans as of 6/01/2013); for subordinate-lien loans, that value is 3.5%.
🔸 Data.LockInDate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | YYYY-MM-DD | n/a |
The value of this field holds the date on which the interest rate of the loan
was locked in. All dates must be in the form of YYYY-MM-DD, and be 10 characters
long.
The lock in date is used to lookup the APOR rate from the appropriate file. Each row of the file begins with a date, and the row which will be used will have a date which is either on the lock in date, or does not preceed it by more than 6 days. Since the rates are updated weekly, there should never be more than six days between the date of the row used and the specified lock in date.
If the SCE can not find a row in the APOR file which is appropriate for use with the specified lock in date, then an error message will be returned informing the calling application.
🔸 Data.RateType
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Adjustable, Fixed | n/a |
The APOR is looked up in one of two tables, determined by the loan's rate type.
If the loan uses a fixed rate, then the SCE will look-up the APOR from the
YieldTableFixed.txt file. If the loan uses a variable or adjustable rate, then
the SCE will look-up the APOR from the YieldTableAdjustable.txt file.
🔸 Data.RegZApr
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number in [-99.999...600] | n/a |
The value of this field holds the computed Regulation Z APR for the loan we are checking. The Regulation Z APR should be expressed as a percentage.
🔸 Data.TermInYears
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Integer | n/a |
The TermInYears field holds the term of the loan, in whole years. Valid terms
range from 1 year to 50 years, inclusive. If the loan's
RateType is Adjustable, then the value of this element
represents the initial, fixed rate term of the adjustable rate loan.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
Hpml Module - Response
The Data object for a response from the Hpml module is defined below, in the
order the fields are returned:
| Object | Fields |
|---|---|
🟥 Data | 🔸IsHpml, 🔸Apor, 🔸Spread, 🔸Difference, 🔸Date |
🟥 Errors[] | |
🟥 Warnings[] |
The Data object for a response from the Hpml module is defined below, in the
order the fields and objects are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
Fields:
🔸IsHpml,🔸Apor,🔸Spread,🔸Difference,🔸DateObjects:
🟥 Errors[],🟥 Warnings[]
🔸 Data.IsHpml
| Type | Required | Values |
|---|---|---|
| Boolean | yes | true, false |
The value of this field will either be true or false, and will indicated whether or not the submitted loan is a higher priced mortgage loan.
🔸 Data.Apor
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The value of this field contains the Average Prime Offer Rate for the submitted loan. This value is retrieved from the appropriate APOR file (fixed or adjustable).
🔸 Data.Spread
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The spread value depends upon the type of lien. First-lien loans have a spread of 1.5, and subordinate-lien loans have a spread of 3.5.
🔸 Data.Difference
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The value of this field returns the difference between the submitted Regulation Z APR, and the APOR plus the spread. If the difference is greater than or equal to zero (which means that the Reg. Z APR is greater than or equal to the APOR plus spread), then the loan is a HPML.
🔸 Data.Date
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The Date field contains the date on which the APOR data was effective. As an
example, if the lock in date was 2009-12-22, then the date returned should be
2009-12-21 (if the APOR rates files are up to date).
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Hpml",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result": 200,
"Module": "Hpml",
"Data": {
"Errors": [
"Data.LienType (String) not found.",
"Data.IsJumbo (Boolean) not found.",
"Data.RateType (StringFloat) not found.",
"Data.LockInDate (StringDate) not found.",
"Data.RegZApr (StringFloat) not found.",
"Data.TermInYears (StringInt) not found."
],
"Warnings": [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
Certificates of Deposits (CDs)
A certificate of deposit (hereafter referred to as a CD) is a time deposit held in a bank or savings and loan for a fixed period of time at a fixed rate. Interest accrues on this deposit with a fixed periodicity (e.g. monthly or daily). The amount of money initially deposited in the CD is called the present value, and the final balance of the CD at the end of its term (which equals the initial deposit plus all accrued interest) is called the future value.
There are four basic variables involved in computing a CD: present value, interest rate, term, and future value. Given any of the three, you may find the fourth. Instead of creating four different request and response JSON interfaces, only one request format and one response format are used, each of which is detailed below.
Sample Request
{
"Module" : "Cd",
"Data" : {
"Calculate" : "FV",
"Date" : "2022-05-01",
"PV" : "200000.00",
"Rate" : "6.0",
"Term" : "12",
"TermUnits" : "Months",
"Compounding" : "Monthly"
}
}
Sample Response
The following example is the response returned from the SCE for the request provided at the beginning of the previous section.
{
"Result" : 200,
"Module" : "Cd",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"PV" : "200000.00",
"Rate" : "6.000",
"Term" : "12",
"TermUnits" : "Months",
"FV" : "212335.56",
"Maturity" : "2023-05-01",
"Gain" : "12335.56",
"APY" : "6.168"
}
}
Cd Module - Request
The fields of the Data object supported by a Cd module request are defined
in alphabetical order below:
| Object | Fields |
|---|---|
🟥 Data | 🔹BasisDays, 🔹Calculate, 🔹Compounding, 🔹FV, 🔹PV, 🔹Rate, 🔹Term, 🔹TermUnits |
🟦 Format | 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator |
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹BasisDays,🔹Calculate,🔹Compounding,🔹FV,🔹PV,🔹Rate,🔹Term,🔹TermUnitsObjects:
🟦 Format
The fields of the Data object supported by a Cd module request are defined
in alphabetical order below:
🔹 Data.BasisDays
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 360, 365 | 365 |
If the compounding frequency (see below) is based upon a daily method (e.g. daily, continuous, or simple), then the number of days in a year is specified with this field. If no value is specified, then 365 is assumed.
🔹 Data.Calculate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | PV, FV, Rate, Term | FV |
This field informs the SCE which of the four basic variables involved in a CD is
to be calculated (e.g. PV, FV, Rate, or Term).
In the sample above, the calculation type being requested is FV (future
value). Thus, the PV, Rate, and Term fields are included in the request,
whereas the FV field is omitted.
🔹 Data.Compounding
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Annual, Semiannual, Quarterly, Bimonthly, Monthly, Semimonthly, Daily, Continuous, Simple | Monthly |
The Compounding field defines the periodicity at which interest is
computed. The specified compounding period affects the allowable values
(and units) for the Term and TermUnits fields - please see the
description below.
The simple compounding frequency does no compounding of interest at all. Instead, interest is computed at the end of the CD's term (much like a single payment note using a simple interest accrual method).
🔹 Data.FV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | n/a |
The future value is the amount that the CD is worth at the end of it's
term. The future value is equal to the present value plus all interest
accrued during the CD's term. If you are computing the future value
(e.g. "CalcType" : "FV"), then you may omit this field.
🔹 Data.PV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | n/a |
The present value is the amount which is deposited in the CD on the given
deposit date. Interest accrues on this initial amount, much like interest
accrues on the principal balance of a loan. If you are computing the
present value (e.g. "CalcType" : "PV"), then you may omit this field.
🔹 Data.Rate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Number in [-99.999...600] | n/a |
This field dictates the rate at which interest accrues throughout the term of
the CD. If you are computing the interest rate (e.g. "CalcType" : "Rate"),
then you may omit this field.
🔹 Data.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
The Term field specifies the number of unit term periods after which
the CD has matured. This numerical value can specify the number of
days, months, or years which make up the term of the CD. To specify
the units, please see the TermUnits field below.
Also note that the value of this field is somewhat restricted given certain compounding frequencies and term units. The table below will summarize the restrictions.
| Compounding | Units Allowed | Term Restriction |
|---|---|---|
| Annual | Years, Months | Months must be divisible by 12 |
| Semiannual | Years, Months | Months must be divisible by 6 |
| Quarterly | Years, Months | Months must be divisible by 3 |
| Bimonthly | Years, Months | Months must be divisible by 2 |
| Monthly | Years, Months | n/a |
| Semimonthly | Years, Months | n/a |
| Daily | Years, Months, Days | n/a |
| Continuous | Years, Months, Days | n/a |
| Simple | Years, Months, Days | n/a |
🔹 Data.TermUnits
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Years, Months, Days | Months |
This field specifies the units used for the CD's term. The three options are: Years, Months, and Days.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
Cd Module - Response
The Data object for a response from the Cd module is defined below, in the
order the fields are returned:
| Object | Fields |
|---|---|
🟥 Data | 🔸PV, 🔸Rate, 🔸Term, 🔸TermUnits, 🔸FV, 🔸Maturity, 🔸APY |
🟥 Errors[] | |
🟥 Warnings[] |
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object for a response from the Cd module is defined below, in the
order the fields and objects are returned:
Fields:
🔸PV,🔸Rate,🔸Term,🔸TermUnits,🔸FV,🔸Maturity,🔸APYObjects:
🟥 Errors[],🟥 Warnings[]
🔸 Data.PV
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The present value of the CD, representing the initial deposit made on the specified deposit date.
🔸 Data.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The rate at which interest will accrue during the term of the CD.
🔸 Data.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer |
The Term is the number of unit periods (as specified in the
TermUnits field) between the deposit date and the CD's
maturity date.
🔸 Data.TermUnits
| Type | Required | Values |
|---|---|---|
| String | yes | Years, Months, Days |
This field returns the units used for the CD's term. The three
options are: Years, Months, and Days.
🔸 Data.FV
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The future value of the CD at its maturity.
🔸 Data.Maturity
| Type | Required | Values |
|---|---|---|
| String | yes | YYYY-MM-DD |
The date of maturity for the CD. All dates are in the form of YYYY-MM-DD, and
must be 10 characters long.
🔸 Data.Gain
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The gain is the difference between the future value and the present value. It is the amount by which the present value changes over the term of the CD.
🔸 Data.APY
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The APY (annual percentage yield) is the rate of return on an investment over the term of a year. The APY takes compounding into account, and if the compounding frequency is other than annual, the APY will differ from the interest rate.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Cd",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "Cd",
"Data" : {
"Errors" : [
"Data.Date (StringDate) not found.",
"Data.PV (StringFloat) not found.",
"Data.Rate (StringFloat) not found.",
"Data.Term (StringFloat) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
Individual Retirement Accounts
An individual retirement account (hereafter referred to as an IRA) is a deposit held in an account for a period of time, during which further deposits may be made and interest is accrued. Interest accrues on the initial balance and periodic deposits with a fixed periodicity (e.g. monthly, daily). The amount of money initially deposited in the IRA is called the beginning balance, and the final balance of the IRA at the end of its term (which depends upon the current and retirement ages of the account holder) is called the future value.
The SCE allows the computation of an IRA two different ways: (i) specify the initial balance, periodic deposit amount, current and retirement ages, and interest rate to compute the future value; or (ii) compute the necessary periodic deposit amount to achieve a target future value.
Sample Request
The following is a sample SCE request for an Ira calculation:
{
"Module" : "Ira",
"Data" : {
"Calculate" : "FV",
"Compounding" : "Annual",
"BeginBalance" : "2000.00",
"Deposit" : "2000.00",
"DepositFreq" : "Annual",
"CurrentAge" : "30",
"RetireAge" : "65",
"Rate" : "5.000"
}
}
Sample Response
The following example is the response returned from the SCE for the request provided at the beginning of the previous section.
{
"Result" : 200,
"Module" : "Ira",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"BeginBalance" : "2000.00",
"Deposit" : "2000.00",
"DepositFreq" : "Annual",
"Rate" : "5.000",
"CurrentAge" : "30",
"RetireAge" : "65",
"Term" : "35",
"TermUnits" : "Years",
"FV" : "200704.68",
"Gain" : "128704.68",
"Yield" : "5.000"
}
}
Ira Module - Response
The fields of the Data object supported by an Ira module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The fields of the Data object supported by a Ira module request are defined
in alphabetical order below:
Fields:
🔸BeginBalance,🔹Calculate,🔹Compounding,🔸CurrentAge,🔹Deposit,🔹DepositFreq,🔸Rate,🔸RetireAge,🔹FVObjects:
🟦 Format
🔸 Data.BeginBalance
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Currency | n/a |
The beginning balance is the amount which is currently present in the IRA account. Interest accrues on this initial amount (plus the periodic deposit amounts), much like interest accrues on the principal balance of a loan.
🔹 Data.Calculate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | FV, Deposit | FV |
This field informs the SCE which of the two IRA calculations is to be performed.
In the sample above, the calculation type being requested is FV,
which directs the SCE to compute the future value of the IRA. Thus, the
periodic deposit value is specified in the appropriate field, and the future
value field is omitted.
🔹 Data.Compounding
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Annual, Semiannual, Quarterly, Bimonthly, Monthly, Daily | Annual |
The Compounding field defines the periodicity at which interest is computed.
The specified compounding period affects the allowable values for the
DepositFreq field - please see the description below.
🔸 Data.CurrentAge
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Integer | n/a |
The current age of the IRA account owner.
🔹 Data.Deposit
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | n/a |
The Deposit field specifies the periodic deposit amount to be made to the IRA
account. The periodicity of the deposit is dictated by the
DepositFrequency field, detailed below.
If you are computing the periodic deposit amount necessary to generate a specified future value (e.g. `"Calculate" : "FV"'), then omit this field from the request.
🔹 Data.DepositFreq
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Annual, Semiannual, Quarterly, Bimonthly, Monthly | Annual |
This field specifies the periodicity of the deposit amount. Thus, if you wanted
to make monthly deposits to an IRA account, the field value should be
specified as monthly. The frequency of deposits limits the allowable
compounding frequencies (see table below).
| Deposit Frequency | Compounding Frequency Allowed |
|---|---|
| Annual | Annual, Semiannual, Quarterly, Bimonthly, Monthly, Daily |
| Semiannual | Semiannual, quarterly, Bimonthly, Monthly, Daily |
| Quarterly | Quarterly, Monthly, Daily |
| Bimonthly | Bimonthly, Monthly, Daily |
| Monthly | Monthly, Daily |
🔸 Data.Rate
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Number in [-99.999...600] | n/a |
This field dictates the rate at which interest accrues throughout the term of the IRA.
🔸 Data.RetireAge
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Integer | n/a |
The desired retirement age of the IRA account owner. This value must be greater
than that found in the CurrentAge field. By subtracting the current age from
the retirement age, the SCE determines the number of years the IRA account will
be allowed to grow.
🔹 Data.FV
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency | n/a |
The future value is the balance of the IRA account at the borrower's specified
retirement age. The future value is equal to the present value plus all periodic
deposits plus all interest accrued during the IRA's term. If you are computing
the future value (e.g. "Calculate" : "FV"), then you may omit this field.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
Ira Module - Response
The Data object for a response from the Ira module is defined below, in the
order the fields are returned:
| Object | Fields |
|---|---|
🟥 Data | 🔸BeginBalance, 🔸Deposit, 🔸DepositFreq, 🔸Rate, 🔸CurrentAge, 🔸RetireAge, 🔸Term, 🔸TermUnits, 🔸FV, 🔸Gain, 🔸Yield |
🟥 Errors[] | |
🟥 Warnings[] |
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
Fields:
🔸BeginBalance,🔸Deposit,🔸DepositFreq,🔸Rate,🔸CurrentAge,🔸RetireAge,🔸Term,🔸TermUnits,🔸FV,🔸Gain,🔸YieldObjects:
🟥 Errors[],🟥 Warnings[]
🔸 Data.BeginBalance
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The beginning balance is the amount which is currently present in the IRA account. Interest accrues on this initial amount (plus the periodic deposit amounts), much like interest accrues on the principal balance of a loan.
🔸 Data.Deposit
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The Deposit field specifies the periodic deposit amount to be made to the IRA
account.
🔸 Data.DepositFreq
| Type | Required | Values |
|---|---|---|
| String | yes | Annual, Semiannual, Quarterly, Bimonthly, Monthly |
This field specifies the periodicity of the deposit amount.
🔸 Data.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The rate at which interest will accrue during the term of the IRA.
🔸 Data.CurrentAge
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Integer | n/a |
The current age of the IRA account owner.
🔸 Data.RetireAge
| Type | Required | Values | Default |
|---|---|---|---|
| String | yes | Integer | n/a |
The desired retirement age of the IRA account owner.
🔸 Data.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer |
The term is the number of years during which periodic deposit amounts and accrued interest are applied to the IRA account. It is equal to the individual's retirement age less current age.
🔸 Data.TermUnits
| Type | Required | Values |
|---|---|---|
| String | yes | Years |
The Term field is always expressed as a number of years.
🔸 Data.FV
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The future value of the IRA at retirement age.
🔸 Data.Gain
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The gain is the difference between the future value and the sum of the initial balance and all periodic deposits made. It is the amount of interest accrued over the term of the IRA.
🔸 Data.Yield
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The APY (annual percentage yield) is the rate of return on an investment over the term of a year. The APY takes compounding into account, and if the compounding frequency is other than annual, the APY will differ from the interest rate.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Ira",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "Ira",
"Data" : {
"Errors" : [
"Data.Deposit (StringFloat) not found.",
"Data.Rate (StringFloat) not found.",
"Data.CurrentAge (StringInt) not found.",
"Data.RetireAge (StringInt) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
Retirement Annuities
An annuity is a stream of income paid in a series of regular monthly payments. Annuities are usually set up to disburse these payments from a retirement account, and act as an income stream.
When planning for retirment, it is natural to ask what amount of monthly income will I receive given a planned retirment account balance of X dollars, with a planned retirement term of 360 months? Similarly, given a planned retirment account balance of X dollars and a desired monthly income of Y dollars, how many months may I draw income? Finally, given a desired term of income and monthly income amount, what would my retirement balance need to be?
Thus, there are three basic variables involved in computing an annuity: the beginning balance, monthly income amount, and the number of months of income. Given any of two, one may find the third. Instead of creating three different request and response JSON interfaces, only one request format and one response format are used, each of which is detailed below.
Sample Request
The following is a sample SCE request for an Annuity calculation:
{
"Module" : "Annuity",
"Data" : {
"Calculate" : "Income",
"Balance" : "500000.00",
"Rate" : "5.000",
"Term" : "360"
}
}
Sample Response
{
"Result" : 200,
"Module" : "Annuity",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Balance" : "500000.00",
"Rate" : "5.000",
"Income" : "5018.38",
"Term" : "129",
"TotalIncome" : "647371.02",
"Gain" : "147371.02"
}
}
Annuity Module - Request
The fields of the Data object supported by the Annuity module request are defined
in alphabetical order below:
| Object | Fields |
|---|---|
🟥 Data | 🔹Balance, 🔹Calculate, 🔹Income, 🔸Rate, 🔹Term |
🟦 Format | 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator |
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹Balance,🔹Calculate,🔹Income,🔸Rate,🔹TermObjects:
🟦 Format
🔹 Data.Balance
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The beginning balance is the amount which is present in the retirment
account when the annuity starts. Interest will accrue monthly on this
amount, and the income stream is taken from this balance during the
term of the annuity. If you are computing the beginning balance
(e.g. "Calculate" : "Balance"), then this field may be omitted.
🔹 Data.Calculate
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Balance, Income, Term | Income |
This field informs the SCE which of the three basic variables involved in an
annuity calculation is to be calculated (e.g. Balance, Income, or Term).
In the sample above, the calculation type being requested is Income (the monthly
income amount). Thus, the Balance, and Term fields are included in the request,
whereas the Income field is omitted.
🔹 Data.Income
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Currency >= 0 | n/a |
The value of this field specifies the desired monthly income amount. If you are
computing the monthly income amount (e.g. "Calculate" : "Income"), then you
may omit this field from the request.
🔸 Data.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
This field dictates the rate at which interest accrues throughout the term of the annuity.
🔹 Data.Term
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer > 0 | n/a |
This field specifies the number of months in the term of the annuity.
This corresponds to the length of the monthly income stream which is
disbursed from the beginning balance. If you are computing the number
of months of income (e.g. "Calculate" : "Term"), then this field may
be omitted.
🟦 Data.Format
| Type | Required |
|---|---|
| Object | no |
The Format object is one of the first objects parsed from a request, as
various fields affect how date and numeric fields are parsed and validated.
Fields:
🔹CurrencyDecimals,🔹DateFormat,🔹DateSeparator,🔹DecimalSeparator,🔹StrictDP,🔹ThousandSeparatorObjects:
None
🔹 Data.Format.CurrencyDecimals
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | 0 or 2 | 2 |
When displaying and parsing Currency fields, this field determines the maximum
number of decimal places allowed after the
DecimalSeparator. If this field is not included,
the default value [Country](#data-the default value is 2.
🔹 Data.Format.DateFormat
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | YMD, MDY, or DMY | YMD |
When displaying and parsing Date fields, this field determines the expected
format for all Date fields. The following DateFormat options
are allowed:
YMD- All dates should be formated asYYYY-MM-DD.MDY- All dates should be formated asMM-DD-YYYY.DMY- All dates should be formated asDD-MM-YYYY.
Note that the character which separates the individual month, day, and year
portions of the date is configurable via the
DateSeparator field.
🔹 Data.Format.DateSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | - |
When displaying and parsing Date fields, this field determines the character used to separate the individual month, day, and year portions of a date field.
🔹 Data.Format.DecimalSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | . |
When displaying and parsing Currency, Percentage, or Floating numeric fields, this field determines the character used to separate the fractional part from the whole.
🔹 Data.Format.StrictDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If the value of this field is true, then the SCE will strictly verify the
number of decimal places allowed for currency input values. Thus, if the calling
application sends in a request with a currency amount of 1000.005, the SCE will
return an error code.
If the value of this field is set to false, then currency values sent in
with an invalid number of decimal places will be rounded to the correct number
of decimal places by the SCE (using five/four rounding), and a warning message
with this information will be returned with the response.
🔹 Data.Format.ThousandSeparator
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | empty or a single character | empty |
When displaying numeric fields, this field determines the character used to separate the thousands places from the hundreds. When parsing a numeric request field, if a thousand separator is specified in the request, then the SCE will now remove all occurrences of the specified thousand separator from the numeric field string before attempting to convert it to a number.
Annuity Module - Response
The Data object for a response from the Annuity module is defined below, in the
order the fields are returned:
| Object | Fields |
|---|---|
🟥 Data | 🔸Balance, 🔸Rate, 🔸Income, 🔸Term, 🔸TotalIncome, 🔸Gain |
🟥 Errors[] | |
🟥 Warnings[] |
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔸Balance,🔸Rate,🔸Income,🔸Term,🔸TotalIncome,🔸GainObjects:
🟥 Errors[],🟥 Warnings[]
🔸 Data.Balance
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The beginning balance is the amount which is present in the retirment account when the annuity starts.
🔸 Data.Rate
| Type | Required | Values |
|---|---|---|
| String | yes | Number in [-99.999...600] |
The rate at which interest will accrue on the balance during the term of the annuity.
🔸 Data.Income
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The amount of the monthly disbursement.
🔸 Data.Term
| Type | Required | Values |
|---|---|---|
| String | yes | Integer |
This number of months of income provided by the annuity.
🔸 Data.TotalIncome
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The TotalIncome is the sum of all monthly disbursements made during
the term of the annuity.
🔸 Data.Gain
| Type | Required | Values |
|---|---|---|
| String | yes | Currency |
The Gain is the difference between the total income and the beginning balance.
It is the total amount of interest accrued over the term of the annuity.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Annuity",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
{
"Result" : 200,
"Module" : "Annuity",
"Data" : {
"Errors" : [
"Data.Balance (StringFloat) not found.",
"Data.Rate (StringFloat) not found.",
"Data.Term (StringInt) not found."
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
]
}
}
Account Module
The SCE's account request interface allows the user to determine the number and name of each account set up for the SCE in a given location. An account is defined as a set of setup files associated with an account number which starts at 1 and has a maximum value of 9,999. The setup files for a given account number configure the SCE to compute loans with protection in a particular manner.
The clients.set file (located in the same data/ directory
as the other setup files) holds the name of each setup file. These names
are user defined, and may be edited by you using any text editor. The
first account name (corresponding to account #0001) is on the second
line, with subsequent account names following on separate lines.
Sample Request
{
"Module" : "Account",
"Data" : {
"DataPath" : "/etc/sce/",
"Begin" : "1",
"End" : "9999"
}
}
Sample Response
{
"Result" : 200,
"Module" : "Account",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"DataPath" : "/etc/sce/data/",
"Accounts" : [
{
"Account" : 1,
"Title" : "Single Premium"
},
{
"Account" : 2,
"Title" : "MOB"
},
{
"Account" : 3,
"Title" : "True MOB"
}
]
}
}
Account Module - Request
The fields of the Data object supported by an Account module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the request data for a given module, and must always be provided.
Fields:
🔹Begin,🔹DataPath,🔹EndObjects:
None
The fields of the Data object supported by an Equal Pmt module request are
defined in alphabetical order below:
🔹 Data.Begin
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..9999] | 1 |
The Begin field specifies the desired starting account number to return
information on. If the value of the Begin field exceeds the number of accounts
defined in a given clients.set file, then a value of 1 will be used.
🔹 Data.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
🔹 Data.End
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer in [1..9999] | 9999 |
The End field specifies the desired ending account number to return
information on. If the value of the End field exceeds the number of accounts
defined in a given clients.set file, then the number of accounts will be used.
Account Module - Response
The Data object for a response from the Account module is defined below, in the
order the fields are returned:
| Object | Fields |
|---|---|
🟥 Data | 🔸DataPath |
🟥 Errors[] | |
🟥 Warnings[] | |
🟥 Accounts[] | 🔸Account, 🔸Title |
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object encapsulates the response data for a given module, and will
always be present.
Fields:
🔸DataPathObjects:
🟥 Errors[],🟥 Warnings[],🟥 Accounts[]
🔸 Data.DataPath
| Type | Required |
|---|---|
| String | yes |
The fully qualified directory name used by the SCE to find the clients.set
file. If the SCE can not find the clients.set file in the data directory,
or if the data direcotry does not exist, then an error will be returned.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Account",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "Account",
"Data" : {
"Errors" : [
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
],
"DataPath" : "/home/alank/Work/sce/SCE/data/",
"Accounts" : [
{
"Account" : 1,
"Title" : "Single Premium"
},
{
"Account" : 2,
"Title" : "MOB"
},
{
"Account" : 3,
"Title" : "True MOB"
}
]
}
}
🟥 Data.Accounts[]
| Type | Required |
|---|---|
| array of Account Objects | yes |
The Accounts[] array returns information on each account found in the
clients.set file.
Objects:
None
🔸 Data.Accounts[].Account
| Type | Required | Values |
|---|---|---|
| String | yes | Integer > 0 |
Discloses the account number associated with this account in the clients.set file.
🔸 Data.Accounts[].Title
| Type | Required | Values |
|---|---|---|
| String | yes | Text |
Holds the title of this account as it appears in the clients.set file.
User Interface Module
The SCE's user interface request allows the user to determine how an account has been set up for the SCE in a given directory path, and indicates which protection products are available and what options are available for each active product. An account is defined as a set of setup files associated with an account number which starts at 1 and has a maximum value of 9,999. The setup files for a given account number configure the SCE to compute loans with protection in a particular manner.
To get the names of all accounts configured in a given directory path, please see the Account Module.
Sample Request
{
"Module" : "Ui",
"Data" : {
"Account" : "1",
"Compact" : false,
"DataPath" : "/etc/sce/"
}
}
Sample Response
{
"Result" : 200,
"Module" : "Ui",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Ls" : {
"Status: " : "Loaded",
"LoanTypes" : {
"ARM" : true,
"Balloon" : true,
"Construction" : false,
"Equal" : true,
"IntOnly" : true,
"PrinPlus" : true,
"SinglePay" : true,
"SkipsIrregs" : true,
"SkipsPickups" : true
},
"Accrual" : {
"Code" : "320",
"LastDay" : false,
"InterestRound" : "Nearest",
"PaymentRound" : "Up",
"SinglePayDivisor" : "365"
}
},
"Cl" : {
"Active" : true,
"AllowOn" : {
"ARM" : false,
"Balloon" : false,
"Equal" : true,
"IntOnly" : false,
"PrinPlus" : false,
"SinglePay" : false,
"Irregs" : false
},
"IsDP" : false,
"Method" : "TrueMOB",
"TrueMOB" : {
"Abbrev" : "CL",
"Title" : "Credit Life",
"Prompts" : {
"SingleOnCoborrower" : true
}
}
},
"Ah" : {
"Active" : true,
"Abbrev" : "AH",
"Title" : "Disability",
"AllowOn" : {
"ARM" : false,
"BalloonGross" : false,
"BalloonMobNet" : false,
"Equal" : true,
"IntOnly" : false,
"PrinPlus" : false,
"SinglePay" : false,
"Irregs" : false
},
"IsDP" : false,
"IsPackagedDP" : false,
"Method" : "TrueMOB",
"Prompts" : {
"CoverageBenefit" : false,
"CoverageTermGross" : false,
"CoverageTermMobNet" : true,
"Joint" : true,
"SingleOnCoborrower" : true
},
"Rules" : {
"MustHaveLife" : false,
"PPYMoreThan12" : true,
"PPYLessThan12" : false
},
"Tables" : [
"14 Retro"
]
},
"Iu" : {
"Active" : false
},
"Pp" : {
"Active" : false
}
}
}
User Interface Module - Request
The fields of the Data object supported by a Ui module request are defined
in alphabetical order below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The fields and objects of the Data object supported by a User Interface module
request are defined in alphabetical order below:
Fields:
🔹Account,🔹Compact,🔹DataPathObjects:
🔹 Data.Account
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Integer >= 1 | 1 |
The Account field specifies the numeric setup file account number that will be
parsed to determine the user interface related response fields. Each account is
numbered from 1 to 9,999, and each account corresponds to a set of setup file
which define numerous settings which may affect the loan calculation, such as
the accrual method, payment protection methods / rates / caps, etc.
🔹 Data.Compact
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | no | true, false | false |
If this field is set to a value of true, then the SCE will only return
response fields if the value of the field is different from the default
value.
🔹 Data.DataPath
| Type | Required | Values | Default |
|---|---|---|---|
| String | no | Text | default data path |
If this field is set, the SCE will look for a /data folder containing the
setup files in the path specified. Thus, if the DataPath is set to /etc/sce,
the SCE will look for the setup files in /etc/sce/data.
If the calling application wishes to specify the data directory path in its
entirety (e.g. the calling app does not want the SCE to append /data to the
provided path), then simply terminate the specified DataPath with an asterisk
(*). Thus, if the DataPath is set to /etc/sce/bank1/*, the SCE will look for
the setup files in /etc/sce/bank1/.
If this field is not set, the SCE will attempt to located the /data folder in
the default data directory path location, which can be retrieved using the
Version module.
This field is useful if you wish to use only a single installation of the SCE,
but have many different setup file groupings. By specifying a different
DataPath for each grouping, you can easily separate the groups from one
another instead of grouping them all together in a single directory.
User Interface Module - Response
The Data object for a response from the Ui module is defined below, in the
order the fields are returned:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object for a response from the Cd module is defined below, in the
order the fields and objects are returned:
Fields:
None
The Data object for a response from the User Interface module is defined below:
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Ui",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "Ui",
"Data" : {
"Errors" : [
],
"Warnings" : [
"Request field Data.Hello (String) not recognized.",
"Request field Data.How (String) not recognized."
],
...
}
}
🟥 Data.Ls
| Type | Required |
|---|---|
| object | yes |
The Ls object returns information on general loan configuration setup file
data.
Fields:
🔸StatusObjects:
🟥LoanTypes🟥Accrual
🔸 Data.Ls.Status
| Type | Required | Values |
|---|---|---|
| String | yes | text |
If the loan setup fil was successfully loaded and parsed, the value of this
field will be Loaded. Any other return value indicates an error has occurred
while trying to loan the loan setup file for the account number requested.
🟥 Data.Ls.LoanTypes
| Type | Required |
|---|---|
| Object | yes |
The LoanTypes object returns fields which indicate if a loan of a given
repayment schedule is allowed, according to the loan setup file associated with
the account.
Fields:
🔹ARM,🔹Balloon,🔹Construction,🔹Equal,🔹IntOnly,🔹PrinPlus,🔹SinglePay,🔹SkipsIrregs,🔹SkipsPickupsObjects:
None
🔹 Data.Ls.LoanTypes.ARM
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Returns a value of true if adjustable rate loans available for this account.
🔹 Data.Ls.LoanTypes.Balloon
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Returns a value of true if balloon loans available for this account?
🔹 Data.Ls.LoanTypes.Construction
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Returns a value of true if construction loans available for this account.
🔹 Data.Ls.LoanTypes.Equal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Returns a value of true if equal payment loans available for this account.
🔹 Data.Ls.LoanTypes.IntOnly
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Returns a value of true if interest only loans available for this account.
🔹 Data.Ls.LoanTypes.PrinPlus
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Returns a value of true if fixed principal plus interest loans available for
this account.
🔹 Data.Ls.LoanTypes.SinglePay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Returns a value of true if single payment notes available for this account.
🔹 Data.Ls.LoanTypes.SkipsIrregs
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Returns a value of true if loans with skipped and specified irregular payments
available for this account.
🔹 Data.Ls.LoanTypes.SkipsPickups
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Returns a value of true if loans with skipped and pickup payments available
for this account.
🟥 Data.Ls.Accrual
| Type | Required |
|---|---|
| Object | yes |
The Accrual object returns information regarding how various interest accrual
settings have been configured in the loan setup file associated with the
account.
Fields:
🔸Code,🔹LastDay,🔹InterestRound,🔹PaymentRound,🔸SinglePayDivisorObjects:
None
🔸 Data.Ls.Accrual.Code
| Type | Required | Values | Default |
|---|---|---|---|
| String | true | See Table | n/a |
The method of interest accrual configured for the account is returned in this field. All valid accrual codes are described in the table below.
🔹 Data.Ls.Accrual.LastDay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
This setting only applies to loans computed with an actual day accrual calendar where the first payment date falls at the end of a month with fewer than 31 days. As an example, if the first payment date is on April 30, should the following payment dates be made on the 30th of each month, or on the last day of the month?
A value of true means that when conditions triggering a last day situation are
active, this will result in payments which fall at the end of the month. A value
of false indicates that when dictated, subsequent payment dates will not be
moved to the last day of the month.
🔹 Data.Ls.Accrual.InterestRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | false | Nearest, Up, Down | Nearest |
When amortizing interest in the amortization schedule, the value of this field dictates how the SCE rounds off interest with fractional currency units.
🔹 Data.Ls.Accrual.PaymentRound
| Type | Required | Values | Default |
|---|---|---|---|
| String | false | Nearest, Up, Down, Best | Nearest |
When the SCE computes the payment which best amortizes the loan to zero, the value of this field dictates how the payment is rounded.
A value of Best means
to choose the payment that returns a minimal ending balance at the end of
amortization. If two payments result in the same minimal error magnitude, the
smaller payment is chosen.
🔸 Data.Ls.Accrual.SinglePayDivisor
| Type | Required | Values | Default |
|---|---|---|---|
| String | false | see table | n/a |
When computing a single payment note, the value of this field determines the number of days in the interest accrual factor's divisor.
| Code | Description |
|---|---|
| 360 | 360 day divisor |
| 365 | 365 day divisor |
| 366 | 366 day divisor |
🟥 Data.Cl
| Type | Required |
|---|---|
| object | yes |
The Cl object returns information on life protection configuration setup file
data.
Fields:
🔸Active,🔹IsDP,🔸MethodObjects:
🟥AllowOn,🟦CUNASP,🟦SinglePremium,🟦StandardMob,🟦TrueMob
🔸 Data.Cl.Active
| Type | Required | Values |
|---|---|---|
| Boolean | false | true, false |
If life coverage is configured and allowed on one or more loan types, then the
value of this field will be true and the rest of the object should be parsed
for further details.
A value of false indicates that life coverage is not confiured nor allowed for
this account. Furthermore, no other fields of the Cl object will be returned
to the calling application.
🔹 Data.Cl.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If the life product has been configured as a debt protection product, then the
value of this field will be true. A value of false indicates that the
life product is considered insurance.
🔸 Data.Cl.Method
| Type | Required | Values |
|---|---|---|
| String | yes | SinglePremium, StandardMob, TrueMOB, CUNASP |
The Method field returns the general method used to compute the life products
premiums/fees. SinglePremium indicates that a single premium or fee is
computed and (usually) financed. The StandardMob method computes a premium/fee
with each payment. The TrueMOB method computes a premium/fee on a specified
day number every month. Finally, CUNASP is a single premium method implemented
specifically for TruStage.
The value of this field also corresponds to the name of the Cl object field
which will return further information useful for this general method.
As an example, if Cl.Method is SinglePremium, then there will be a
Cl.SinglePremium object which should be parsed (detailed below) for additional
information realted to this method.
🟥 Data.Cl.AllowOn
| Type | Required |
|---|---|
| Object | yes |
The AllowOn object contains fields which inform the calling application the
loan types which allow for the inclusion of this life product.
Fields:
🔹ARM,🔹Balloon,🔹Equal,🔹IntOnly,🔹Irregs,🔹PrinPlus,🔹SinglePayObjects:
None
🔹 Data.Cl.AllowOn.ARM
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that life coverage is allowed on Adjustable Rate
Mortgages.
🔹 Data.Cl.AllowOn.Balloon
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that life coverage is allowed on Balloon Payment
Loans.
🔹 Data.Cl.AllowOn.Equal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that life coverage is allowed on Equal Payment
Loans.
🔹 Data.Cl.AllowOn.IntOnly
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that life coverage is allowed on Interest Only
Loans.
🔹 Data.Cl.AllowOn.Irregs
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that life coverage is allowed on Skip, Pickup and
Irregular Payment Loans.
🔹 Data.Cl.AllowOn.PrinPlus
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that life coverage is allowed on Fixed Principal
Plus Interest Loans.
🔹 Data.Cl.AllowOn.SinglePay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that life coverage is allowed on Single Payment
Notes.
🟦 Data.Cl.CUNASP
| Type | Required |
|---|---|
| Object | no |
The CUNASP object will only be returned when Cl.Method is CUNASP. It
contains additional information which should be parsed related to this general
method.
Objects:
None
🔸 Data.Cl.CUNASP.Abbrev
| Type | Required | Values |
|---|---|---|
| String | yes | text |
Like the Title field below, this field provides an abbreviation to be used for
the product associated with the SCE's configured life calculation option. The
value of this element defaults to CL, although customers who wish to customize
this abbreviation may do so. Customers who offer debt cancellation instead of
insurance will also usually wish to change the abbreviations of their life
product for regulatory reasons (e.g. DCL for debt cancellation life).
The title may be used for inputs (e.g. CL Option) and outputs (e.g. CL Coverage Term).
🔸 Data.Cl.CUNASP.Title
| Type | Required | Values |
|---|---|---|
| String | yes | text |
The value of this field holds the product title associated with the SCE's
configured life product. This title defaults to Credit Life, although
customers who wish to customize the name of this offering may do so. For
example, it could simply be called Life, or Death. Customers who offer debt
cancellation instead of insurance will also usually wish to change the name of
their life product for regulatory reasons.
The title may be used for inputs (e.g. Credit Life Option) and outputs (e.g.
Credit Life Premium/Fee).
🟦 Data.Cl.SinglePremium
| Type | Required |
|---|---|
| Object | no |
Fields:
🔸DlAbbrev,🔸DlTitle,🔸LlAbbrev,🔸LlTitle,🔹Gross,🔹Level,🔹Net,🔹OrdinaryLifeObjects:
🟥Prompts
The SinglePremium object will only be returned when Cl.Method is
SinglePremium. It contains additional information which should be parsed
related to this general method.
🔸 Data.Cl.SinglePremium.DlAbbrev
| Type | Required | Values |
|---|---|---|
| String | yes | text |
Like the Title field below, this field provides an abbreviation to be used for
the product associated with the SCE's configured decreasing life calculation
option. The value of this element defaults to CL, although customers who wish
to customize this abbreviation may do so. Customers who offer debt cancellation
instead of insurance will also usually wish to change the abbreviations of their
life product for regulatory reasons (e.g. DCL for debt cancellation life).
The title may be used for inputs (e.g. CL Option) and outputs (e.g. CL Coverage Term).
🔸 Data.Cl.SinglePremium.DlTitle
| Type | Required | Values |
|---|---|---|
| String | yes | text |
The value of this field holds the product title associated with the SCE's
configured decreasing life product. This title defaults to Credit Life,
although customers who wish to customize the name of this offering may do so.
For example, it could simply be called Life, or Death. Customers who offer
debt cancellation instead of insurance will also usually wish to change the name
of their life product for regulatory reasons.
The title may be used for inputs (e.g. Credit Life Option) and outputs (e.g.
Credit Life Premium/Fee).
🔸 Data.Cl.SinglePremium.LlAbbrev
| Type | Required | Values |
|---|---|---|
| String | yes | text |
Similar to SinglePremium.DlAbbrev, except this abbreviation
is for the configured level life product.
🔸 Data.Cl.SinglePremium.LlTitle
| Type | Required | Values |
|---|---|---|
| String | yes | text |
Similar to SinglePremium.DlTitle, except this abbreviation
is for the configured level life product.
🔹 Data.Cl.SinglePremium.Gross
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If gross coverage is allowed for the configured life product, then the value of
this field will be true. A value of false indicates that gross coverage is
not supported.
🔹 Data.Cl.SinglePremium.Level
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If level coverage is allowed for the configured life product, then the value of
this field will be true. A value of false indicates that level coverage is
not supported.
🔹 Data.Cl.SinglePremium.Net
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If net coverage is allowed for the configured life product, then the value of
this field will be true. A value of false indicates that net coverage is
not supported.
🔹 Data.Cl.SinglePremium.OrdinaryLife
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If an ordinary life product has been configured for the life product, then the
value of this field will be true. A value of false indicates that no odinary
life product is supported.
🟥 Data.Cl.SinglePremium.Prompts
| Type | Required |
|---|---|
| Object | true |
The Prompts object returns information to the calling application about optional
prompts/inputs that may be allowed for this life product.
Fields:
🔹CoverageAmount,🔹CoverageTermGross,🔹CoverageTermNet,🔹Dismemberment,🔹GrossNet,🔹SingleOnCoborrower,🔹UseLevelRatesGross,🔹UseLevelRatesNetObjects:
None
🔹 Data.Cl.SinglePremium.Prompts.CoverageAmount
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If the account has been configured to allow for a coverage amount to be
specified by the user, then the value of this field will be true, which
indicates that the user interface should prompt the user for a life coverage
amount. A value of false indicates that only the default coverage amount will
be considered, and hence there is no need to prompt for a user specified
coverage.
🔹 Data.Cl.SinglePremium.Prompts.CoverageTermGross
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true implies that the user may be prompted for a desired term of
coverage for single premium gross life. A value of false indicates that user
specified coverage term truncation is not allowed and should not be prompted.
🔹 Data.Cl.SinglePremium.Prompts.CoverageTermNet
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true implies that the user may be prompted for a desired term of
coverage for single premium net life. A value of false indicates that user
specified coverage term truncation is not allowed and should not be prompted.
🔹 Data.Cl.SinglePremium.Prompts.Dismemberment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Some accounts allow for an additional dismemberment option to be written with
the life policy (with an associated rate increase). If dismemberment is an
option for this account, then the value of this field will be true. Otherwise,
a value of false indicates that no dismemberment option is offered.
🔹 Data.Cl.SinglePremium.Prompts.GrossNet
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Some accounts using single premium life may support both net and gross credit
life. If this is the case, this element will hold a value of true to signal
the user interface that the user should be prompted for the life method. A value
of false indicates that prompting for the life method is not required, as only
one method is allowed.
🔹 Data.Cl.SinglePremium.Prompts.SingleOnCoborrower
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If single coverage is allowed on the co-borrower, then this field will hold a
value of true. If it holds a value of false, then single life is only
allowed on the primary borrower.
🔹 Data.Cl.SinglePremium.Prompts.UseLevelRatesGross
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
In some states, it is legal to compute gross decreasing life using level rates.
If that is an option for this account, then this value of this field will be
true, which indicates that the user interface should prompt for the option to
use level rates with gross life. A value of false indicates that this option
is not allowed, and hence the prompt for using level rates should not be
presented to the user.
🔹 Data.Cl.SinglePremium.Prompts.UseLevelRatesNet
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
In some states, it is legal to compute net decreasing life using level rates.
If that is an option for this account, then this value of this field will be
true, which indicates that the user interface should prompt for the option to
use level rates with net life. A value of false indicates that this option
is not allowed, and hence the prompt for using level rates should not be
presented to the user.
🟦 Data.Cl.StandardMob
| Type | Required |
|---|---|
| Object | no |
The StandardMob object will only be returned when Cl.Method is
StandardMob. It contains additional information which should be parsed related
to this general method.
Objects:
🟥Prompts
🔸 Data.Cl.StandardMob.Abbrev
| Type | Required | Values |
|---|---|---|
| String | yes | text |
Like the Title field below, this field provides an abbreviation to be used for
the product associated with the SCE's configured life calculation option. The
value of this element defaults to CL, although customers who wish to customize
this abbreviation may do so. Customers who offer debt cancellation instead of
insurance will also usually wish to change the abbreviations of their life
product for regulatory reasons (e.g. DCL for debt cancellation life).
The title may be used for inputs (e.g. CL Option) and outputs (e.g. CL Coverage Term).
🔸 Data.Cl.StandardMob.Title
| Type | Required | Values |
|---|---|---|
| String | yes | text |
The value of this field holds the product title associated with the SCE's
configured life product. This title defaults to Credit Life, although
customers who wish to customize the name of this offering may do so. For
example, it could simply be called Life, or Death. Customers who offer debt
cancellation instead of insurance will also usually wish to change the name of
their life product for regulatory reasons.
The title may be used for inputs (e.g. Credit Life Option) and outputs (e.g.
Credit Life Premium/Fee).
🟥 Data.Cl.StandardMob.Prompts
| Type | Required |
|---|---|
| Object | true |
The Prompts object returns information to the calling application about optional
prompts/inputs that may be allowed for this life product.
Fields:
🔹CoverageAmount,🔹CoverageTerm,🔹Dismemberment,🔹SingleOnCoborrowerObjects:
None
🔹 Data.Cl.StandardMob.Prompts.CoverageAmount
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If the account has been configured to allow for a coverage amount to be
specified by the user, then the value of this field will be true, which
indicates that the user interface should prompt the user for a life coverage
amount. A value of false indicates that only the default coverage amount will
be considered, and hence there is no need to prompt for a user specified
coverage.
🔹 Data.Cl.StandardMob.Prompts.CoverageTerm
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true implies that the user may be prompted for a desired term of
coverage for life. A value of false indicates that user specified coverage
term truncation is not allowed and should not be prompted.
🔹 Data.Cl.StandardMob.Prompts.Dismemberment
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
Some accounts allow for an additional dismemberment option to be written with
the life policy (with an associated rate increase). If dismemberment is an
option for this account, then the value of this field will be true. Otherwise,
a value of false indicates that no dismemberment option is offered.
🔹 Data.Cl.StandardMob.Prompts.SingleOnCoborrower
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If single coverage is allowed on the co-borrower, then this field will hold a
value of true. If it holds a value of false, then single life is only
allowed on the primary borrower.
🟦 Data.Cl.TrueMob
| Type | Required |
|---|---|
| Object | no |
The TrueMob object will only be returned when Cl.Method is
TrueMob. It contains additional information which should be parsed related to
this general method.
Objects:
🟥Prompts
🔸 Data.Cl.TrueMob.Abbrev
| Type | Required | Values |
|---|---|---|
| String | yes | text |
Like the Title field below, this field provides an abbreviation to be used for
the product associated with the SCE's configured life calculation option. The
value of this element defaults to CL, although customers who wish to customize
this abbreviation may do so. Customers who offer debt cancellation instead of
insurance will also usually wish to change the abbreviations of their life
product for regulatory reasons (e.g. DCL for debt cancellation life).
The title may be used for inputs (e.g. CL Option) and outputs (e.g. CL Coverage Term).
🔸 Data.Cl.TrueMob.Title
| Type | Required | Values |
|---|---|---|
| String | yes | text |
The value of this field holds the product title associated with the SCE's
configured life product. This title defaults to Credit Life, although
customers who wish to customize the name of this offering may do so. For
example, it could simply be called Life, or Death. Customers who offer debt
cancellation instead of insurance will also usually wish to change the name of
their life product for regulatory reasons.
The title may be used for inputs (e.g. Credit Life Option) and outputs (e.g.
Credit Life Premium/Fee).
🟥 Data.Cl.TrueMob.Prompts
| Type | Required |
|---|---|
| Object | true |
The Prompts object returns information to the calling application about optional
prompts/inputs that may be allowed for this life product.
Fields:
🔹SingleOnCoborrowerObjects:
None
🔹 Data.Cl.TrueMob.Prompts.SingleOnCoborrower
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If single coverage is allowed on the co-borrower, then this field will hold a
value of true. If it holds a value of false, then single life is only
allowed on the primary borrower.
🟥 Data.Ah
| Type | Required |
|---|---|
| object | yes |
The Ah object returns information on accident and health protection (A&H)
configuration setup file data. Note that packaged debt protection products use
the Ah product for implementation (see Ah.IsPackagedDP).
Fields:
🔸Active,🔸Abbrev,🔸Title,🔹IsDP,🔹IsPackagedDP,🔸Method
🔸 Data.Ah.Active
| Type | Required | Values |
|---|---|---|
| Boolean | false | true, false |
If A&H coverage is configured and allowed on one or more loan types, then the
value of this field will be true and the rest of the object should be parsed
for further details.
A value of false indicates that A&H coverage is not confiured nor allowed for
this account. Furthermore, no other fields of the Ah object will be returned
to the calling application.
🔸 Data.Ah.Abbrev
| Type | Required | Values |
|---|---|---|
| String | yes | text |
Like the Title field below, this field provides an abbreviation to be used for
the product associated with the SCE's configured A&H calculation option. The
value of this element defaults to AH, although customers who wish to customize
this abbreviation may do so. Customers who offer debt cancellation instead of
insurance will also usually wish to change the abbreviations of their A&H
product for regulatory reasons.
The title may be used for inputs (e.g. AH Option) and outputs (e.g. AH Coverage Term).
🔸 Data.Ah.Title
| Type | Required | Values |
|---|---|---|
| String | yes | text |
The value of this field holds the product title associated with the SCE's
configured disability product. This title defaults to Accident & Health,
although customers who wish to customize the name of this offering may do so.
Customers who offer debt cancellation instead of insurance will also usually
wish to change the name of their disability product for regulatory reasons.
The title may be used for inputs (e.g. Accident & Health Option) and outputs
(e.g. Accident & Health Premium/Fee).
🔹 Data.Ah.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If the A&H product has been configured as a debt protection product, then the
value of this field will be true. A value of false indicates that the
A&H product is considered insurance.
🔹 Data.Ah.IsPackagedDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If the A&H product has been configured as a packaged debt protection product,
then the value of this field will be true. A value of false indicates
that the A&H product is not configured as packaged debt protection.
When A&H is configured as packaged debt protection, the debt protection plans
offered are all enumerated under Ah.Tables[]. As an example, if
there are four packaged debt protection plans configured, then the
Ah.Tables[] array will return the name of each plan, in order.
Thus, if Ah.Tables is equal to ["Life", "Life and Disability", "Life, Disability, and Unemployment"] then Table #1 corresponds to Life,
etc.
🔸 Data.Ah.Method
| Type | Required | Values |
|---|---|---|
| String | yes | SinglePremium, StandardMob, TrueMOB, CUNASP |
The Method field returns the general method used to compute the A&H product
premiums/fees. SinglePremium indicates that a single premium or fee is
computed and (usually) financed. The StandardMob method computes a premium/fee
with each payment. The TrueMOB method computes a premium/fee on a specified
day number every month. Finally, CUNASP is a single premium method implemented
specifically for TruStage.
🟥 Data.Ah.AllowOn
| Type | Required |
|---|---|
| Object | yes |
The AllowOn object contains fields which inform the calling application the
loan types which allow for the inclusion of this product.
Fields:
🔹ARM,🔹BalloonGross,🔹BalloonMobNet,🔹Equal,🔹IntOnly,🔹Irregs,🔹PrinPlus,🔹SinglePayObjects:
None
🔹 Data.Ah.AllowOn.ARM
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Adjustable Rate Mortgages.
🔹 Data.Ah.AllowOn.BalloonGross
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Balloon Payment Loans covered with single premium gross
life.
🔹 Data.Ah.AllowOn.BalloonMobNet
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Balloon Payment Loans covered with single premium net or
monthly outstanding balance life.
🔹 Data.Ah.AllowOn.Equal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Equal
Payment Loans.
🔹 Data.Ah.AllowOn.IntOnly
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Interest Only Loans.
🔹 Data.Ah.AllowOn.Irregs
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Skip,
Pickup and Irregular Payment Loans.
🔹 Data.Ah.AllowOn.PrinPlus
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Fixed
Principal Plus Interest Loans.
🔹 Data.Ah.AllowOn.SinglePay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Single
Payment Notes.
🟥 Data.Ah.Prompts
| Type | Required |
|---|---|
| Object | true |
The Prompts object returns information to the calling application about optional
prompts/inputs that may be allowed for this A&H product.
Fields:
🔹CoverageBenefit,🔹CoverageTermGross,🔹CoverageTermMobNet,🔹Joint,🔹SingleOnCoborrowerObjects:
None
🔹 Data.Ah.Prompts.CoverageBenefit
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If the account has been configured to allow for a benefit amount to be specified
by the user, then the value of this field will be true, which indicates that
the user interface should prompt the user for an A&H benefit amount. A value of
false indicates that only the default benefit amount will be considered, and
hence there is no need to prompt for a user specified benefit.
🔹 Data.Ah.Prompts.CoverageTermGross
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true implies that the user may be prompted for a desired term of
coverage for A&H when the loan is covered with single premium gross life. A
value of false indicates that user specified coverage term truncation is not
allowed with this life coverage type and should not be prompted.
🔹 Data.Ah.Prompts.CoverageTermMobNet
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true implies that the user may be prompted for a desired term of
coverage for life when the loan is covered with single premium net or monthly
outstanding balance life. A value of false indicates that user specified
coverage term truncation is not allowed with this life coverage type and should
not be prompted.
🔹 Data.Ah.Prompts.Joint
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If joint coverage A&H is allowed, then the value of this field will be true.
Otherwise, a value of false indicates that no joint coverage option is
offered.
🔹 Data.Ah.Prompts.SingleOnCoborrower
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If single coverage is allowed on the co-borrower, then this field will hold a
value of true. If it holds a value of false, then single coverage is only
allowed on the primary borrower.
🟥 Data.Ah.Rules
| Type | Required |
|---|---|
| Object | true |
The Rules object returns information to the calling application about coverage
rules that may be in effect for this A&H product.
Fields:
🔹MustHaveLife,🔹PPYLessThan12,🔹PPYGreaterThan12Objects:
None
🔹 Data.Ah.Rules.MustHaveLife
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If A&H may only be offered on loans that include life coverage, then
the value of this field will be true. A value of false means that
A&H may be offered independently of any life product.
🔹 Data.Ah.Rules.PPYLessThan12
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If A&H is allowed on loans with annual, semiannual, quarterly, or bimonthly
payment frequencies, then the value of this field will be true.
🔹 Data.Ah.Rules.PPYGreaterThan12
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If A&H is allowed on loans with semimonthly, biweekly, or weekly payment
frequencies, then the value of this field will be true.
🟥 Data.Ah.Tables
| Type | Required |
|---|---|
| array of String objects | no |
The Tables[] array holds the name of each allowed set of A&H rates. If A&H has
been configured for packaged debt protection (see
Ah.IsPackagedDP), then this array holds the name of each
allowed packaged debt protection plan.
🟥 Data.Iu
| Type | Required |
|---|---|
| object | yes |
The Iu object returns information on involuntary unemployment protection (IU)
configuration setup file data.
🔸 Data.Iu.Active
| Type | Required | Values |
|---|---|---|
| Boolean | false | true, false |
If IU coverage is configured and allowed on one or more loan types, then the
value of this field will be true and the rest of the object should be parsed
for further details.
A value of false indicates that IU coverage is not confiured nor allowed for
this account. Furthermore, no other fields of the Iu object will be returned
to the calling application.
🔸 Data.Iu.Abbrev
| Type | Required | Values |
|---|---|---|
| String | yes | text |
Like the Title field below, this field provides an abbreviation to be used for
the product associated with the SCE's configured IU calculation option. The
value of this element defaults to IU, although customers who wish to customize
this abbreviation may do so. Customers who offer debt cancellation instead of
insurance will also usually wish to change the abbreviations of their IU product
for regulatory reasons.
The title may be used for inputs (e.g. IU Option) and outputs (e.g. IU Coverage Term).
🔸 Data.Iu.Title
| Type | Required | Values |
|---|---|---|
| String | yes | text |
The value of this field holds the product title associated with the SCE's
configured unemployment product. This title defaults to Involuntary Unemployment, although customers who wish to customize the name of this
offering may do so. Customers who offer debt cancellation instead of insurance
will also usually wish to change the name of their unemployment product for
regulatory reasons.
The title may be used for inputs (e.g. Involuntary Unemployment Option) and
outputs (e.g. Involuntary Unemployment Premium/Fee).
🔹 Data.Iu.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If the IU product has been configured as a debt protection product, then the
value of this field will be true. A value of false indicates that the
IU product is considered insurance.
🔸 Data.Iu.Method
| Type | Required | Values |
|---|---|---|
| String | yes | SinglePremium, StandardMob, TrueMOB, CUNASP |
The Method field returns the general method used to compute the IU product
premiums/fees. SinglePremium indicates that a single premium or fee is
computed and (usually) financed. The StandardMob method computes a premium/fee
with each payment. The TrueMOB method computes a premium/fee on a specified
day number every month. Finally, CUNASP is a single premium method implemented
specifically for TruStage.
🟥 Data.Iu.AllowOn
| Type | Required |
|---|---|
| Object | yes |
The AllowOn object contains fields which inform the calling application the
loan types which allow for the inclusion of this product.
Fields:
🔹ARM,🔹BalloonGross,🔹BalloonMobNet,🔹Equal,🔹IntOnly,🔹Irregs,🔹PrinPlus,🔹SinglePayObjects:
None
🔹 Data.Iu.AllowOn.ARM
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Adjustable Rate Mortgages.
🔹 Data.Iu.AllowOn.BalloonGross
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Balloon Payment Loans covered with single premium gross
life.
🔹 Data.Iu.AllowOn.BalloonMobNet
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Balloon Payment Loans covered with single premium net or
monthly outstanding balance life.
🔹 Data.Iu.AllowOn.Equal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Equal
Payment Loans.
🔹 Data.Iu.AllowOn.IntOnly
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Interest Only Loans.
🔹 Data.Iu.AllowOn.Irregs
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Skip,
Pickup and Irregular Payment Loans.
🔹 Data.Iu.AllowOn.PrinPlus
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Fixed
Principal Plus Interest Loans.
🔹 Data.Iu.AllowOn.SinglePay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Single
Payment Notes.
🟥 Data.Iu.Prompts
| Type | Required |
|---|---|
| Object | true |
The Prompts object returns information to the calling application about optional
prompts/inputs that may be allowed for this IU product.
Fields:
🔹CoverageBenefit,🔹CoverageTerm,🔹Joint,🔹SingleOnCoborrowerObjects:
None
🔹 Data.Iu.Prompts.CoverageBenefit
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If the account has been configured to allow for a benefit amount to be specified
by the user, then the value of this field will be true, which indicates that
the user interface should prompt the user for an IU benefit amount. A value of
false indicates that only the default benefit amount will be considered, and
hence there is no need to prompt for a user specified benefit.
🔹 Data.Iu.Prompts.CoverageTerm
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true implies that the user may be prompted for a desired term of
coverage for IU. A value of false indicates that user specified coverage term
truncation is not allowed and should not be prompted.
🔹 Data.Iu.Prompts.Joint
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If joint coverage IU is allowed, then the value of this field will be true.
Otherwise, a value of false indicates that no joint coverage option is
offered.
🔹 Data.Iu.Prompts.SingleOnCoborrower
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If single coverage is allowed on the co-borrower, then this field will hold a
value of true. If it holds a value of false, then single coverage is only
allowed on the primary borrower.
🟥 Data.Iu.Rules
| Type | Required |
|---|---|
| Object | true |
The Rules object returns information to the calling application about coverage
rules that may be in effect for this IU product.
Fields:
🔹JointMustHaveJointDis,🔹JointMustHaveJointLife,🔹MustHaveDis,🔹MustHaveLifeObjects:
None
🔹 Data.Iu.Rules.JointMustHaveJointDis
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If joint IU may only be offered on loans that include joint A&H coverage, then
the value of this field will be true. A value of false means that joint IU
may be offered with single A&H.
🔹 Data.Iu.Rules.JointMustHaveJointLife
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If joint IU may only be offered on loans that include joint life coverage, then
the value of this field will be true. A value of false means that joint IU
may be offered with single life.
🔹 Data.Iu.Rules.MustHaveDis
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If IU may only be offered on loans that include A&H coverage, then
the value of this field will be true. A value of false means that
IU may be offered independently of any disability product.
🔹 Data.Iu.Rules.MustHaveLife
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If IU may only be offered on loans that include life coverage, then
the value of this field will be true. A value of false means that
IU may be offered independently of any life product.
🟥 Data.Pp
| Type | Required |
|---|---|
| object | yes |
The Pp object returns information on personal property protection (PP)
configuration setup file data.
🔸 Data.Pp.Active
| Type | Required | Values |
|---|---|---|
| Boolean | false | true, false |
If PP coverage is configured and allowed on one or more loan types, then the
value of this field will be true and the rest of the object should be parsed
for further details.
A value of false indicates that PP coverage is not confiured nor allowed for
this account. Furthermore, no other fields of the Pp object will be returned
to the calling application.
🔸 Data.Pp.Abbrev
| Type | Required | Values |
|---|---|---|
| String | yes | text |
Like the Title field below, this field provides an abbreviation to be used for
the product associated with the SCE's configured PP calculation option. The
value of this element defaults to PP, although customers who wish to customize
this abbreviation may do so. Customers who offer debt cancellation instead of
insurance will also usually wish to change the abbreviations of their PP product
for regulatory reasons.
The title may be used for inputs (e.g. PP Option) and outputs (e.g. PP Premium/Fee).
🔸 Data.Pp.Title
| Type | Required | Values |
|---|---|---|
| String | yes | text |
The value of this field holds the product title associated with the SCE's
configured personal property product. This title defaults to Personal Property, although customers who wish to customize the name of this
offering may do so. Customers who offer debt cancellation instead of insurance
may wish to change the name of their unemployment product for
regulatory reasons.
The title may be used for inputs (e.g. Personal Property Option) and
outputs (e.g. Personal Property Premium/Fee).
🔹 Data.Pp.IsDP
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If the PP product has been configured as a debt protection product, then the
value of this field will be true. A value of false indicates that the
PP product is considered insurance.
🔸 Data.Pp.Method
| Type | Required | Values |
|---|---|---|
| String | yes | SinglePremium, StandardMob, TrueMOB, CUNASP |
The Method field returns the general method used to compute the PP product
premiums/fees. SinglePremium indicates that a single premium or fee is
computed and (usually) financed. The StandardMob method computes a premium/fee
with each payment. The TrueMOB method computes a premium/fee on a specified
day number every month. Finally, CUNASP is a single premium method implemented
specifically for TruStage.
🟥 Data.Pp.AllowOn
| Type | Required |
|---|---|
| Object | yes |
The AllowOn object contains fields which inform the calling application the
loan types which allow for the inclusion of this product.
Fields:
🔹ARM,🔹BalloonGross,🔹BalloonMobNet,🔹Equal,🔹IntOnly,🔹Irregs,🔹PrinPlus,🔹SinglePayObjects:
None
🔹 Data.Pp.AllowOn.ARM
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Adjustable Rate Mortgages.
🔹 Data.Pp.AllowOn.BalloonGross
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Balloon Payment Loans covered with single premium gross
life.
🔹 Data.Pp.AllowOn.BalloonMobNet
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Balloon Payment Loans covered with single premium net or
monthly outstanding balance life.
🔹 Data.Pp.AllowOn.Equal
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Equal
Payment Loans.
🔹 Data.Pp.AllowOn.IntOnly
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on
Interest Only Loans.
🔹 Data.Pp.AllowOn.Irregs
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Skip,
Pickup and Irregular Payment Loans.
🔹 Data.Pp.AllowOn.PrinPlus
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Fixed
Principal Plus Interest Loans.
🔹 Data.Pp.AllowOn.SinglePay
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
A value of true indicates that coverage for this product is allowed on Single
Payment Notes.
🟥 Data.Pp.Prompts
| Type | Required |
|---|---|
| Object | true |
The Prompts object returns information to the calling application about optional
prompts/inputs that may be allowed for this PP product.
Objects:
None
🔸 Data.Pp.Prompts.Coverage
| Type | Required | Values | Default |
|---|---|---|---|
| String | true | Entered, Principal, TotalOfPayments | n/a |
The value of the Coverage field informs the calling application how the
personal property coverage amount is determined. A value of Principal means
that the property product covers the loan's principal balance. TotalOfPayments
means that the coverage amount is the loan's total of payments.
A value of Entered means that the coverage amount is specified by the user,
and must be prompted and sent in with the loan request.
🔹 Data.Pp.Prompts.Joint
| Type | Required | Values | Default |
|---|---|---|---|
| Boolean | false | true, false | false |
If joint coverage PP is allowed, then the value of this field will be true.
Otherwise, a value of false indicates that no joint coverage option is
offered.
Version Module
The SCE JSON's version module is the simplest contained in the SCE JSON, and as such makes an ideal starting point. The version of the SCE JSON in use can also be of critical importance, so let us tackle it now.
Version Request Data Object Field Definition
Example - Request Envelope for Version Module:
{
"Module" : "Version",
"Data" : {}
}
The Data object in the Version module request should be empty (e.g {}) but present.
Version Response Data Object Field Definition
Example - Response Envelope for Version Module:
{
"Result" : 200,
"Module" : "Version",
"Data" : {
"Errors" : [
],
"Warnings" : [
],
"Product" : "SCEJSON",
"Version" : "2021.07.0",
"Rootpath" : "/var/task",
"Copyright" : "(c) 2021 J. L. Sherman and Associates, Inc."
}
}
Version Module - Request
| Object | Fields |
|---|---|
🟥Data |
There are neither fields nor child objects for the Version module, so only the
empty set is passed with the Data object.
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
Fields:
NoneObjects:
None
Version Module - Response
The Data object for a response from the Ui module is defined below, in the
order the fields are returned:
| Object | Fields |
|---|---|
🟥 Data | 🔸Product, 🔸Version, 🔸Rootpath, 🔸Copyright |
🟥Errors[] | |
🟥Warnings[] |
The Data object for a response from the Version module is defined below:
🟥 Data
| Type | Required |
|---|---|
| Object | yes |
The Data object for a response from the Cd module is defined below, in the
order the fields and objects are returned:
Fields:
🔸Product,🔸Version,🔸Rootpath,🔸CopyrightObjects:
🟥Errors[],🟥Warnings[],
The Data object for a response from the User Interface module is defined below:
🔸 Data.Product
| Type | Required |
|---|---|
| String | yes |
For the SCE JSON, the value of this field will always be set to "SCEJSON".
🔸 Data.Version
| Type | Required |
|---|---|
| String | yes |
Holds the version information for the SCE JSON.
The SCE is versioned with a number formatted as "YYYY.MM.RR". J. L. Sherman and Associates has chosen to base this number upon dates and releases, instead of arbitrary version numbers. Specifically, the first part of the version number (YYYY) refers to the year of the release. The second part of the version number (MM) refers to the month of the quarterly release. As it currently stands, the quarterly releases will be made in January, April, July and October. Thus, the value of MM will always be in {1, 4, 7, 10}. Finally, the last part of the version number (RR) signifies the release number for the given quarter, with zero (0) signifying the first release of the quarter.
Hence, a version number of 2022-01-0 refers to the first release of the SCE JSON for the January, 2022 quarter. Similarly, a version number of 2021-07-02 refers to the third release of the SCE JSON in the July, 2021 quarter.
🔸 Data.Rootpath
| Type | Required |
|---|---|
| String | yes |
Contains the fully qualified path for the default directory in which the
SCE JSON will look for a data/ folder containing setup files, if required
by the request.
🔸 Data.Copyright
| Type | Required |
|---|---|
| String | yes |
Describes the copyright information for the SCE JSON.
🟥 Data.Errors[]
| Type | Required |
|---|---|
| Array of String | yes |
The Errors[] field contains an array of Strings which describe any errors
encountered while handling the request. If the length of the Errors[] Array is
zero (0), then the module processed the request successfully, and the Data
object can be further processed by the calling application for the returned
data.
On the other hand, if the length of the Errors[] Array is greater than zero
(0), then this indicates that an error condition has been detected, and the
calling application should not process the respons Data object further. In
this case, the contents of the Errors[] array will describe the error(s)
encountered.
Typical errors include the omission of 🟥 required fields, invalid field values, etc.
🟥 Data.Warnings[]
| Type | Required |
|---|---|
| Array of String | yes |
The Warnings[] field contains an array of Strings which describe any warnings
generated by the module handling the request. The most common warnings returned
by modules inform the calling application that the module does not recognize a
specified field (which may help to isolate a field name spelling error in the
calling application's code). Note that field names which start with "//" will
bre treated as comment fields by the SCE, and no warnings will be generated
for these unrecognized fields.
Example - Request and response illustrating warnings when passing unrecognized fields:
{
"Module" : "Version",
"Data" : {
"//" : "This is a comment.",
"Hello" : "Friend!",
"How" : "are you?"
}
}
{
"Result" : 200,
"Module" : "Version",
"Data" : {
"Errors" : [
],
"Warnings" : [
"Request field 'Data.Hello' not recognized.",
"Request field 'Data.How' not recognized."
],
"Product" : "SCEJSON",
"Version" : "2021.07.0",
"Rootpath" : "/var/task",
"Copyright" : "(c) 2021 J. L. Sherman and Associates, Inc."
}
}
Appendix - History
This appendix provides a history of modifications made to this reference manual in a reverse chronological order, grouped by release. By referencing this chapter when a new release arrives, you may quickly discern any documentation changes which may or may not be of interest to you.
Release 2026-01-0
- No changes made to the reference manual.
Release 2025-10-0
- No changes made to the reference manual.
Release 2025-07-0
- The Loan module now supports the
TILARESPA2015request field, which instructs the SCE to analyze the loan and include data in the request for the Integrated Mortgage Disclosures under the Real Estate Settlement Procedures Act (Regulation X) and the Truth In Lending Act (Regulation Z) rule. - The Loan module now supports the calculation and
disclosure of adjustable rate mortages via the new
ARMrequest field and its associated child fields. - The Loan module now supports an updated
EditOutput.Mergefield. We strongly advise using either thenoneororderedoptions as they are the most common and easiest to understand. The other two options (someanddefault) are provided for backwards compatibility, withsomebehaving asfalseanddefaultbehaving astruein versions of the SCE prior to the 2025-07 release.
Release 2025-04-0
- No changes made to the reference manual.
Release 2025-01-0
- The Loan module's
AccrualConfigs[].DateandFees[].Daterequest field documentation was corrected when noDatefield is provided. By default, if theDatefield is not provided, the SCE will use the earliestDatefield found in theAdvances[]array. - The Loan module's
PmtStreams[].Amountrequest field documentation has been updated to document the new options available for fixed payment streams.
Release 2024-10-0
- The Arm module's
Settings.TILARESPA2015field can now be passed in as an object with two supported boolean child fields:MinPnIDetailsandMaxPnIDetails. These two new fields allow the calling application to request detailed information about theMinPnIandMaxPnIpayments that may be returned in the amortization schedule for ARM loans with TILARESPA2015 disclosures. If set totrue, then the amounts to interest and principal for each of these payments may also be returned in theAmLines[]objects. Note that previously, theTILARESPA2015field was boolean, and this is still supported."TILARESPA2015" : trueis now equivalent to"TILARESPA2015" : {}.
Release 2024-07-0
- The Loan module's
PmtStreams[]objects now support the newReplaceIdxfield which is used to apply a replacement payment stream to a subset of the payments. Please see the documentation for this new field in the Loan chapter.
Release 2024-04-0
- The Loan module's
Advances[]objects now supportsNewPmtandPositionfields which are used when the calling application wishes to compute a loan with multiple advances, where each advance generates a new payment stream. - The Loan module now supports a new
BalAdjs[]array field which allows the calling application to make one or more balance adjustments during the amortization of a loan to better support the quotation and servicing of open ended lending.
Release 2024-01-0
- No changes made to the reference manual.
Release 2023-10-0
- The
ODI.AddToPmtfield is not supported with pure Construction Loans and the documentation for this field has been removed from the chapter covering pure construction loans. - The
ODIrequest object recognized by many loan calculation modules supports a newNoCapfield. If an odd days interest fee is present and financed, the value of this field determines if the ODI fee is added to the principal balance for the purposes of computing the ODI fee (e.g. if it is capitalized). - The documentation for the
TILARESPA2015.CD_TotPmtsfield of the response has been updated to include the value of any odd days interest that is prepaid at loan closing.
Release 2023-07-0
- The documentation for the Loan module's
Protection.Products[].Formulafield has been updated to include a table of all possible formula codes and a description of each. - The documentation for the Loan module's
Protection.Products[].DropCodeandProtection.Products[].DropReasonfields has been updated to include a table of all possible drop codes and reasons. - The
Formatrequest object recognized by many modules supports a newStrictDPfield. If the value of this field istrue, it informs the SCE to strictly verify the number of decimal places allowed for currency input values. Thus, if the calling application sends in a loan with a proceeds amount of 1000.005, the SCE will return an error code. If the value of this field isfalse, then currency values sent in with an invalid number of decimal places will be rounded to the correct number of decimal places by the SCE (using five/four rounding), and a warning message with this information will be returned with the response. - The Loan module's
APRrequest object now supports aMaxfield which allows the calling application to specify a maximum APR. If a maximum is specified, then this maximum will be included in theAPRresponse object in theMaxfield, and aMaxExceededfield will also be returned to inform the calling application whether or not the specified maximum was exceeded. - In the Drop Codes and Reasons appendix, drop code
87has been added. - A new
EndBalrequest field has been added to the Loan module, which allows for loans to be computed with a specified ending balance greater than zero. Please see the documentation covering this new element in the for more information.
Release 2023-04-0
- The Account module has been made available in this
release. This module allows the calling application to query the account
numbers and titles of all accounts defined in the
clients.setfile. If your solution does require setup file configuration services provided by J. L. Sherman and Associates, Inc., then this module will be of minimal use to you. - The User Interface module has been made available in this release. This module allows the user to determine how an account has been set up for the SCE in a given directory path, and indicates which protection products are available and what options are available for each active product. If your solution does require setup file configuration services provided by J. L. Sherman and Associates, Inc., then this module will be of minimal use to you.
- The
Formatrequest object has been added to the High Cost Mortgages (HCM), Higher Priced Mortgage Loans (HPML), and all loan calculation modules. Please see the documentation in the chapters covering the modules for further information. - With the inclusion of the new
Formatrequest object in the Loan module, theBusinessRules.CurrencyDPfield has been deprecated and the documentation for this field has been removed from this reference manual. - The default value of the
ODI.ForceUnitPeriodfield has been changed fromfalsetotruein all loan calculation modules that support theODIrequest object. - Added
APR.Code0to the Loan module. An APR code of0tells the SCE that no effective rate should be computed or returned in theAPRresponse object, so a value ofNCwill be returned forAPR.Valuewith theAPR.Typeset toNotComputed.
Release 2023-01-0
- The Adjustable Rate Mortgages module has been made available in this release.
- The Loan module's
BusinessRulesrequest object supports two new fields:MinIntChgandMinFinChg. These fields allow the calling application to specify minimum interest and finance charge values for a given loan. If adjustments are made to the final payment to satisfy the specified minimum interest and finance charge values, then newMintIntChgAdjandMinFinChgAdjfields will be present in theMoneysresponse object. - All specific loan calculation modules (i.e. Equal Payment
Loans, Balloon Payment Loans,
etc.) now support either a minimum interest charge or a minimum finance
charge through the setup files. This minimum defined in the setup files is
then active for all specific loan calculation moudle requests using that
account. If adjustments are made to the final payment to satisfy the specified
minimum interest and finance charge values, then new
MintIntChgAdjandMinFinChgAdjfields will be present in theMoneysresponse object. Please see the chapter covering the appropriate specific loan calculation module for further information. - All loan calculation modules now support financed odd days prepaid interest
via the
ODI.AddToPrinfield of the appropriate object. Note that this field will be ignored if the odd days interest is set up to be added to the first payment instead of being disclosed as a prepaid fee. - The
ODIrequest object from the Loan module has been added to all of the other loan modules. This provides a consistent way to specify odd days interest fees in all loan modules. The old way of specifying an odd days prepaid fee (via theFees[]array) has been deprecated, and the associated documentation has been removed. However, for backwards compatability purposes the functionality will remain within the SCE. Please see the appropriate loan chapter for further information. - The Loan module now supports the calculation of fixed
principal plus interest and pure principal payments where the principal
reduction amount is defined as a percentage of the computed payment. This
allows a calling application to request a principal reduction amount equal to
the computed target payment (e.g.
"Amount" : "100%C"). Please see the documentation for thePmtStreams[].Amountfield for further information. - The Loan module now allows
PmtStreams[]andFees[]dates to skip weekends, with options to move the date to the previous, next, or nearest business day. Please see the documentation for the newWeekendsfield for further information. - The Loan module now allows
PmtStreams[]andFees[]dates to skip holidays, with options to move the date to the previous or next day. Please see the documentation for the newHolidays[]array andHolidaysfield for further information. - The Loan module now supports the new
Capitalize[]array, which allows the calling application to specify a stream of interest accrual capitalization events during the term of the loan. This is most useful in loans which feature pure principal payments and which capitalize interest regurlarly on a different day of the month. - The
Formatrequest object has been added to the Annuity, Apy, Cd, and Ira modules. Please see the documentation in the chapters covering the modules for further information.
Release 2022-10-0
- The Balloon Payment Loans module has been made available in this release.
- The Construction Loans module has been made available in this release.
- The Equal Payment Loans module has been made available in this release.
- The Fixed Principal Plus Interest Loans module has been made available in this release.
- The Interest Only Loans module has been made available in this release.
- The Single Payment Notes module has been made available in this release.
- The Skip, Pickup and Irregular Payment Loans module has been made available in this release.
Release 2022-07-0
- The APY Calculation module has been made available in this release.
- The Certificates of Deposit module has been made available in this release.
- The Individual Retirement Accounts module has been made available in this release.
- The Retirement Annuities module has been made available in this release.
- The Loan module's
PmtStreams[]objects have added flexibility to the interprertation of theDatefield. For payment frequencies that are monthly multiples, the day number specified in theDatefield specifies the desired day number of all future payments, if this day number does not exceed the number of days in the computed month. As an example, if the first payment is scheduled to be made in February of 2022 and the desired day for all payments is the 30th, then the field would be specified as"Date" : "2022-02-30". TheDatefield of theFees[]objects behaves in the same manner when defining a stream of fees.
Release 2022-04-0
- The Loan module's
BusinessRulesrequest object supports a newOddFirstPmtfield. The value of this field determines if the first payment should be adjusted for odd days using the same interest accrual calendar as in effect for the loan. - The High Cost Mortgages (HCM) module has been made available in this release.
- The Higher Priced Mortgage Loans (HPML) module has been made available in this release.
Accrual Codes
| Code | Description |
|---|---|
| 100 | UnitPeriod/Federal Calendar Actuarial |
| 101 | UnitPeriod/Toyota Motor Credit Actuarial |
| 201 | UnitPeriod/360 Simple |
| 202 | UnitPeriod/365 Simple |
| 203 | UnitPeriod/DaysPerPeriod Simple (e.g. 91 for quarterly payment frequencies) |
| 204 | UnitPeriod True360/360 Simple |
| 205 | UnitPeriod True360/365 Simple |
| 206 | UnitPeriod True360/DaysPerPeriod Simple (e.g. 91 for quarterly payment frequencies) |
| 207 | UnitPeriod/Federal Calendar Simple |
| 208 | UnitPeriod/365.25 Simple |
| 209 | UnitPeriod True360/365.25 Simple |
| 210 | Actual/360 Simple |
| 211 | True365/360 Simple |
| 220 | Actual/365 Simple |
| 221 | True365/365 Simple |
| 230 | Actual/Actual Simple |
| 231 | Midnight 366 Simple |
| 240 | Actual/365.25 Simple |
| 250 | UnitPeriod/VarDPY Simple |
| 301 | UnitPeriod/360 US Rule |
| 302 | UnitPeriod/365 US Rule |
| 303 | UnitPeriod/DaysPerPeriod US Rule (e.g. 91 for quarterly payment frequencies) |
| 304 | UnitPeriod True360/360 US Rule |
| 305 | UnitPeriod True360/365 US Rule |
| 306 | UnitPeriod True360/DaysPerPeriod US Rule (e.g. 91 for quarterly payment frequencies) |
| 307 | UnitPeriod/Federal Calendar US Rule |
| 308 | UnitPeriod/365.25 US Rule |
| 309 | UnitPeriod True360/365.25 US Rule |
| 310 | Actual/360 US Rule |
| 311 | True365/360 US Rule |
| 320 | Actual/365 US Rule |
| 321 | True365/365 US Rule |
| 330 | Actual/Actual US Rule |
| 331 | Midnight 366 US Rule |
| 340 | Actual/365.25 US Rule |
| 350 | UnitPeriod/VarDPY US Rule |
| 401 | UnitPeriod/360 Add-On |
| 402 | UnitPeriod/365 Add-On |
| 403 | UnitPeriod/DaysPerPeriod Add-On (e.g. 91 for quarterly payment frequencies) |
| 404 | True360/360 Add-On |
| 405 | True360/365 Add-On |
| 406 | True360/DaysPerPeriod Add-On 91 for quarterly payment frequencies) |
Appendix - Countries
This appendix provides a list of countries supported by the SCE, along with their associated two character and three digit codes, as well as the default number of decimal places allowed for currency values.
| Country | Alpha-2 | Numeric-3 | Currency DP |
|---|---|---|---|
| Australia | AU | 036 | 2 |
| Canada | CA | 124 | 2 |
| China | CN | 156 | 2 |
| Czech Republic | CZ | 203 | 2 |
| Hong Kong | HK | 344 | 2 |
| Hungary | HU | 348 | 2 |
| Ireland | IE | 372 | 2 |
| Italy | IT | 380 | 2 |
| Philippines | PH | 608 | 2 |
| Poland | PL | 616 | 2 |
| Romania | RO | 642 | 2 |
| Slovenia | SI | 705 | 2 |
| Ukraine | UA | 804 | 2 |
| United Kingdom | GB | 826 | 2 |
| United States of America | US | 840 | 2 |
Protection Formula Codes - Loan Module
| Formula Code | Description |
|---|---|
| None | No coverage requested. |
| Unknown | Unknown formula code. |
| SP_Gross_Standard | Single premium standard gross. |
| SP_Gross_AllLevelAsDecreasing | Single premium gross on each individual payment. |
| SP_Gross_Discounted | Single premium discounted gross. |
| SP_Gross_RemPmts | Single premium gross, sum of partial premiums computed on outstanding payments vis-a-vis actuarial net. |
| SP_Gross_Level | Single premium gross using level life. |
| SP_Gross_Level_EachPmt | Single premium gross, each payment is covered with level life as if each were a single payment note. |
| SP_Gross_Level_AsDecreasing | Not currently used. |
| SP_Gross_Level_RemPmts | Single premium gross, balance at truncated term covered with level. |
| SP_Net_Standard | Single premium standard net. |
| SP_Net_Discounted | Single premium discounted net. |
| SP_Net_StraightLine | Single premium straight-line net. |
| SP_Net_MainTruncation | Single premium net, Maine truncation formula. |
| SP_Net_AmericanBankers | Single premium net, American Bankers formula. |
| SP_Net_PekinTruncation | Single premium net, Pekin insurance truncation formula. |
| SP_Net_WarmSprings | Single premium net, Warm Springs formula. |
| SP_Net_StraightLine_AmerRepub | Single premium straight-line net, American Republic formula. |
| SP_Net_RemBals | Single premium net, sum of partial premiums, each computed as rate times remaining balance. |
| SP_Net_Level | Single premium net with level. |
| SP_Net_LevelAtCap | Single premium net, level at the cap. |
| MOB_Net | Standard MOB net. |
| MOB_Gross | Standard MOB gross. |
| MOB_Benefit | Standard MOB on the benefit. |
| TrueMOB_Net | True MOB net. |
| TrueMOB_Gross | True MOB gross. |
| Ordinary_ExecTerm_AR | Southern Pioneer's Executive Term ordinary life product for Arkansas. |
| Ordinary_ProtectAllAL | Protective Life's (now a part of Life of the South) Protect-All ordinary life product for Alabama. |
| Ordinary_ProtectAll_GA | Protect-All ordinary life product for Georgia. |
| Ordinary_ProtectAll_NC | Protect-All ordinary life product for North Carolina. |
| Ordinary_ProtectAll_LA | Protect-All ordinary life product for Louisiana. |
| Ordinary_ProtectAll_SC | Protect-All ordinary life product for South Carolina. |
| Ordinary_Uniguard_TN | Uniguard ordinary life product for Tennessee. |
| CUNA_SP_Formula1 | TruStage's single premium formula #1. |
| CUNA_SP_Formula2 | TruStage's single premium formula #2. |
| CUNA_SP_Formula3 | TruStage's single premium formula #3. |
| CUNA_SP_Formula6 | TruStage's single premium formula #6. |
Protection Formula Codes - Legacy
| Formula Code | Description |
|---|---|
| gmAllLevelBalloon | All payments covered with level insurance. |
| gmAllLevelBalloonAsDecreasing | Decreasing coverage on covered payments, computed using level rates. |
| gmAllLevelEqual | Level coverage on each payment. |
| gmAllLevelEqualAsDecreasing | Decreasing coverage on covered payments, computed using level rates. |
| gmAllLevelPmts | Gross coverage on covered payments, level coverage on remaining payments. |
| gmBalloonStandard | Gross coverage on balloon payment loans (standard). |
| gmDiscounted | Discounted gross coverage. |
| gmDiscountedBalloon | Discounted gross coverage on regular payments only. |
| gmEPStandard | Gross coverage on equal payments (standard). |
| gmIntOnly | Level coverage on final payment. |
| gmIntOnlyPlus | Level coverage on final payment, gross decreasing on interest only. |
| gmIrreg | Gross coverage on outstanding sum of remaining & payments. |
| gmLevelRemPmts | Gross coverage on covered payments, level coverage on remaining payments. |
| gmLevelTruncated | Level coverage on covered payments, level coverage on remaining balance. |
| gmNone | No coverage requested. |
| gmSinglePay | Gross coverage on single payment loans (standard). |
| mobBenefit | Coverage on the payment. |
| mobCreditRE | Constant monthly premium product. |
| mobCUNALevelRate | TruStage’s Level Rate product. |
| mobCUNAMonthlyRenewable | TruStage’s Monthly Renewable product. |
| mobNone | No coverage requested. |
| mobOnBalance | Standard coverage on outstanding balance. |
| mobOnPayments | Coverage on outstanding payments. |
| nmAnicoLevel | A special ANICO method used to compute level and decreasing coverage on the loan. |
| nmBalDiscounted | Discounted net pay-off on balloon payment loan. |
| nmBalLevelOnFinal | Net coverage, with final payment covered by level. |
| nmBalStandard | Actuarial net pay-off on balloon payment loan. |
| nmBalStraightLine | Straight line net pay-off on balloon payment loan. |
| nmBalStraightLineAmerRepub | Straight line net pay-off formula used by American Republic. |
| nmCUNAAmort | TruStage's formula used in specified amortization term balloon loans. |
| nmCUNASP1 | TruStage’s single premium formula #1. |
| nmCUNASP2 | TruStage’s single premium formula #2. |
| nmCUNASP3 | TruStage’s single premium formula #3. |
| nmCUNASP4 | TruStage’s single premium formula #4. |
| nmCUNASP5 | TruStage’s single premium formula #5. |
| nmEPDiscounted | Discounted net pay-off on equal payments. |
| nmEPStandard | Actuarial net pay-off on equal payments. |
| nmEPStraightLine | Straight line net pay-off on equal payments. |
| nmIrregDecreasing | Net coverage on outstanding balances. |
| nmIrregDiscounted | Discounted net coverage on outstanding balances. |
| nmLevelAtCap | Single premium net coverage, constant premium until balance is below cap. |
| nmNone | No coverage requested. |
| nmSPNDecreasing | Decreasing coverage on the principal balance. |
| nmSPNDiscounted | Actuarialy discounted decreasing coverage. |
| nmSPNStandard | Level coverage on the principal balance. |
| olExecutiveTerm_AR | Southern Pioneer’s Executive Term ordinary life product for Arkansas. |
| olProtectAll_AL | Protective Life’s (now a part of Life of the South) Protect-All ordinary life product for Alabama. |
| olProtectAll_GA | Protect-All ordinary life product for Georgia. |
| olProtectAll_LA | Protect-All ordinary life product for Louisiana. |
| olProtectAll_NC | Protect-All ordinary life product for North Carolina. |
| olProtectAll_SC | Protect-All ordinary life product for South Carolina. |
| olProtectAll_TN | Protect-All ordinary life product for Tennessee. |
| olUniGuardDecreasing | Uniguard decreasing ordinary life product. |
| olUniGuardDecreasingAndLevel | Uniguard level coverage written in conjunction with decreasing coverage. |
| olUniGuardLevel | Uniguard level ordinary life product. |
| ppmGross | Personal property coverage on total of payments. |
| ppmNet | Personal property coverage on principal balance. |
| ppmOnEntry | Personal property coverage on entered amount. |
| SinglePremium | Single premium coverage for A&H or IUI. |
Protection Drop Codes
| Drop Code | Drop Reason |
|---|---|
| 0 | Successful Calculation |
| 1 | This insurance must be written with CL |
| 2 | No coverage on non-monthly loans |
| 3 | No coverage on Equal Payment Loans |
| 4 | No coverage on Balloon Loans |
| 5 | No coverage on Single Payment Loans |
| 6 | No coverage on Interest Only Loans |
| 7 | No coverage on Principal Plus Loans |
| 8 | No coverage on Skips/Pickups/Irregs |
| 9 | Borrower too old at loan inception |
| 10 | Co-Borrower too old at loan inception |
| 11 | Term exceeded cap |
| 12 | Borrower became too old during loan |
| 13 | Co-Borrower became too old during loan |
| 14 | Loan term is less than minimum allowed |
| 15 | Computed rate was zero |
| 16 | An invalid AH Plan was passed |
| 17 | Truncation term less than the minimum |
| 18 | Benefit cap was exceeded |
| 19 | Coverage cap was exceeded |
| 20 | Windows experienced an error |
| 21 | Windows error reading the setup file |
| 22 | NOT CURRENTLY USED |
| 23 | Equal Payment or Balloons Only |
| 24 | NOT CURRENTLY USED |
| 25 | Coverage is not allowed on this loan |
| 26 | Truncation term isn’t a valid multiple |
| 27 | Keyboard truncation not allowed |
| 28 | No keyboard truncation with Net |
| 29 | No keyboard truncation with Gross |
| 30 | No decreasing life. All coverage level |
| 31 | Term too big for insurance coverage |
| 32 | Joint requested, only single allowed |
| 33 | The age is above the maximum in band |
| 34 | The term is above the maximum in band |
| 35 | Balloon is too small for Level Life |
| 36 | All Coverage allocated to decreasing. |
| 37 | No keyboard truncation with MOB |
| 38 | TruStage No Single Pay Terms ¡ 6 Months |
| 39 | Credit Life not allowed on Annual Loans |
| 40 | Below the Minimum Insurance Term |
| 41 | Below the Minimum Loan Term |
| 42 | Formula is undefined |
| 43 | AH Requires use of a table of rates |
| 44 | LR Requires single rates, not tables |
| 45 | Customer not eligible for Insurance |
| 46 | The insurance code (e.g., 1=single) was not valid |
| 47 | Monthly Renewable exception |
| 48 | Borrower is currently older than the termination age |
| 49 | CoBorrower is older than the termination age |
| 50 | Maine Truncation only defined for monthly loans |
| 51 | Converting SP ARHate to MOB caused an exception |
| 52 | Non-Monthly not allowed with Ordinary Life |
| 53 | AH is not allowed with Ordinary Life |
| 54 | Probably a log calc tripped up an exception |
| 55 | Entry for Borrower Birthday is zero |
| 56 | Entry for CoBorrower Birthday is zero |
| 57 | No coverage for loans; Monthly |
| 58 | No coverage on construction loans |
| 59 | The term of coverage must equal CL Term |
| 60 | Loan Setup is a premium type not Single premium |
| 61 | No insurance allowed on ARM Loans |
| 62 | ARM Loans are only covered with MOB Net |
| 63 | Coverage is not allowed on Coborrower |
| 64 | Borrower is less than the minimum age |
| 65 | CoBorrower is less than the minimum age |
| 66 | Loan To Value (not implemented) |
| 67 | ARM Loans only use MOB Net or MOB on Benefit |
| 68 | Credit Life does not permit CMOB rollbacks |
| 69 | Credit Life does not permit CMOB on interest only payments nor construct loans |
| 70 | This insurance must be written with AH |
| 71 | This insurance must be written with Joint AH |
| 72 | Coverage not allowed with partial benefit and truncation |
| 73 | This insurance must be written with Joint CL |
| 74 | Preceding Interest Only payments do not allow for protection |
| 75 | Coverage not allowed on Open end loans |
| 76 | PrimaFacie rates must be expressed as $/100/Year |
| 77 | Loans with "Open End=1" must be equal payments |
| 78 | Premium is zero |
| 79 | The loan has an error and therefore reports no protection info |
| 80 | Product not available for any loan |
| 81 | Level cannot be offered if decreasing has been removed |
| 82 | An unknown ordinary life method has been chosen |
| 83 | No Keyboard benefit allowed |
| 84 | TrueMOB protection requested, but no events were logged |
| 85 | Keyboard truncation is not allowed with gross truncated level insurance |
A text description of the Note. Please see the list of codes, notes, and
descriptions below.
-
Benefit is Minimum Payment over term of coverage. When computing a loan with skipped, pickup, or irregular payments, there are a few different ways one can compute a benefit amount. This method uses the minimum non-zero payment as the benefit.
-
Benefit is Average Payment over term of coverage (excludes zero payments). Similar to above, this method uses the average of all non-zero payments over the term of coverage as the benefit.
-
Benefit is the Computed Payment. Similar to above, this method uses the computed payment as the benefit.
-
Benefit is True Average Payment over term of coverage (includes zero payments). Similar to above, this method uses the average of all payments over the term of coverage, including skips, as the benefit.
-
Protection factor uses days per period conversion. The protection calculation has converted the periodic rate to a daily rate.
-
Switch to Rate Set two. The protection calculation has switched to the second set of rates.
-
Switch method to Net. The protection calculation has switched to net coverage.
-
Switch method to Ordinary Life. The protection calculation has switched to ordinary life coverage.
-
Benefit is Average Payment over term of coverage (excludes loan principal from final payment). This average benefit calculation method is most commonly seen with interest only loans. It uses the average of all payments over the term of coverage (excluding the loan principal amount from the final payment, if covered).
Appendix - Calculation Notes
Some of the modules in the SCE may return calculation notes when certain situations are encountered during the calculation. These are not errors, but calculation notes which may help to explain something which might not be expected by the end user.
Calculation Notes
All of the calculation notes that may be returned by the SCE are documented below. Each note is associated with a numeric code and text return value. Each will be further described in the list below:
-
"Zero Interest Rule in effect. If IntRate=0, round pmts down, set Interest to zero. Negative Interest always set to zero."
In the Loan module, there is an field of the
BusinessRulesobject calledZeroInterestRule. If enabled and the interest rate is set to zero, then payments will always be rounded down, no matter what (if any) payment rounding method was specified in the input request. Furthermore, if enabled and the computed interest amount is less than zero, then the interest amount will be set to zero, even if the interest rate is greater than zero. -
"Oscillator detected and successfully resolved."
The SCE is an iterative calculation engine, and in certain circumstances, the computed principal balance (which is made up of the amount requested in addition to any amounts which are added to the principal balance) can oscillate back and forth between two values. When this situation occurs and the difference between both values is small enough, one of the two values will be used and the calculation will be completed.
-
"Currently not used."
This note is currently not implemented.
-
"The Interest Paid,
IntPaid, of the final amortization event has been adjusted to make theEndBalzero."When amortizing a loan, often times there is a non-zero ending balance due to rounding. The final interest reduction amount has been adjusted to achieve perfect amortization, which results in an ending balance of zero. Note that this will cause the final payment to not equal the sum of the principal reduction amount and amount to interest in the returned amortization schedule.
-
"The Principal Reduction,
Prin, of the final amortization event has been adjusted to make theEndBalzero."When amortizing a loan, often times there is a non-zero ending balance due to rounding. The final principal reduction amount has been adjusted to achieve perfect amortization, which results in an ending balance of zero. Note that this will cause the final payment to not equal the sum of the principal reduction amount and amount to interest in the returned amortization schedule.
-
"This loan has at least one irregular periods. IRR APR's may not accurately reflect the effective rate."
When using the IRR APR method, if there is not complete regularity in periods between events, the resulting calculated value may not reflect the true internal rate of return. Consider using the XIRR method when the periodicity is not regular.
-
"The US Rule APR was not computed, but set to the entered rate."
As requested, the US Rule APR was not computed, but set equal to the entered rate.
APR Codes
| APR Code | Description |
|---|---|
| 0 | Not computed |
| 10 | Account opening disclosure of open-end Loan |
| (APR will equal the Interest Rate) | |
| 20 | Microsoft\textregistered Excel extended internal rate of return (XIRR) |
| 30 | Unit period 360 internal rate of return (XIRR360) |
| 40 | Unit period internal rate of return (IRR) |
| 41 | Yield unit period internal rate of return (IRR) |
| 50 | European Union APR |
| 60 | Canadian APR |
| 100 | Actuarial |
| 301 | UnitPeriod/360 US Rule |
| 302 | UnitPeriod/365 US Rule |
| 303 | UnitPeriod/DaysPerPeriod US Rule |
| (e.g. 91 for quarterly payment frequencies) | |
| 304 | UnitPeriod True360/360 US Rule. |
| 305 | UnitPeriod True360/365 US Rule. |
| 306 | UnitPeriod True360/DaysPerPeriod (e.g. 91 for |
| quarterly payment frequencies) | |
| 307 | UnitPeriod/Federal Calendar US Rule |
| 308 | UnitPeriod/365.25 US Rule |
| 309 | UnitPeriod True360/365.25 US Rule |
| 310 | Actual/360 US Rule |
| 311 | True365/360 US Rule |
| 320 | Actual/365 US Rule |
| 321 | True365/365 US Rule |
| 330 | Actual/Actual US Rule |
| 331 | Midnight366 US Rule |
| 340 | Actual/365.25 US Rule |