Introduction

The Sherman Calculation Engine with XML Interface (SCEX) 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 SCEX 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 SCEX slims down to focus on computing quick calculations exclusively.

Getting Started

Each solution for the SCEX has its own particular technical platform configurations. To assist your technical team get up and running, we offer:

  • SCEX Project History - A quick historical overview of the SCEX project.
  • Installation Instructions - How to properly integrate the SCEX calculation engine into your platform.
  • Implementation Assistance - Once physical access to the engine has been established, get connected to the SCEX with your particular software solution.
  • Module Structure - An overview of the structure common to the modules found implemented in the SCEX.
  • Legend - Understand quick identifier conventions used in this manual.

Module Overview

Now that the SCEX 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 SCEX provides a broad spectrum of closed-end loan computation tools, which over the years has culminated with our flagship module, LoanBuilder.

  • LoanBuilder is designed to compute any loan from any lending market in any country 1. 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.

Open-End Lending

Support for open ended lending is available through the SCEX in two fundamental ways:

  • Initial Disclosure - The initial disclosure for an open ended loan is done with a closed-end loan module. We recomment Loan Builder for this purpose.
  • Periodic Disclosures - Lines of credit require periodic minimum payment disclosure and payoff information. Use the linked module for periodic disclosures.

Loan Servicing

As the servicing of a loan continues, various information may wish to be explored, such as given the current state of the loan, what new payment would be computed? The Loan Builder module should be used for all loan Servicing needs.

Deposit Modules

The SCEX comes with several common deposit modules, broadening your suite of solutions. They are as follows:

Compliance Modules

Loans require specific sets of mandated disclosure quantities. The SCEX comes with several modules to assist lenders to determine several critical quantities. These modules are as follows:

  • APR Module - Compute the regulatory Annual Percentage Rate along with all relevant supporting data to prove compliance to an examiner.
  • APY Module - Compute the annual percentage yield for a deposit.
  • HCM - High Cost Mortgage - Determine if the loan is a High Cost Mortgage plus the triggers causing it to be one.
  • HPML - High Priced Mortgage Loan - Determine if the loan is a High Priced Mortgage Loan with supporting data.

Miscellaneous Modules

Several solutions in the SCEX are unique modules, which are as follows:

  • Dealer Reserve - Dealers can calculate their portion of the finance charge when they, themselves, have financed vehicles with this module.
  • Refunds - Single Premium insurance products may require refunding part of the original premium when a loan is paid off early.
  • Auto Assist - The various taxes and fees are computed and bundled with the Auto Assist module.

Diagnostic Modules

The SCEX provides several diagnostic and data reporting modules for a more robust solution. These modules are as follows:

  • Version - Reports the version of the SCEX being used.
  • Account Listing - Lists all available solutions represented by setup files currently operating with the SCEX, each solution represented by a positive Account integer.
  • Input Tool - 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.
  • Setup Cache - This module is a dynamic version of the "Account Listing" module, and queries the currently running SCEX to limit and list all currently Setup Files in active cache.

This powerful suite of calculation modues will provide your company with the tools necessary to fully represent all of the loan products. As importantly, should capability or functionality be lacking, contact Sherman and Associates at support@shermanloan.com to modify the SCEX to include the new functionality.

The SCEX is a constantly growing engine and represents the accumulation of lending intelligence over decades of use. Quarterly releases announce this new functionality which may or may not be implemented depending on whether or not the new functionality is needed.


1. Only ARM's requiring TILA RESPA data are not currently supported by LoanBuilder. For these loans, choose the ARM module defined above.

PROJECT HISTORY

In the Beginning

The development and consulting team here at J. L. Sherman and Associates has accumulated over sixty 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) - the most robust loan quotation engine on the market.

Prior to the development of our desktop based loan quotation software for the 32-bit Windows platform (see WinLoan32), 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 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:

  1. 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.

  2. 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.

  3. 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 SCEX XML interface (hereafter called the SCEX) and the SCE Loan Server.

Emergence of the SCEX

The SCEX addresses problems number one and two 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 a single character buffer, which the calling application must provide.

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 platform independent and extensible and is playing an increasingly 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 based on a 10% interest rate and $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 turned off):

<outLOAN_BUILDER>
    <Results>
        <Description>Successful Calculation</Description>
    </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"/>
</outLOAN_BUILDER>

Furthermore, the second problem mentioned above is also handled. If a new input or output data field is added to the SCE, then the appropriate XML input/output tags will also 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 fields, then no recompilation is necessary!

Installation

System Requirements

The SCEX is developed with the most minimal computer requirements in mind. As mentioned earlier, it originated as a 32-bit Windows product, but our list of supported platforms has expanded to include 64-bit Windows and Linux on the Intel/AMD 64-bit architecture. The SCEX may be installed on computer hardware as lean as an old Pentium 3 laptop with 64 megabytes of RAM, and at least 7.5 megabytes of hard drive space running Windows 98.

The SCEX Loan Server must be installed on a more recent version of the Windows platform - Windows 2000 / XP / 2003 / Vista, as Windows 98 and earlier do not support services.

Summary of System Requirements

Processor: Pentium IV class processor is recommended, although the SCEX can function on a 486 CPU.

RAM: As needed by your choice of operating system.

Disk Space: 7.5 megabytes.

OS: 32/64-bit Windows, or Linux on Intel/AMD 64-bit architecture (specifically, the latest stable release of Ubuntu Linux). To use the SCEX Loan Server, Windows 2000 or later is required to host the service. Any operating system capable of communicating over TCP/IP may access the SCEX Loan Server. Once you have received the SCEX installation package (via download from Sherman and Associates’ web site), you are ready to install the SCEX.

Version Information

The SCEX is distributed as a Windows self-extracting executable. The name of the installation file will be in the form of scex_installer-x.y.z.exe for the full version SCEX, or scex_demo_installer-x.y.z.exe for the demonstration version of the SCEX.

The x.y.z portion of the installer file name refers to the version of the SCEX contained within. Sherman and Associates has chosen to standardize versioning information based upon dates and releases, instead of arbitrary version numbers. Specifically, the first part of the version number (x) refers to the year of the release. The second part of the version number (y) 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 y will always be in {1, 4, 7, 10}. Finally, the last part of the version number (z) signifies the release number for the given quarter, with zero (0) signifying the first release of the quarter.

Hence, a version number of 2005-07-0 refers to the first release of the SCEX for the July, 2005 quarter. Similarly, a version number of 2006-01-02 refers to the third release of the SCEX in the January, 2006 quarter.

Note that the version number of the installer corresponds with the version number of all applications and dynamic link library (DLL) which make up the SCEX. In this manner, it is very easy to verify that you are using the correct version of the DLL and applications, instead of having different (and arbitrary) version numbers for each, separate part of the library.


Installing the SCEX

To install the SCEX, simply run the scex_installer-x.y.z.exe application. Note that you should install the SCEX from a user account with Administrator privileges. The installer is a standard windows installation application, which will provide you with a few installation options as it executes.

Components to Install

The first installation page will prompt you for optional packages which may be installed with the SCEX, but are not required. If you choose to not install any of the optional components, then the following minimum install of system files and directories will be installed on your computer:

InstallDir\scex.dll
InstallDir\data\*.*
InstallDir\samples\*.*
InstallDir\xml\*.dtd
InstallDir\xml\output\*.dtd

It is important to note that the above set of files are the minimal installation set which will allow for the full use of the SCEX. When integrating your software with the SCEX, these files and subdirectories are the only files which need to be deployed along with your application (with the exception of the samples directory). Also, please note that the subdirectory names and relative locations to the SCEX DLL are critically important, and should not be altered.

Note that the .xml files found in the subdirectories of InstallDir\samples are sample input requests and output responses. Using the SCEX Test Application (see below), you can quickly load one of these sample XML requests and see the results generated by the SCEX.

The following optional SCEX components are also available for installation, and will be installed unless you specify otherwise:

  • SCEX Test Application: This executable lets the user enter, load, and save XML queries to send to the SCEX, and then view the result. It is very useful for trying out new XML queries and debugging existing queries.

    The following file(s) are installed if this component is selected:

    ..\InstallDir\sce_tester.exe
    
  • SCEX Account Tester Application: This application was originally created by the developers at Sherman and Associates, Inc. to ease regression testing of the SCEX releases. Instead of manually going through a set of samples for each release (which would be slow, error-prone, and hence very difficult), Sherman and Associates created an application to automate the re-testing process. Please see the help available from within this application for further detail.

    The following file(s) are installed if this component is selected:

    ..\InstallDir\AccountTest\*.*
    
  • SCEX Manual: What you are currently reading.

    The following file(s) are installed if this component is selected:

    InstallDir\scex_manual.pdf
    
  • Sample Source Code: We have provided sample source code which illustrates how to access the SCEX directly, in a variety of programming languages (currently C#, java, vb.net, and Visual C++).

    The following file(s) are installed if this component is selected:

    InstallDir\source\*.*
    

Along with the SCEX, Sherman and Associates includes the SCEX Loan Server. The SCEX Loan Server is only required if your application needs to connect to the SCEX through a TCP/IP interface. By default, the SCEX Loan Server is not installed. The following components may be installed for the SCEX Loan Server, if selected by the user:

  • System Files: In order to run the SCEX Loan Server Service, these system files must be installed. The service is not only installed in the installation directory, but also registered and started. Please see Appendix A and the LoanServerService-README.txt files for more information on the SCEX Loan Server.

    The following file(s) are installed if this component is selected:

    InstallDir\LoanServerService.exe
    InstallDir\LoanServerService-README.txt
    
  • Sample Source Code: We have provided sample source code illustrating how to access the SCEX Loan Server, using a variety of programming languages (currently C, C#, Delphi, Java, PHP, and python).

    The following file(s) are installed if this component is selected:

    InstallDir\source\loanserver\*.*
    

Installation Folder

As in most Windows installation applications, you are free to select a folder in which the SCEX and its associated files will be installed. NOTE: If you are also installing the SCEX Loan Server Service, make sure that you install the files on a local drive. Please see Appendix A for more information.

Created Shortcuts

One or more shortcuts will be created in the Windows Start Menu, and will be accessible for all users. You will find these newly created shortcuts in Start ▸ All Programs ▸ Sherman and Associates ▸ SCEX.

  • Uninstall SCEX: This shortcut links to the SCEX uninstaller. Executing it will remove the SCEX and all associated components from your computer. If the SCEX Loan Server Service is installed, it will stop the service, unregister it with Windows, and then delete it as well. This shortcut is always created.

  • SCEX Test Application: A shortcut to run the SCEX test application. As would be expected, it is only created if the SCEX Test Application component is installed.

  • SCEX Account Tester: A shortcut to run the SCEX account tester application. This is only created if the SCEX Account Tester Application component is installed.

  • SCEX Manual: A link to the pdf manual for the SCEX. Only created if the SCEX Manual component is installed.


Uninstalling the SCEX

To uninstall the SCEX and all of its associated components, you have 2 options:

  1. Click on Start ▸ All Programs ▸ Sherman and Associates ▸ SCEX ▸ Uninstall SCEX.
  2. Go to Control Panel ▸ Add/Remove Programs ▸ Sherman and Associates ▸ SCEX.

The uninstaller will stop the SCEX Loan Server Service (if running), and remove files and folders as appropriate.


Upgrading the SCEX

If you have already installed a version of the SCEX and wish to upgrade the installation to a newer release, it is recommended that you first uninstall the already installed version first, and then install the newer release. This procedure will ensure that older, out-of-date files are removed and not left behind, which may happen if you simply install the new version in the same location as the older release.

Implementation Overview

Before you can harness the power of the SCEX calculation engine, you first need to be able to call the function(s) contained in the library from your development language.

Functional Interface

To make use of the SCEX, you will need to import one (and only one!) function from the library into your programming environment. Any programming language which can access functions inside shared libraries on your SCEX platform of choice (current platforms supported include win-32, win-64 and linux-x86.64) and has the appropriate data types necessary to call the xmlcalc_ddp() routine should be able to make use of the SCEX.

The only function exported from the SCEX library that is required for implementation (and hence the only one you need to import) is called xmlcalc_ddp(). Here is the function declaration for xmlcalc_ddp(), in Delphi (object pascal, and the language in which the SCEX is written):

function xmlcalc_ddp(
  xmlIn, xmlOut: PAnsiChar;
  lenIn, lenOut: integer;
  var reqIn, reqOut: integer;
  DataDirPath: PAnsiChar
): integer; stdcall;

Note that for the Linux platforms, the stdcall calling convention is replaced with cdecl.

The variable names are found to the left of the :, with the variable type found to its right. This function uses two types of variables: PAnsiChars and integers. Integers are 32-bits in size, and are signed. PAnsiChars are pointers to ANSI character buffers, and in C are expressed as char *. The var modifier indicates that the reqIn and reqOut variables are being passed by reference instead of by value (like the variables xmlIn, xmlOut, lenIn and lenOut are).

Now, let’s see how to go about importing this function in five different languages: Delphi, Visual C++, C#, vb.net, and Java.

Delphi

As the SCEX DLL is written in the Delphi programming environment, it is to be expected that importing the function into a Delphi application is a fairly simple process.

Place the following function declaration in the interface section of a Delphi unit:

function xmlcalc_ddp(
  xmlIn, xmlOut: PAnsiChar;
  lenIn, lenOut: integer;
  var reqIn, reqOut: integer;
  DataDirPath: PAnsiChar
): integer; stdcall; external 'SCEX.DLL'

In this same unit, place the following code in the interface section. Please note that there is no semicolon at the end of this line, and that the SCEX DLL must reside in the same location as your application for this method to work.

Visual C++

To use the xmlcalc_ddp() routine in your Visual C++ application, you will need to dynamically load the library in your code and get the process address for the xmlcalc_ddp() function in that Library. This is best done in your application’s initialization routines, so that once your application has started the function is ready to accept calls. When you terminate the application, then you free up the dynamically loaded library in your code’s termination routine. The relevant Windows API calls which are used in this process are: LoadLibrary(), GetProcAddress(), and FreeLibrary(). For more information, please see the sample code (installed when you install the SCEX Sample Source Code component during the SCEX installation).

C#

To import that xmlcalc_ddp() function into your C# project from scratch, you will need to use System.Runtime.InteropServices. Furthermore, you will also need to be familiar with the StringBuilder class in System.Text, which is the C# equivalent of a character buffer.

For a complete SCEXWrapper class, please see the sample code (installed when you install the SCEX Sample Source Code component during the SCEX installation).

Java

As of release 2018-07-0 of the SCEX, a Java Native Interface function is included in the SCEX library for all supported platforms, and a Java class which implements the JNI call is provided in the sample source code directory java\Scex.java (note that if you did not install the sample source code during installation, then this file will not be present).

To illustrate the use of the Scex.java class, we have also included a simple Java class (Main.java) which creates an instance of the Scex class, sets up an SCEX XML query, and then calls the SCEX and displays the result code and resulting XML.

Note that when using the JNI interface to the SCEX, you must always specify a fully qualified path name for the DTD file, and you must also always specify the DataDirPath attribute for those XML queries which accept one.

If you wish to modify any aspects of the Scex.java file, please carefully read the comments included in it. The JNI function included in the SCEX DLL expects and requires many different facets of class Scex to be as described, and modifying these will result in a non-functional interface. It is our recommendation that Scex.java be left as is unless you are very familiar with the JNI.

Implementing the xmlcalc_ddp() Function

If you are directly calling the xmlcalc_ddp() function exported from the SCEX DLL (instead of using one of the wrapper classes provided with the sample source code), then the next step is to understand the function’s parameters and return results. If you are using one of the provided wrapper classes, then implementation is a bit easier.

Calling xmlcalc_ddp() Directly

If you wish to directly access the xmlcalc_ddp() function, then there are three facets which you must consider: variable declarations, memory allocation and result interpretation.

Variable Declarations

There are four classifications of variables passed to the xmlcalc() routine: pointers to character buffers, allocated buffer sizes, required buffer sizes, and the default data directory path.

The xmlIn and xmlOut variables are pointers to character buffers which your application has allocated (see Memory Allocation, below). The input buffer xmlIn is filled by your application before calling xmlcalc_ddp(), and its contents represent an XML query sent to the SCEX. The result of the query will be returned in the xmlOut buffer, so long as no errors are encountered (see Result Interpretation, below).

The lenIn and lenOut variables are the lengths of the associated buffers. It is critical that your application correctly set the values of these variables to represent the allocated lengths of the input and output buffers, respectively. By informing the SCEX of the size of the input and output buffers, buffer over-runs and the errors that they cause will be non-existent.

The reqIn and reqOut are return parameters used to indicate the necessary size of the input and output buffers. These two result parameters are very useful when you have not allocated enough space for the input or output buffers, as indicated by a given function result code (see Result Interpretation, below).

Finally, the DataDirPath specifies a default data directory for the SCEX to use if one is not supplied in the XML input. Please see documentation on the DataDirPath attribute in the chapter covering Equal Payment Loans for the meaning of this variable.

Memory Allocation

As noted above, providing a buffer into which both the SCEX and your example can copy xml code is of paramount importance. The exact function calls and variable types that you must vary from language to language. Here are a few samples:

  • Delphi: To allocate memory for the character buffers which will hold the xmlcalc_ddp() input and output, you can use GetMem(buffer, length), where buffer is of type PAnsiChar (a pointer to character) and length is the requested length of the character buffer, in bytes. Once you are done with the character buffers, make sure to free up the memory which was dynamically allocated using the FreeMem(buffer) procedure, where buffer is again a PChar.

  • C, Visual C++: To allocate memory for the input and output buffers in C and Visual C++, use the standard library functions malloc() and free(). See the Visual C++ sample application for an example of how the buffers are dynamically allocated.

  • C#, vb.net: Use the StringBuilder class from System.Text. See sample code for an example of its use (and a more user friendly wrappers around xmlcalc()).

Result Interpretation

After calling xmlcalc_ddp(), you should always check the integer return value to ensure that the call finished successfully, and if it did not, what kind of error occurred. Please see Table 3.1 on page 13 for a comprehensive list of result codes accompanied by a description of each.

Result CodeDescription
0Successful calculation. Results are in xmlOut.
1Not enough input space reserved. More buffer space is required to write the XML inputs. The minimum size required for the input buffer is returned in the reqIn parameter.
2Not enough output space reserved. More buffer space is required to write the XML outputs. The minimum size required for the output buffer is returned in the reqOut parameter.
3XML Output is not well formed. XML output violates at least one rule defining well-formed XML data.
4XML output is not valid.
-1XML input is not well formed. XML input violates at least one rule defining well-formed XML data.
-2XML input is not valid. (See the various query interface chapters for definitions of valid XML input).
-3An exception occurred within the SCEX.

Optional API Functions

Besides the very important xmlcalc_ddp() routine exported from the SCEX, there are other helpful routines which may be of use during development. Each of these routines is described below.

scex_calc_alloc() and scex_calc_free()

The scex_calc_alloc() routine behaves identically to the xmlcalc_ddp() routine, with the exception that the library function will automatically allocate the necessary output buffer. When first calling this routine, ensure that the output buffer is initialized to NULL and the size of the output buffer is set to zero.

Using this function will prevent calling xmlcalc_ddp() twice when the space allocated by the calling application for the output buffer is too small, and thus can effectively cut the calculation speed in half in these instances.

Since the library is allocating the space necessary for the XML output buffer, the library also must be responsible for freeing this allocated space. Thus, there is the associated scex_calc_free() library function.

Note that many of the sample code wrappers provided have been enhanced to use these new routines to ensure maximum performance.

Here are the function declarations for scex_calc_alloc() and scex_calc_free(), in Delphi (object pascal, and the language in which the SCEX is written):

function scex_calc_alloc( InBuff : PAnsiChar;
  var OutBuff : PAnsiChar;
  InBuffSize : integer;
  var OutBuffSize : integer;
  RootPath : PAnsiChar
): integer; stdcall;

function scex_calc_free( var OutBuff : PAnsiChar;
  var OutBuffSize : integer
): integer; stdcall;

Module Structure

A module is a specific calculation request sent to the SCEX for computation. The core of this manual is a description of each module available in the SCE. This module declaration functions as a switchboard identifier which the SCEX uses to direct the request data to the appropriate colculation.

The SCEX make heavy use of default values in order to precisely represent a loan in question. This maximally scaled-down approach enhances human readability of the XML. Therefore, optional elements and attributes not required for a particular loan should be omitted from the input payload. This best-practice strategy makes understanding a particular loan much easier than having a voluminous and confusing sprawl of irrelevent data.

In general, elements provide structure whereas attributes fine-tune various options available for the element.

XML Request Structure

As a rule of thumb, the root element for an XML request payload is named in (for input) and the name of the module.

<inMODULE Attributes>

   <!-- Data Elements -->
   <Element_Data Attributes>data</Element_Data>

   <!-- Empty Elements -->
   <Element_Empty Attributes/>

   <!-- Parent-Child Structures (usually optional) -->
   <Parent_Element Attributes>
      <Child_Element Attributes>data</Child>
   </Parent_Element>

</inMODULE>

Below is a sample Loan Builder loan request with life protection, illustrating this structure:

<!-- Module Name requesting a Loan Builder calculation -->
<inLOAN_BUILDER>

  <!-- Empty Elements (IntRate, Advance, Payment Stream) with attributes -->
  <EditInterest Date="2024-12-01" AccrualCode="320" IntRate="5.000" />
  <Advance Date="2024-12-01" Amount="10000.00" />
  <PmtStream Begin="2025-01-01" Term="12" />

  <!-- Parent: Loan Protection -->
  <Protection>

    <!-- Both Parent and Child: Life Protection -->
    <Product Code="LI">

      <!-- Child: Birthday of applicant -->
      <Birthday>1966-04-16</Birthday>

    </Product>  
  </Protection>
</inLOAN_BUILDER>  

This common structure facilitates faster understanding of the SCEX modules.

XML Response Structure

Just as all xml module requests are preceded by in, their corresponding response root element name is preceded with an out plus the module name. The basic structure of an SCEX Response is as follows:

<outMODULE Attributes>
  ...
</outMODULE>

Though the SCEX has broad functionality, its current primary usage is in loan computation. Whether that loan module is LOAN_BUILDER, ARM, or any other, the structure of the output is as follows:

<outMODULE Attributes>
   <Results>

      <!-- Success, Failure, Warnings -->
      <Description>*Success or Failure in the calculation request*</Description>
      <XMLDetail>XML Error: An issue that caused the failure.</XMLDetail>
      <XMLDetail>XML Warning: The calculation went through, but unexpected behavior is being reported.</XMLDetail>

      <!-- One or more key numeric results. e.g. Payment -->
      <Payment>326.55</Payment>
   </Results>
</outMODULE>

XML Legend

Color Codes

XML elements and attributes are geometrically color-coded to quickly signal whether or not they are required.

Elements

🟥 Required (Type)
🟦 Optional (Type, Default)

* Asterisk means "multiple elements are allowed".

  • "Type" is a top-level explanation of the function of the data element (explained in the first table below).
  • "Multiple" means that the element may occur more than once.

Attributes

  • 🔸 Required (Format)
  • 🔹 Optional (Format, Default)

Types

XML elements and attributes are classified as one of the following types:

TypeDescription
ModuleThe root level element that functions as an empty parent element that signals the Module request for calculation
ParentAn empty element with child elements and attributes
ChildElement is a child element of a parent
EmptyAn element whose data is packaged solely as attributes
FormatData is to be provided within strict formatting requirements. Please see the Formats table below.

Formats

Data sent to the SCEX via element and attribute values is parsed according to the expected format, each of which is described below:

Formatdataexampledescription
booleantrue, false, 1, 0falseUsed when data requires only a true or false result
rangeContiguous data[1..120]A contiguous set of numeric values captured in brackets, such as the exemplified "all integers from 1 to 120."
enumSet of labels[nearest, up, down]An 'enum' is an enumeration of isolated values often defined with a linked table
dateYYYY-MM-DD2024-01-23Dates are packaged as standard xml dates (See the <Format> element for other options.)
currencyCash values10021.31A number appropriate for a country's currency is expected
decimaldecimal data5.321A generic designation for a number that may contain decimals. e.g. An interest rate
integerwhole number120A generic designation for a non-negative integer
textA sequence of characters"DocFee" or ""Pure text, often for names
charA single character"." or ""A single character or the absence of a character

Loan Builder

The Loan Builder 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.

Sample Request

The following sample illustrates the core structure of a Loan Builder request. It is a request for an equal payment loan with a single advance of $10,000, accruing interest at 5.0%, with a term of 12 months.

<inLOAN_BUILDER>
  <Advance Date="2024-12-01" Amount="10000.00" />
  <EditInterest Date="2024-12-01" AccrualCode="320" IntRate="5.000" />
  <PmtStream Begin="2025-01-01" Term="12" />
</inLOAN_BUILDER>  

Sample Response

The following response is returned from the SCEX when provided with the sample request (above).

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outLOAN_BUILDER SYSTEM "outLOAN_BUILDER.dtd">
<outLOAN_BUILDER>
   <Results>
      <Description>Successful Calculation</Description>
   </Results>
   <FedBox>
      <AmtFin>10000.00</AmtFin>
      <FinChg>272.60</FinChg>
      <TotPmts>10272.60</TotPmts>
      <RegZAPR Type="Actuarial">4.995</RegZAPR>
   </FedBox>
   <Moneys>
      <Proceeds>10000.00</Proceeds>
      <Principal>10000.00</Principal>
      <Interest>272.60</Interest>
   </Moneys>
   <Accrual>
      <Method>Actual/365 USRule</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2025-12-01</Maturity>
   </Accrual>
   <PmtStream Term="12" Pmt="856.05" Rate="5.000" Begin="2025-01-01" PPY="12"/>
   <AmTable>
      <AmLine Idx="0" Date="2024-12-01" BegBal="0.00" Pmt="0.00" Int="0.00" Prin="-10000.00" UnpaidInt="0.00" EndBal="10000.00"/>
      <AmLine Idx="0" Date="2024-12-01" BegBal="10000.00" Pmt="0.00" Int="0.00" Prin="0.00" UnpaidInt="0.00" EndBal="10000.00"/>
      <AmLine Idx="1" Date="2025-01-01" BegBal="10000.00" Pmt="856.05" Int="42.47" Prin="813.58" UnpaidInt="0.00" EndBal="9186.42"/>
      <AmLine Idx="2" Date="2025-02-01" BegBal="9186.42" Pmt="856.05" Int="39.01" Prin="817.04" UnpaidInt="0.00" EndBal="8369.38"/>
      <AmLine Idx="3" Date="2025-03-01" BegBal="8369.38" Pmt="856.05" Int="32.10" Prin="823.95" UnpaidInt="0.00" EndBal="7545.43"/>
      <AmLine Idx="4" Date="2025-04-01" BegBal="7545.43" Pmt="856.05" Int="32.04" Prin="824.01" UnpaidInt="0.00" EndBal="6721.42"/>
      <AmLine Idx="5" Date="2025-05-01" BegBal="6721.42" Pmt="856.05" Int="27.62" Prin="828.43" UnpaidInt="0.00" EndBal="5892.99"/>
      <AmLine Idx="6" Date="2025-06-01" BegBal="5892.99" Pmt="856.05" Int="25.03" Prin="831.02" UnpaidInt="0.00" EndBal="5061.97"/>
      <AmLine Idx="7" Date="2025-07-01" BegBal="5061.97" Pmt="856.05" Int="20.80" Prin="835.25" UnpaidInt="0.00" EndBal="4226.72"/>
      <AmLine Idx="8" Date="2025-08-01" BegBal="4226.72" Pmt="856.05" Int="17.95" Prin="838.10" UnpaidInt="0.00" EndBal="3388.62"/>
      <AmLine Idx="9" Date="2025-09-01" BegBal="3388.62" Pmt="856.05" Int="14.39" Prin="841.66" UnpaidInt="0.00" EndBal="2546.96"/>
      <AmLine Idx="10" Date="2025-10-01" BegBal="2546.96" Pmt="856.05" Int="10.47" Prin="845.58" UnpaidInt="0.00" EndBal="1701.38"/>
      <AmLine Idx="11" Date="2025-11-01" BegBal="1701.38" Pmt="856.05" Int="7.23" Prin="848.82" UnpaidInt="0.00" EndBal="852.56"/>
      <AmLine Idx="12" Date="2025-12-01" BegBal="852.56" Pmt="856.05" Int="3.50" Prin="852.55" UnpaidInt="0.00" EndBal="0.01"/>
   </AmTable>
</outLOAN_BUILDER>

Loan Builder - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

ElementAttributes
🟥 <inLOAN_BUILDER>🔹Country
|- 🟥 <Advance>[]🔹Amount, 🔹Compute, 🔸Date, 🔹ExtraDays, 🔹NewPmt, 🔹Position
|- 🟦 <APR>🔹Code, 🔹Decimals, 🔹MAPR_Max, 🔹Max, 🔹SinglePayFraction, 🔹StrictTime, 🔹UseMAPR
|- 🟦 <BalAdj>[]🔹Adjust, 🔸Date, 🔹NewPmt, 🔹Target
|- 🟦 <BusinessRules>🔹AmError, 🔹AmortizeOnly, 🔹CanSkipFirst, 🔹CanSkipLast, 🔹ClosedFormEqn, 🔹LeapYearRound, 🔹MinFinChg, 🔹MinIntChg, 🔹MYED, 🔹PmtAccrualCode, 🔹OddFirstPmt, 🔹ProtMandatory, 🔹UsRuleAprException, 🔹YieldPPY, 🔹ZeroInterestRule
|- 🟦 <Capitalize>[]🔹AllowFeb29, 🔸Date, 🔹Holidays, 🔹PPY, 🔹SemimonthlyDay, 🔹Term, 🔹Weekends
|- 🟦 <Construction>🔸EndDate, 🔹HalfCommitment
|- 🟦 <EditInterest>[]🔹AccrualCode, 🔹Capitalize, 🔹Date, 🔹ExtraDays, 🔹IntRate, 🔹IntRound, 🔹NewPmt, 🔹PmtRound
|- |- 🟦 <Tier>[]🔸Ceiling, 🔸Rate
|- 🟦 <EditOutput>🔹EarlyPayoffDate, 🔹KeepSlush, 🔹Merge, 🔹PmtDollarRound, 🔹ShowAmTable, 🔹ShowFees, 🔹ShowGrandTot, 🔹ShowSubTot, 🔹ShowTap, 🔹ShowType, 🔹TagPmts
|- 🟦 <EndBal>
|- 🟦 <Fee>[]🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹AllowFeb29, 🔸Amount, 🔹Blended, 🔹CalcType, 🔹Date, 🔹EqualServChg, 🔹Holidays, 🔹IsLoanCost, 🔹LastDay, 🔹MAPR, 🔹Max, 🔹Min, 🔹Name, 🔹Position, 🔹PPY, 🔹Round, 🔹RoundBasis, 🔹SemimonthlyDay, 🔹ServChgType, 🔹Term, 🔹Weekends
|- 🟦 <Format>🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator
|- 🟦 <Holiday>[]🔸Date
|- 🟦 <Mortgage_Insurance>🔹CashDown, 🔹LoanAmt, 🔸PropertyValue, 🔹Type
|- |- 🟥 <MI_Rate>[]🔸Switch
|- |- 🟦 <Periodic>🔹DropLTV, 🔹WarnLTV
|- |- 🟦 <UpFront>🔹Paid, 🔹Units
|- 🟦 <OddDaysPrepaid>🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI
|- 🟦 <PmtStream>[]🔹AllowFeb29, 🔹Amount, 🔸Begin, 🔹ComputeTerm, 🔹Holidays, 🔹LastDay, 🔹MinPmt, 🔹PmtType, 🔹PPY, 🔹ReplaceIdx, 🔹SemimonthlyDay, 🔹Term, 🔹Weekends
|- 🟦 <Protection>🔹DataDirPath, 🔹ShowDataPath
|- |- 🟦 <Product>[]🔹Account, 🔹Code, 🔹Dismemberment, 🔹Financed, 🔹Method, 🔹ShowFactor, 🔹Table, 🔹UseLevelRates
|- |- |- 🟦 <Benefit>
|- |- |- 🟥 <Birthday>[]
|- |- |- 🟦 <Coverage>
|- |- |- 🟦 <Term>🔹Units
|- 🟦 <TILARESPA2015>

🟥 <inLOAN_BUILDER>

Element TypeData Type
Parent-

This is the root element of the request, and is required. This contains child elements which specify the particulars of the requested loan.

Attributes: 🔹Country

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 this table of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the Code attribute of the <APR> element.


🟥 <Advance>[]

Element TypeData Type
Empty-

Cash advances to the customer are specified by using the following attributes of this empty element.

Attributes: 🔹Amount, 🔹Compute, 🔸Date, 🔹ExtraDays, 🔹NewPmt, 🔹Position

🔹 Amount

Data TypeValuesDefault
Currency>= 00

The proceeds to be advanced to the borrower is defined using this attribute. If the calling application requests that the advance be computed (see the Compute attribute below), then the value of this attribute will be added to the computed advance amount, which can be useful in multiple advance loans.

🔹 Compute

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 Sherman and Associates, we call this a Roll to Advance calculation.

If the value of this attribute is true, then the calling application is requesting that the SCEX calculate one or more advances given a specified term, interest rate, and payment stream. With this in mind, all <PmtStream> elements (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.

We have provided several XML samples which illustrate various Roll to Advance calculations in the /samples directory included with the SCEX installer, for your reference.

🔸 Date

Data TypeValues
Date>= 1900-01-01

This attribute holds the XML 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, 2008 would be specified as Date="2008-01-02".

🔹 ExtraDays

Data TypeValuesDefault
Integerany0

Increase or decrease the number of days between this event and the next event by the value of this attribute. e.g. 1 will be considered one more day of interest.

🔹 NewPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the payment should change to reflect a new advance, set this attribute to true; otherwise, the payment will not change after this event. If only one <Advance> element is being used, then this attribute should be omitted altogether.

🔹 Position

Data TypeValuesDefault
EnumBeforePmt, AfterPmtBeforePmt

If an advance and a payment fall on the same day, the value of this attribute 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.

  • BeforePmt - When the advance occurs on the same date as a payment, the advance is amortized before the payment.
  • AfterPmt - When the advance occurs on the same date as a payment, the payment is amortized before the advance.

🟦 <APR>

Element TypeData Type
Empty-

Settings related to the computed effective rate returned by the SCEX (most commonly, the Regulation Z APR in the United States of America) are contained in the attributes of this otherwise empty element.

Attributes: 🔹Code, 🔹Decimals, 🔹MAPR_Max, 🔹Max, 🔹SinglePayFraction, 🔹StrictTime, 🔹UseMAPR

🔹 Code

Data TypeValuesDefault
Enumsee table belowsee below

The method of APR computation is defined by this attribute. If this attribute is not set up, the default method depends upon the value of the Country attribute. 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.

APR CodeDescription
0Not computed
10Account opening disclosure of open-end Loan (APR will equal the Interest Rate)
20Microsoft®@Excel extended internal rate of return (XIRR)
30Unit period 360 internal rate of return (XIRR360)
40Unit period internal rate of return (IRR)
41Yield unit period internal rate of return (IRR)
50European Union APR
60Canadian APR
100Actuarial
301UnitPeriod True/360/360 US Rule
302UnitPeriod True/360/365 US Rule
303UnitPeriod True/360/DaysPerPeriod (e.g. 91 for quarterly payment frequencies)
304UnitPeriod True/360/365.25 US Rule
305UnitPeriod True/365/360 US Rule
306UnitPeriod True/365/365 US Rule
307UnitPeriod True/365/DaysPerPeriod (e.g. 91 for quarterly payment frequencies)
308UnitPeriod/365.25 US Rule
309UnitPeriod True/365.25 US Rule
310Actual/360 US Rule
311True/365/360 US Rule
320Actual/365 US Rule
321True/365/365 US Rule
330Actual/Actual US Rule
331Midnight/366 US Rule
340Actual/365.25 US Rule

🔹 Decimals

Data TypeValuesDefault
Integer[1...5]3

The number of decimal places of accuracy for the disclosed APR is determined by this attribute. The default value of this attribute is 3.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Max

Data TypeValuesDefault
Decimal[-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 attribute. If a maximum is specified, then this maximum will be included in the <RegZAPR> response element in the Max attribute, and a MaxExceeded attribute will also be returned to inform the calling application whether or not the specified maximum was exceeded.

🔹 SinglePayFraction

Data TypeValuesDefault
EnumInDays, InMonthsInDays

This attribute 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.

🔹 StrictTime

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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). StrictTime 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 SCEX 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 attribute is true, the SCEX 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 SCEX 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.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the SCEX will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.


🟦 <BalAdj>[]

Element TypeData Type
Empty-

The balance that evolves with the amortizing of a loan may be adjusted to either a specific amount called a Target, or by a specific an amount called an Adjust. This element helps support open ended lending products, such as HELOCs.

Attributes: 🔹Adjust, 🔸Date, 🔹NewPmt, 🔹Target

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The value of the Adjust attribute instructs Loan Builder to adjust the balance by the amount defined, arriving at a Target equal to the sum of the current balance and the Adjust value. Either a Target or an Adjust must be defined, but not both.

🔸 Date

Data TypeValues
Datesee below

The Date attribute for the <BalAdj> element is used to define the date on which the adjustment to the loan balance is expected to occur. When the date occurs on the same day as a payment, the payment occurs before the balance adjusts.

Because one often frames the balance adjusting ”after the 12th payment”, for instance, a date masking is provided to accomplish this objective. So, rather than defining the date in the usual YYYY-MM-DD date format, the date can be defined in a nnnn-00-00 format, where ”nnnn” is the left zero-filled payment index after which the adjustment occurs.

So, if we know the 12th payment occurs on February 1st, 2025, the following balance adjustments are equivalent:

<BalAdj Date="2025-02-01" Target="5000" />
<BalAdj Date="0012-00-00" Target="5000" />

🔹 NewPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the payment should change to reflect the balance adjustment, set this attribute to true; otherwise, the payment will not change after this event.

🔹 Target

Data TypeValuesDefault
Currency>= 00

The value of the Target attribute instructs the SCE to adjust the balance to the target amount, calculating the necessary Adjust amount to meet that objective. Either a Target or an Adjust must be defined, but not both.


🟦 <BusinessRules>

Element TypeData Type
Empty-

Certain loan calculation business rules may be configured using the attributes of this otherwise empty element.

Attributes: 🔹AmError, 🔹AmortizeOnly, 🔹CanSkipFirst, 🔹CanSkipLast, 🔹ClosedFormEqn, 🔹LeapYearRound, 🔹MinFinChg, 🔹MinIntChg, 🔹MYED, 🔹PmtAccrualCode, 🔹OddFirstPmt, 🔹ProtMandatory, 🔹UsRuleAprException, 🔹YieldPPY, 🔹ZeroInterestRule

🔹 AmError

Data TypeValuesDefault
EnumAllow, AdjPmt, AdjPrin, AdjIntAllow

When amortizing a loan, often times there is a non-zero ending balance due to rounding. This attribute 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.

🔹 AmortizeOnly

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application sets the value of this attribute to true, then instead of computing a loan with payments that best amortize the principal balance to zero, the Loan Builder 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 PmtType of other than CalcPmt. In AmortizeOnly mode, the Loan Builder will not compute "regular" principal and interest payments.
  • No protection products may be requested.
  • All advances must be specified, and not computed.
  • AmError must be set to Allow.

Furthermore, the output for an AmortizeOnly="true" Loan Builder request will omit the <FedBox> and <Moneys> output elements.

🔹 CanSkipFirst

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Set this attribute 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.

🔹 CanSkipLast

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Set this attribute 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.

🔹 ClosedFormEqn

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute value to false will cause interest to be rounded during the payment search algorithm.

🔹 LeapYearRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 attribute 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.

🔹 MinFinChg

Data TypeValuesDefault
Currency>= 00

This attribute 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> child element of the <Moneys> response element.

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.

🔹 MinIntChg

Data TypeValuesDefault
Currency>= 00

This attribute 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 <MinIntChgAdj> child element of the <Moneys> response element.

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.

🔹 MYED

Data TypeValuesDefault
MM-DDsee belown/a

The MYED attribute 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 attribute need not be included in the request XML.

If included in the XML, then the value of the attribute must be in the format of "MM-DD" where 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> element with a PmtType attribute value of PmtEsc, which indicates an escrowed payment.

🔹 OddFirstPmt

Data TypeValuesDefault
Enumtrue, false, OnlyPositivefalse

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 attribute to 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 cannot specify an odd first payment using this attribute and include <OddDaysPrepaid> in the same request.

🔹 PmtAccrualCode

Data TypeValuesDefault
Enumsee accrual code tabledefault

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 AmError attribute 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.

🔹 ProtMandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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.

🔹 UsRuleAprException

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute is omitted or set to false, the US Rule APR will always be computed.

If the value of this attribute 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 accrual method has been specified, (iii) the Regulation Z Finance Charge is equal to the interest charge, and (iv) there is only a single <EditInterest> event, then the US Rule APR will be disclosed as the interest rate.

🔹 YieldPPY

Data TypeValuesDefault
Enum[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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.

🔹 ZeroInterestRule

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 attribute 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). Sherman and Associates do not recommend that you set the value of this attribute 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.


🟦 <Capitalize>[]

Element TypeData Type
Empty-

Some loans require interest to be capitalized on specific dates, irrespective of any other considerations. For these events, use the <Capitalize> element.

Attributes: 🔹AllowFeb29, 🔸Date, 🔹Holidays, 🔹PPY, 🔹SemimonthlyDay, 🔹Term, 🔹Weekends

🔹 AllowFeb29

Data TypeValuesDefault
Booleantrue, false, 1, 0true

This attribute is used when generating event dates in a capitalization stream (if any) beyond the specified Date date of the <Capitalize> element. If the value of this attribute is true, then February 29th is an allowed date.

On the other hand, if the value of this attribute 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).

🔸 Date

Data TypeValues
Date>= 1900-01-01

The Date attribute for the <Capitalize> element is used to specify the date on which to capitalize interest. (For a stream of Capitalize events, see the Term attribute.) As an example, if interest is to be capitalized on Feb. 1, 2008, the attribute should be specified as Date="2008-02-01".

🔹 Holidays

Data TypeValuesDefault
EnumIgnore, Prev, NextIgnore

If capitalization dates (including the specified start date) are not allowed to fall on specified holidays (see the <Holiday> element for more information 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:

  • Ignore - No holidays will be considered.
  • 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> element attributes 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 SCEX goes through the following steps:

  1. Generate the next date in our date stream, called the target date.
  2. 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.
  3. If weekend dates are not allowed (e.g. the Weekends attribute holds a value other than Ignore) and the target date falls on a Saturday or Sunday:
    • (a) then adjust the target date according to the attribute value.
    • (b) 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.
  4. If holidays are not allowed (e.g. the Holidays attribute holds a value other than Ignore) and the target date falls on a specified holiday:
    • (a) then adjust the target date according to the Holidays attribute value.
    • (b) If weekend dates are not allowed (e.g. the Weekends attribute holds a value other than Ignore) and the target date falls on a Saturday or Sunday, then adjust the target date in the same direction as in 4(a) above.
    • (c) 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.
    • (d) Step 4 is repeated until the target date is not adjusted.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

PPY is an abbreviation for payments per year, and as one might surmise, determines the capitalization frequency for the loan. If only one capitalization event occurs or the stream of capitilization events are monthly, this attribute may be ignored.

🔹 SemimonthlyDay

Data TypeValuesDefault
Integer[0...31]0

When specifying a semimonthly stream, the day number on which the first capitalization event occurs determines the day number for all of the following odd numbered events. If you omit this attribute or specify a value of 0, then the even numbered events will be generated using the default method within the SCEX.

If you wish to specify the day number on which even numbered events fall (overriding the default method used in the SCEX), then set the value of this attribute to the desired day number. Setting the value of this attribute 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, 2014 with events that fall on the 1st and 15th of each month for 24 events, the element should look something like this:

<Capitalize Date="2014-01-01" Term="24" PPY="24" SemimonthlyDay="15" />

🔹 Term

Data TypeValuesDefault
Integer>= 11

The Term attribute indicates the the number of capitalization events to be made at the specified frequency (see PPY above). The default value is 1. If only one capitalization event is to be used, ignore this attribute.

🔹 Weekends

Data TypeValuesDefault
EnumIgnore, Prev, Near, NextIgnore

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 attributes 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 attribute.


🟦 <Construction>

Element TypeData Type
Empty-

This element is used when a loan features a construction period, during which time interest only payments are made by the borrower. 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> element 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 element 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 element with the IsPrepaid field set to false.

Attributes: 🔸EndDate, 🔹HalfCommitment

🔸 EndDate

Data TypeValues
Datesee below

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, 2011, the attribute would be specified as EndDate="2011-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".

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.


🟦 <EditInterest>[]

Element TypeData Type
Empty-

This element is used to specify how interest is calculated. The element itself is empty, with all data for interest accrual specified in the following attributes.

Attributes: 🔹AccrualCode, 🔹Capitalize, 🔹Date, 🔹ExtraDays, 🔹IntRate, 🔹IntRound, 🔹NewPmt, 🔹PmtRound

🔹 AccrualCode

Data TypeValuesDefault
Enumsee accrual codes tabledefault

The method of interest accrual is defined by this attribute. default means one of two things: (i) if no accrual method has beend defined at all, then use the system default of 201, or (ii) if an accrual code has been previously defined, then continue to use that method. Please see the Loan Builder Accrual Codes and Descriptions table for the meanings of each code.

Add-on interest methods 401..406 have restrictions that apply. Only equal payment loans with one <EditInterest> element may use add-on interest. In addition, construction loans may not be used with add-on interest. Protection products (if any) must be single premium.

🔹 Capitalize

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If interest due is to be added to principal (capitalized) on the specified Date, set this attribute’s value to true.

🔹 Date

Data TypeValuesDefault
Datesee belowsee below

Set the date of this event. If the date is omitted, the system will use the date of the earliest advance. If an advance has not yet been specified, the system will return an error message.

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, 2008, the attribute would be specified as Date="2008-01-02".

However, to provide power and flexibility to the calling application, the SCEX will also understand Date values in the following formats:

  • nnnn-00-00 - If you wish to change an interest accrual parameter on the date of a specific payment number (n), use a value of nnnn-00-00. Thus, an attribute value of 0012-00-00 instructs the engine to set the date of this event equal to that of the 12’th payment. A value of 0000-00-00 will set the date of the event equal to the date of the first advance.

🔹 ExtraDays (integer, 0)

Data TypeValuesDefault
Integerany0

Increase or decrease the number of days between this event and the next event by the value of this attribute. e.g. 1 will be considered one more day of interest.

🔹 IntRate

Data TypeValuesDefault
Decimal[-99.999...600]see below

Defines the 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 will be used if no previous IntRate has been defined.

🔹 IntRound

Data TypeValuesDefault
Enumnearest, up, downnearest

Defines how the computed interest amount is to be rounded.

🔹 NewPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the payment should change to reflect a new interest rate, set this attribute to true; otherwise, the payment will not change after this event. If only one <EditInterest> element is being used, then this attribute should be omitted altogether.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used. The linked table lists all valid payment rounding codes available.

  • default - Use method specified in setup file
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

Note: If the ZeroInterestRule attribute of the <BusinessRules> element is set to true and all interest rates are zero, payments are forced to be rounded down. This rule ensures the total of payments never exceeds the amounts of the loan to pay off (the principal balance).


🟦 <EditInterest>[]<Tier>[]

Element TypeData Type
Empty-

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> element with its associated Rate and Ceiling attributes. Note that the IntRate which is used above the final Ceiling is the one specified in the <EditInterest> element. Furthermore, the <Tier> elements must be ordered in ascending order based upon the Ceiling amount.

As an 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 XML needed to implement this split rate structure is:

<EditInterest Date="2020-04-01" IntRate="10.000" AccrualCode="201">
  <Tier Rate="20.000" Ceiling="100" />
  <Tier Rate="15.000" Ceiling="250" />
</EditInterest>

Attributes: 🔸Ceiling, 🔸Rate

🔸 Ceiling

Data TypeValues
Currency>= 0

Defines the upper bound of the principal to which the specified split rate tier will apply.

🔸 Rate

Data TypeValues
Decimal[-99.999...600]

Defines the interest rate that applies to this split rate tier.


🟦 <EditOutput>

Element TypeData Type
Empty-

Changes to the presentation of the output data are contained in the attributes of this otherwise empty element.

Attributes: 🔹EarlyPayoffDate, 🔹KeepSlush, 🔹Merge, 🔹PmtDollarRound, 🔹ShowAmTable, 🔹ShowFees, 🔹ShowGrandTot, 🔹ShowSubTot, 🔹ShowTap, 🔹ShowType, 🔹TagPmts

🔹 EarlyPayoffDate

Data TypeValuesDefault
Datesee belowno early payoff

Specifying an EarlyPayoffDate results in a two-step computation: compute the loan completely ignoring the EarlyPayoffDate, then eliminate all events subsequent to the early payoff date and payoff the loan on that early payoff date. One common use of this attribute is to generate computed regular payments based upon a longer amortization term, with a final balloon payment made on the early payoff date (much like the <inBALLOON_SPECIFY_AMORT> query).

  • omitted - If EarlyPayoffDate is omitted, no early payoff will be computed.
  • YYYY-MM-DD - If an early payoff date is in the format of a valid XML date (i.e. YYYY-MM-DD), the loan will be paid off on the specified date.
  • nnnn-00-00 - If the early payoff date is in the format of nnnn-00-00, then the loan will be paid off by the n'th payment.

🔹 KeepSlush

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 KeepSlush to true.

🔹 Merge

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute is set to true, then payment elements will be merged together whenever possible. For example, if one event is of type CalcPmt, and another on the same day is PayPrin, then this attribute determines whether or not these two events will be combined into a single payment event or left as separate and distinct events.

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute of the <EditInterest> element. If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 ShowAmTable

Data TypeValuesDefault
Booleantrue, false, 1, 0true

To suppress the entire amortization schedule from the response, set this attribute value to false; otherwise, the amortization schedule will be returned.

🔹 ShowFees

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to false, then fees will not explicitly appear in the amortization 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> element of the outputs.

A value of true means that all fees will be explicitly accounted for, both in the <Moneys> element as child elements and in the amortization table. The Type attribute will have the name of the fee as its value.

🔹 ShowGrandTot

Data TypeValuesDefault
Booleantrue, false, 1, 0false

To show the amortization schedule grand totals in the response, set this attribute value to true; otherwise, the grand totals will not be returned.

🔹 ShowSubTot

Data TypeValuesDefault
Booleantrue, false, 1, 0false

To show the amortization schedule annual subtotals in the response, set this attribute to true; otherwise, annual subtotals will not be returned.

🔹 ShowTap

Data TypeValuesDefault
Booleantrue, false, 1, 0see below

If not specified, the default value of this attribute 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 attribute to false.

The value of this attribute determines if the total amount payable output element (i.e. <TAP>) will be computed and disclosed in the response. This quantity is broadly defined as the total of payments plus fees that do not enter into the amortization table in any way.

🔹 ShowType

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true to report the Type of each amortization event. A value of false will suppress output of the Type attribute in the amortization schedule.

🔹 TagPmts

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute is set to true, then each <PmtStream> result element will include an Idx attribute which identifies the input payment element which gave rise to it. If this attribute is set to true, then the Merge attribute must be set to false. If both are set to true, then an error will be returned.


🟦 <EndBal>

Element TypeData TypeValuesDefault
CurrencyInteger>= 00

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, in 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> element 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</EndBal> 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.

Attributes: None


🟦 <Fee>[]

Element TypeData Type
Empty-

Single occurrence and recurring fees are passed to the engine using the attributes of this empty element.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹AllowFeb29, 🔸Amount, 🔹Blended, 🔹CalcType, 🔹Date, 🔹EqualServChg, 🔹Holidays, 🔹LastDay, 🔹MAPR, 🔹Max, 🔹Min, 🔹Name, 🔹Position, 🔹PPY, 🔹Round, 🔹RoundBasis, 🔹SemimonthlyDay, 🔹ServChgType, 🔹Term, 🔹Weekends

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the advance(s)), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional Adjust attribute 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 attribute 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 SCEX is as follows:

<Fee Name="TN_Fee" CalcType="OnAmtFin" Adjust="-2000" Amount="0.115"
  AddToPrin="true" AddToFinChg="false" />

🔹 AllowFeb29

Data TypeValuesDefault
Booleantrue, false, 1, 0true

This attribute is used when generating fee dates in a fee stream (if any) beyond the specified Date date of the <Fee> element. If the value of this attribute is true, then February 29th is an allowed fee date.

On the other hand, if the value of this attribute 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).

🔸 Amount

Data TypeValuesDefault
see below>= 00

How this attribute is interpreted depends upon the CalcType attribute.

🔹 Blended

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The Blended attribute determines how the SCEX will include the fee with a payment or advance.

  • true in an advance tells the SCEX that the amount of the advance already includes the fee. false means to add the fee on top of the existing advance.
  • true in a payment means that the payment has the fee already included in it. false means the fee is added on top of the payment.

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnPrincipal, OnAmtFin, OnBalance, OnBalanceFlatDollar

This attribute specifies how the fee is to be computed, as described in the table below:

  • Dollar - The Amount attribute is understood as a flat currency amount.
  • OnProceeds - The Amount attribute 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 attribute 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 attribute 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 attribute 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.0 would represent a fee accrued at an annual rate of 12.0% of the current balance.
  • OnBalanceFlat - The Amount attribute 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.

🔹 Date

Data TypeValuesDefault
Datesee belowsee below

The date on which a fee occurs. If this element defines a stream of more than one fee, then this attribute 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, 2008 would be specified as Date="2008-01-02".

A special format is accepted for annual fees (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 attribute is not specified, then it will default to the earliest specified Advance Date.

🔹 EqualServChg

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When a fee is set up as a service charge of type ByTerm (see ServChgType), this attribute 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).

🔹 Holidays

Data TypeValuesDefault
EnumIgnore, Prev, NextIgnore

If capitalization dates (including the specified start date) are not allowed to fall on specified holidays (see the <Holiday> element for more information 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:

  • Ignore - No holidays will be considered.
  • 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 element attributes 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:

  1. Generate the next date in our date stream, called the target date.
  2. 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.
  3. If weekend dates are not allowed (e.g. the Weekends attribute holds a value other than Ignore) and the target date falls on a Saturday or Sunday:
  • (a) then adjust the target date according to the attribute value.
  • (b) 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.
  1. If holidays are not allowed (e.g. the Holidays attribute holds a value other than Ignore) and the target date falls on a specified holiday:
  • (a) then adjust the target date according to the Holidays attribute value.
  • (b) If weekend dates are not allowed (e.g. the Weekends attribute holds a value other than Ignore) and the target date falls on a Saturday or Sunday, then adjust the target date in the same direction as in 4(a) above.
  • (c) 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.
  • (d) Step 4 is repeated until the target date is not adjusted.

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), the SCEX 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 SCEX. If it is sent, then the value of this attribute should be set to false.

🔹 LastDay

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute is used to resolve ambiguities 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 attribute is not a valid date, then the value of this attribute is ignored. If the value of the Term attribute is 1, then the value of this attribute is ignored.

Set this attribute’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 date.

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".

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true.

Fees which are added to the finance charge (see AddToFinChg) are always considered MAPR fees, regardless of the stated value of this attribute.

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).

🔹 Max

Data TypeValuesDefault
Currency>= 00

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 attribute 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.

🔹 Min

Data TypeValuesDefault
Currency>= 00

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 attribute 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.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. However, the value of this attribute will be used to identify the fee in the returned response, and hence it is highly recommended that you name your fees accordingly.

🔹 Position

Data TypeValuesDefault
EnumDefault, OnAdvance, BeforePmt, InPmt, AfterPmt, NotInPmtDefault

Fees influence a loan depending on when they are applied.

  • OnAdvance - The fee is included in the application of an advance.
  • BeforePmt - When the fee occurs on the same date as a payment, the fee is calculated before the payment amortizes the loan.
  • InPmt - The fee is included as part of the payment.
  • AfterPmt - When the fee occurs on the same date as a payment, the payment first amortizes the loan, then the fee is calculated and applied.
  • NotInPmt - 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”.
  • Default - means different things, depending on when the fee occurs. A fee on an advance is treated as if OnAdvance were selected. A fee on a payment is treated as if InPmt were selected.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

PPY is an abbreviation for payments per year, and in the case of the <Fee> element, determines the frequency for the fee stream. If the value of the Term field is 1, then the value of this field is ignored.

🔹 Round

Data TypeValuesDefault
Enumnearest, up, downnearest

The value of this attribute, along with the with the RoundBasis attribute described below, determine how the amount on which the fee is based 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 element would look something like this:

<Fee Name="DocStamp" CalcType="OnPrincipal" Amount="0.35" RoundBasis="100.00"
   Round="nearest" 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 SCEX 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):

<Fee Name="DocStamp" CalcType="Dollar" Amount="24.25" RoundBasis="1.00"
   Round="up" 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 attributes.

🔹 RoundBasis

Data TypeValuesDefault
Currency> 00.01

When rounding the amount on which the fee is based, the value of this attribute 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.

🔹 SemimonthlyDay

Data TypeValuesDefault
Integer[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 events. If you omit this attribute 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 attribute to the desired day number. Setting the value of this attribute 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 $10 fee stream beginning on January 1, 2015 with fees that fall on the 1st and 15th of each month for 48 fees, the element should look something like this:

<Fee Name="Test Fee" Date="2015-01-01" Amount="10" Term="48" PPY="24"
   SemimonthlyDay="15" />

🔹 ServChgType

Data TypeValuesDefault
EnumNone, ByTerm, ByDaysNone

This attribute 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.

  • ByTerm - means that the service charge is paid off by dividing the amount by the Term attribute of the same <Fee> element.
  • ByDays - means 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.

🔹 Term

Data TypeValuesDefault
Integer>= 11

The term attribute determines the the number of fees to be included at the specified frequency (see PPY below), after which the fee stream is completed. The default value is 1. If the value of the Date attribute is not a valid date, then the value of this attribute is ignored.

🔹 Weekends

Data TypeValuesDefault
EnumIgnore, Prev, Near, NextIgnore

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 attributes can cause the computed dates to be adjusted - AllowFeb29 and Weekends. For a complete description of how these three ideas work together, please see the documentation for the Holidays attribute.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟦 <Holiday>[]

Element TypeData Type
Empty-

If dates for <PmtStream> and <Fee> elements have requested that holidays be skipped (e.g., the Holidays attribute for the element 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 <Holiday> element.

The <Holiday> element itself is empty, as all required information for each holiday is specified as an attribute of this element.

Attributes: 🔸Date

🔸 Date

Data TypeValues
Datesee below

The Date attribute lets the calling application specify a holiday using one of the following formats:

  • 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 as 0000. 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 into the SCEX, the <Holiday> element would look like <Holiday Date="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 as 0001. The value of D can be from 0 to 6, where 0 = Sunday, 1 = Monday, ..., 6 = Saturday. The value of P can 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 into the SCEX, the <Holiday> element would look like <Holiday Date="0001-11-44" />.
  • 0002-NN-NN - A holiday that occurs annually but cannot be expressed using any of the above methods. Currently, the following special holidays are recognized by the SCEX:
  • 0001 - Good Friday
  • 0002 - Easter Sunday
  • 0003 - Easter Monday

🟦 <Mortgage_Insurance>

Element TypeData TypeValuesDefault
Parent--No mortgage insurance

The <Mortgage_Insurance> element determines if this loan includes one of the supported types of mortgage insurance (MI) - PMI or FHA. This element contains child elements which further specify mortgage insurance options.

NOTE: Mortgage insurance is only supported on equal, balloon, and interest only loan builder requests at this time.

Attributes: 🔹CashDown, 🔹LoanAmt, 🔸PropertyValue, 🔹Type

🔹 CashDown

Data TypeValuesDefault
Currency>= 00

The CashDown attribute 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.

🔹 LoanAmt

Data TypeValuesDefault
Currency>= 0Principal balance

The LoanAmt attribute 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.

🔹 PropertyValue

Data TypeValuesDefault
Currency>= 00

This attribute’s value represents the appraised property value, and will be used in the calculation of the loan to value ratio.

🔹 Type

Data TypeValuesDefault
Enumpmi, fhapmi

This attribute determines the type of mortgage insurance to include with the loan. If the Type attribute is set to FHA, 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.


🟥 <Mortgage_Insurance><MI_Rate>[]

Element TypeData TypeValues
DataDecimal>= 0

The value of this element specifies the cost of mortgage insurance per $100 of the loan amount. Note that there may be more than one <MI_Rate> element defined in an XML loan request (see the Switch attribute below).

As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as <MI_Rate>1.50</MI_Rate>.

Attributes: 🔸Switch

🔹 Switch

Data TypeValuesDefault
Integer> 00

This optional attribute 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 attribute. Single rate example (use a rate of $1.50 for the entire term of MI coverage):

<MI_Rate>1.50</MI_Rate>

Multiple rate example (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):

<MI_Rate>1.50</MI_Rate>
<MI_Rate Switch="120">0.20</MI_Rate>

🟦 <Mortgage_Insurance><Periodic>

Element TypeData TypeValuesDefault
DataInteger>= 00

The value of this element represents the term beyond which MI is no longer included. As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify <Periodic>180</Periodic> in the XML loan request. 0 means no term removal is in effect.

Attributes: 🔹DropLTV, 🔹WarnLTV

🔹 DropLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".

🔹 WarnLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".


🟦 <Mortgage_Insurance><UpFront>

Element TypeData TypeValuesDefault
DataDecimal>= 00

This element determines the up front fee for mortgage insurance, as disclosed in the <PMI_Fee> element in the results. If this element is not specified, 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 element can be omitted or set to zero.

The following attributes define how the fee is computed and disclosed.

Attributes: 🔹Paid, 🔹Units

🔹 Paid

Data TypeValuesDefault
EnumFinanced, AtClosing, ByLenderAtClosing

If the value of this attribute 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 a Pocket Fee that is not added to either the principal balance nor the finance charge.

🔹 Units

Data TypeValuesDefault
EnumMonths, Points, YearsMonths

If the Units attribute is set to Months, the value of the <UpFront> element represents the number of periodic MI premiums to be paid at closing.

If the Units attribute is set to Years, the value of the <UpFront> element 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 attribute is set to Points, the value of the <UpFront> element represents the percentage of principal to be paid up front. As of October 3, 2011, FHA loans use points.


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟦 <PmtStream>[]

Element TypeData Type
Empty-

Payment streams are defined using the attributes of this empty element, including individually defined payments.

Attributes: 🔹AllowFeb29, 🔹Amount, 🔸Begin, 🔹ComputeTerm, 🔹Holidays, 🔹LastDay, 🔹MinPmt, 🔹PmtType, 🔹PPY, 🔹ReplaceIdx, 🔹SemimonthlyDay, 🔹Term, 🔹Weekends

🔹 AllowFeb29

Data TypeValuesDefault
Booleantrue, false, 1, 0true

This attribute is used when generating payment dates (if any) beyond the specified Begin date of the <PmtStream> element. If the value of this attribute is true, then February 29th is an allowed payment date.

On the other hand, if the value of this attribute 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).

🔹 Amount

Data TypeValuesDefault
Currencysee below0

The meaning of the Amount attribute depends on the PmtType attribute.

  • CalcPmt - If the value of this attribute is a currency value (e.g. Amount="####.##"), then the value will be added to the calculated payment (also known as a "pickup payment"). If the suffix of the value is % (e.g. Amount="50%) then the value before the % suffix will be treated as a percentage, and the payment will be equal to the specified percentage of the computed payment.
  • FixedPmt - The amount of the fixed payment. An Amount="0" means a skipped payment. If the suffix of the value is % (e.g. Amount="1.0%") then the value before the % suffix will be treated as a percentage, and the payment will be equal to the specified percentage of the loan's disclosed principal balance. Similarly, if the suffix of the value is %B (e.g. Amount="5.0%B") then the value before the %B suffix will be treated as a percentage, and the payment will be equal to the specified percentage of the loan's outstanding principal balance at the time the payment is made.
  • PayInt - Addition to the interest only payment. If Amount="0", then it is an interest only payment. If the suffix of the value is % (e.g. Amount="1.0%") then the value before the % suffix will be treated as a percentage, and the principal portion of the payment will be equal to the specified percentage of the loan's disclosed principal balance. Similarly, if the suffix of the value is %B (e.g. Amount="5.0%B") then the value before the %B suffix will be treated as a percentage, and the principal portion of the payment will be equal to the specified percentage of the loan's outstanding principal balance at the time the payment is made. If the suffix of the value is %C (e.g. Amount="50%C) then the value before the %C suffix will be treated as a percentage, and the principal portion of the payment will be equal to the specified percentage of the computed payment.
  • PayPrin - The amount of the pure principal reduction (no interest is paid, only principal). These payments may also use the %, %B, and %C suffixes described above for the PayInt payment type.
  • PayEsc - Special payment type associated with MYED attribute of the <BusinessRules> element.

🔸 Begin

Data TypeValues
Datesee below

The Begin attribute defines when the <PmtStream> begins, and has four ways to express when the payment stream begins: on a standard date, on a payment number, every month or the month of a particular year. The special formats are used following a full payment stream of type CalcPmt. As an example of how convenient these special format are, consider a ten year teacher's loan that skips summer months. This task would require a voluminous list of <PmtStream> elements, were it not for the Month Number format described below.

The formats are as follows:

  • Standard Date (YYYY-MM-DD)

The Begin attribute for the <PmtStream> element 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, 2008, the attribute should be specified as Begin="2008-02-01".

For payment frequencies that are monthly multiples, the day number specified in this attribute 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 attribute would be specified as Begin="2022-02-30".

  • Payment Number (nnnn-00-00)

If you wish to replace a previously defined payment by specifying the payment number (n), use a value of nnnn-00-00. For example, an attribute value of 0012-00-00 instructs the engine to replace payments starting on the 12’th payment. If the value of the Term attribute is greater than one, then that number of payments will continue to be replaced.

Example: To define a stream of 12 interest only payments followed by 48 computed payments, the following XML could be used:

<PmtStream PmtType="CalcPmt" Begin="2014-12-20" Term="60" PPY="12" />
<PmtStream PmtType="PayInt" Begin="0001-00-00" Term="12" PPY="12" />
  • Month Number (0000-mm-00)

If a special payment is to occur on a specific month every year, use this format. The following example skips the summer months of June, July and August on a ten-year teacher's loan:

<PmtStream PmtType="CalcPmt" Begin="2014-12-20" Term="120" />
<PmtStream PmtType="FixedPmt" Begin="0000-06-00" Amount="0" />
<PmtStream PmtType="FixedPmt" Begin="0000-07-00" Amount="0" />
<PmtStream PmtType="FixedPmt" Begin="0000-08-00" Amount="0" />
  • Month of a Year (yyyy-mm-00)

If only the month of a particular year needs adjusting, use the "yyyy-mm-00" format. e.g. A value of 2011-08-00 instructs the SCEX to use the defined payment for every payment occurring in August of 2011 (there can be more than one payment if the payment frequency is greater than monthly).

NOTE - if the value of the Begin attribute is not a valid date (i.e. it is instead of one of the three formats mentioned above), then the LastDay, Term, and PPY attributes will be ignored, unless otherwise noted above.

🔹 ComputeTerm

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If set to true, then the ComputeTerm attribute is used to inform the Loan Builder 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 Builder module will then compute the shortest term to produce an equal payment amount less than or equal to the specified maximum payment.

As an example, the following partial XML request would direct the Loan Builder 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:

<Advance Date="2021-08-01" Amount="5000.00" />
<EditInterest Date="2021-08-01" IntRate="5.000" />
<PmtStream Begin="2021-09-01" PmtType="FixedPmt"
           Amount="300.00" Term="60" ComputeTerm="true" />

Note that in the above partial XML request, the PmtType must be set to FixedPmt, the value of the Amount attribute is set to the maximum desired payment amount, and the value of the Term attribute is set to the maximum term allowed.

🔹 Holidays

Data TypeValuesDefault
EnumIgnore, Prev, NextIgnore

If payment dates (including the specified start date) are not allowed to fall on specified holidays (see the <Holiday> element for more information 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:

  • Ignore - No holidays will be considered.
  • 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 <PmtStream> element attributes 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:

  1. Generate the next date in our date stream, called the target date.
  2. 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.
  3. If weekend dates are not allowed (e.g. the Weekends attribute holds a value other than Ignore) and the target date falls on a Saturday or Sunday:
    • (a) then adjust the target date according to the attribute value.
    • (b) 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.
  4. If holidays are not allowed (e.g. the Holidays attribute holds a value other than Ignore) and the target date falls on a specified holiday:
    • (a) then adjust the target date according to the Holidays attribute value.
    • (b) If weekend dates are not allowed (e.g. the Weekends attribute holds a value other than Ignore) and the target date falls on a Saturday or Sunday, then adjust the target date in the same direction as in 4(a) above.
    • (c) 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.
    • (d) Step 4 is repeated until the target date is not adjusted.

🔹 LastDay

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute is used to resolve ambiguities 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 attribute is not a valid date, then the value of this attribute is ignored. If the value of the Term attribute is 1, then the value of this attribute is ignored.

Set this attribute’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 Begin date.

As an example, if the calling application specifies a Begin 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".

🔹 MinPmt

Data TypeValuesDefault
Currency>= 00

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.

🔹 PmtType

Data TypeValuesDefault
EnumCalcPmt, FixedPmt, PayInt, PayPrin, PmtEscCalcPmt

Various types of payment streams may be requested by use of this attribute.

  • CalcPmt - Compute target payment(s) that defines a common payment.
  • FixedPmt - Payments in this stream are specified as the Amount attribute. If the Amount="0", the payment is skipped.
  • PayInt - Interest only payments with or without additional principal defined as the Amount attribute.
  • PayPrin - Pure principal payment. Interest accrued will persist as unpaid interest beyond the pure principal payment.
  • PmtEsc - Escrow the payments. Each payment will increase a pool of escrowed payments that amortize the loan on the year-end date. (See MYED attribute of the <BusinessRules> element).

Same Day Payments - By design or chance, payments can land on the same calendar day. How they behave depends on the combination of PmtType attributes. All possible combinations are considered below:

  • CalcPmt + CalcPmt - Merge into one CalcPmt event whose Amount is equal to the sum of the individual Amount attributes.

  • CalcPmt + FixedPmt - Replace the CalcPmt with the FixedPmt.

  • CalcPmt + PayInt - Replace the CalcPmt with the PayInt.

  • CalcPmt + PayPrin - If the PayPrin Amount is specified as a fixed dollar amount, increase the CalcPmt Amount by the PayPrin Amount and delete the PayPrin event. Otherwise, keep both payments.

  • FixedPmt + FixedPmt - Retain both payments separately.

  • FixedPmt + PayInt - Retain both payments separately.

  • FixedPmt + PayPrin - Retain both payments separately.

  • PayInt + PayInt - Merge into one PayInt event whose Amount is the sum of the two PayInt Amount attributes.

  • PayInt + PayPrin - Merge into one PayInt event, with the PayPrin Amount added to the PayInt Amount.

  • PayPrin + PayPrin - Merge into one payment, adding the Amount attributes together.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

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 theBegin attribute is not a valid date, then the value of this attribute is ignored.

🔹 ReplaceIdx

Data TypeValuesDefault
Integer>= 0-1

The ReplaceIdx attribute 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 <PmtStream> element to which the replacement payment will only be applied.

Example 1:

<!-- 2 overlapping payment streams -->
<PmtStream Begin="2024-01-01" Term="36" PmtType="PayInt" />
<PmtStream Begin="2024-01-01" Term="36" PmtType="PayPrin" Amount="1000" />

<!-- Replacement payment streams target only the “PayPrin” stream above -->
<PmtStream Begin="0000-01-00" PmtType="FixedPmt" ReplaceIdx="1"/>
<PmtStream Begin="0000-03-00" PmtType="FixedPmt" ReplaceIdx="1"/>
<PmtStream Begin="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:

<PmtStream Begin="2024-06-01" PmtType="CalcPmt" Term="60" />
<PmtStream Begin="0001-00-00" PmtType="PayInt" Term="24" />
<PmtStream Begin="0000-12-00" PmtType="FixedPmt" ReplaceIdx="1" />

Above, PmtStream[0] sets up the basic repayment schedule with 60 computed equal payments. Then, PmtStream[1] replaces payments 1-24 with interest only payments. Finally, PmtStream[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 attribute of the <EditOutput> element 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.

🔹 SemimonthlyDay ([0..31], 0)

Data TypeValuesDefault
Integer[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 attribute or specify a value of 0, then the even numbered payments will be generated using the default method within the SCEX.

If you wish to specify the day number on which even numbered payments fall (overriding the default method used in the SCEX), then set the value of this attribute to the desired day number. Setting the value of this attribute 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, 2014 with payments that fall on the 1st and 15th of each month for 24 payments, the element should look something like this:

<PmtStream PmtType="CalcPmt" Begin="2014-01-01" Amount="0" 
    Term="24" PPY="24" SemimonthlyDay="15" />

🔹 Term

Data TypeValuesDefault
Integer>= 11

The term attribute indicates the the number of payments to be made at the specified payment frequency (see PPY above), after which the payment stream is completed. The default value is 1. If the value of the Begin attribute is not a valid date, then the value of this attribute is ignored.

🔹 Weekends

Data TypeValuesDefault
EnumIgnore, Prev, Near, NextIgnore

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 attributes can cause the computed dates to be adjusted - AllowFeb29 and Weekends. For a complete description of how these three fields work together, please see the documentation for the Holidays attribute.


🟦 <Protection>

Element TypeData Type
Parent-

If the calling application wishes to add any payment protection products to the loan (e.g. credit insurance or debt protection), then this element and at least one <Product> child element must be present.

Attributes: 🔹DataDirPath, 🔹ShowDataPath

🔹 DataDirPath

Data TypeValuesDefault
Stringanydefault data directory

If this attribute is set, the SCEX will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCEX will look for the setup files in C:\SCEX\data.

If the calling application wishes to specify the data directory path in its entirety (e.g. the calling app does not want the SCEX to append \data to the provided path), then simply terminate the specified DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCEX will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCEX will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCEX API.

This attribute is useful if you wish to use only a single installation of the SCEX, but have many different setup file groupings. By specifying a different DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ShowDataPath

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines if the data directory path used in the calculation of the loan will be disclosed in the response as an attribute of the <Protection> element.


🟦 <Protection><Product>[]

Element TypeData Type
Parent-

Each protection product is individually defined through the use of a <Product> element (along with its child elements).

As an example, if a loan was requested with single decreasing life, single disability, single involuntary unemployment, and joint property insurances, then the input XML detailing the protection requests would look similar to the following:

<Protection DataDirPath="c:\scex\">
  <!-- Credit Life -->
  <Product Code="CL">
      <Birthday>1966-04-16</Birthday>
  </Product>
  <!-- Accident and Helth -->
  <Product Code="AH">
      <Birthday>1969-11-21</Birthday>
  </Product>
  <!-- Involuntary Unemployment -->
  <Product Code="IU">
      <Birthday>1966-04-16</Birthday>
  </Product>
  <!-- Personal Property -->
  <Product Code="PP">
      <Birthday>1966-04-16</Birthday>
      <Birthday>1969-11-21</Birthday>
  </Product>
</Protection>

Note: Life (Code="CL") may end up with two resulting products - decreasing and level, depending on the loan type and protection parameters.

Attributes: 🔹Account, 🔹Code, 🔹Dismemberment, 🔹Financed, 🔹Method, 🔹ShowFactor, 🔹Table, 🔹UseLevelRates

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute 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 attribute is not specified, a default value of 1 will be used.

🔹 Code

Data TypeValuesDefault
EnumLI, AH, IU, PPLI

This attribute 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 the clNNNN.ini setup file.
  • AH – The requested product is treated as accident and health and will reference the ahNNNN.ini setup file.
  • IU – The requested product is treated as involuntary unemployment and will reference the iuNNNN.ini setup file.
  • PP – The requested product is treated as property insurance and will reference the ppNNNN.ini setup file.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true. Otherwise, use the default value of false.

🔹 Financed

Data TypeValuesDefault
Booleantrue, false, 1, 0true

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.

🔹 Method

Data TypeValuesDefault
EnumDefault, Gross, Net, LevelDefault

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.

🔹 ShowFactor

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to true, then the <Cost> output element (child element of <Product>) will include a Factor attribute which is useful to Sherman and Associates when debugging protection calculations.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

When requesting the accident and health product (e.g. the Code attribute of <Product> element is set to AH), if the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AHSetCount> element returned from an <inINPUT_TOOL> query.

If the requested product Code is not AH, then this attribute is ignored.

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <Product><Benefit>

Element TypeData TypeValuesDefault
DataCurrency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this element. Omitting this element will assure 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 element will be ignored.

Attributes: None


🟥 <Product><Birthday>[]

Element TypeData TypeValues
DataDate>= 1900-01-01

This element contains the date of birth for a borrower who is requesting a payment protection product. The type of coverage provided (e.g. single or joint) is determined by the number of <Birthday> child elements for each <Product> element. Thus, to request single accident and health coverage, the <Product> element (with Code=“AH”) requires a single <Birthday> child element containing the birthday of the borrower seeking coverage. Similarly, to request joint decreasing life coverage, the <Product> element (with Code=“CL”) requires two <Birthday> child elements, each of which contains the birthday of a borrower seeking coverage.

Since the type of coverage depends upon the number of <Birthday> elements present, 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.

Attributes: None


🟦 <Product><Coverage>

Element TypeData TypeValuesDefault
DataCurrency>= 00

If you wish to specify a coverage amount less than the maximum allowed, then do so with this element. Omitting this element will assure 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 element will be ignored.

Attributes: None


🟦 <Product><Term> (integer, 0)

Element TypeData TypeValuesDefault
DataInteger>= 00

If you need to specify a coverage term (in months or payments) less than the maximum allowed, then do so using this element. If this element 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 element will be ignored.

Attributes: 🔹Units

🔹 Units

Data TypeValuesDefault
EnumPmts, MonthsPmts

The specified numeric coverage term will be interpreted as a number of payments or months, depending upon the value of this attribute.


🟦 <TILARESPA2015>

Element TypeData Type
Empty-

If this element is present in the request, then the SCE will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


Loan Builder - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outLOAN_BUILDER>🔹Country, 🔹CurrencyDP
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <Note>[]🔹Code
|- |- 🟦 <XMLDetail>[]
|- 🟦 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TAP>🔹Pocket, 🔹PocketAPR, 🔹PrepaidNF
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟦 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Proceeds>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <FinFees>
|- |- 🟦 <Prepaid>
|- |- 🟦 <OtherNonAPRFees>
|- |- 🟦 <ServiceChg>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <BalAdjusts>
|- |- 🟦 <ConInterest>🔸IsPrepaid
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <MortIns>
|- |- 🟦 <Advance>[]🔸Date
|- |- 🟦 <Fee>[]🔹Name
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟥 <PmtStream>[]🔸Begin, 🔹Idx, 🔹IsSplitRate, 🔸Pmt, 🔹PPY, 🔹Rate, 🔸Term
|- 🟦 <Mortgage_Insurance>🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV
|- |- 🟥 <MI_Rate>🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate
|- |- 🟦 <UpFront>
|- |- 🟦 <Periodic>🔸IndexToDrop, 🔸IndexToWarn, 🔸LTV
|- 🟦 <Protection>🔸LoanType, 🔹Path
|- |- 🟥 <Product>[]🔸Abbrev, 🔸Code, 🔸DropCode, 🔸DropReason, 🔸Formula, 🔹IsDP, 🔸Name, 🔹RateType, 🔸Result, 🔹Table
|- |- |- 🟦 <Note>[]🔸Code
|- |- |- 🟦 <Cost>🔹Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium, 🔸Rate
|- |- |- 🟦 <Coverage>🔸Amount, 🔸Code, 🔸Note
|- |- |- 🟦 <Benefit>🔸BenMon, 🔸BenPer, 🔸Code, 🔸Note
|- |- |- 🟦 <Borrower>🔸AgeAtIssue, 🔸AgeAtMaturity, 🔹AmMonths, 🔸Birthday, 🔸Code, 🔸Maturity, 🔸Note, 🔸Months, 🔸Pmts
|- |- |- 🟦 <Caps>🔹AttainAge, 🔹Benefit, 🔹BenPer, 🔹Coverage, 🔹InceptAge, 🔹Term, 🔹TermPer
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>🔸IntTot, 🔸PmtTot, 🔸PrinTot
|- |- 🟦 <SubTotals>[]🔸Events, 🔸IntSub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔸BegBal, 🔸Date, 🔸EndBal, 🔹FeeTot, 🔸Idx, 🔸Int, 🔸Pmt, 🔹PmtEsc, 🔸Prin, 🔹ProtUnpaid, 🔹Type, 🔹UnpaidInt

🟥 <outLOAN_BUILDER>

Element TypeData Type
Parent-

This element is the root parent element that contains all of the relevant outputs. If a Country code was provided in the request, the following attribute will be included.

Attributes: 🔹Country, 🔹CurrencyDP

🔹 Country

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this optional attribute.

🔹 CurrencyDP

Data TypeValuesDefault
Integer0, 22

The number of decimal places that define the currency of the calculation.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, as well as any XML messages.

<Results>
  <Description>Successful Calculation</Description>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><Note>[]

Element TypeData TypeDefault
DataTextNULL

The <Note> elements present important calculation comments to more fully explain outputs that may either not be apparant in the inputs or have overriden input assumptions. These notes are thoroughly detailed in the Appendix titled `Calculation Notes'.

Attributes: 🔹Code

🔹 Code

Data TypeValuesDefault
Integer>= 1n/a

The unique integer identifying the <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.


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟦 <FedBox>

Element TypeData Type
Parent-

This element groups together all child elements which contain numerical FedBox information, such as the Amount Financed, Finance Charge, Total of Payments, and Regulation Z Annual Percentage Rate.

<FedBox>
  <AmtFin>10070.00</AmtFin>
  <FinChg>1685.80</FinChg>
  <TotPmts>11755.80</TotPmts>
  <RegZAPR Type="Actuarial">10.3420</RegZAPR>
  <MAPR Advance="9960.00" Max="37.000" MaxExceeded="false">11.1001</MAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TAP>

Element TypeData TypeDefault
DataCurrencyn/a

The total amount payable element is only returned with the response if the value of the ShowTap attribute of the <EditOutput> element in the request is true. The value of this element 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.

Attributes: 🔹Pocket, 🔹PocketAPR, 🔹PrepaidNF

🔹 Pocket

Data TypeDefault
Currency0

The value of this attribute is the sum of all out-of-pocket non-APR affecting fees. This attribute will only be returned if the value is greater than zero.

🔹 PocketAPR

Data TypeDefault
Currency0

The value of this attribute is the sum of all out-of-pocket APR affecting fees not paid on an advance. This attribute will only be returned if the value is greater than zero.

🔹 PrepaidNF

Data TypeDefault
Currency0

The value of this attribute is the sum of all non-financed APR prepaid fees (APR affecting fees paid on the same date as an advance). This attribute will only be returned if the value is greater than zero.


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max (decimal)

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as specified in the request (see Max). If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR has been specified, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>`

🔸 Type

Data Type
Text

This attribute returns the name of the method used to compute the reported APR. The possible values are as follows: Actuarial, [Calendar Name] US Rule, EU_APR, Canadian_APR, Open_End, XIRR, XIRR360, IRR, YieldIRR, and NotComputed.


🟦 <FedBox><MAPR>

Element TypeData TypeDefault
DataCurrencyn/a

If the military APR has been requested (see the UseMAPR attribute of the <APR> element), then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below.

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Currencyn/a

This attribute specifies the maximum Military APR as specified in the request (see the MAPR_Max attribute of the <APR> element). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum Military APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and debt protection premiums.

<Moneys>
  <Principal>10120.00</Principal>
  <Interest>1635.80</Interest>
  <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
  <FinFees>120.00</FinFees>
  <FinChgFees>91.55</FinChgFees>
  <PocketFees>65.00</PocketFees>
  <MAPRFees>201.55</MAPRFees>
  <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
  <Fee Name="FinFee">60.00</Fee>
  <Fee Name="MAPR FinFee">60.00</Fee>
  <Fee Name="Prepaid Fee">50.00</Fee>
  <Fee Name="MAPR Pocket Fee">50.00</Fee>
  <Fee Name="Pocket Fee">15.00</Fee>
</Moneys>

Attributes: None


🟥 <Moneys><Proceeds>

Element TypeData Type
DataCurrency

This element contains the sum of all <Advance> amounts.

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all <Fee> elements having AddToPrin set to true and occuring the date of an advance. If this element's value is zero, it will not show up in the results.

Attributes: None


🟦 <Moneys><Prepaid>

Element TypeData TypeDefault
DataCurrency0

This element represents all prepaid finance charges and contains the sum of all <Fee> elements occurring on an advance and having AddToFinChg set to true. If this element's value is zero, it will not show up in the results.

Attributes: None


🟦 <Moneys><OthNonAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all <Fee> elements having AddToPrin set to true not occuring the date of an advance. If this element's value is zero, it will not show up in the results.

Attributes: None


🟦 <Moneys><ServiceChg>

Element TypeData TypeDefault
DataCurrency0

This element represents all service charge <Fee> elements and contains the sum of all fees not occurring on an Advance and having AddToFinChg set to true. If this element's value is zero, it will not show up in the results.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the XML output.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><BalAdjusts>

Element TypeData TypeDefault
DataCurrency0

The sum of all balance adjustments (see <BalAdj>) is reported in this element.

Attributes: None


🟦 <Moneys><ConInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: 🔸IsPrepaid

🔸 IsPrepaid

Data TypeValues
Booleantrue, false

If the construction interest is disclosed as interest only payments in the amortization schedule, then the value of this attribute will be set to false. Otherwise, the value of this attribute will be set to true.


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

If a minimum interest charge was requested and the final payment was adjusted to meet this minimum interest charge, then this element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

If a minimum finance charge was requested and the final payment was adjusted to meet this minimum finance charge, then this element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MortIns>

If mortgage insurance was requested and not of the single premium variety, then this element will return the

Attributes: None


🟦 <Moneys><Advance>[]

Element TypeData TypeDefault
DataCurrencyn/a

If the returned loan computed any advance amounts (see the Compute attribute of the <Advance> input element for more information), then for each advance in the loan there will be an <Advance> element containing the computed advance amount.

If all of the loan's advances were specified and not computed, then there will not be any <Advance> elements found in the Loan Builder response.

Attributes: 🔸Date

🔸 Date

Data Type
Date

Contains the date on which the advance is made.


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrencyn/a

For each non-zero <Fee> requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
Textn/a

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the input element, then none will be present in the output element.


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 USRule</Method>
  <Days1Pmt DayCount="Actual">31</Days1Pmt>
  <Maturity>2025-12-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

The <Method> element contains a text description of the interest accrual method used to compute the loan (e.g. Unit Period 365 Simple).

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the period between 2024-01-01 and 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for the period between 2024-01-01 and 2024-02-01.

🟥 <Accrual><Maturity>

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as:

<Maturity>2020-02-15</Maturity>

Attributes: None


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which is done in the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% that begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔹Idx, 🔹IsSplitRate, 🔸Pmt, 🔹PPY, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains the date on which the first payment for this given payment stream is scheduled. All dates are in the form of YYYY-MM-DD, and must be 10 characters long. In the example above, the payment stream is scheduled to begin on January 22, 2024. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2014-01-22".

🔹 Idx

Data TypeDefault
Integern/a

If the value of the request's TagPmts attribute is set to true, then this attribute will appear for each <PmtStream> element. The value of this attribute identifies which input payment stream element gave rise to it.

If the value of this attribute is -1, then perfect amortization was enforced (e.g. the AmError attribute of the <BusinessRules> input element is set to Allow).

If the value of this attribute is -2, then an early payoff event was triggered, which is caused by (i) specifying the EarlyPayoffDate attribute of the <EditOutput> input element, 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.

🔹 IsSplitRate

Data TypeValuesDefault
Booleantrue, falsefalse

If this payment stream accrued interest using split-rate tiers, then this attrbute will be present and set to true. Otherwise, this attribute will not be returned and has a value of false.

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment is 879.31.

🔹 PPY

Data TypeValuesDefault
Integer1, 2, 4, 6, 12, 24, 26, 52n/a

If the Term attribute's value is greater than one, then the periodic payment frequency for this payment stream is also disclosed.

🔹 Rate

Data TypeDefault
Decimalsee below

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached. If this payment stream accrued interest using split-rate tiers (see <EditInterest><Tier>, then this attrbute will not be returned.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment streams above, the term for the payment stream is 12.


🟦 <Mortgage_Insurance>

Element TypeData Type
Parent-

If mortgage insurance is present on the requested loan, then this element and all required child elements (documented below) will be included in the response.

Attributes: None


🟥 <Mortgage_Insurance><MI_Rate>

Element TypeData Type
Empty-

Attributes of this empty element disclose the rate, premium per year, and premium per period.

Attributes: 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate

🔸 PremiumPerPeriod

Data Type
Currency

The periodic mortgage insurance premium amount.

🔸 PremiumPerYear

Data Type
Currency

The annual mortgage insurance premium amount.

🔸 Rate

Data Type
Decimal

The percentage rate used in the mortgage insurance calculation.


🟦 <Mortgage_Insurance><UpFront>

Element TypeData TypeDefault
DataCurrency0

The value of this element represents the up front fee paid for mortgage insurance. If there is no up front fee, then this element will not be present in the response.

Attributes: None


🟦 <Mortgage_Insurance><Periodic>

Element TypeData Type
Empty-

Attributes of this empty element provide the loan to value ratio, as well as the payment indexes when the principal balance falls below the specified DropLTV and WarnLTV percentage values. This element is only present if a corresponding <Periodic> element is found in the XML request.

Attributes: 🔸IndexToDrop, 🔸IndexToWarn, 🔸LTV

🔸 IndexToDrop

Data Type
Integer

The value of this attribute 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.

🔸 IndexToWarn

Data Type
Integer

The value of this attribute indicates the payment index on which the remaining principal balance to home value ratio drops below the specified WarnLTV percentage.

🔸 LTV

Data Type
Decimal

The loan to value ratio of the computed loan, expressed as a percentage.


🟦 <Protection>

Element TypeData Type
Parent-

If protection products are requested, then this element will be present in the output, along with <Product> child elements detailing each requested protection product.

Attributes: 🔸LoanType, 🔹Path

🔸 LoanType

Data TypeValues
EnumltEqual, ltBalloon, ltSinglePay, ltIntOnly, ltPrinPlus, ltSkipsIrregs, ltSkipsPickups, ltARM, ltCommercial, ltHighlyIrregular

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 attribute returns the type of loan repayment schedule that the SCE determines after analyzing the computed loan's repayment structure.

🔹 Path

Data TypeDefault
Textn/a

This optional attribute will hold the value of the data path used by the SCEX to find the required setup files for protection calculations. This attribute will only be present if the ShowDataPath attribute of the request <Protection> element is set to true.


🟥 <Protection><Product>[]

Element TypeData Type
Parent-

For each distinct payment protection product that the calling application requested with a loan, a <Product> element (along with child elements) will be returned. Note that no child elements will be present unless the Result attribute of this element is Full or Partial. If coverage is dropped, no child elements will be present.

Attributes: 🔸Abbrev, 🔸Code, 🔸DropCode, 🔸DropReason, 🔸Formula, 🔹IsDP, 🔸Name, 🔹RateType, 🔸Result, 🔹Table

🔸 Abbrev

Data Type
Decimal

The abbreviation for the product as stored in its corresponding setup file.

🔸 Code

Data TypeValues
EnumLI, LL, AH, IU, PP

This attribute defines the type of payment protection product that this element, and all child elements, refers to. It mirrors the request <Product> element's Code attribute defined earlier in the input section, with the addition of the LL code which indicates a level credit life product.

  • LI - Life
  • LL - Level Life
  • AH - Accident & Health (Disability)
  • IU - Involuntary Unemployment
  • PP - Personal Property

🔸 DropCode

Data Type
Integer

If the requested protection was dropped by the SCEX for any reason, then the value of this attribute will be greater than zero. In this case, no child elements of <Product> will be present.

A value of zero indicates that the requested product was included with the loan, and as such, the child elements of <Product> which describe the coverage details, should be parsed. Please see the table which lists each drop code and reason.

Please see the table of drop codes for a full list of all codes and their associated reasons.

🔸 DropReason

Data Type
Text

If the requested protection product was successfully included in the loan, then the value of this attribute will be Valid Calculation and corresponds to a DropCode value of 0.

If the requested protection was dropped by the SCEX for any reason (and hence, the value of DropCode is greater than 0), then this attribute will provide a brief description of why the protection was dropped. Please see the table which lists each drop code and reason.

Please see the table of drop codes for a full list of all codes and their associated reasons.

🔸 Formula

Data Type
Text

The Formula attribute 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 refer to the table of formula codes for more information.

🔹 IsDP

Data TypeValuesDefault
Enumtrue, falsefalse

This attribute indicates if the product has been set up as debt protection. If this attribute is not present, then the default value of false should be used (which indicates that the product has been set up as insurance instead).

🔸 Name

Data Type
Text

The full name of the product as stored in its corresponding setup file.

🔹 RateType

Data TypeValuesDefault
EnumFixed, VariableFixed

This attribute 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 attribute is not present, then a value of Fixed should be assumed as only one rate has been used in the protection calculation.

If this attribute 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 attribute will indicate this rate change with a value of Variable.

🔸 Result

Data TypeValues
EnumFull, Partial, Drop

The value of this attribute 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 <Product> element will not have any child elements.

  • Full - Full coverage
  • Partial - Partial coverage of some kind has been imposed on the loan.
  • Drop - Coverage has been dropped.

🔹 Table

Data TypeDefault
Textn/a

AH protection is usually associated with a particular table of rates, such as "30 Day Retro". The name of the rate table being used is stored in this attribute.


🟦 <Protection><Product><Note>[]

Element TypeData TypeDefault
DataTextn/a

The following notes may appear in the XML output to further clarify the calculation methodology. Each note is associated with a numeric code and text return value. Each will be further described in the list below:

CodeDescription
1Benefit 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.
2Benefit 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.
3Benefit is the Computed Payment. Similar to above, this method uses the computed payment as the benefit.
4Benefit 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.
5Protection factor uses days per period conversion. The protection calculation has converted the periodic rate to a daily rate.
6Switch to Rate Set two. The protection calculation has switched to the second set of rates.
7Switch method to Net. The protection calculation has switched to net coverage.
8Switch method to Ordinary Life. The protection calculation has switched to ordinary life coverage.

Attributes: 🔸Code

🔸 Code

Data Type
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> element's Code.


🟦 <Protection><Product><Cost>

Element TypeData Type
Empty-

A breakdown of the cost for protection is provided by the attributes of this element.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

Attributes: 🔹Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium, 🔸Rate

🔹 Factor

Data TypeDefault
Decimaln/a

The rate factor used to compute the premium for the requested protection product. Note that this attribute is only present if the ShowFactor attribute of the associated <Product> request element is set to true.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed as currency.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as currency per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.

🔸 Rate

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.


🟦 <Protection><Product><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element

Attributes: 🔸Amount, 🔸Code, 🔸Note

🔸 Amount

Data Type
Currency

Attribute which contains the aggregate coverage amount for this protection product.

🔸 Code

Data Type
Integer

If the requested protection was capped by the SCE for any reason, then the value of this attribute 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.

🔸 Note

Data Type
Text

The value of theNote attribute will describe the type of coverage provided. If full coverage has been provided on the aggregate coverage, then the value will be Full Coverage. Otherwise, the note will describe the type of partial coverage used.


🟦 <Protection><Product><Benefit>

Element TypeData Type
Empty-

Disability and involuntary unemployment products require dislcosure of the benefit amount.

Attributes: 🔸BenMon, 🔸BenPer, 🔸Code, 🔸Note

🔸 BenMon

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 BenPer

Data Type
Currency

Attribute which contains the periodic benefit amount for this protection product.

🔸 Code

Data Type
Integer

If the requested protection was capped by the SCE for any reason, then the value of this attribute 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.

🔸 Note

Data Type
Text

This Note 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.


🟦 <Protection><Product><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔹AmMonths, 🔸Birthday, 🔸Code, 🔸Maturity, 🔸Note, 🔸Months, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special

If coverage is written on this borrower, then the value of this attribute 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.

🔹AmMonths

Data TypeDefault
Integern/a

This attribute will 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Code

Data Type
Integer

If the requested protection was capped by the SCEX for any reason, then the value of this attribute 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Note

Data Type
Text

This Note 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.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <Protection><Product><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product.

Attributes: 🔹AttainAge, 🔹Benefit, 🔹BenPer, 🔹Coverage, 🔹InceptAge, 🔹Term, 🔹TermPer

🔹 AttainAge

Data TypeDefault
Integern/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 attribute will not be present.

🔹 Benefit

Data TypeDefault
Currencyn/a

Contains the maximum monthly benefit amount, expressed as currency. If no cap is present or applicable, then this attribute will not be present.

🔹 BenPer

Data TypeDefault
Currencyn/a

Contains the maximum periodic benefit amount, expressed as currency. If no cap is present or applicable, or if the payment frequency of the requested loan is monthly, then this attribute will not be present.

🔹 Coverage

Data TypeDefault
Currencyn/a

Contains the maximum aggregate coverage amount, expressed as currency. If no cap is present or applicable, then this attribute will not be present.

🔹 InceptAge

Data TypeDefault
Integern/a

Contains the maximum age a borrower may be at loan inception, expressed in years. If no cap is present or applicable, then this attribute will not be present.

🔹 Term

Data TypeDefault
Integern/a

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then this attribute will not be present.

🔹 TermPer

Data TypeDefault
Integern/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 attribute will not be present.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will be present unless the ShowAmTable attribute of the <EditOutput> element is set to false.

The following <AmTable> Attributes will only occur if a Canadian APR was computed as part of the loan.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔸IntTot, 🔸PmtTot, 🔸PrinTot

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will differ from the <Moneys><Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting data is found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" 
  PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔸Events, 🔸IntSub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the year in question, assuming all payments are made as scheduled.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the year in question, assuming all payments are made as scheduled.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" 
  Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔸BegBal, 🔸Date, 🔸EndBal, 🔹FeeTot, 🔸Idx, 🔸Int, 🔸Pmt, 🔹PmtEsc, 🔸Prin, 🔹ProtUnpaid, 🔹Type, 🔹UnpaidInt

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔸 Date

Data Type
Date

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔹 FeeTot

Data TypeDefault
Currency0

The total of all fees paid at this event.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category TrueMOB).

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a True MOB protection premium).

🔹 PmtEsc

Data TypeDefault
Currencyn/a

If the computed loan is an annual rest mortgage, then the sum of escrowed payments for each amortization event will appear in this attribute. If the computed loan is not an annual rest mortgage, then this attribute will not be returned.

🔸 Prin

Data Type
Currency

The amount of the payment which goes to reduce the principal balance.

🔹 ProtUnpaid

Data TypeDefault
Currency0

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 attribute to be paid off as soon as possible in a future payment.

🔹 Type

Data TypeDefault
Textn/a

The type of event is recorded in this attribute, such as Advance or FixedPmt. If any fees are included in the loan, then the value of this attribute for those fee events will be the Name of the fee, as specified in the request.

🔹 UnpaidInt

Data TypeDefault
Currencyn/a

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


Loan Classification

Payment protection products (such as the various credit insurances and debt cancellation plans) are most often defined and calculated for various regular loan repayment schedules. As an example, single premium credit life insurance usually defines one formula for computing the premium on equal payment loans, whereas a different formula is used for balloon loans and single payment notes. It is very common for a product to be allowed on a given regular loan type, but not to be allowed for another.

Since the Loan Builder module allows the calling application complete flexibility when requesting a loan, when protection is requested with a loan, the SCE must analyze the loan to determine what type of loan it is categorized as for the purposes of computing protection.

What follows is a discussion of all loan classifications recognized by the loan builder module, and the requirements that must be met for the SCE to classify a specified loan as such.

Equal Payment Loan

To be classified as an equal payment loan, the requested loan must have one <Advance> element, one <EditInterest> element, one <PmtStream> element with a PmtType attribute set to CalcPmt with a Term > 1, no <Construction> element, and no EarlyPayoffDate attribute.

Example: An equal payment loan with 120 payments.

<inLOAN_BUILDER>
  <EditInterest Date="2017-06-12" IntRate="5.15" AccrualCode="304" />
  <Advance Date="2017-06-12" Amount="50000.00" />
  <PmtStream Begin="2017-07-12" PmtType="CalcPmt" Term="120" />
</inLOAN_BUILDER>

Single Payment Note

To be classified as a single payment note, all of the conditions specified for equal payment loan classification hold, with the exception that the <PmtStream> element must have the Term attribute set to a value of 1.

Example: A loan with a single payment.

<inLOAN_BUILDER>
  <EditInterest Date="2017-10-01" IntRate="7.5" AccrualCode="310" />
  <Advance Date="2017-10-01" Amount="50000.00" />
  <PmtStream Begin="2017-12-31" PmtType="CalcPmt" Term="1" />
</inLOAN_BUILDER>

Balloon Loan with a Specified Amortization Term

To be classified as a balloon payment loan (computed via a specified amortization term), the requested loan must have one <Advance> element, one <EditInterest> element, one <PmtStream> element with a PmtType attribute set to CalcPmt and a Term > 1, no <Construction> element, and one EarlyPayoffDate attribute set to the payment number on which the loan will be terminated.

Example: A 60 payment balloon loan with regular payments computed based upon a 120 month amortization term.

<inLOAN_BUILDER>
  <EditOutput EarlyPayoffDate="0060-00-00" />
  <EditInterest Date="2017-06-12" IntRate="5.15" AccrualCode="304" />
  <Advance Date="2017-06-12" Amount="50000.00" />
  <PmtStream Begin="2017-07-12" PmtType="CalcPmt" Term="120" />
</inLOAN_BUILDER>

Balloon Loan with a Specified Regular Payment

To be classified as a balloon payment loan (computed via a specified regular payment), the requested loan must have one <Advance> element, one <EditInterest> element, one <PmtStream> element with PmtType attribute set to FixedPmt and Term > 1, an optional second <PmtStream> element with PmtType attribute set to CalcPmt and Begin set to a value formatted as NNNN-00-00 (where NNNN is the value of Term in the first <PmtStream> element), no <Construction> element, and no EarlyPayoffDate attribute. Note that the calling application does not need to specify a replacement payment type of CalcPmt, as the SCE will automatically adjust the final payment to generate a final payment which amortizes the loan.

Example: 119 specified regular payments of $500, with a computed final balloon payment.

<inLOAN_BUILDER>
  <EditInterest Date="2017-06-12" IntRate="5.15" AccrualCode="304" />
  <Advance Date="2017-06-12" Amount="50000.00" />
  <PmtStream Begin="2017-07-12" PmtType="FixedPmt" Amount="500.00" Term="120" />
  <PmtStream Begin="0120-00-00" PmtType="CalcPmt" />
</inLOAN_BUILDER>

Balloon Loan with a Specified Final Payment

To be classified as a balloon payment loan (computed via a specified final payment), the requested loan must have one <Advance> element, one <EditInterest> element, one <PmtStream> element with a PmtType attribute set to CalcPmt and Term > 1, and a second <PmtStream> element set up as a replacement payment specifying the final payment number with PmtType attribute set to FixedPmt, no <Construction> element, and no EarlyPayoffDate attribute.

Example: 119 computed regular payments with a specified final balloon payment of $10,000.

<inLOAN_BUILDER>
  <EditInterest Date="2017-06-12" IntRate="5.15" AccrualCode="304" />
  <Advance Date="2017-06-12" Amount="50000.00" />
  <PmtStream Begin="2017-07-12" PmtType="CalcPmt" Term="120" />
  <PmtStream Begin="0120-00-00" PmtType="FixedPmt" Amount="10000.00" Term="1" />
</inLOAN_BUILDER>

Interest Only Loan

To be classified as an interest only loan, the requested loan must have one <Advance> element, one <EditInterest> element, one <PmtStream> element with a PmtType attribute set to PayInt and Amount attribute set to 0 and Term > 1, no <Construction> element, and no EarlyPayoffDate attribute. Note that the calling application does not need to specify a replacement payment type of CalcPmt, as the SCE will automatically adjust the final payment to generate a final payment which amortizes the loan.

Example: 119 interest only payments, with a final balloon.

<inLOAN_BUILDER>
  <EditInterest Date="2017-06-12" IntRate="5.15" AccrualCode="304" />
  <Advance Date="2017-06-12" Amount="50000.00" />
  <PmtStream Begin="2017-07-12" PmtType="PayInt" Amount="0.00" Term="120" />
</inLOAN_BUILDER>

Fixed Principal Plus Interest Loan

To be classified as a fixed principal plus interest loan, the requested loan must have one <Advance> element, one <EditInterest> element, one <PmtStream> element with a PmtType attribute set to PayInt and Amount attribute > 0 and Term > 1, no <Construction> element, and no EarlyPayoffDate attribute. Note that the calling application does not need to specify a replacement payment type of CalcPmt, as the SCE will automatically adjust the final payment to generate a final payment which amortizes the loan.

Example: 119 fixed principal payments of $250, with a final balloon.

<inLOAN_BUILDER>
  <EditInterest Date="2017-06-12" IntRate="5.15" AccrualCode="304" />
  <Advance Date="2017-06-12" Amount="50000.00" />
  <PmtStream Begin="2017-07-12" PmtType="PayInt" Amount="250.00" Term="120" />
</inLOAN_BUILDER>

Skipped / Irregular Payment Loan

To be classified as a skipped and/or irregular payment loan, the requested loan must have one <Advance> element, one <EditInterest> element, one <PmtStream> element with a PmtType attribute set to CalcPmt and Term > 1, additional replace payment streams which produce skipped and/or irregular payments, no <Construction> element, and no EarlyPayoffDate attribute.

Example: Equal payment loan with all December payments skipped.

<inLOAN_BUILDER>
 <EditInterest Date="2017-06-12" IntRate="5.15" AccrualCode="304" />
 <Advance Date="2017-06-12" Amount="50000.00" />
 <PmtStream Begin="2017-07-12" PmtType="CalcPmt" Term="120" />
 <PmtStream Begin="0000-12-00" PmtType="FixedPmt" Amount="0" />
</inLOAN_BUILDER>

Highly Irregular Loan

A loan builder loan is classified as highly irregular if it does not fall in one of the above classifications.

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: amount, rate, term and payment.

Most of the time, a user will want to specify the amount, rate and term, and then have the SCE compute the resulting payment. However, there are times when a specific payment is desired, and the amount or term must then be computed. The SCE supports these rollback calculations, and each is documented in this chapter.

Compute Payment

Most equal payment loan calculations are requested with the loan's proceeds, interest rate, and term known. The SCE then computes the regular payment that best amortizes the loan's ending balance to zero in accordance with the accrual method and options included in the loan request.

Sample Request

The following is a sample SCEX request for an equal payment loan calculation where the interest rate, proceeds, and term are specified and the regular payment is computed.

<inEQUAL_PMT Account="1" DataDirPath="C:\SCEX\" AccrualCode="32" PPY="monthly">
  <LoanDate>2024-10-18</LoanDate>
  <PmtDate>2024-11-18</PmtDate>
  <IntRate>10.123</IntRate>
  <Proceeds>10000.00</Proceeds>
  <TotalDown>2500.00</TotalDown>
  <Term>12</Term>
  <Fee Name="Fee1" CalcType="Dollar"
    Entry="25.00" MaxValue="25.00"
    AddToPrin="true" AddToFinChg="false" />
</inEQUAL_PMT>

Sample Response

The following is the XML response associated with the request above, at the time this documentation was being written (2024-10):

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outEQUAL_PMT SYSTEM "outEQUAL_PMT.dtd">
<outEQUAL_PMT>
   <Results>
      <Description>Successful Calculation</Description>
      <Payment>881.92</Payment>
   </Results>
   <FedBox>
      <AmtFin>10025.00</AmtFin>
      <FinChg>558.04</FinChg>
      <TotPmts>10583.04</TotPmts>
      <TotalSalePrice>13083.04</TotalSalePrice>
      <RegZAPR Type="Actuarial">10.121</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>10025.00</Principal>
      <Interest>558.04</Interest>
      <FinFees>25.00</FinFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="Fee1">25.00</Fee>
   </Moneys>
   <Accrual>
      <Method>Actual/365 US Rule</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2025-10-18</Maturity>
   </Accrual>
   <PmtStream Term="12" Pmt="881.92" Rate="10.123" Begin="2024-11-18"/>
   <AmTable>
      <GrandTotals PmtTot="10583.04" IntTot="558.05" PrinTot="10024.99"/>
      <SubTotals Year="2024" Start="1" Events="2" PmtSub="1763.84" IntSub="162.98" PrinSub="1600.86"/>
      <SubTotals Year="2025" Start="3" Events="10" PmtSub="8819.20" IntSub="395.07" PrinSub="8424.13"/>
      <AmLine Idx="1" Date="2024-11-18" BegBal="10025.00" Pmt="881.92" Int="86.19" Prin="795.73" EndBal="9229.27"/>
      <AmLine Idx="2" Date="2024-12-18" BegBal="9229.27" Pmt="881.92" Int="76.79" Prin="805.13" EndBal="8424.14"/>
      <AmLine Idx="3" Date="2025-01-18" BegBal="8424.14" Pmt="881.92" Int="72.43" Prin="809.49" EndBal="7614.65"/>
      <AmLine Idx="4" Date="2025-02-18" BegBal="7614.65" Pmt="881.92" Int="65.47" Prin="816.45" EndBal="6798.20"/>
      <AmLine Idx="5" Date="2025-03-18" BegBal="6798.20" Pmt="881.92" Int="52.79" Prin="829.13" EndBal="5969.07"/>
      <AmLine Idx="6" Date="2025-04-18" BegBal="5969.07" Pmt="881.92" Int="51.32" Prin="830.60" EndBal="5138.47"/>
      <AmLine Idx="7" Date="2025-05-18" BegBal="5138.47" Pmt="881.92" Int="42.75" Prin="839.17" EndBal="4299.30"/>
      <AmLine Idx="8" Date="2025-06-18" BegBal="4299.30" Pmt="881.92" Int="36.96" Prin="844.96" EndBal="3454.34"/>
      <AmLine Idx="9" Date="2025-07-18" BegBal="3454.34" Pmt="881.92" Int="28.74" Prin="853.18" EndBal="2601.16"/>
      <AmLine Idx="10" Date="2025-08-18" BegBal="2601.16" Pmt="881.92" Int="22.36" Prin="859.56" EndBal="1741.60"/>
      <AmLine Idx="11" Date="2025-09-18" BegBal="1741.60" Pmt="881.92" Int="14.97" Prin="866.95" EndBal="874.65"/>
      <AmLine Idx="12" Date="2025-10-18" BegBal="874.65" Pmt="881.92" Int="7.28" Prin="874.64" EndBal="0.01"/>
   </AmTable>
</outEQUAL_PMT>

Roll to Amount

Instead of specifying the interest rate, amount, and term and then computing a payment, sometimes it is helpful for the borrower to be able to specify a desired payment, rate and term and then see what amount the borrower can afford to borrower. Sherman and Associates calls this type of calculation a Roll to Amount.

Sample Request

The following is a sample SCEX request for an equal payment loan calculation where the loan amount (i.e. proceeds) is computed.

<inEQUAL_PROCEEDS Account="2" AccrualCode="330" DataDirPath="C:\SCEX\" PPY="monthly">
  <LoanDate>2024-10-18</LoanDate>
  <PmtDate>2024-11-18</PmtDate>
  <IntRate>10.123</IntRate>
  <Payment>300.00</Payment>
  <Term>12</Term>
  <Fee Entry="25.00" MaxValue="25.00" CalcType="Dollar" 
    AddToPrin="true" AddToFinChg="false" />
</inEQUAL_PROCEEDS>

Sample Response

The following is the XML response associated with the roll to amount request above, at the time this documentation was being written (2024-10):

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outEQUAL_PROCEEDS SYSTEM "outEQUAL_PROCEEDS.dtd">
<outEQUAL_PROCEEDS>
   <Results>
      <Description>Successful Calculation</Description>
      <Proceeds>3385.34</Proceeds>
      <Payment>300.00</Payment>
      <Final>300.00</Final>
   </Results>
   <FedBox>
      <AmtFin>3410.34</AmtFin>
      <FinChg>189.66</FinChg>
      <TotPmts>3600.00</TotPmts>
      <RegZAPR Type="Actuarial">10.112</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>3410.34</Principal>
      <Interest>189.66</Interest>
      <FinFees>25.00</FinFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee>25.00</Fee>
   </Moneys>
   <Accrual>
      <Method>Actual/Actual US Rule</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2025-10-18</Maturity>
   </Accrual>
   <PmtStream Term="12" Pmt="300.00" Rate="10.123" Begin="2024-11-18"/>
   <AmTable>
      <GrandTotals PmtTot="3600.00" IntTot="189.66" PrinTot="3410.34"/>
      <SubTotals Year="2024" Start="1" Events="2" PmtSub="600.00" IntSub="55.29" PrinSub="544.71"/>
      <SubTotals Year="2025" Start="3" Events="10" PmtSub="3000.00" IntSub="134.37" PrinSub="2865.63"/>
      <AmLine Idx="1" Date="2024-11-18" BegBal="3410.34" Pmt="300.00" Int="29.24" Prin="270.76" EndBal="3139.58"/>
      <AmLine Idx="2" Date="2024-12-18" BegBal="3139.58" Pmt="300.00" Int="26.05" Prin="273.95" EndBal="2865.63"/>
      <AmLine Idx="3" Date="2025-01-18" BegBal="2865.63" Pmt="300.00" Int="24.61" Prin="275.39" EndBal="2590.24"/>
      <AmLine Idx="4" Date="2025-02-18" BegBal="2590.24" Pmt="300.00" Int="22.27" Prin="277.73" EndBal="2312.51"/>
      <AmLine Idx="5" Date="2025-03-18" BegBal="2312.51" Pmt="300.00" Int="17.96" Prin="282.04" EndBal="2030.47"/>
      <AmLine Idx="6" Date="2025-04-18" BegBal="2030.47" Pmt="300.00" Int="17.46" Prin="282.54" EndBal="1747.93"/>
      <AmLine Idx="7" Date="2025-05-18" BegBal="1747.93" Pmt="300.00" Int="14.54" Prin="285.46" EndBal="1462.47"/>
      <AmLine Idx="8" Date="2025-06-18" BegBal="1462.47" Pmt="300.00" Int="12.57" Prin="287.43" EndBal="1175.04"/>
      <AmLine Idx="9" Date="2025-07-18" BegBal="1175.04" Pmt="300.00" Int="9.78" Prin="290.22" EndBal="884.82"/>
      <AmLine Idx="10" Date="2025-08-18" BegBal="884.82" Pmt="300.00" Int="7.61" Prin="292.39" EndBal="592.43"/>
      <AmLine Idx="11" Date="2025-09-18" BegBal="592.43" Pmt="300.00" Int="5.09" Prin="294.91" EndBal="297.52"/>
      <AmLine Idx="12" Date="2025-10-18" BegBal="297.52" Pmt="300.00" Int="2.48" Prin="297.52" EndBal="0.00"/>
   </AmTable>
</outEQUAL_PROCEEDS>

Roll to Term

The roll to term calculation computes a loan amount given an interest rate, proceeds, and desired payment.

Note that the term returned will be the minimum term such that the computed payment is less than or equal to the desired payment. Since the number of payments in a loan is an integer, it is most often the case that the resulting payment will not exactly match the desired payment. However, it is guaranteed to be less than or equal to the desired payment.

Sample Request

The following is a sample SCEX request for an equal payment loan calculation where the loan term is computed.

<inEQUAL_TERM Account="1" AccrualCode="202"
 DataDirPath="C:\SCEX\" PPY="monthly">
 <LoanDate>2024-10-18</LoanDate>
 <PmtDate>2024-11-18</PmtDate>
 <IntRate>10.123</IntRate>
 <Proceeds>7500.00</Proceeds>
 <Payment>400.00</Payment>
 <Fee Entry="25.00" MaxValue="25.00" CalcType="Dollar"
   AddToPrin="true" AddToFinChg="false" />
</inEQUAL_TERM>

Sample Response

The following is the XML response associated with the roll to term request above, at the time this documentation was being written (2024-10):

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outEQUAL_TERM SYSTEM "outEQUAL_TERM.dtd">
<outEQUAL_TERM>
   <Results>
      <Description>Successful Calculation</Description>
      <Term>21</Term>
      <Payment>392.58</Payment>
   </Results>
   <FedBox>
      <AmtFin>7525.00</AmtFin>
      <FinChg>719.18</FinChg>
      <TotPmts>8244.18</TotPmts>
      <RegZAPR Type="Actuarial">10.142</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>7525.00</Principal>
      <Interest>719.18</Interest>
      <FinFees>25.00</FinFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee>25.00</Fee>
   </Moneys>
   <Accrual>
      <Method>Unit Period 365 Simple</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2026-07-18</Maturity>
   </Accrual>
   <PmtStream Term="21" Pmt="392.58" Rate="10.123" Begin="2024-11-18"/>
   <AmTable>
      <GrandTotals PmtTot="8244.18" IntTot="719.13" PrinTot="7525.05"/>
      <SubTotals Year="2024" Start="1" Events="2" PmtSub="785.16" IntSub="125.41" PrinSub="659.75"/>
      <SubTotals Year="2025" Start="3" Events="12" PmtSub="4710.96" IntSub="503.29" PrinSub="4207.67"/>
      <SubTotals Year="2026" Start="15" Events="7" PmtSub="2748.06" IntSub="90.43" PrinSub="2657.63"/>
      <AmLine Idx="1" Date="2024-11-18" BegBal="7525.00" Pmt="392.58" Int="64.70" Prin="327.88" EndBal="7197.12"/>
      <AmLine Idx="2" Date="2024-12-18" BegBal="7197.12" Pmt="392.58" Int="60.71" Prin="331.87" EndBal="6865.25"/>
      <AmLine Idx="3" Date="2025-01-18" BegBal="6865.25" Pmt="392.58" Int="57.91" Prin="334.67" EndBal="6530.58"/>
      <AmLine Idx="4" Date="2025-02-18" BegBal="6530.58" Pmt="392.58" Int="55.09" Prin="337.49" EndBal="6193.09"/>
      <AmLine Idx="5" Date="2025-03-18" BegBal="6193.09" Pmt="392.58" Int="52.24" Prin="340.34" EndBal="5852.75"/>
      <AmLine Idx="6" Date="2025-04-18" BegBal="5852.75" Pmt="392.58" Int="49.37" Prin="343.21" EndBal="5509.54"/>
      <AmLine Idx="7" Date="2025-05-18" BegBal="5509.54" Pmt="392.58" Int="46.48" Prin="346.10" EndBal="5163.44"/>
      <AmLine Idx="8" Date="2025-06-18" BegBal="5163.44" Pmt="392.58" Int="43.56" Prin="349.02" EndBal="4814.42"/>
      <AmLine Idx="9" Date="2025-07-18" BegBal="4814.42" Pmt="392.58" Int="40.61" Prin="351.97" EndBal="4462.45"/>
      <AmLine Idx="10" Date="2025-08-18" BegBal="4462.45" Pmt="392.58" Int="37.64" Prin="354.94" EndBal="4107.51"/>
      <AmLine Idx="11" Date="2025-09-18" BegBal="4107.51" Pmt="392.58" Int="34.65" Prin="357.93" EndBal="3749.58"/>
      <AmLine Idx="12" Date="2025-10-18" BegBal="3749.58" Pmt="392.58" Int="31.63" Prin="360.95" EndBal="3388.63"/>
      <AmLine Idx="13" Date="2025-11-18" BegBal="3388.63" Pmt="392.58" Int="28.59" Prin="363.99" EndBal="3024.64"/>
      <AmLine Idx="14" Date="2025-12-18" BegBal="3024.64" Pmt="392.58" Int="25.52" Prin="367.06" EndBal="2657.58"/>
      <AmLine Idx="15" Date="2026-01-18" BegBal="2657.58" Pmt="392.58" Int="22.42" Prin="370.16" EndBal="2287.42"/>
      <AmLine Idx="16" Date="2026-02-18" BegBal="2287.42" Pmt="392.58" Int="19.30" Prin="373.28" EndBal="1914.14"/>
      <AmLine Idx="17" Date="2026-03-18" BegBal="1914.14" Pmt="392.58" Int="16.15" Prin="376.43" EndBal="1537.71"/>
      <AmLine Idx="18" Date="2026-04-18" BegBal="1537.71" Pmt="392.58" Int="12.97" Prin="379.61" EndBal="1158.10"/>
      <AmLine Idx="19" Date="2026-05-18" BegBal="1158.10" Pmt="392.58" Int="9.77" Prin="382.81" EndBal="775.29"/>
      <AmLine Idx="20" Date="2026-06-18" BegBal="775.29" Pmt="392.58" Int="6.54" Prin="386.04" EndBal="389.25"/>
      <AmLine Idx="21" Date="2026-07-18" BegBal="389.25" Pmt="392.58" Int="3.28" Prin="389.30" EndBal="-0.05"/>
   </AmTable>
</outEQUAL_TERM>

Equal Payment, Compute Payment - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

ElementAttributes
🟥 <inEQUAL_PMT>🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY
|- 🟦 <Construction>🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor
|- 🟦 <Fee>[]🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name
|- 🟦 <Format>🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator
|- 🟥 <IntRate>
|- 🟦 <IntStartDate>
|- 🟥 <LoanDate>
|- 🟦 <Mortgage_Insurance>🔹CashDown, 🔹LoanAmt, 🔹PropertyValue, 🔹Type
|- |- 🟥 <MI_Rate>[]🔸Switch
|- |- 🟦 <Periodic>🔹DropLTV, 🔹WarnLTV
|- |- 🟦 <UpFront>🔹Paid, 🔹Units
|- 🟦 <OddDaysPrepaid>🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI
|- 🟥 <PmtDate>
|- 🟥 <Proceeds>
|- 🟦 <Protection>🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps
|- |- 🟦 <Birthday1>
|- |- 🟦 <Birthday2>
|- |- 🟦 <Disability>🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table
|- |- 🟦 <Life>🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates
|- |- 🟦 <Property>🔹Coverage, 🔹Covers
|- |- 🟦 <Unemployment>🔹Benefit, 🔹Covers, 🔹CovTerm
|- 🟦 <ServiceCharge>[]🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type
|- 🟥 <Term>
|- 🟦 <TILARESPA2015>
|- 🟦 <TotalDown>

🟥 <inEQUAL_PMT>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 OddFinal

Data TypeValuesDefault
Enumdefault, true, false, 1, 0default

This attribute allows the calling application to specify an odd final payment calculation method which will override the default value found in the setup file for the given account. If not specified, then the value of default will be used.

Odd final payments are sometimes desired to produce perfect amortization (i.e. an ending balance of zero after the final payment is made).

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute (see below). If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <Mortgage_Insurance>

Element TypeData TypeValuesDefault
Parent--No mortgage insurance

The <Mortgage_Insurance> element determines if this loan includes one of the supported types of mortgage insurance (MI) - PMI or FHA. This element contains child elements which further specify mortgage insurance options.

NOTE: Mortgage insurance is only supported on equal, balloon, and interest only loan builder requests at this time.

Attributes: 🔹CashDown, 🔹LoanAmt, 🔸PropertyValue, 🔹Type

🔹 CashDown

Data TypeValuesDefault
Currency>= 00

The CashDown attribute 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.

🔹 LoanAmt

Data TypeValuesDefault
Currency>= 0Principal balance

The LoanAmt attribute 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.

🔹 PropertyValue

Data TypeValuesDefault
Currency>= 00

This attribute’s value represents the appraised property value, and will be used in the calculation of the loan to value ratio.

🔹 Type

Data TypeValuesDefault
Enumpmi, fhapmi

This attribute determines the type of mortgage insurance to include with the loan. If the Type attribute is set to FHA, 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.


🟥 <Mortgage_Insurance><MI_Rate>[]

Element TypeData TypeValues
DataDecimal>= 0

The value of this element specifies the cost of mortgage insurance per $100 of the loan amount. Note that there may be more than one <MI_Rate> element defined in an XML loan request (see the Switch attribute below).

As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as <MI_Rate>1.50</MI_Rate>.

Attributes: 🔸Switch

🔹 Switch

Data TypeValuesDefault
Integer> 00

This optional attribute 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 attribute. Single rate example (use a rate of $1.50 for the entire term of MI coverage):

<MI_Rate>1.50</MI_Rate>

Multiple rate example (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):

<MI_Rate>1.50</MI_Rate>
<MI_Rate Switch="120">0.20</MI_Rate>

🟦 <Mortgage_Insurance><Periodic>

Element TypeData TypeValuesDefault
DataInteger>= 00

The value of this element represents the term beyond which MI is no longer included. As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify <Periodic>180</Periodic> in the XML loan request. 0 means no term removal is in effect.

Attributes: 🔹DropLTV, 🔹WarnLTV

🔹 DropLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".

🔹 WarnLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".


🟦 <Mortgage_Insurance><UpFront>

Element TypeData TypeValuesDefault
DataDecimal>= 00

This element determines the up front fee for mortgage insurance, as disclosed in the <PMI_Fee> element in the results. If this element is not specified, 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 element can be omitted or set to zero.

The following attributes define how the fee is computed and disclosed.

Attributes: 🔹Paid, 🔹Units

🔹 Paid

Data TypeValuesDefault
EnumFinanced, AtClosing, ByLenderAtClosing

If the value of this attribute 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 a Pocket Fee that is not added to either the principal balance nor the finance charge.

🔹 Units

Data TypeValuesDefault
EnumMonths, Points, YearsMonths

If the Units attribute is set to Months, the value of the <UpFront> element represents the number of periodic MI premiums to be paid at closing.

If the Units attribute is set to Years, the value of the <UpFront> element 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 attribute is set to Points, the value of the <UpFront> element represents the percentage of principal to be paid up front. As of October 3, 2011, FHA loans use points.


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <Protection><Property>

Element TypeData TypeValuesDefault
Empty--No property coverage

The <Property> element determines what type of personal property coverage is requested for the loan. The element itself is empty, with all information needed for coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute determines what type of coverage is being requested on the loan. The value borrower1 represents single coverage on the primary borrower (whose birthday is contained in element <Birthday1>). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Property> element entirely.


🟦 <Protection><Unemployment>

Element TypeData TypeValuesDefault
Empty--No unemployment coverage

The <Unemployment> element determines what type of involuntary unemployment coverage is requested for the loan. The element itself is empty, with all information needed for a coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Unemployment> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will ensure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user-specified coverage terms, then this attribute will be ignored.


🟦 <ServiceCharge>[]

Element TypeData TypeValuesDefault
Empty--No service charge

As with the <Fee> element, any number of <ServiceCharge> elements may be added to a loan. Service charges are supported on single, equal, and balloon payment loans only.

The <ServiceCharge> element itself contains no data. Instead, all of the information used to compute the service charge is contained in the following attributes of the element:

Attributes: 🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type

🔸 Entry (decimal, 0)

How this attribute is interpreted depends upon the Type attribute, described below. It is the numeric amount defining either the lump sum or periodically paid service charge.

🔹 Exact (boolean, false)

The Exact attribute 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 that entered.

If the Exact attribute 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.

🔹 Name (text, "")

This attribute is for convenience purposes only, and does not affect the calculation of the service charge in any manner. If a Name attribute is specified for the <ServiceCharge> element, then the corresponding <ServiceCharge> element in the response will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.

🔹 Round (enum, [nearest, up, down], nearest)

This attribute is only considered when the service charge is of Type LumpSum. It determines how the calculated periodic amount is rounded.

🔹 Type (enum, [LumpSum, Periodic], LumpSum)

A service charge of Type of 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.


🟥 <Term>

Element TypeData TypeValues
DataInteger[2...600]*

The value of this element indicates the number of payments in the loan.

The term must be entered as a number of payments, not a duration of time. Therefore, <Term>72</Term> represents 72 payments, not 72 months (or years). This term is intimately tied to the PPY (# of payments per year) attribute of the root element. If the value of the PPY attribute was 24 (semimonthly) for this loan, the 72 payments would mean that the duration of the loan is three years, since years = number of payments / payments per year = 72 / 24 = 3.

* In general, the term can be no greater than 50 years, so the maximum entry would be 50 * PPY. Weekly loans, however, are limited to 30 years, or 1,560 payments.

Attributes: None


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Equal Payment, Compute Payment - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outEQUAL_PMT>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <Payment>
|- |- 🟦 <Final>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- |- 🟦 <ServiceCharge>[]🔹Name
|- |- 🟦 <PMI_Fee>
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟦 <PMI>🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outEQUAL_PMT>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
  <Description>Successful Calculation</Description>
  <Payment>881.92</Payment>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Payment>

Element TypeData Type
DataCurrency

The computed payment for the requested equal payment loan.

Attributes: None


🟦 <Results><Final>

Element TypeData Type
DataCurrency

If the specified account has been set up to disclose an odd final payment (usually done to perfectly amortize the loan at its conclusion), then this element will be present and contain the odd final payment amount.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
  <AmtFin>10025.00</AmtFin>
  <FinChg>558.04</FinChg>
  <TotPmts>10583.04</TotPmts>
  <TotalSalePrice>13083.04</TotalSalePrice>
  <RegZAPR Type="Actuarial">10.121</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟦 <Moneys><ServiceCharge>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero service charge requested in the loan calculation, there will be a <ServiceCharge> element containing the total service charge amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <ServiceCharge> element from the request. If no such attribute is present in the request element, then none will be present in the response element.


🟦 <Moneys><PMI_Fee>

Element TypeData TypeDefault
DataCurrency0

If PMI has been requested on the loan, and if a number of up front payments have been specified, then this element will hold the total PMI fee for all upfront payments.

Attributes: None


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟦 <PMI>

Element TypeData Type
Empty-

The PMI element 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> element, the <PmtStream> element(s), the <TotPmts> element, nor the Pmt attribute of the <AmLine> element.

<PMI Rate="1.00" LTV="100.00" PremiumPerYear="964.08" PremiumPerPeriod="80.34"/>

The element itself contains no data, as all associated PMI data is found in the following attributes:

Attributes: 🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate

🔹 IndexToRemove

Data TypeDefault
Integer0

This attribute only appears if the PercentToRemove PMI input attribute 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.

In the sample above, after four payments are made, the ending principal balance to home value ratio drops below 70%, and hence the calculation engine returns IndexToRemove="4". Note that no PMI is included in the amortization schedule for payment numbers four or greater.

🔹 IndexToWarn

Data TypeDefault
Integer0

This attribute only appears if the PercentToWarn PMI input attribute is specified, and indicates that the payment index on which the remaining principal balance to home value ratio drops below the specified percentage. In the sample above, after three payments are made, the ending principal balance to home value ratio drops below 80%, and hence the calculation engine returns IndexToWarn="3".

🔸 LTV

Data Type
Decimal

The loan to value ratio of the computed loan, expressed as a percentage.

🔸 PremiumPerPeriod

Data Type
Currency

The periodic PMI premium amount.

🔸 PremiumPerYear

Data Type
Currency

The annual PMI premium amount

🔸 Rate

Data Type
Decimal

The percentage rate used in the PMI calculation.


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔹 IUTot

Data TypeDefault
Currency0

The IUTot attribute 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 over the duration of the loan.

🔹 PMITot

Data TypeDefault
Currency0

The PMITot attribute 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.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.

🔹 SCTot

Data TypeDefault
Currency0

The SCTot attribute will only appear on loans with service charges. It contains the total service charge amount paid over the duration of the loan.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔹 IUSub

Data TypeDefault
Currency0

The IUSub attribute 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.

🔹 PMISub

Data TypeDefault
Currency0

The PMISub attribute 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 upfront periodic PMI premiums) for PMI during the Year.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔹 SCSub

Data TypeDefault
Currency0

The SCSub attribute will only appear on loans with service charges. It contains the total of service charges paid during the Year.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔹 IU

Data TypeDefault
Currency0

The IU attribute 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.

🔹 PMI

Data TypeDefault
Currency0

This attribute contains the PMI premium for this payment.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 SC

Data TypeDefault
Currency0

This attribute contains the total service charge for this payment, and will only be present if one or more service charges were requested with the loan.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


Roll to Amount - Request

The roll to amount request is almost identical to the compute payment request, with the following differences:

  1. The root element is <inEQUAL_PROCEEDS> instead of <inEQUAL_PMT>.
  2. There is no <Proceeds> element present, since this is the value we are solving for.
  3. The new <Payment> element allows the calling application to specify a desired payment amount.

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

ElementAttributes
🟥 <inEQUAL_PROCEEDS>🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY
|- 🟦 <Construction>🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor
|- 🟦 <Fee>[]🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name
|- 🟦 <Format>🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator
|- 🟥 <IntRate>
|- 🟦 <IntStartDate>
|- 🟥 <LoanDate>
|- 🟦 <Mortgage_Insurance>🔹CashDown, 🔹LoanAmt, 🔹PropertyValue, 🔹Type
|- |- 🟥 <MI_Rate>[]🔸Switch
|- |- 🟦 <Periodic>🔹DropLTV, 🔹WarnLTV
|- |- 🟦 <UpFront>🔹Paid, 🔹Units
|- 🟦 <OddDaysPrepaid>🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI
|- 🟥 <Payment>
|- 🟥 <PmtDate>
|- 🟦 <Protection>🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps
|- |- 🟦 <Birthday1>
|- |- 🟦 <Birthday2>
|- |- 🟦 <Disability>🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table
|- |- 🟦 <Life>🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates
|- |- 🟦 <Property>🔹Coverage, 🔹Covers
|- |- 🟦 <Unemployment>🔹Benefit, 🔹Covers, 🔹CovTerm
|- 🟦 <ServiceCharge>[]🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type
|- 🟥 <Term>
|- 🟦 <TILARESPA2015>
|- 🟦 <TotalDown>

🟥 <inEQUAL_PROCEEDS>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 OddFinal

Data TypeValuesDefault
Enumdefault, true, false, 1, 0default

This attribute allows the calling application to specify an odd final payment calculation method which will override the default value found in the setup file for the given account. If not specified, then the value of default will be used.

Odd final payments are sometimes desired to produce perfect amortization (i.e. an ending balance of zero after the final payment is made).

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute (see below). If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <Mortgage_Insurance>

Element TypeData TypeValuesDefault
Parent--No mortgage insurance

The <Mortgage_Insurance> element determines if this loan includes one of the supported types of mortgage insurance (MI) - PMI or FHA. This element contains child elements which further specify mortgage insurance options.

NOTE: Mortgage insurance is only supported on equal, balloon, and interest only loan builder requests at this time.

Attributes: 🔹CashDown, 🔹LoanAmt, 🔸PropertyValue, 🔹Type

🔹 CashDown

Data TypeValuesDefault
Currency>= 00

The CashDown attribute 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.

🔹 LoanAmt

Data TypeValuesDefault
Currency>= 0Principal balance

The LoanAmt attribute 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.

🔹 PropertyValue

Data TypeValuesDefault
Currency>= 00

This attribute’s value represents the appraised property value, and will be used in the calculation of the loan to value ratio.

🔹 Type

Data TypeValuesDefault
Enumpmi, fhapmi

This attribute determines the type of mortgage insurance to include with the loan. If the Type attribute is set to FHA, 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.


🟥 <Mortgage_Insurance><MI_Rate>[]

Element TypeData TypeValues
DataDecimal>= 0

The value of this element specifies the cost of mortgage insurance per $100 of the loan amount. Note that there may be more than one <MI_Rate> element defined in an XML loan request (see the Switch attribute below).

As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as <MI_Rate>1.50</MI_Rate>.

Attributes: 🔸Switch

🔹 Switch

Data TypeValuesDefault
Integer> 00

This optional attribute 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 attribute. Single rate example (use a rate of $1.50 for the entire term of MI coverage):

<MI_Rate>1.50</MI_Rate>

Multiple rate example (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):

<MI_Rate>1.50</MI_Rate>
<MI_Rate Switch="120">0.20</MI_Rate>

🟦 <Mortgage_Insurance><Periodic>

Element TypeData TypeValuesDefault
DataInteger>= 00

The value of this element represents the term beyond which MI is no longer included. As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify <Periodic>180</Periodic> in the XML loan request. 0 means no term removal is in effect.

Attributes: 🔹DropLTV, 🔹WarnLTV

🔹 DropLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".

🔹 WarnLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".


🟦 <Mortgage_Insurance><UpFront>

Element TypeData TypeValuesDefault
DataDecimal>= 00

This element determines the up front fee for mortgage insurance, as disclosed in the <PMI_Fee> element in the results. If this element is not specified, 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 element can be omitted or set to zero.

The following attributes define how the fee is computed and disclosed.

Attributes: 🔹Paid, 🔹Units

🔹 Paid

Data TypeValuesDefault
EnumFinanced, AtClosing, ByLenderAtClosing

If the value of this attribute 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 a Pocket Fee that is not added to either the principal balance nor the finance charge.

🔹 Units

Data TypeValuesDefault
EnumMonths, Points, YearsMonths

If the Units attribute is set to Months, the value of the <UpFront> element represents the number of periodic MI premiums to be paid at closing.

If the Units attribute is set to Years, the value of the <UpFront> element 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 attribute is set to Points, the value of the <UpFront> element represents the percentage of principal to be paid up front. As of October 3, 2011, FHA loans use points.


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <Payment>

Element TypeData TypeValues
DataCurrency>= 0

The payment specified indicates the desired periodic payment the borrower is requesting. The dollar amount should be expressed as a number. For example, a request including <Payment>300.00</Payment> indicates a desired payment of $300.

Attributes: None


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <Protection><Property>

Element TypeData TypeValuesDefault
Empty--No property coverage

The <Property> element determines what type of personal property coverage is requested for the loan. The element itself is empty, with all information needed for coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute determines what type of coverage is being requested on the loan. The value borrower1 represents single coverage on the primary borrower (whose birthday is contained in element <Birthday1>). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Property> element entirely.


🟦 <Protection><Unemployment>

Element TypeData TypeValuesDefault
Empty--No unemployment coverage

The <Unemployment> element determines what type of involuntary unemployment coverage is requested for the loan. The element itself is empty, with all information needed for a coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Unemployment> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will ensure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user-specified coverage terms, then this attribute will be ignored.


🟦 <ServiceCharge>[]

Element TypeData TypeValuesDefault
Empty--No service charge

As with the <Fee> element, any number of <ServiceCharge> elements may be added to a loan. Service charges are supported on single, equal, and balloon payment loans only.

The <ServiceCharge> element itself contains no data. Instead, all of the information used to compute the service charge is contained in the following attributes of the element:

Attributes: 🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type

🔸 Entry (decimal, 0)

How this attribute is interpreted depends upon the Type attribute, described below. It is the numeric amount defining either the lump sum or periodically paid service charge.

🔹 Exact (boolean, false)

The Exact attribute 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 that entered.

If the Exact attribute 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.

🔹 Name (text, "")

This attribute is for convenience purposes only, and does not affect the calculation of the service charge in any manner. If a Name attribute is specified for the <ServiceCharge> element, then the corresponding <ServiceCharge> element in the response will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.

🔹 Round (enum, [nearest, up, down], nearest)

This attribute is only considered when the service charge is of Type LumpSum. It determines how the calculated periodic amount is rounded.

🔹 Type (enum, [LumpSum, Periodic], LumpSum)

A service charge of Type of 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.


🟥 <Term>

Element TypeData TypeValues
DataInteger[2...600]*

The value of this element indicates the number of payments in the loan.

The term must be entered as a number of payments, not a duration of time. Therefore, <Term>72</Term> represents 72 payments, not 72 months (or years). This term is intimately tied to the PPY (# of payments per year) attribute of the root element. If the value of the PPY attribute was 24 (semimonthly) for this loan, the 72 payments would mean that the duration of the loan is three years, since years = number of payments / payments per year = 72 / 24 = 3.

* In general, the term can be no greater than 50 years, so the maximum entry would be 50 * PPY. Weekly loans, however, are limited to 30 years, or 1,560 payments.

Attributes: None


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Roll to Amount - Response

The roll to amount response is almost identical to the compute payment response, with the following differences:

  1. The root element is <outEQUAL_PROCEEDS> instead of <inEQUAL_PMT>.
  2. There will laways be a <Proceeds> element under the <Results> element, since this is the value we are solving for.

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outEQUAL_PROCEEDS>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <Proceeds>
|- |- 🟥 <Payment>
|- |- 🟦 <Final>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- |- 🟦 <ServiceCharge>[]🔹Name
|- |- 🟦 <PMI_Fee>
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟦 <PMI>🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outEQUAL_PROCEEDS>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
  <Description>Successful Calculation</Description>
  <Proceeds>3385.34</Proceeds>
  <Payment>300.00</Payment>
  <Final>300.00</Final>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Proceeds>

Element TypeData Type
DataCurrency

The computed amount which the borrower can afford to borrow given the requested payment for the roll to amount loan.

Attributes: None


🟥 <Results><Payment>

Element TypeData Type
DataCurrency

The computed payment for the requested equal payment loan.

Attributes: None


🟦 <Results><Final>

Element TypeData Type
DataCurrency

If the specified account has been set up to disclose an odd final payment (usually done to perfectly amortize the loan at its conclusion), then this element will be present and contain the odd final payment amount.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
  <AmtFin>3410.34</AmtFin>
  <FinChg>189.66</FinChg>
  <TotPmts>3600.00</TotPmts>
  <RegZAPR Type="Actuarial">10.112</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟦 <Moneys><ServiceCharge>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero service charge requested in the loan calculation, there will be a <ServiceCharge> element containing the total service charge amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <ServiceCharge> element from the request. If no such attribute is present in the request element, then none will be present in the response element.


🟦 <Moneys><PMI_Fee>

Element TypeData TypeDefault
DataCurrency0

If PMI has been requested on the loan, and if a number of up front payments have been specified, then this element will hold the total PMI fee for all upfront payments.

Attributes: None


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟦 <PMI>

Element TypeData Type
Empty-

The PMI element 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> element, the <PmtStream> element(s), the <TotPmts> element, nor the Pmt attribute of the <AmLine> element.

<PMI Rate="1.00" LTV="100.00" PremiumPerYear="964.08" PremiumPerPeriod="80.34"/>

The element itself contains no data, as all associated PMI data is found in the following attributes:

Attributes: 🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate

🔹 IndexToRemove

Data TypeDefault
Integer0

This attribute only appears if the PercentToRemove PMI input attribute 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.

In the sample above, after four payments are made, the ending principal balance to home value ratio drops below 70%, and hence the calculation engine returns IndexToRemove="4". Note that no PMI is included in the amortization schedule for payment numbers four or greater.

🔹 IndexToWarn

Data TypeDefault
Integer0

This attribute only appears if the PercentToWarn PMI input attribute is specified, and indicates that the payment index on which the remaining principal balance to home value ratio drops below the specified percentage. In the sample above, after three payments are made, the ending principal balance to home value ratio drops below 80%, and hence the calculation engine returns IndexToWarn="3".

🔸 LTV

Data Type
Decimal

The loan to value ratio of the computed loan, expressed as a percentage.

🔸 PremiumPerPeriod

Data Type
Currency

The periodic PMI premium amount.

🔸 PremiumPerYear

Data Type
Currency

The annual PMI premium amount

🔸 Rate

Data Type
Decimal

The percentage rate used in the PMI calculation.


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔹 IUTot

Data TypeDefault
Currency0

The IUTot attribute 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 over the duration of the loan.

🔹 PMITot

Data TypeDefault
Currency0

The PMITot attribute 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.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.

🔹 SCTot

Data TypeDefault
Currency0

The SCTot attribute will only appear on loans with service charges. It contains the total service charge amount paid over the duration of the loan.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔹 IUSub

Data TypeDefault
Currency0

The IUSub attribute 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.

🔹 PMISub

Data TypeDefault
Currency0

The PMISub attribute 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 upfront periodic PMI premiums) for PMI during the Year.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔹 SCSub

Data TypeDefault
Currency0

The SCSub attribute will only appear on loans with service charges. It contains the total of service charges paid during the Year.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔹 IU

Data TypeDefault
Currency0

The IU attribute 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.

🔹 PMI

Data TypeDefault
Currency0

This attribute contains the PMI premium for this payment.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 SC

Data TypeDefault
Currency0

This attribute contains the total service charge for this payment, and will only be present if one or more service charges were requested with the loan.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


Roll to Term - Request

The roll to term request is almost identical to the compute payment request, with the following differences:

  1. The root element is <inEQUAL_TERM> instead of <inEQUAL_PMT>.
  2. There is no <Term> element present, since this is the value we are solving for.
  3. The new <Payment> element allows the calling application to specify a maximum desired payment amount.

Note that the term returned will be the minimum term such that the computed payment is less than or equal to the specified payment. Since the number of payments in a loan is an integer, it is most often the case that the resulting payment will not exactly match the desired payment. However, it is guaranteed to be less than or equal to the desired payment.

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

ElementAttributes
🟥 <inEQUAL_TERM>🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY
|- 🟦 <Construction>🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor
|- 🟦 <Fee>[]🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name
|- 🟦 <Format>🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator
|- 🟥 <IntRate>
|- 🟦 <IntStartDate>
|- 🟥 <LoanDate>
|- 🟦 <Mortgage_Insurance>🔹CashDown, 🔹LoanAmt, 🔹PropertyValue, 🔹Type
|- |- 🟥 <MI_Rate>[]🔸Switch
|- |- 🟦 <Periodic>🔹DropLTV, 🔹WarnLTV
|- |- 🟦 <UpFront>🔹Paid, 🔹Units
|- 🟦 <OddDaysPrepaid>🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI
|- 🟥 <Payment>
|- 🟥 <PmtDate>
|- 🟥 <Proceeds>
|- 🟦 <Protection>🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps
|- |- 🟦 <Birthday1>
|- |- 🟦 <Birthday2>
|- |- 🟦 <Disability>🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table
|- |- 🟦 <Life>🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates
|- |- 🟦 <Property>🔹Coverage, 🔹Covers
|- |- 🟦 <Unemployment>🔹Benefit, 🔹Covers, 🔹CovTerm
|- 🟦 <ServiceCharge>[]🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type
|- 🟦 <TILARESPA2015>
|- 🟦 <TotalDown>

🟥 <inEQUAL_TERM>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 OddFinal

Data TypeValuesDefault
Enumdefault, true, false, 1, 0default

This attribute allows the calling application to specify an odd final payment calculation method which will override the default value found in the setup file for the given account. If not specified, then the value of default will be used.

Odd final payments are sometimes desired to produce perfect amortization (i.e. an ending balance of zero after the final payment is made).

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute (see below). If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <Mortgage_Insurance>

Element TypeData TypeValuesDefault
Parent--No mortgage insurance

The <Mortgage_Insurance> element determines if this loan includes one of the supported types of mortgage insurance (MI) - PMI or FHA. This element contains child elements which further specify mortgage insurance options.

NOTE: Mortgage insurance is only supported on equal, balloon, and interest only loan builder requests at this time.

Attributes: 🔹CashDown, 🔹LoanAmt, 🔸PropertyValue, 🔹Type

🔹 CashDown

Data TypeValuesDefault
Currency>= 00

The CashDown attribute 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.

🔹 LoanAmt

Data TypeValuesDefault
Currency>= 0Principal balance

The LoanAmt attribute 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.

🔹 PropertyValue

Data TypeValuesDefault
Currency>= 00

This attribute’s value represents the appraised property value, and will be used in the calculation of the loan to value ratio.

🔹 Type

Data TypeValuesDefault
Enumpmi, fhapmi

This attribute determines the type of mortgage insurance to include with the loan. If the Type attribute is set to FHA, 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.


🟥 <Mortgage_Insurance><MI_Rate>[]

Element TypeData TypeValues
DataDecimal>= 0

The value of this element specifies the cost of mortgage insurance per $100 of the loan amount. Note that there may be more than one <MI_Rate> element defined in an XML loan request (see the Switch attribute below).

As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as <MI_Rate>1.50</MI_Rate>.

Attributes: 🔸Switch

🔹 Switch

Data TypeValuesDefault
Integer> 00

This optional attribute 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 attribute. Single rate example (use a rate of $1.50 for the entire term of MI coverage):

<MI_Rate>1.50</MI_Rate>

Multiple rate example (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):

<MI_Rate>1.50</MI_Rate>
<MI_Rate Switch="120">0.20</MI_Rate>

🟦 <Mortgage_Insurance><Periodic>

Element TypeData TypeValuesDefault
DataInteger>= 00

The value of this element represents the term beyond which MI is no longer included. As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify <Periodic>180</Periodic> in the XML loan request. 0 means no term removal is in effect.

Attributes: 🔹DropLTV, 🔹WarnLTV

🔹 DropLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".

🔹 WarnLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".


🟦 <Mortgage_Insurance><UpFront>

Element TypeData TypeValuesDefault
DataDecimal>= 00

This element determines the up front fee for mortgage insurance, as disclosed in the <PMI_Fee> element in the results. If this element is not specified, 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 element can be omitted or set to zero.

The following attributes define how the fee is computed and disclosed.

Attributes: 🔹Paid, 🔹Units

🔹 Paid

Data TypeValuesDefault
EnumFinanced, AtClosing, ByLenderAtClosing

If the value of this attribute 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 a Pocket Fee that is not added to either the principal balance nor the finance charge.

🔹 Units

Data TypeValuesDefault
EnumMonths, Points, YearsMonths

If the Units attribute is set to Months, the value of the <UpFront> element represents the number of periodic MI premiums to be paid at closing.

If the Units attribute is set to Years, the value of the <UpFront> element 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 attribute is set to Points, the value of the <UpFront> element represents the percentage of principal to be paid up front. As of October 3, 2011, FHA loans use points.


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <Payment>

Element TypeData TypeValues
DataCurrency>= 0

The payment specified indicates the desired periodic payment the borrower is requesting. The dollar amount should be expressed as a number. For example, a request including <Payment>300.00</Payment> indicates a desired payment of $300.

Attributes: None


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <Protection><Property>

Element TypeData TypeValuesDefault
Empty--No property coverage

The <Property> element determines what type of personal property coverage is requested for the loan. The element itself is empty, with all information needed for coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute determines what type of coverage is being requested on the loan. The value borrower1 represents single coverage on the primary borrower (whose birthday is contained in element <Birthday1>). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Property> element entirely.


🟦 <Protection><Unemployment>

Element TypeData TypeValuesDefault
Empty--No unemployment coverage

The <Unemployment> element determines what type of involuntary unemployment coverage is requested for the loan. The element itself is empty, with all information needed for a coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Unemployment> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will ensure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user-specified coverage terms, then this attribute will be ignored.


🟦 <ServiceCharge>[]

Element TypeData TypeValuesDefault
Empty--No service charge

As with the <Fee> element, any number of <ServiceCharge> elements may be added to a loan. Service charges are supported on single, equal, and balloon payment loans only.

The <ServiceCharge> element itself contains no data. Instead, all of the information used to compute the service charge is contained in the following attributes of the element:

Attributes: 🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type

🔸 Entry (decimal, 0)

How this attribute is interpreted depends upon the Type attribute, described below. It is the numeric amount defining either the lump sum or periodically paid service charge.

🔹 Exact (boolean, false)

The Exact attribute 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 that entered.

If the Exact attribute 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.

🔹 Name (text, "")

This attribute is for convenience purposes only, and does not affect the calculation of the service charge in any manner. If a Name attribute is specified for the <ServiceCharge> element, then the corresponding <ServiceCharge> element in the response will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.

🔹 Round (enum, [nearest, up, down], nearest)

This attribute is only considered when the service charge is of Type LumpSum. It determines how the calculated periodic amount is rounded.

🔹 Type (enum, [LumpSum, Periodic], LumpSum)

A service charge of Type of 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.


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Roll to Term - Response

The roll to term response is almost identical to the compute payment response, with the following differences:

  1. The root element is <outEQUAL_TERM> instead of <inEQUAL_PMT>.
  2. There will laways be a <Term> element under the <Results> element, since this is the value we are solving for.

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outEQUAL_TERM>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <Term>
|- |- 🟥 <Payment>
|- |- 🟦 <Final>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- |- 🟦 <ServiceCharge>[]🔹Name
|- |- 🟦 <PMI_Fee>
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟦 <PMI>🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outEQUAL_TERM>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
  <Description>Successful Calculation</Description>
  <Term>21</Term>
  <Payment>392.58</Payment>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Term>

Element TypeData Type
DataInteger

The computed loan term which produces a payment less than or equal to the desired payment. Note that the <Payment> element contains the actual computed payment for the resulting loan term.

Attributes: None


🟥 <Results><Payment>

Element TypeData Type
DataCurrency

The computed payment for the requested equal payment loan.

Attributes: None


🟦 <Results><Final>

Element TypeData Type
DataCurrency

If the specified account has been set up to disclose an odd final payment (usually done to perfectly amortize the loan at its conclusion), then this element will be present and contain the odd final payment amount.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
  <AmtFin>7525.00</AmtFin>
  <FinChg>719.18</FinChg>
  <TotPmts>8244.18</TotPmts>
  <RegZAPR Type="Actuarial">10.142</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟦 <Moneys><ServiceCharge>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero service charge requested in the loan calculation, there will be a <ServiceCharge> element containing the total service charge amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <ServiceCharge> element from the request. If no such attribute is present in the request element, then none will be present in the response element.


🟦 <Moneys><PMI_Fee>

Element TypeData TypeDefault
DataCurrency0

If PMI has been requested on the loan, and if a number of up front payments have been specified, then this element will hold the total PMI fee for all upfront payments.

Attributes: None


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟦 <PMI>

Element TypeData Type
Empty-

The PMI element 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> element, the <PmtStream> element(s), the <TotPmts> element, nor the Pmt attribute of the <AmLine> element.

<PMI Rate="1.00" LTV="100.00" PremiumPerYear="964.08" PremiumPerPeriod="80.34"/>

The element itself contains no data, as all associated PMI data is found in the following attributes:

Attributes: 🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate

🔹 IndexToRemove

Data TypeDefault
Integer0

This attribute only appears if the PercentToRemove PMI input attribute 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.

In the sample above, after four payments are made, the ending principal balance to home value ratio drops below 70%, and hence the calculation engine returns IndexToRemove="4". Note that no PMI is included in the amortization schedule for payment numbers four or greater.

🔹 IndexToWarn

Data TypeDefault
Integer0

This attribute only appears if the PercentToWarn PMI input attribute is specified, and indicates that the payment index on which the remaining principal balance to home value ratio drops below the specified percentage. In the sample above, after three payments are made, the ending principal balance to home value ratio drops below 80%, and hence the calculation engine returns IndexToWarn="3".

🔸 LTV

Data Type
Decimal

The loan to value ratio of the computed loan, expressed as a percentage.

🔸 PremiumPerPeriod

Data Type
Currency

The periodic PMI premium amount.

🔸 PremiumPerYear

Data Type
Currency

The annual PMI premium amount

🔸 Rate

Data Type
Decimal

The percentage rate used in the PMI calculation.


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔹 IUTot

Data TypeDefault
Currency0

The IUTot attribute 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 over the duration of the loan.

🔹 PMITot

Data TypeDefault
Currency0

The PMITot attribute 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.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.

🔹 SCTot

Data TypeDefault
Currency0

The SCTot attribute will only appear on loans with service charges. It contains the total service charge amount paid over the duration of the loan.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔹 IUSub

Data TypeDefault
Currency0

The IUSub attribute 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.

🔹 PMISub

Data TypeDefault
Currency0

The PMISub attribute 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 upfront periodic PMI premiums) for PMI during the Year.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔹 SCSub

Data TypeDefault
Currency0

The SCSub attribute will only appear on loans with service charges. It contains the total of service charges paid during the Year.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔹 IU

Data TypeDefault
Currency0

The IU attribute 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.

🔹 PMI

Data TypeDefault
Currency0

This attribute contains the PMI premium for this payment.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 SC

Data TypeDefault
Currency0

This attribute contains the total service charge for this payment, and will only be present if one or more service charges were requested with the loan.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


Balloon Payment Loans

Balloon loans are loans which have a large final payment because of a regular payment less than the corresponding equal payment stream. 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.

Balloon Loan, Specified Regular Payment

Specifying a regular payment allows the SCE to compute a final payment that amortizes the loan appropriately.

Sample Request

The following is a sample request for a balloon payment loan calculation where the regular periodic payment is fixed at $500. The final balloon payment will be computed.

<inBALLOON_SPECIFY_REGULAR AccrualCode="320">
   <LoanDate>2023-12-01</LoanDate>
   <PmtDate>2024-01-01</PmtDate>
   <IntRate>10</IntRate>
   <Proceeds>10000.00</Proceeds>
   <Term>12</Term>
   <RegPmt>500</RegPmt>
</inBALLOON_SPECIFY_REGULAR>

Sample Response

The following is the XML response associated with the roll to amount request above, at the time this documentation was being written (2024-10):

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outBALLOON_SPECIFY_REGULAR SYSTEM "outBALLOON_SPECIFY_REGULAR.dtd">
<outBALLOON_SPECIFY_REGULAR>
   <Results>
      <Description>Successful Calculation</Description>
      <Payment>500.00</Payment>
      <Final>5266.70</Final>
   </Results>
   <FedBox>
      <AmtFin>10000.00</AmtFin>
      <FinChg>766.70</FinChg>
      <TotPmts>10766.70</TotPmts>
      <RegZAPR Type="Actuarial">10.029</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>10000.00</Principal>
      <Interest>766.70</Interest>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
   </Moneys>
   <Accrual>
      <Method>Actual/365 US Rule</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2024-12-01</Maturity>
   </Accrual>
   <PmtStream Term="11" Pmt="500.00" Rate="10.000" Begin="2024-01-01"/>
   <PmtStream Term="1" Pmt="5266.70" Rate="10.000" Begin="2024-12-01"/>
   <AmTable>
      <GrandTotals PmtTot="10766.70" IntTot="766.70" PrinTot="10000.00"/>
      <SubTotals Year="2024" Start="1" Events="12" PmtSub="10766.70" IntSub="766.70" PrinSub="10000.00"/>
      <AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="500.00" Int="84.93" Prin="415.07" EndBal="9584.93"/>
      <AmLine Idx="2" Date="2024-02-01" BegBal="9584.93" Pmt="500.00" Int="81.41" Prin="418.59" EndBal="9166.34"/>
      <AmLine Idx="3" Date="2024-03-01" BegBal="9166.34" Pmt="500.00" Int="72.83" Prin="427.17" EndBal="8739.17"/>
      <AmLine Idx="4" Date="2024-04-01" BegBal="8739.17" Pmt="500.00" Int="74.22" Prin="425.78" EndBal="8313.39"/>
      <AmLine Idx="5" Date="2024-05-01" BegBal="8313.39" Pmt="500.00" Int="68.33" Prin="431.67" EndBal="7881.72"/>
      <AmLine Idx="6" Date="2024-06-01" BegBal="7881.72" Pmt="500.00" Int="66.94" Prin="433.06" EndBal="7448.66"/>
      <AmLine Idx="7" Date="2024-07-01" BegBal="7448.66" Pmt="500.00" Int="61.22" Prin="438.78" EndBal="7009.88"/>
      <AmLine Idx="8" Date="2024-08-01" BegBal="7009.88" Pmt="500.00" Int="59.54" Prin="440.46" EndBal="6569.42"/>
      <AmLine Idx="9" Date="2024-09-01" BegBal="6569.42" Pmt="500.00" Int="55.80" Prin="444.20" EndBal="6125.22"/>
      <AmLine Idx="10" Date="2024-10-01" BegBal="6125.22" Pmt="500.00" Int="50.34" Prin="449.66" EndBal="5675.56"/>
      <AmLine Idx="11" Date="2024-11-01" BegBal="5675.56" Pmt="500.00" Int="48.20" Prin="451.80" EndBal="5223.76"/>
      <AmLine Idx="12" Date="2024-12-01" BegBal="5223.76" Pmt="5266.70" Int="42.94" Prin="5223.76" EndBal="0.00"/>
   </AmTable>
</outBALLOON_SPECIFY_REGULAR>

Balloon Loan, Specified Final Payment

Instead of specifying a regular payment and trying to compute a final payment, a borrower may request to specify the final payment. The SCE will then compute a regular payment, so long as the specified final payment is valid.

Sample Request

<inBALLOON_SPECIFY_FINAL AccrualCode="320">
   <LoanDate>2023-12-01</LoanDate>
   <PmtDate>2024-01-01</PmtDate>
   <IntRate>10</IntRate>
   <Proceeds>10000.00</Proceeds>
   <Term>12</Term>
   <FinalPmt>5000.00</FinalPmt>
</inBALLOON_SPECIFY_FINAL>

Sample Response

The following is the response associated with the request above, at the time this documentation was being written (2024-10):

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outBALLOON_SPECIFY_FINAL SYSTEM "outBALLOON_SPECIFY_FINAL.dtd">
<outBALLOON_SPECIFY_FINAL>
   <Results>
      <Description>Successful Calculation</Description>
      <Payment>523.06</Payment>
      <Final>5000.00</Final>
   </Results>
   <FedBox>
      <AmtFin>10000.00</AmtFin>
      <FinChg>753.66</FinChg>
      <TotPmts>10753.66</TotPmts>
      <RegZAPR Type="Actuarial">10.030</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>10000.00</Principal>
      <Interest>753.66</Interest>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
   </Moneys>
   <Accrual>
      <Method>Actual/365 US Rule</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2024-12-01</Maturity>
   </Accrual>
   <PmtStream Term="11" Pmt="523.06" Rate="10.000" Begin="2024-01-01"/>
   <PmtStream Term="1" Pmt="5000.00" Rate="10.000" Begin="2024-12-01"/>
   <AmTable>
      <GrandTotals PmtTot="10753.66" IntTot="753.61" PrinTot="10000.05"/>
      <SubTotals Year="2024" Start="1" Events="12" PmtSub="10753.66" IntSub="753.61" PrinSub="10000.05"/>
      <AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="523.06" Int="84.93" Prin="438.13" EndBal="9561.87"/>
      <AmLine Idx="2" Date="2024-02-01" BegBal="9561.87" Pmt="523.06" Int="81.21" Prin="441.85" EndBal="9120.02"/>
      <AmLine Idx="3" Date="2024-03-01" BegBal="9120.02" Pmt="523.06" Int="72.46" Prin="450.60" EndBal="8669.42"/>
      <AmLine Idx="4" Date="2024-04-01" BegBal="8669.42" Pmt="523.06" Int="73.63" Prin="449.43" EndBal="8219.99"/>
      <AmLine Idx="5" Date="2024-05-01" BegBal="8219.99" Pmt="523.06" Int="67.56" Prin="455.50" EndBal="7764.49"/>
      <AmLine Idx="6" Date="2024-06-01" BegBal="7764.49" Pmt="523.06" Int="65.94" Prin="457.12" EndBal="7307.37"/>
      <AmLine Idx="7" Date="2024-07-01" BegBal="7307.37" Pmt="523.06" Int="60.06" Prin="463.00" EndBal="6844.37"/>
      <AmLine Idx="8" Date="2024-08-01" BegBal="6844.37" Pmt="523.06" Int="58.13" Prin="464.93" EndBal="6379.44"/>
      <AmLine Idx="9" Date="2024-09-01" BegBal="6379.44" Pmt="523.06" Int="54.18" Prin="468.88" EndBal="5910.56"/>
      <AmLine Idx="10" Date="2024-10-01" BegBal="5910.56" Pmt="523.06" Int="48.58" Prin="474.48" EndBal="5436.08"/>
      <AmLine Idx="11" Date="2024-11-01" BegBal="5436.08" Pmt="523.06" Int="46.17" Prin="476.89" EndBal="4959.19"/>
      <AmLine Idx="12" Date="2024-12-01" BegBal="4959.19" Pmt="5000.00" Int="40.76" Prin="4959.24" EndBal="-0.05"/>
   </AmTable>
</outBALLOON_SPECIFY_FINAL>

Balloon Loan, Specified Amortization Term

Instead of specifying a regular or final payment and computing the other, a borrower may request to have a regular payment 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, Canadian roll-over balloon loans, or loans with a long term amortization and short term call.

Sample Request

The following is a sample request for an balloon loan calculation with a term of 12 months and a long term amortization of 120 months.

<inBALLOON_SPECIFY_AMORT AccrualCode="310">
   <LoanDate>2023-12-01</LoanDate>
   <PmtDate>2024-01-01</PmtDate>
   <IntRate>10</IntRate>
   <Proceeds>10000.00</Proceeds>
   <Term>12</Term>
   <AmortTerm>120</AmortTerm>
</inBALLOON_SPECIFY_AMORT>

Sample Response

The following is the response associated with the the request above, at the time this documentation was being written (2024-10):

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outBALLOON_SPECIFY_AMORT SYSTEM "outBALLOON_SPECIFY_AMORT.dtd">
<outBALLOON_SPECIFY_AMORT>
   <Results>
      <Description>Successful Calculation</Description>
      <Payment>132.97</Payment>
      <Final>9526.28</Final>
   </Results>
   <FedBox>
      <AmtFin>10000.00</AmtFin>
      <FinChg>988.95</FinChg>
      <TotPmts>10988.95</TotPmts>
      <RegZAPR Type="Actuarial">10.167</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>10000.00</Principal>
      <Interest>988.95</Interest>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
   </Moneys>
   <Accrual>
      <Method>Actual/360 US Rule</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2024-12-01</Maturity>
   </Accrual>
   <PmtStream Term="11" Pmt="132.97" Rate="10.000" Begin="2024-01-01"/>
   <PmtStream Term="1" Pmt="9526.28" Rate="10.000" Begin="2024-12-01"/>
   <AmTable>
      <GrandTotals PmtTot="10988.95" IntTot="988.95" PrinTot="10000.00"/>
      <SubTotals Year="2024" Start="1" Events="12" PmtSub="10988.95" IntSub="988.95" PrinSub="10000.00"/>
      <AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="132.97" Int="86.11" Prin="46.86" EndBal="9953.14"/>
      <AmLine Idx="2" Date="2024-02-01" BegBal="9953.14" Pmt="132.97" Int="85.71" Prin="47.26" EndBal="9905.88"/>
      <AmLine Idx="3" Date="2024-03-01" BegBal="9905.88" Pmt="132.97" Int="79.80" Prin="53.17" EndBal="9852.71"/>
      <AmLine Idx="4" Date="2024-04-01" BegBal="9852.71" Pmt="132.97" Int="84.84" Prin="48.13" EndBal="9804.58"/>
      <AmLine Idx="5" Date="2024-05-01" BegBal="9804.58" Pmt="132.97" Int="81.70" Prin="51.27" EndBal="9753.31"/>
      <AmLine Idx="6" Date="2024-06-01" BegBal="9753.31" Pmt="132.97" Int="83.99" Prin="48.98" EndBal="9704.33"/>
      <AmLine Idx="7" Date="2024-07-01" BegBal="9704.33" Pmt="132.97" Int="80.87" Prin="52.10" EndBal="9652.23"/>
      <AmLine Idx="8" Date="2024-08-01" BegBal="9652.23" Pmt="132.97" Int="83.12" Prin="49.85" EndBal="9602.38"/>
      <AmLine Idx="9" Date="2024-09-01" BegBal="9602.38" Pmt="132.97" Int="82.69" Prin="50.28" EndBal="9552.10"/>
      <AmLine Idx="10" Date="2024-10-01" BegBal="9552.10" Pmt="132.97" Int="79.60" Prin="53.37" EndBal="9498.73"/>
      <AmLine Idx="11" Date="2024-11-01" BegBal="9498.73" Pmt="132.97" Int="81.79" Prin="51.18" EndBal="9447.55"/>
      <AmLine Idx="12" Date="2024-12-01" BegBal="9447.55" Pmt="9526.28" Int="78.73" Prin="9447.55" EndBal="0.00"/>
   </AmTable>
</outBALLOON_SPECIFY_AMORT>

Balloon Specified Regular - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

ElementAttributes
🟥 <inBALLOON_SPECIFY_REGULAR>🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY
|- 🟦 <Construction>🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor
|- 🟦 <Fee>[]🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name
|- 🟦 <Format>🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator
|- 🟥 <IntRate>
|- 🟦 <IntStartDate>
|- 🟥 <LoanDate>
|- 🟦 <Mortgage_Insurance>🔹CashDown, 🔹LoanAmt, 🔹PropertyValue, 🔹Type
|- |- 🟥 <MI_Rate>[]🔸Switch
|- |- 🟦 <Periodic>🔹DropLTV, 🔹WarnLTV
|- |- 🟦 <UpFront>🔹Paid, 🔹Units
|- 🟦 <OddDaysPrepaid>🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI
|- 🟥 <PmtDate>
|- 🟥 <Proceeds>
|- 🟦 <Protection>🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps
|- |- 🟦 <Birthday1>
|- |- 🟦 <Birthday2>
|- |- 🟦 <Disability>🔹Benefit, 🔹CoverBalloon, 🔹Covers, 🔹CovTerm, 🔹Table
|- |- 🟦 <Life>🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates
|- |- 🟦 <Property>🔹Coverage, 🔹Covers
|- |- 🟦 <Unemployment>🔹Benefit, 🔹Covers, 🔹CovTerm
|- 🟥 <RegPmt>
|- 🟦 <ServiceCharge>[]🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type
|- 🟥 <Term>
|- 🟦 <TILARESPA2015>
|- 🟦 <TotalDown>

🟥 <inBALLOON_SPECIFY_REGULAR>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 OddFinal

Data TypeValuesDefault
Enumdefault, true, false, 1, 0default

This attribute allows the calling application to specify an odd final payment calculation method which will override the default value found in the setup file for the given account. If not specified, then the value of default will be used.

Odd final payments are sometimes desired to produce perfect amortization (i.e. an ending balance of zero after the final payment is made).

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute (see below). If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <Mortgage_Insurance>

Element TypeData TypeValuesDefault
Parent--No mortgage insurance

The <Mortgage_Insurance> element determines if this loan includes one of the supported types of mortgage insurance (MI) - PMI or FHA. This element contains child elements which further specify mortgage insurance options.

NOTE: Mortgage insurance is only supported on equal, balloon, and interest only loan builder requests at this time.

Attributes: 🔹CashDown, 🔹LoanAmt, 🔸PropertyValue, 🔹Type

🔹 CashDown

Data TypeValuesDefault
Currency>= 00

The CashDown attribute 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.

🔹 LoanAmt

Data TypeValuesDefault
Currency>= 0Principal balance

The LoanAmt attribute 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.

🔹 PropertyValue

Data TypeValuesDefault
Currency>= 00

This attribute’s value represents the appraised property value, and will be used in the calculation of the loan to value ratio.

🔹 Type

Data TypeValuesDefault
Enumpmi, fhapmi

This attribute determines the type of mortgage insurance to include with the loan. If the Type attribute is set to FHA, 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.


🟥 <Mortgage_Insurance><MI_Rate>[]

Element TypeData TypeValues
DataDecimal>= 0

The value of this element specifies the cost of mortgage insurance per $100 of the loan amount. Note that there may be more than one <MI_Rate> element defined in an XML loan request (see the Switch attribute below).

As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as <MI_Rate>1.50</MI_Rate>.

Attributes: 🔸Switch

🔹 Switch

Data TypeValuesDefault
Integer> 00

This optional attribute 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 attribute. Single rate example (use a rate of $1.50 for the entire term of MI coverage):

<MI_Rate>1.50</MI_Rate>

Multiple rate example (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):

<MI_Rate>1.50</MI_Rate>
<MI_Rate Switch="120">0.20</MI_Rate>

🟦 <Mortgage_Insurance><Periodic>

Element TypeData TypeValuesDefault
DataInteger>= 00

The value of this element represents the term beyond which MI is no longer included. As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify <Periodic>180</Periodic> in the XML loan request. 0 means no term removal is in effect.

Attributes: 🔹DropLTV, 🔹WarnLTV

🔹 DropLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".

🔹 WarnLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".


🟦 <Mortgage_Insurance><UpFront>

Element TypeData TypeValuesDefault
DataDecimal>= 00

This element determines the up front fee for mortgage insurance, as disclosed in the <PMI_Fee> element in the results. If this element is not specified, 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 element can be omitted or set to zero.

The following attributes define how the fee is computed and disclosed.

Attributes: 🔹Paid, 🔹Units

🔹 Paid

Data TypeValuesDefault
EnumFinanced, AtClosing, ByLenderAtClosing

If the value of this attribute 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 a Pocket Fee that is not added to either the principal balance nor the finance charge.

🔹 Units

Data TypeValuesDefault
EnumMonths, Points, YearsMonths

If the Units attribute is set to Months, the value of the <UpFront> element represents the number of periodic MI premiums to be paid at closing.

If the Units attribute is set to Years, the value of the <UpFront> element 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 attribute is set to Points, the value of the <UpFront> element represents the percentage of principal to be paid up front. As of October 3, 2011, FHA loans use points.


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹CoverBalloon, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 CoverBalloon

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute is only applicable when the loan is covered with TruStage single premium insurance. If this attribute is set to true, then the SCE will cover the regular benefit amount for the amortization term of the loan. If set to false, then the regular benefit amount is covered for the actual loan term.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <Protection><Property>

Element TypeData TypeValuesDefault
Empty--No property coverage

The <Property> element determines what type of personal property coverage is requested for the loan. The element itself is empty, with all information needed for coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute determines what type of coverage is being requested on the loan. The value borrower1 represents single coverage on the primary borrower (whose birthday is contained in element <Birthday1>). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Property> element entirely.


🟦 <Protection><Unemployment>

Element TypeData TypeValuesDefault
Empty--No unemployment coverage

The <Unemployment> element determines what type of involuntary unemployment coverage is requested for the loan. The element itself is empty, with all information needed for a coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Unemployment> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will ensure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user-specified coverage terms, then this attribute will be ignored.


🟥 <RegPmt>

Element TypeData TypeValues
DataCurrency> 0

This required element contains the desired regular payment amount. So long as this specified payment is not too large, the SCE will compute a final balloon payment to amortize the loan.

Attributes: None


🟦 <ServiceCharge>[]

Element TypeData TypeValuesDefault
Empty--No service charge

As with the <Fee> element, any number of <ServiceCharge> elements may be added to a loan. Service charges are supported on single, equal, and balloon payment loans only.

The <ServiceCharge> element itself contains no data. Instead, all of the information used to compute the service charge is contained in the following attributes of the element:

Attributes: 🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type

🔸 Entry (decimal, 0)

How this attribute is interpreted depends upon the Type attribute, described below. It is the numeric amount defining either the lump sum or periodically paid service charge.

🔹 Exact (boolean, false)

The Exact attribute 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 that entered.

If the Exact attribute 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.

🔹 Name (text, "")

This attribute is for convenience purposes only, and does not affect the calculation of the service charge in any manner. If a Name attribute is specified for the <ServiceCharge> element, then the corresponding <ServiceCharge> element in the response will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.

🔹 Round (enum, [nearest, up, down], nearest)

This attribute is only considered when the service charge is of Type LumpSum. It determines how the calculated periodic amount is rounded.

🔹 Type (enum, [LumpSum, Periodic], LumpSum)

A service charge of Type of 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.


🟥 <Term>

Element TypeData TypeValues
DataInteger[2...600]*

The value of this element indicates the number of payments in the loan.

The term must be entered as a number of payments, not a duration of time. Therefore, <Term>72</Term> represents 72 payments, not 72 months (or years). This term is intimately tied to the PPY (# of payments per year) attribute of the root element. If the value of the PPY attribute was 24 (semimonthly) for this loan, the 72 payments would mean that the duration of the loan is three years, since years = number of payments / payments per year = 72 / 24 = 3.

* In general, the term can be no greater than 50 years, so the maximum entry would be 50 * PPY. Weekly loans, however, are limited to 30 years, or 1,560 payments.

Attributes: None


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Balloon Specified Regular - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outBALLOON_SPECIFY_REGULAR>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <Payment>
|- |- 🟥 <Final>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- |- 🟦 <ServiceCharge>[]🔹Name
|- |- 🟦 <PMI_Fee>
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟦 <PMI>🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outBALLOON_SPECIFY_REGULAR>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
  <Description>Successful Calculation</Description>
  <Payment>500.00</Payment>
  <Final>5266.70</Final>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Payment>

Element TypeData Type
DataCurrency

The computed regular payment amount corresponding to an equal payment loan using the specified amortization term (see <AmortTerm>).

Attributes: None


🟥 <Results><Final>

Element TypeData Type
DataCurrency

The computed final (or balloon) payment amount, given the regular payment computed by the SCE and disclosed above.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
  <AmtFin>10000.00</AmtFin>
  <FinChg>766.70</FinChg>
  <TotPmts>10766.70</TotPmts>
  <RegZAPR Type="Actuarial">10.029</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟦 <Moneys><ServiceCharge>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero service charge requested in the loan calculation, there will be a <ServiceCharge> element containing the total service charge amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <ServiceCharge> element from the request. If no such attribute is present in the request element, then none will be present in the response element.


🟦 <Moneys><PMI_Fee>

Element TypeData TypeDefault
DataCurrency0

If PMI has been requested on the loan, and if a number of up front payments have been specified, then this element will hold the total PMI fee for all upfront payments.

Attributes: None


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟦 <PMI>

Element TypeData Type
Empty-

The PMI element 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> element, the <PmtStream> element(s), the <TotPmts> element, nor the Pmt attribute of the <AmLine> element.

<PMI Rate="1.00" LTV="100.00" PremiumPerYear="964.08" PremiumPerPeriod="80.34"/>

The element itself contains no data, as all associated PMI data is found in the following attributes:

Attributes: 🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate

🔹 IndexToRemove

Data TypeDefault
Integer0

This attribute only appears if the PercentToRemove PMI input attribute 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.

In the sample above, after four payments are made, the ending principal balance to home value ratio drops below 70%, and hence the calculation engine returns IndexToRemove="4". Note that no PMI is included in the amortization schedule for payment numbers four or greater.

🔹 IndexToWarn

Data TypeDefault
Integer0

This attribute only appears if the PercentToWarn PMI input attribute is specified, and indicates that the payment index on which the remaining principal balance to home value ratio drops below the specified percentage. In the sample above, after three payments are made, the ending principal balance to home value ratio drops below 80%, and hence the calculation engine returns IndexToWarn="3".

🔸 LTV

Data Type
Decimal

The loan to value ratio of the computed loan, expressed as a percentage.

🔸 PremiumPerPeriod

Data Type
Currency

The periodic PMI premium amount.

🔸 PremiumPerYear

Data Type
Currency

The annual PMI premium amount

🔸 Rate

Data Type
Decimal

The percentage rate used in the PMI calculation.


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔹 IUTot

Data TypeDefault
Currency0

The IUTot attribute 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 over the duration of the loan.

🔹 PMITot

Data TypeDefault
Currency0

The PMITot attribute 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.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.

🔹 SCTot

Data TypeDefault
Currency0

The SCTot attribute will only appear on loans with service charges. It contains the total service charge amount paid over the duration of the loan.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔹 IUSub

Data TypeDefault
Currency0

The IUSub attribute 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.

🔹 PMISub

Data TypeDefault
Currency0

The PMISub attribute 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 upfront periodic PMI premiums) for PMI during the Year.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔹 SCSub

Data TypeDefault
Currency0

The SCSub attribute will only appear on loans with service charges. It contains the total of service charges paid during the Year.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔹 IU

Data TypeDefault
Currency0

The IU attribute 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.

🔹 PMI

Data TypeDefault
Currency0

This attribute contains the PMI premium for this payment.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 SC

Data TypeDefault
Currency0

This attribute contains the total service charge for this payment, and will only be present if one or more service charges were requested with the loan.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.

Balloon Specified Final - Request

The specified final balloon loan request is almost identical to the specified regular balloon loan request, with the following differences:

  1. The root element is <inBALLOON_SPECIFY_FINAL> instead of <inBALLOON_SPECIFY_REGULAR>.
  2. There is no <RegPmt> element present, since this is the value we are solving for.
  3. The new <FinalPmt> element allows the calling application to specify a desired final payment amount.

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

ElementAttributes
🟥 <inBALLOON_SPECIFY_FINAL>🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY
|- 🟦 <Construction>🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor
|- 🟦 <Fee>[]🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name
|- 🟥 <FinalPmt>
|- 🟦 <Format>🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator
|- 🟥 <IntRate>
|- 🟦 <IntStartDate>
|- 🟥 <LoanDate>
|- 🟦 <Mortgage_Insurance>🔹CashDown, 🔹LoanAmt, 🔹PropertyValue, 🔹Type
|- |- 🟥 <MI_Rate>[]🔸Switch
|- |- 🟦 <Periodic>🔹DropLTV, 🔹WarnLTV
|- |- 🟦 <UpFront>🔹Paid, 🔹Units
|- 🟦 <OddDaysPrepaid>🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI
|- 🟥 <PmtDate>
|- 🟥 <Proceeds>
|- 🟦 <Protection>🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps
|- |- 🟦 <Birthday1>
|- |- 🟦 <Birthday2>
|- |- 🟦 <Disability>🔹Benefit, 🔹CoverBalloon, 🔹Covers, 🔹CovTerm, 🔹Table
|- |- 🟦 <Life>🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates
|- |- 🟦 <Property>🔹Coverage, 🔹Covers
|- |- 🟦 <Unemployment>🔹Benefit, 🔹Covers, 🔹CovTerm
|- 🟦 <ServiceCharge>[]🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type
|- 🟥 <Term>
|- 🟦 <TILARESPA2015>
|- 🟦 <TotalDown>

🟥 <inBALLOON_SPECIFY_FINAL>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 OddFinal

Data TypeValuesDefault
Enumdefault, true, false, 1, 0default

This attribute allows the calling application to specify an odd final payment calculation method which will override the default value found in the setup file for the given account. If not specified, then the value of default will be used.

Odd final payments are sometimes desired to produce perfect amortization (i.e. an ending balance of zero after the final payment is made).

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute (see below). If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟥 <FinalPmt>

Element TypeData TypeValues
DataCurrency> 0

This required element contains the desired final payment amount. So long as this specified final payment is not too large, the SCE will compute a regular payment amount to amortize the loan.

Attributes: None


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <Mortgage_Insurance>

Element TypeData TypeValuesDefault
Parent--No mortgage insurance

The <Mortgage_Insurance> element determines if this loan includes one of the supported types of mortgage insurance (MI) - PMI or FHA. This element contains child elements which further specify mortgage insurance options.

NOTE: Mortgage insurance is only supported on equal, balloon, and interest only loan builder requests at this time.

Attributes: 🔹CashDown, 🔹LoanAmt, 🔸PropertyValue, 🔹Type

🔹 CashDown

Data TypeValuesDefault
Currency>= 00

The CashDown attribute 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.

🔹 LoanAmt

Data TypeValuesDefault
Currency>= 0Principal balance

The LoanAmt attribute 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.

🔹 PropertyValue

Data TypeValuesDefault
Currency>= 00

This attribute’s value represents the appraised property value, and will be used in the calculation of the loan to value ratio.

🔹 Type

Data TypeValuesDefault
Enumpmi, fhapmi

This attribute determines the type of mortgage insurance to include with the loan. If the Type attribute is set to FHA, 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.


🟥 <Mortgage_Insurance><MI_Rate>[]

Element TypeData TypeValues
DataDecimal>= 0

The value of this element specifies the cost of mortgage insurance per $100 of the loan amount. Note that there may be more than one <MI_Rate> element defined in an XML loan request (see the Switch attribute below).

As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as <MI_Rate>1.50</MI_Rate>.

Attributes: 🔸Switch

🔹 Switch

Data TypeValuesDefault
Integer> 00

This optional attribute 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 attribute. Single rate example (use a rate of $1.50 for the entire term of MI coverage):

<MI_Rate>1.50</MI_Rate>

Multiple rate example (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):

<MI_Rate>1.50</MI_Rate>
<MI_Rate Switch="120">0.20</MI_Rate>

🟦 <Mortgage_Insurance><Periodic>

Element TypeData TypeValuesDefault
DataInteger>= 00

The value of this element represents the term beyond which MI is no longer included. As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify <Periodic>180</Periodic> in the XML loan request. 0 means no term removal is in effect.

Attributes: 🔹DropLTV, 🔹WarnLTV

🔹 DropLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".

🔹 WarnLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".


🟦 <Mortgage_Insurance><UpFront>

Element TypeData TypeValuesDefault
DataDecimal>= 00

This element determines the up front fee for mortgage insurance, as disclosed in the <PMI_Fee> element in the results. If this element is not specified, 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 element can be omitted or set to zero.

The following attributes define how the fee is computed and disclosed.

Attributes: 🔹Paid, 🔹Units

🔹 Paid

Data TypeValuesDefault
EnumFinanced, AtClosing, ByLenderAtClosing

If the value of this attribute 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 a Pocket Fee that is not added to either the principal balance nor the finance charge.

🔹 Units

Data TypeValuesDefault
EnumMonths, Points, YearsMonths

If the Units attribute is set to Months, the value of the <UpFront> element represents the number of periodic MI premiums to be paid at closing.

If the Units attribute is set to Years, the value of the <UpFront> element 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 attribute is set to Points, the value of the <UpFront> element represents the percentage of principal to be paid up front. As of October 3, 2011, FHA loans use points.


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹CoverBalloon, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 CoverBalloon

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute is only applicable when the loan is covered with TruStage single premium insurance. If this attribute is set to true, then the SCE will cover the regular benefit amount for the amortization term of the loan. If set to false, then the regular benefit amount is covered for the actual loan term.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <Protection><Property>

Element TypeData TypeValuesDefault
Empty--No property coverage

The <Property> element determines what type of personal property coverage is requested for the loan. The element itself is empty, with all information needed for coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute determines what type of coverage is being requested on the loan. The value borrower1 represents single coverage on the primary borrower (whose birthday is contained in element <Birthday1>). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Property> element entirely.


🟦 <Protection><Unemployment>

Element TypeData TypeValuesDefault
Empty--No unemployment coverage

The <Unemployment> element determines what type of involuntary unemployment coverage is requested for the loan. The element itself is empty, with all information needed for a coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Unemployment> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will ensure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user-specified coverage terms, then this attribute will be ignored.


🟦 <ServiceCharge>[]

Element TypeData TypeValuesDefault
Empty--No service charge

As with the <Fee> element, any number of <ServiceCharge> elements may be added to a loan. Service charges are supported on single, equal, and balloon payment loans only.

The <ServiceCharge> element itself contains no data. Instead, all of the information used to compute the service charge is contained in the following attributes of the element:

Attributes: 🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type

🔸 Entry (decimal, 0)

How this attribute is interpreted depends upon the Type attribute, described below. It is the numeric amount defining either the lump sum or periodically paid service charge.

🔹 Exact (boolean, false)

The Exact attribute 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 that entered.

If the Exact attribute 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.

🔹 Name (text, "")

This attribute is for convenience purposes only, and does not affect the calculation of the service charge in any manner. If a Name attribute is specified for the <ServiceCharge> element, then the corresponding <ServiceCharge> element in the response will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.

🔹 Round (enum, [nearest, up, down], nearest)

This attribute is only considered when the service charge is of Type LumpSum. It determines how the calculated periodic amount is rounded.

🔹 Type (enum, [LumpSum, Periodic], LumpSum)

A service charge of Type of 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.


🟥 <Term>

Element TypeData TypeValues
DataInteger[2...600]*

The value of this element indicates the number of payments in the loan.

The term must be entered as a number of payments, not a duration of time. Therefore, <Term>72</Term> represents 72 payments, not 72 months (or years). This term is intimately tied to the PPY (# of payments per year) attribute of the root element. If the value of the PPY attribute was 24 (semimonthly) for this loan, the 72 payments would mean that the duration of the loan is three years, since years = number of payments / payments per year = 72 / 24 = 3.

* In general, the term can be no greater than 50 years, so the maximum entry would be 50 * PPY. Weekly loans, however, are limited to 30 years, or 1,560 payments.

Attributes: None


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Balloon Specified Final - Response

The specified final balloon loan response is almost identical to the specified regular balloon loan response, with the following differences:

  1. The root element is <outBALLOON_SPECIFY_FINAL> instead of <outBALLOON_SPECIFY_REGULAR>.

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outBALLOON_SPECIFY_FINAL>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <Payment>
|- |- 🟥 <Final>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- |- 🟦 <ServiceCharge>[]🔹Name
|- |- 🟦 <PMI_Fee>
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟦 <PMI>🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outBALLOON_SPECIFY_FINAL>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
  <Description>Successful Calculation</Description>
  <Payment>523.06</Payment>
  <Final>5000.00</Final>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Payment>

Element TypeData Type
DataCurrency

The computed regular payment (<RegPmt>) amount which amortizes the loan, along with the specified final payment (<Final>).

Attributes: None


🟥 <Results><Final>

Element TypeData Type
DataCurrency

The specified final (or balloon) payment amount which amortizes the loan given the requested regular payment.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
  <AmtFin>10000.00</AmtFin>
  <FinChg>753.66</FinChg>
  <TotPmts>10753.66</TotPmts>
  <RegZAPR Type="Actuarial">10.030</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟦 <Moneys><ServiceCharge>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero service charge requested in the loan calculation, there will be a <ServiceCharge> element containing the total service charge amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <ServiceCharge> element from the request. If no such attribute is present in the request element, then none will be present in the response element.


🟦 <Moneys><PMI_Fee>

Element TypeData TypeDefault
DataCurrency0

If PMI has been requested on the loan, and if a number of up front payments have been specified, then this element will hold the total PMI fee for all upfront payments.

Attributes: None


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟦 <PMI>

Element TypeData Type
Empty-

The PMI element 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> element, the <PmtStream> element(s), the <TotPmts> element, nor the Pmt attribute of the <AmLine> element.

<PMI Rate="1.00" LTV="100.00" PremiumPerYear="964.08" PremiumPerPeriod="80.34"/>

The element itself contains no data, as all associated PMI data is found in the following attributes:

Attributes: 🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate

🔹 IndexToRemove

Data TypeDefault
Integer0

This attribute only appears if the PercentToRemove PMI input attribute 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.

In the sample above, after four payments are made, the ending principal balance to home value ratio drops below 70%, and hence the calculation engine returns IndexToRemove="4". Note that no PMI is included in the amortization schedule for payment numbers four or greater.

🔹 IndexToWarn

Data TypeDefault
Integer0

This attribute only appears if the PercentToWarn PMI input attribute is specified, and indicates that the payment index on which the remaining principal balance to home value ratio drops below the specified percentage. In the sample above, after three payments are made, the ending principal balance to home value ratio drops below 80%, and hence the calculation engine returns IndexToWarn="3".

🔸 LTV

Data Type
Decimal

The loan to value ratio of the computed loan, expressed as a percentage.

🔸 PremiumPerPeriod

Data Type
Currency

The periodic PMI premium amount.

🔸 PremiumPerYear

Data Type
Currency

The annual PMI premium amount

🔸 Rate

Data Type
Decimal

The percentage rate used in the PMI calculation.


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔹 IUTot

Data TypeDefault
Currency0

The IUTot attribute 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 over the duration of the loan.

🔹 PMITot

Data TypeDefault
Currency0

The PMITot attribute 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.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.

🔹 SCTot

Data TypeDefault
Currency0

The SCTot attribute will only appear on loans with service charges. It contains the total service charge amount paid over the duration of the loan.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔹 IUSub

Data TypeDefault
Currency0

The IUSub attribute 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.

🔹 PMISub

Data TypeDefault
Currency0

The PMISub attribute 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 upfront periodic PMI premiums) for PMI during the Year.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔹 SCSub

Data TypeDefault
Currency0

The SCSub attribute will only appear on loans with service charges. It contains the total of service charges paid during the Year.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔹 IU

Data TypeDefault
Currency0

The IU attribute 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.

🔹 PMI

Data TypeDefault
Currency0

This attribute contains the PMI premium for this payment.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 SC

Data TypeDefault
Currency0

This attribute contains the total service charge for this payment, and will only be present if one or more service charges were requested with the loan.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


Balloon Specified Amort Term - Request

The specified amortization term balloon loan request is almost identical to the specified regular balloon loan request, with the following differences:

  1. The root element is <inBALLOON_SPECIFY_AMORT> instead of <inBALLOON_SPECIFY_REGULAR>.
  2. There is no <RegPmt> element present, since this is one of the values (along with the final payment) we are solving for.
  3. The new <AmortTerm> element allows the calling application to specify a desired final payment amount.

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

ElementAttributes
🟥 <inBALLOON_SPECIFY_AMORT>🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY
|- 🟥 <AmortTerm>
|- 🟦 <Construction>🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor
|- 🟦 <Fee>[]🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name
|- 🟦 <Format>🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator
|- 🟥 <IntRate>
|- 🟦 <IntStartDate>
|- 🟥 <LoanDate>
|- 🟦 <Mortgage_Insurance>🔹CashDown, 🔹LoanAmt, 🔹PropertyValue, 🔹Type
|- |- 🟥 <MI_Rate>[]🔸Switch
|- |- 🟦 <Periodic>🔹DropLTV, 🔹WarnLTV
|- |- 🟦 <UpFront>🔹Paid, 🔹Units
|- 🟦 <OddDaysPrepaid>🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI
|- 🟥 <PmtDate>
|- 🟥 <Proceeds>
|- 🟦 <Protection>🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps
|- |- 🟦 <Birthday1>
|- |- 🟦 <Birthday2>
|- |- 🟦 <Disability>🔹Benefit, 🔹CoverBalloon, 🔹Covers, 🔹CovTerm, 🔹Table
|- |- 🟦 <Life>🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates
|- |- 🟦 <Property>🔹Coverage, 🔹Covers
|- |- 🟦 <Unemployment>🔹Benefit, 🔹Covers, 🔹CovTerm
|- 🟦 <ServiceCharge>[]🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type
|- 🟥 <Term>
|- 🟦 <TILARESPA2015>
|- 🟦 <TotalDown>

🟥 <inBALLOON_SPECIFY_AMORT>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 OddFinal

Data TypeValuesDefault
Enumdefault, true, false, 1, 0default

This attribute allows the calling application to specify an odd final payment calculation method which will override the default value found in the setup file for the given account. If not specified, then the value of default will be used.

Odd final payments are sometimes desired to produce perfect amortization (i.e. an ending balance of zero after the final payment is made).

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute (see below). If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟥 <AmortTerm>

Element TypeData TypeValues
DataCurrency[<Term> + 1...600]*

This required element 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>, or else the balloon loan will not be able to be computed.

* In general, the amortization term can be no greater than 50 years, so the maximum entry would be 50 * PPY. Weekly loans, however, are limited to 30 years, or 1,560 payments.

Attributes: None


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <Mortgage_Insurance>

Element TypeData TypeValuesDefault
Parent--No mortgage insurance

The <Mortgage_Insurance> element determines if this loan includes one of the supported types of mortgage insurance (MI) - PMI or FHA. This element contains child elements which further specify mortgage insurance options.

NOTE: Mortgage insurance is only supported on equal, balloon, and interest only loan builder requests at this time.

Attributes: 🔹CashDown, 🔹LoanAmt, 🔸PropertyValue, 🔹Type

🔹 CashDown

Data TypeValuesDefault
Currency>= 00

The CashDown attribute 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.

🔹 LoanAmt

Data TypeValuesDefault
Currency>= 0Principal balance

The LoanAmt attribute 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.

🔹 PropertyValue

Data TypeValuesDefault
Currency>= 00

This attribute’s value represents the appraised property value, and will be used in the calculation of the loan to value ratio.

🔹 Type

Data TypeValuesDefault
Enumpmi, fhapmi

This attribute determines the type of mortgage insurance to include with the loan. If the Type attribute is set to FHA, 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.


🟥 <Mortgage_Insurance><MI_Rate>[]

Element TypeData TypeValues
DataDecimal>= 0

The value of this element specifies the cost of mortgage insurance per $100 of the loan amount. Note that there may be more than one <MI_Rate> element defined in an XML loan request (see the Switch attribute below).

As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as <MI_Rate>1.50</MI_Rate>.

Attributes: 🔸Switch

🔹 Switch

Data TypeValuesDefault
Integer> 00

This optional attribute 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 attribute. Single rate example (use a rate of $1.50 for the entire term of MI coverage):

<MI_Rate>1.50</MI_Rate>

Multiple rate example (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):

<MI_Rate>1.50</MI_Rate>
<MI_Rate Switch="120">0.20</MI_Rate>

🟦 <Mortgage_Insurance><Periodic>

Element TypeData TypeValuesDefault
DataInteger>= 00

The value of this element represents the term beyond which MI is no longer included. As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify <Periodic>180</Periodic> in the XML loan request. 0 means no term removal is in effect.

Attributes: 🔹DropLTV, 🔹WarnLTV

🔹 DropLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".

🔹 WarnLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".


🟦 <Mortgage_Insurance><UpFront>

Element TypeData TypeValuesDefault
DataDecimal>= 00

This element determines the up front fee for mortgage insurance, as disclosed in the <PMI_Fee> element in the results. If this element is not specified, 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 element can be omitted or set to zero.

The following attributes define how the fee is computed and disclosed.

Attributes: 🔹Paid, 🔹Units

🔹 Paid

Data TypeValuesDefault
EnumFinanced, AtClosing, ByLenderAtClosing

If the value of this attribute 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 a Pocket Fee that is not added to either the principal balance nor the finance charge.

🔹 Units

Data TypeValuesDefault
EnumMonths, Points, YearsMonths

If the Units attribute is set to Months, the value of the <UpFront> element represents the number of periodic MI premiums to be paid at closing.

If the Units attribute is set to Years, the value of the <UpFront> element 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 attribute is set to Points, the value of the <UpFront> element represents the percentage of principal to be paid up front. As of October 3, 2011, FHA loans use points.


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹CoverBalloon, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 CoverBalloon

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute is only applicable when the loan is covered with TruStage single premium insurance. If this attribute is set to true, then the SCE will cover the regular benefit amount for the amortization term of the loan. If set to false, then the regular benefit amount is covered for the actual loan term.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <Protection><Property>

Element TypeData TypeValuesDefault
Empty--No property coverage

The <Property> element determines what type of personal property coverage is requested for the loan. The element itself is empty, with all information needed for coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute determines what type of coverage is being requested on the loan. The value borrower1 represents single coverage on the primary borrower (whose birthday is contained in element <Birthday1>). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Property> element entirely.


🟦 <Protection><Unemployment>

Element TypeData TypeValuesDefault
Empty--No unemployment coverage

The <Unemployment> element determines what type of involuntary unemployment coverage is requested for the loan. The element itself is empty, with all information needed for a coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Unemployment> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will ensure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user-specified coverage terms, then this attribute will be ignored.


🟦 <ServiceCharge>[]

Element TypeData TypeValuesDefault
Empty--No service charge

As with the <Fee> element, any number of <ServiceCharge> elements may be added to a loan. Service charges are supported on single, equal, and balloon payment loans only.

The <ServiceCharge> element itself contains no data. Instead, all of the information used to compute the service charge is contained in the following attributes of the element:

Attributes: 🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type

🔸 Entry (decimal, 0)

How this attribute is interpreted depends upon the Type attribute, described below. It is the numeric amount defining either the lump sum or periodically paid service charge.

🔹 Exact (boolean, false)

The Exact attribute 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 that entered.

If the Exact attribute 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.

🔹 Name (text, "")

This attribute is for convenience purposes only, and does not affect the calculation of the service charge in any manner. If a Name attribute is specified for the <ServiceCharge> element, then the corresponding <ServiceCharge> element in the response will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.

🔹 Round (enum, [nearest, up, down], nearest)

This attribute is only considered when the service charge is of Type LumpSum. It determines how the calculated periodic amount is rounded.

🔹 Type (enum, [LumpSum, Periodic], LumpSum)

A service charge of Type of 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.


🟥 <Term>

Element TypeData TypeValues
DataInteger[2...600]*

The value of this element indicates the number of payments in the loan.

The term must be entered as a number of payments, not a duration of time. Therefore, <Term>72</Term> represents 72 payments, not 72 months (or years). This term is intimately tied to the PPY (# of payments per year) attribute of the root element. If the value of the PPY attribute was 24 (semimonthly) for this loan, the 72 payments would mean that the duration of the loan is three years, since years = number of payments / payments per year = 72 / 24 = 3.

* In general, the term can be no greater than 50 years, so the maximum entry would be 50 * PPY. Weekly loans, however, are limited to 30 years, or 1,560 payments.

Attributes: None


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Balloon Specified Amort Term - Response

The specified amortization term loan response is almost identical to the specified regular balloon loan response, with the following differences:

  1. The root element is <outBALLOON_SPECIFY_AMORT> instead of <outBALLOON_SPECIFY_REGULAR>.

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outBALLOON_SPECIFY_AMORT>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <Payment>
|- |- 🟥 <Final>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- |- 🟦 <ServiceCharge>[]🔹Name
|- |- 🟦 <PMI_Fee>
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟦 <PMI>🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outBALLOON_SPECIFY_AMORT>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
  <Description>Successful Calculation</Description>
  <Payment>132.97</Payment>
  <Final>9526.28</Final>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Payment>

Element TypeData Type
DataCurrency

The specified regular payment (<RegPmt>) amount which amortizes the loan, along with the computed final payment (<Final>).

Attributes: None


🟥 <Results><Final>

Element TypeData Type
DataCurrency

The computed final (or balloon) payment amount which amortizes the loan given the requested regular payment.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
  <AmtFin>10000.00</AmtFin>
  <FinChg>988.95</FinChg>
  <TotPmts>10988.95</TotPmts>
  <RegZAPR Type="Actuarial">10.167</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟦 <Moneys><ServiceCharge>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero service charge requested in the loan calculation, there will be a <ServiceCharge> element containing the total service charge amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <ServiceCharge> element from the request. If no such attribute is present in the request element, then none will be present in the response element.


🟦 <Moneys><PMI_Fee>

Element TypeData TypeDefault
DataCurrency0

If PMI has been requested on the loan, and if a number of up front payments have been specified, then this element will hold the total PMI fee for all upfront payments.

Attributes: None


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟦 <PMI>

Element TypeData Type
Empty-

The PMI element 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> element, the <PmtStream> element(s), the <TotPmts> element, nor the Pmt attribute of the <AmLine> element.

<PMI Rate="1.00" LTV="100.00" PremiumPerYear="964.08" PremiumPerPeriod="80.34"/>

The element itself contains no data, as all associated PMI data is found in the following attributes:

Attributes: 🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate

🔹 IndexToRemove

Data TypeDefault
Integer0

This attribute only appears if the PercentToRemove PMI input attribute 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.

In the sample above, after four payments are made, the ending principal balance to home value ratio drops below 70%, and hence the calculation engine returns IndexToRemove="4". Note that no PMI is included in the amortization schedule for payment numbers four or greater.

🔹 IndexToWarn

Data TypeDefault
Integer0

This attribute only appears if the PercentToWarn PMI input attribute is specified, and indicates that the payment index on which the remaining principal balance to home value ratio drops below the specified percentage. In the sample above, after three payments are made, the ending principal balance to home value ratio drops below 80%, and hence the calculation engine returns IndexToWarn="3".

🔸 LTV

Data Type
Decimal

The loan to value ratio of the computed loan, expressed as a percentage.

🔸 PremiumPerPeriod

Data Type
Currency

The periodic PMI premium amount.

🔸 PremiumPerYear

Data Type
Currency

The annual PMI premium amount

🔸 Rate

Data Type
Decimal

The percentage rate used in the PMI calculation.


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔹 IUTot

Data TypeDefault
Currency0

The IUTot attribute 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 over the duration of the loan.

🔹 PMITot

Data TypeDefault
Currency0

The PMITot attribute 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.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.

🔹 SCTot

Data TypeDefault
Currency0

The SCTot attribute will only appear on loans with service charges. It contains the total service charge amount paid over the duration of the loan.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔹 IUSub

Data TypeDefault
Currency0

The IUSub attribute 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.

🔹 PMISub

Data TypeDefault
Currency0

The PMISub attribute 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 upfront periodic PMI premiums) for PMI during the Year.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔹 SCSub

Data TypeDefault
Currency0

The SCSub attribute will only appear on loans with service charges. It contains the total of service charges paid during the Year.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔹 IU

Data TypeDefault
Currency0

The IU attribute 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.

🔹 PMI

Data TypeDefault
Currency0

This attribute contains the PMI premium for this payment.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 SC

Data TypeDefault
Currency0

This attribute contains the total service charge for this payment, and will only be present if one or more service charges were requested with the loan.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


Single Payment Notes

Some loans (such as bridge loans or "Term Loans") will have a single payment due at maturity, and require special consideration. This module computes these types of loans, which the industry calls single payment notes.

Sample Request

The following sample illustrates the core structure of a single payment note request. It is a request for a loan with a single advance of $10,000, accruing interest at 5.0%, with a single payment due in 12 months.

<inSINGLE_PAYMENT>
   <LoanDate>2024-11-04</LoanDate>
   <PmtDate>2025-12-04</PmtDate>
   <IntRate>5.0</IntRate>
   <Proceeds>10000.00</Proceeds>
</inSINGLE_PAYMENT>

Sample Response

The following response is returned from the SCEX when provided with the sample request above.

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outSINGLE_PAYMENT SYSTEM "outSINGLE_PAYMENT.dtd">
<outSINGLE_PAYMENT>
   <Results>
      <Description>Successful Calculation</Description>
      <Payment>10541.10</Payment>
   </Results>
   <FedBox>
      <AmtFin>10000.00</AmtFin>
      <FinChg>541.10</FinChg>
      <TotPmts>10541.10</TotPmts>
      <RegZAPR Type="Actuarial">4.976</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>10000.00</Principal>
      <Interest>541.10</Interest>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
   </Moneys>
   <Accrual>
      <Method>Actual/365 Simple</Method>
      <Days1Pmt DayCount="Actual">395</Days1Pmt>
      <Maturity>2025-12-04</Maturity>
   </Accrual>
   <PmtStream Term="1" Pmt="10541.10" Rate="5.000" Begin="2025-12-04"/>
   <AmTable>
      <GrandTotals PmtTot="10541.10" IntTot="541.10" PrinTot="10000.00"/>
      <SubTotals Year="2025" Start="1" Events="1" PmtSub="10541.10" IntSub="541.10" PrinSub="10000.00"/>
      <AmLine Idx="1" Date="2025-12-04" BegBal="10000.00" Pmt="10541.10" Int="541.10" Prin="10000.00" EndBal="0.00"/>
   </AmTable>
</outSINGLE_PAYMENT>

Single Payment Note - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inSINGLE_PAYMENT>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹MAPR_Max, 🔹Metavante, 🔹PmtDollarRound, 🔹PmtRound, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
Enumsee belowsee below

This property allows the calling application to specify an accrual method to use other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, then the method in the setup file will be used.

Accrual CodeDescription
0Use method specified in setup file
210, 310Actual / 360
220, 320Actual / 365
230, 330Actual / Actual
231, 331Midnight 366

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute (see below). If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first and only payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <ServiceCharge>[]

Element TypeData TypeValuesDefault
Empty--No service charge

As with the <Fee> element, any number of <ServiceCharge> elements may be added to a loan. Service charges are supported on single, equal, and balloon payment loans only.

The <ServiceCharge> element itself contains no data. Instead, all of the information used to compute the service charge is contained in the following attributes of the element:

Attributes: 🔸Entry, 🔹Exact, 🔹Name, 🔹Round, 🔹Type

🔸 Entry (decimal, 0)

How this attribute is interpreted depends upon the Type attribute, described below. It is the numeric amount defining either the lump sum or periodically paid service charge.

🔹 Exact (boolean, false)

The Exact attribute 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 that entered.

If the Exact attribute 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.

🔹 Name (text, "")

This attribute is for convenience purposes only, and does not affect the calculation of the service charge in any manner. If a Name attribute is specified for the <ServiceCharge> element, then the corresponding <ServiceCharge> element in the response will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.

🔹 Round (enum, [nearest, up, down], nearest)

This attribute is only considered when the service charge is of Type LumpSum. It determines how the calculated periodic amount is rounded.

🔹 Type (enum, [LumpSum, Periodic], LumpSum)

A service charge of Type of 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.


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Single Payment Note - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outSINGLE_PAYMENT>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <Payment>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- |- 🟦 <ServiceCharge>[]🔹Name
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outSINGLE_PAYMENT>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
  <Description>Successful Calculation</Description>
  <Payment>10541.10</Payment>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Payment>

Element TypeData Type
DataCurrency

The computed single payment amount which amortizes the loan. Note that unlike the equal payment loan output, there is no optional <Final> element since we only have a single payment in the payment stream.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

   <FedBox>
      <AmtFin>10000.00</AmtFin>
      <FinChg>541.10</FinChg>
      <TotPmts>10541.10</TotPmts>
      <RegZAPR Type="Actuarial">4.976</RegZAPR>
   </FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟦 <Moneys><ServiceCharge>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero service charge requested in the loan calculation, there will be a <ServiceCharge> element containing the total service charge amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <ServiceCharge> element from the request. If no such attribute is present in the request element, then none will be present in the response element.


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔸PmtTot, 🔸PrinTot, 🔹SCTot

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔹 IUTot

Data TypeDefault
Currency0

The IUTot attribute 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 over the duration of the loan.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.

🔹 SCTot

Data TypeDefault
Currency0

The SCTot attribute will only appear on loans with service charges. It contains the total service charge amount paid over the duration of the loan.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔸PmtSub, 🔸PrinSub, 🔹SCSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔹 IUSub

Data TypeDefault
Currency0

The IUSub attribute 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.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔹 SCSub

Data TypeDefault
Currency0

The SCSub attribute will only appear on loans with service charges. It contains the total of service charges paid during the Year.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔸Pmt, 🔸Prin, 🔹SC, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔹 IU

Data TypeDefault
Currency0

The IU attribute 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.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 SC

Data TypeDefault
Currency0

This attribute contains the total service charge for this payment, and will only be present if one or more service charges were requested with the loan.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


Interest Only Loans

This type of loan minimizes payment amounts such that the all payments (except for the final) only cover accrued interest. Since interest may vary by the number of days in a period (depending upon the interest accrual calendar used), interest payments may vary.

Sample Request

The following sample illustrates the core structure of an interest only loan request. It is a request for a loan with a single advance of $10,000, accruing interest at 6.5%, with a 5 monthly interest only payments followed by a final payment which pays off all principal and interest.

<inINTEREST_ONLY AccrualCode="320">
   <LoanDate>2024-12-01</LoanDate>
   <PmtDate>2025-01-01</PmtDate>
   <IntRate>6.5</IntRate>
   <Proceeds>10000.00</Proceeds>
   <Term>6</Term>
</inINTEREST_ONLY>   

Sample Response

The following response is returned from the SCEX when provided with the sample request above.

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outINTEREST_ONLY SYSTEM "outINTEREST_ONLY.dtd">
<outINTEREST_ONLY>
   <Results>
      <Description>Successful Calculation</Description>
      <First>55.21</First>
      <Final>10055.21</Final>
   </Results>
   <FedBox>
      <AmtFin>10000.00</AmtFin>
      <FinChg>324.12</FinChg>
      <TotPmts>10324.12</TotPmts>
      <RegZAPR Type="Actuarial">6.482</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>10000.00</Principal>
      <Interest>324.12</Interest>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
   </Moneys>
   <Accrual>
      <Method>Actual/365 US Rule</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2025-06-01</Maturity>
   </Accrual>
   <PmtStream Term="2" Pmt="55.21" Rate="6.500" Begin="2025-01-01"/>
   <PmtStream Term="1" Pmt="49.86" Rate="6.500" Begin="2025-03-01"/>
   <PmtStream Term="1" Pmt="55.21" Rate="6.500" Begin="2025-04-01"/>
   <PmtStream Term="1" Pmt="53.42" Rate="6.500" Begin="2025-05-01"/>
   <PmtStream Term="1" Pmt="10055.21" Rate="6.500" Begin="2025-06-01"/>
   <AmTable>
      <GrandTotals PmtTot="10324.12" IntTot="324.12" PrinTot="10000.00"/>
      <SubTotals Year="2025" Start="1" Events="6" PmtSub="10324.12" IntSub="324.12" PrinSub="10000.00"/>
      <AmLine Idx="1" Date="2025-01-01" BegBal="10000.00" Pmt="55.21" Int="55.21" Prin="0.00" EndBal="10000.00"/>
      <AmLine Idx="2" Date="2025-02-01" BegBal="10000.00" Pmt="55.21" Int="55.21" Prin="0.00" EndBal="10000.00"/>
      <AmLine Idx="3" Date="2025-03-01" BegBal="10000.00" Pmt="49.86" Int="49.86" Prin="0.00" EndBal="10000.00"/>
      <AmLine Idx="4" Date="2025-04-01" BegBal="10000.00" Pmt="55.21" Int="55.21" Prin="0.00" EndBal="10000.00"/>
      <AmLine Idx="5" Date="2025-05-01" BegBal="10000.00" Pmt="53.42" Int="53.42" Prin="0.00" EndBal="10000.00"/>
      <AmLine Idx="6" Date="2025-06-01" BegBal="10000.00" Pmt="10055.21" Int="55.21" Prin="10000.00" EndBal="0.00"/>
   </AmTable>
</outINTEREST_ONLY>

Interest Only Loan - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

ElementAttributes
🟥 <inINTEREST_ONLY>🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY
|- 🟦 <Construction>🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor
|- 🟦 <Fee>[]🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name
|- 🟦 <Format>🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator
|- 🟥 <IntRate>
|- 🟦 <IntStartDate>
|- 🟥 <LoanDate>
|- 🟦 <Mortgage_Insurance>🔹CashDown, 🔹LoanAmt, 🔹PropertyValue, 🔹Type
|- |- 🟥 <MI_Rate>[]🔸Switch
|- |- 🟦 <Periodic>🔹DropLTV, 🔹WarnLTV
|- |- 🟦 <UpFront>🔹Paid, 🔹Units
|- 🟦 <OddDaysPrepaid>🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI
|- 🟥 <PmtDate>
|- 🟥 <Proceeds>
|- 🟦 <Protection>🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps
|- |- 🟦 <Birthday1>
|- |- 🟦 <Birthday2>
|- |- 🟦 <Disability>🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table
|- |- 🟦 <Life>🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates
|- |- 🟦 <Unemployment>🔹Benefit, 🔹Covers, 🔹CovTerm
|- 🟥 <Term>
|- 🟦 <TILARESPA2015>
|- 🟦 <TotalDown>

🟥 <inINTEREST_ONLY>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <Mortgage_Insurance>

Element TypeData TypeValuesDefault
Parent--No mortgage insurance

The <Mortgage_Insurance> element determines if this loan includes one of the supported types of mortgage insurance (MI) - PMI or FHA. This element contains child elements which further specify mortgage insurance options.

NOTE: Mortgage insurance is only supported on equal, balloon, and interest only loan builder requests at this time.

Attributes: 🔹CashDown, 🔹LoanAmt, 🔸PropertyValue, 🔹Type

🔹 CashDown

Data TypeValuesDefault
Currency>= 00

The CashDown attribute 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.

🔹 LoanAmt

Data TypeValuesDefault
Currency>= 0Principal balance

The LoanAmt attribute 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.

🔹 PropertyValue

Data TypeValuesDefault
Currency>= 00

This attribute’s value represents the appraised property value, and will be used in the calculation of the loan to value ratio.

🔹 Type

Data TypeValuesDefault
Enumpmi, fhapmi

This attribute determines the type of mortgage insurance to include with the loan. If the Type attribute is set to FHA, 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.


🟥 <Mortgage_Insurance><MI_Rate>[]

Element TypeData TypeValues
DataDecimal>= 0

The value of this element specifies the cost of mortgage insurance per $100 of the loan amount. Note that there may be more than one <MI_Rate> element defined in an XML loan request (see the Switch attribute below).

As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as <MI_Rate>1.50</MI_Rate>.

Attributes: 🔸Switch

🔹 Switch

Data TypeValuesDefault
Integer> 00

This optional attribute 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 attribute. Single rate example (use a rate of $1.50 for the entire term of MI coverage):

<MI_Rate>1.50</MI_Rate>

Multiple rate example (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):

<MI_Rate>1.50</MI_Rate>
<MI_Rate Switch="120">0.20</MI_Rate>

🟦 <Mortgage_Insurance><Periodic>

Element TypeData TypeValuesDefault
DataInteger>= 00

The value of this element represents the term beyond which MI is no longer included. As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify <Periodic>180</Periodic> in the XML loan request. 0 means no term removal is in effect.

Attributes: 🔹DropLTV, 🔹WarnLTV

🔹 DropLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".

🔹 WarnLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".


🟦 <Mortgage_Insurance><UpFront>

Element TypeData TypeValuesDefault
DataDecimal>= 00

This element determines the up front fee for mortgage insurance, as disclosed in the <PMI_Fee> element in the results. If this element is not specified, 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 element can be omitted or set to zero.

The following attributes define how the fee is computed and disclosed.

Attributes: 🔹Paid, 🔹Units

🔹 Paid

Data TypeValuesDefault
EnumFinanced, AtClosing, ByLenderAtClosing

If the value of this attribute 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 a Pocket Fee that is not added to either the principal balance nor the finance charge.

🔹 Units

Data TypeValuesDefault
EnumMonths, Points, YearsMonths

If the Units attribute is set to Months, the value of the <UpFront> element represents the number of periodic MI premiums to be paid at closing.

If the Units attribute is set to Years, the value of the <UpFront> element 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 attribute is set to Points, the value of the <UpFront> element represents the percentage of principal to be paid up front. As of October 3, 2011, FHA loans use points.


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <Protection><Unemployment>

Element TypeData TypeValuesDefault
Empty--No unemployment coverage

The <Unemployment> element determines what type of involuntary unemployment coverage is requested for the loan. The element itself is empty, with all information needed for a coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Unemployment> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will ensure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user-specified coverage terms, then this attribute will be ignored.


🟥 <Term>

Element TypeData TypeValues
DataInteger[2...600]*

The value of this element indicates the number of payments in the loan.

The term must be entered as a number of payments, not a duration of time. Therefore, <Term>72</Term> represents 72 payments, not 72 months (or years). This term is intimately tied to the PPY (# of payments per year) attribute of the root element. If the value of the PPY attribute was 24 (semimonthly) for this loan, the 72 payments would mean that the duration of the loan is three years, since years = number of payments / payments per year = 72 / 24 = 3.

* In general, the term can be no greater than 50 years, so the maximum entry would be 50 * PPY. Weekly loans, however, are limited to 30 years, or 1,560 payments.

Attributes: None


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Interest Only Loan - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outINTEREST_ONLY>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <First>
|- |- 🟥 <Final>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- |- 🟦 <PMI_Fee>
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟦 <PMI>🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outINTEREST_ONLY>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
  <Description>Successful Calculation</Description>
  <First>55.21</First>
  <Final>10055.21</Final>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><First>

Element TypeData Type
DataCurrency

The computed amount for the first interest only payment for the requested loan. To access the other payments in the payment stream, see the <Final> element or consult the <AmTable> element.

Attributes: None


🟥 <Results><Final>

Element TypeData Type
DataCurrency

The final interest and principal payment in the loan's payment stream. To access the other payments in the payment stream, see the <First> element or consult the <AmTable> element.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
  <AmtFin>10000.00</AmtFin>
  <FinChg>324.12</FinChg>
  <TotPmts>10324.12</TotPmts>
  <RegZAPR Type="Actuarial">6.482</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟦 <Moneys><PMI_Fee>

Element TypeData TypeDefault
DataCurrency0

If PMI has been requested on the loan, and if a number of up front payments have been specified, then this element will hold the total PMI fee for all upfront payments.

Attributes: None


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟦 <PMI>

Element TypeData Type
Empty-

The PMI element 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> element, the <PmtStream> element(s), the <TotPmts> element, nor the Pmt attribute of the <AmLine> element.

<PMI Rate="1.00" LTV="100.00" PremiumPerYear="964.08" PremiumPerPeriod="80.34"/>

The element itself contains no data, as all associated PMI data is found in the following attributes:

Attributes: 🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate

🔹 IndexToRemove

Data TypeDefault
Integer0

This attribute only appears if the PercentToRemove PMI input attribute 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.

In the sample above, after four payments are made, the ending principal balance to home value ratio drops below 70%, and hence the calculation engine returns IndexToRemove="4". Note that no PMI is included in the amortization schedule for payment numbers four or greater.

🔹 IndexToWarn

Data TypeDefault
Integer0

This attribute only appears if the PercentToWarn PMI input attribute is specified, and indicates that the payment index on which the remaining principal balance to home value ratio drops below the specified percentage. In the sample above, after three payments are made, the ending principal balance to home value ratio drops below 80%, and hence the calculation engine returns IndexToWarn="3".

🔸 LTV

Data Type
Decimal

The loan to value ratio of the computed loan, expressed as a percentage.

🔸 PremiumPerPeriod

Data Type
Currency

The periodic PMI premium amount.

🔸 PremiumPerYear

Data Type
Currency

The annual PMI premium amount

🔸 Rate

Data Type
Decimal

The percentage rate used in the PMI calculation.


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot,

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔹 IUTot

Data TypeDefault
Currency0

The IUTot attribute 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 over the duration of the loan.

🔹 PMITot

Data TypeDefault
Currency0

The PMITot attribute 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.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔹 IUSub

Data TypeDefault
Currency0

The IUSub attribute 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.

🔹 PMISub

Data TypeDefault
Currency0

The PMISub attribute 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 upfront periodic PMI premiums) for PMI during the Year.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔹 IU

Data TypeDefault
Currency0

The IU attribute 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.

🔹 PMI

Data TypeDefault
Currency0

This attribute contains the PMI premium for this payment.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


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.

Sample Request

The following request specifies a loan with a term of 12 months and proceeds of $1,000 to be paid off with the first two payments consisting of interest only and the remaining 10 payments each paying off $100 of principal.

<inPRINCIPAL_PLUS_INTEREST AccrualCode="301" PPY="12" PrincipalPPY="12">
    <LoanDate>2024-11-01</LoanDate>
    <PmtDate>2024-12-01</PmtDate>
    <IntRate>10.000</IntRate>
    <Proceeds>1000.00</Proceeds>
    <FirstPrincipalPmt>3</FirstPrincipalPmt>
    <PrincipalReduction>100.00</PrincipalReduction>
    <PrincipalPmts>12</PrincipalPmts>
</inPRINCIPAL_PLUS_INTEREST> 

Sample Response

The following response is returned from the SCEX when provided with the sample request above.

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outPRINCIPAL_PLUS_INTEREST SYSTEM "outPRINCIPAL_PLUS_INTEREST.dtd">
<outPRINCIPAL_PLUS_INTEREST>
   <Results>
      <Description>Successful Calculation</Description>
      <Principal_Reduction>100.00</Principal_Reduction>
      <First>8.33</First>
      <Final>100.83</Final>
      <Term>12</Term>
   </Results>
   <FedBox>
      <AmtFin>1000.00</AmtFin>
      <FinChg>62.49</FinChg>
      <TotPmts>1062.49</TotPmts>
      <RegZAPR Type="Actuarial">9.998</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>1000.00</Principal>
      <Interest>62.49</Interest>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
   </Moneys>
   <Accrual>
      <Method>Unit Period 360 US Rule</Method>
      <Days1Pmt DayCount="Actual">30</Days1Pmt>
      <Maturity>2025-11-01</Maturity>
   </Accrual>
   <PmtStream Term="2" Pmt="8.33" Rate="10.000" Begin="2024-12-01"/>
   <PmtStream Term="1" Pmt="108.33" Rate="10.000" Begin="2025-02-01"/>
   <PmtStream Term="1" Pmt="107.50" Rate="10.000" Begin="2025-03-01"/>
   <PmtStream Term="1" Pmt="106.67" Rate="10.000" Begin="2025-04-01"/>
   <PmtStream Term="1" Pmt="105.83" Rate="10.000" Begin="2025-05-01"/>
   <PmtStream Term="1" Pmt="105.00" Rate="10.000" Begin="2025-06-01"/>
   <PmtStream Term="1" Pmt="104.17" Rate="10.000" Begin="2025-07-01"/>
   <PmtStream Term="1" Pmt="103.33" Rate="10.000" Begin="2025-08-01"/>
   <PmtStream Term="1" Pmt="102.50" Rate="10.000" Begin="2025-09-01"/>
   <PmtStream Term="1" Pmt="101.67" Rate="10.000" Begin="2025-10-01"/>
   <PmtStream Term="1" Pmt="100.83" Rate="10.000" Begin="2025-11-01"/>
   <AmTable>
      <GrandTotals PmtTot="1062.49" IntTot="62.49" PrinTot="1000.00"/>
      <SubTotals Year="2024" Start="1" Events="1" PmtSub="8.33" IntSub="8.33" PrinSub="0.00"/>
      <SubTotals Year="2025" Start="2" Events="11" PmtSub="1054.16" IntSub="54.16" PrinSub="1000.00"/>
      <AmLine Idx="1" Date="2024-12-01" BegBal="1000.00" Pmt="8.33" Int="8.33" Prin="0.00" EndBal="1000.00"/>
      <AmLine Idx="2" Date="2025-01-01" BegBal="1000.00" Pmt="8.33" Int="8.33" Prin="0.00" EndBal="1000.00"/>
      <AmLine Idx="3" Date="2025-02-01" BegBal="1000.00" Pmt="108.33" Int="8.33" Prin="100.00" EndBal="900.00"/>
      <AmLine Idx="4" Date="2025-03-01" BegBal="900.00" Pmt="107.50" Int="7.50" Prin="100.00" EndBal="800.00"/>
      <AmLine Idx="5" Date="2025-04-01" BegBal="800.00" Pmt="106.67" Int="6.67" Prin="100.00" EndBal="700.00"/>
      <AmLine Idx="6" Date="2025-05-01" BegBal="700.00" Pmt="105.83" Int="5.83" Prin="100.00" EndBal="600.00"/>
      <AmLine Idx="7" Date="2025-06-01" BegBal="600.00" Pmt="105.00" Int="5.00" Prin="100.00" EndBal="500.00"/>
      <AmLine Idx="8" Date="2025-07-01" BegBal="500.00" Pmt="104.17" Int="4.17" Prin="100.00" EndBal="400.00"/>
      <AmLine Idx="9" Date="2025-08-01" BegBal="400.00" Pmt="103.33" Int="3.33" Prin="100.00" EndBal="300.00"/>
      <AmLine Idx="10" Date="2025-09-01" BegBal="300.00" Pmt="102.50" Int="2.50" Prin="100.00" EndBal="200.00"/>
      <AmLine Idx="11" Date="2025-10-01" BegBal="200.00" Pmt="101.67" Int="1.67" Prin="100.00" EndBal="100.00"/>
      <AmLine Idx="12" Date="2025-11-01" BegBal="100.00" Pmt="100.83" Int="0.83" Prin="100.00" EndBal="0.00"/>
   </AmTable>
</outPRINCIPAL_PLUS_INTEREST>

Fixed Principal Plus Interest Loan - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inPRINCIPAL_PLUS_INTEREST>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 PrincipalPPY

Data TypeValuesDefault
EnumSee belowmonthly

PrincipalPPY is an abbreviation for "principal payments per year", and as one might surmise, determines the payment frequency of principal and interest payments for the given loan. The default value of monthly will result in a loan with 12 principal and interest payments per year. If you require a loan with a principal plus interest payment frequency other than monthly, specify it using this attribute.

Note that the numeric equivalent of PrincipalPPY must evenly divide the PPY attribute. As an example, if PPY="12" then PrincipalPPY may be 1, 2, 4, 6 or 12.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseIntOnlyNotSkips

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to true, then any specified skipped payments (see the <IrregPmt> element) will be treated as interest only payments instead of skipped payments.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟥 <FirstPrincipalPmt>

Element TypeData TypeValues
DataInteger> 0

This element determines on which payment number the fixed principal reduction amount (see <PrincipalReduction>) begins. All payments prior to the payment number will be interest only payments.

Attributes: None


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟦 <IrregPmt>[]

Element TypeData TypeValuesDefault
Empty--No irregular payment

These elements allow the calling application to specify when skipped payments are to be included in the loan's payment schedule. The element itself is empty, as all skipped payment data is contained it the element's attributes.

Attributes: 🔹Index, 🔹 Month, 🔹Year

🔹 Index

Data TypeValuesDefault
Integer> 00

Instead of specifying a Month (and optionally, a Year) for a given skipped payment, you may optionally specify a payment number using the Index attribute. 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 you should not specify either a Month or Year attribute. If you do, the Index value will take precedence and the others will be ignored.

🔹 Month

Data TypeValuesDefault
Integer[0...12]0

The Month attribute allows the user to specify a month during which the skipped payment is applicable. If the Year attribute is not set for this element, then the skipped 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 attribute is set for this element, then the skipped payment will only be applied to those payments falling in the given month and year.

If the value of the Month attribute is set to zero (0), then this skipped 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 attribute and do not specify a Month or Year attribute.

🔹 Year

Data TypeValuesDefault
Integer> 00

As discussed above, the Year attribute works closely with the Month attribute, and is entirely optional.

🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟥 <PrincipalPmts>

Element TypeData TypeValues
DataInteger> 0

Instead of specifying a given number of payments in the principal plus loan (like the <Term> element in an equal payment loan request), the calling application must specify 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.

Attributes: None


🟦 <PrincipalReduction>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This element contains the constant principal reduction amount to be applied per 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>).

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.

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Fixed Principal Plus Interest Loan - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outPRINCIPAL_PLUS_INTEREST>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <PrincipalReduction>
|- |- 🟥 <First>
|- |- 🟥 <Final>
|- |- 🟥 <Term>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔸PmtTot, 🔸PrinTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔸Pmt, 🔸Prin, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outPRINCIPAL_PLUS_INTEREST>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
  <Description>Successful Calculation</Description>
  <Principal_Reduction>100.00</Principal_Reduction>
  <First>8.33</First>
  <Final>100.83</Final>
  <Term>12</Term>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><PrincipalReduction>

Element TypeData Type
DataCurrency

If the <PrincipalReduction> element of the input request was specified and greater than zero, then this element will hold the same value as that specified. If the specified principal reduction amount was zero, then the constant principal reduction amount calculated by the SCE is returned here.

Attributes: None


🟥 <Results><First>

Element TypeData Type
DataCurrency

The computed amount for the first interest only payment for the requested loan. To access the other payments in the payment stream, see the <Final> element or consult the <AmTable> element.

Attributes: None


🟥 <Results><Final>

Element TypeData Type
DataCurrency

The final interest and principal payment in the loan's payment stream. To access the other payments in the payment stream, see the <First> element or consult the <AmTable> element.

Attributes: None


🟥 <Results><Term>

Element TypeData Type
DataInteger

The total number of payments (including skipped, interest only, and principal plus interest) made over the course of the loan.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
  <AmtFin>1000.00</AmtFin>
  <FinChg>62.49</FinChg>
  <TotPmts>1062.49</TotPmts>
  <RegZAPR Type="Actuarial">9.998</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔸PmtTot, 🔸PrinTot,

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔸Pmt, 🔸Prin, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


Skipped 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, a borrower may also want to define a fixed payment of a specified amount at some time during the loan.

The above two situations are what we call loans with skipped and irregular payment schedules. A skipped payment may be defined as a payment of zero or an interest only payment. An irregular payment may be defined as a payment amount specified by the borrower in its entirety or a specified principal amount for the payment in question, to which interest is added.

Sample Request

The example below skips the summer months of June, July and August and plans for an irregular specified payment of $2,000 to be made in the month of December.

<inSKIPS_IRREGULARS AccrualCode="320">
   <LoanDate>2023-12-01</LoanDate>
   <PmtDate>2024-01-01</PmtDate>
   <IntRate>10</IntRate>
   <Proceeds>10000.00</Proceeds>
   <Term>12</Term>

   <!--Skip June, July, and August payments -->
   <IrregPmt Month="6" />
   <IrregPmt Month="7" />
   <IrregPmt Month="8" />

   <!--Specify an irregular payment of $2,000 in December of 2024 -->
   <IrregPmt Month="12" Year="2024" Payment="2000.00" />
</inSKIPS_IRREGULARS>

Notice that all that's required to skip a payment is to include it as an <IrregPmt> without a Payment attribute (or set the value of this attribute to 0).

Sample Response

The following response is returned from the SCEX when provided with the sample request above.

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outSKIPS_IRREGULARS SYSTEM "outSKIPS_IRREGULARS.dtd">
<outSKIPS_IRREGULARS>
   <Results>
      <Description>Successful Calculation</Description>
      <Payment>1072.13</Payment>
      <Number_of_Skips>3</Number_of_Skips>
      <Payments_Specified>4</Payments_Specified>
   </Results>
   <FedBox>
      <AmtFin>10000.00</AmtFin>
      <FinChg>577.04</FinChg>
      <TotPmts>10577.04</TotPmts>
      <RegZAPR Type="Actuarial">9.999</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>10000.00</Principal>
      <Interest>577.04</Interest>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
   </Moneys>
   <Accrual>
      <Method>Actual/365 US Rule</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2024-12-01</Maturity>
   </Accrual>
   <PmtStream Term="5" Pmt="1072.13" Rate="10.000" Begin="2024-01-01"/>
   <PmtStream Term="3" Pmt="1072.13" Rate="10.000" Begin="2024-09-01"/>
   <PmtStream Term="1" Pmt="2000.00" Rate="10.000" Begin="2024-12-01"/>
   <AmTable>
      <GrandTotals PmtTot="10577.04" IntTot="577.06" PrinTot="9999.98"/>
      <SubTotals Year="2024" Start="1" Events="12" PmtSub="10577.04" IntSub="577.06" PrinSub="9999.98"/>
      <AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="1072.13" Int="84.93" Prin="987.20" EndBal="9012.80"/>
      <AmLine Idx="2" Date="2024-02-01" BegBal="9012.80" Pmt="1072.13" Int="76.55" Prin="995.58" EndBal="8017.22"/>
      <AmLine Idx="3" Date="2024-03-01" BegBal="8017.22" Pmt="1072.13" Int="63.70" Prin="1008.43" EndBal="7008.79"/>
      <AmLine Idx="4" Date="2024-04-01" BegBal="7008.79" Pmt="1072.13" Int="59.53" Prin="1012.60" EndBal="5996.19"/>
      <AmLine Idx="5" Date="2024-05-01" BegBal="5996.19" Pmt="1072.13" Int="49.28" Prin="1022.85" EndBal="4973.34"/>
      <AmLine Idx="6" Date="2024-06-01" BegBal="4973.34" Pmt="0.00" Int="0.00" Prin="0.00" UnpaidInt="42.2393" EndBal="4973.34"/>
      <AmLine Idx="7" Date="2024-07-01" BegBal="4973.34" Pmt="0.00" Int="0.00" Prin="0.00" UnpaidInt="83.1161" EndBal="4973.34"/>
      <AmLine Idx="8" Date="2024-08-01" BegBal="4973.34" Pmt="0.00" Int="0.00" Prin="0.00" UnpaidInt="125.3554" EndBal="4973.34"/>
      <AmLine Idx="9" Date="2024-09-01" BegBal="4973.34" Pmt="1072.13" Int="167.59" Prin="904.54" EndBal="4068.80"/>
      <AmLine Idx="10" Date="2024-10-01" BegBal="4068.80" Pmt="1072.13" Int="33.44" Prin="1038.69" EndBal="3030.11"/>
      <AmLine Idx="11" Date="2024-11-01" BegBal="3030.11" Pmt="1072.13" Int="25.74" Prin="1046.39" EndBal="1983.72"/>
      <AmLine Idx="12" Date="2024-12-01" BegBal="1983.72" Pmt="2000.00" Int="16.30" Prin="1983.70" EndBal="0.02"/>
   </AmTable>
</outSKIPS_IRREGULARS>

Skipped and Irregular Payment Loans - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inSKIPS_IRREGULARS>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseIntOnlyNotSkips, 🔹UsePrinPlusNotIrregs, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 OddFinal

Data TypeValuesDefault
Enumdefault, true, false, 1, 0default

This attribute allows the calling application to specify an odd final payment calculation method which will override the default value found in the setup file for the given account. If not specified, then the value of default will be used.

Odd final payments are sometimes desired to produce perfect amortization (i.e. an ending balance of zero after the final payment is made).

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute (see below). If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseIntOnlyNotSkips

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to true, then any specified skipped payments (see the <IrregPmt> element) will be treated as interest only payments instead of skipped payments.

🔹 UsePrinPlusNotIrregs

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to true, then any specified irregular payments (see the <IrregPmt> element) will be treated as fixed principal payments (to which accrued interest will be added) instead of specified payments of principal and interest (from which accrued interest will be deducted before applying the balance to outstanding principal).

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟦 <InterestPmtRate>

Element TypeData TypeValuesDefault
DataDecimal[-99.999...600]0

If this loan has interest only payments preceding the irregular loan (i.e. the value contained in <InterestPmts> is greater than zero), then this element contains the interest rate charged during the interest only payment stream.

If no interest only payments precede the irregular loan, then this element may be omitted.

Attributes: None


🟦 <InterestPmts>

Element TypeData TypeValuesDefault
DataInteger> 00

If present, this element determines the number of interest only payments which precede the start of the irregular loan. After the specified number of interest only payments are made, then the irregular loan continues for the number of payments specified in the <Term> element.

Also note that these interest only payments which precede the irregular payment loan are not affected by elements.

If this element is not present in the request, then no interest only payments will precede the irregular loan calculation.

Attributes: None


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟦 <IrregPmt>[]

Element TypeData TypeValuesDefault
Empty--No irregular payment

These elements allow the calling application to specify when skipped and/or irregular payments are to be included in the loan's repayment schedule. The element itself is empty, as all skipped payment data is contained it the element's attributes.

Here are a few <IrregPmt> elements, with descriptions.

1: <IrregPmt Month="0" Payment="250.00" />
2: <IrregPmt Month="8" Payment="0.00" />
3: <IrregPmt Month="12" Payment="1000.00" />
4: <IrregPmt Month="8" Year="2024" Payment="500.00" />
5: <IrregPmt Index="2" Payment="-1" />
  1. First of all, set all payments in our loan to be $250.
  2. Every payment made in August shall be skipped.
  3. Every December payment will be a specified irregular payment of $1,000.
  4. All payments made in August of 2024 will be a $500 specified irregular payment. Note that this rule will override rule 2.
  5. The second payment (not including any interest only payments preceding) should be computed and set to the regular payment amount.

Attributes: 🔹Index, 🔹 Month, 🔹Payment, 🔹Year

🔹 Index

Data TypeValuesDefault
Integer> 00

Instead of specifying a Month (and optionally, a Year) for a given skipped / irregular payment, you may optionally specify a payment number using the Index attribute. Thus, if you wish to specify that the first payment be skipped or irregular, you would set Index="1".

Interest only payments preceding the irregular loan (as specified by the <InterestPmts> element are not counted when specifying an Index.

Note that if you specify a payment index, then you should not specify the Month or Year attributes. If you do, the Index value will take precedence and the other two values will be ignored.

🔹 Month

Data TypeValuesDefault
Integer[0...12]0

The Month attribute allows the user to specify a month during which the skipped / irregular payment is applicable. If the Year attribute is not set for this element, then the skipped / irregular payment will be applied for each payment falling in the given month, throughout the entire term of the loan (excepting any interest only payments which precede the irregular loan).

On the other hand, if the Year attribute is set for this element, then the skipped / irregular payment will only be applied to those payments falling in the given month and year.

If the value of the Month attribute is set to zero (0), then this irregular payment specification applies to all payments in the loan. Since the loan must have at least one payment to compute, after specifying a month of zero, you will also need to specify an irregular payment entry with a payment amount of -1 (see the Payment attribute below).

If you wish to specify a skipped / irregular payment for a specific payment number (instead of specifying the month and optionally, the year), then use the Index attribute and do not specify a Month or Year attribute.

🔹 Payment

Data TypeValuesDefault
Currency> 00

This attribute determines the type of irregular payment for the specified month (and possible year). A value of 0 (zero) indicates that the specified payment(s) should be skipped (or interest only, if the [UseIntOnlyNotSkips](#root.useintonlynotskips) attribute is true).

Any value greater than zero indicates that the specified payment(s) should be treated as fixed payments, with the value provided taken as the fixed payment amount.

A value of -1 (negative one), indicates that this irregular payment should be the computed payment.

🔹 Year

Data TypeValuesDefault
Integer> 00

As discussed above, the Year attribute works closely with the Month attribute, and is entirely optional.


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟥 <Term>

Element TypeData TypeValues
DataInteger[2...600]*

The value of this element indicates the number of payments in the loan.

The term must be entered as a number of payments, not a duration of time. Therefore, <Term>72</Term> represents 72 payments, not 72 months (or years). This term is intimately tied to the PPY (# of payments per year) attribute of the root element. If the value of the PPY attribute was 24 (semimonthly) for this loan, the 72 payments would mean that the duration of the loan is three years, since years = number of payments / payments per year = 72 / 24 = 3.

* In general, the term can be no greater than 50 years, so the maximum entry would be 50 * PPY. Weekly loans, however, are limited to 30 years, or 1,560 payments.

Attributes: None


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Skipped and Irregular Payment Loans - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outSKIPS_IRREGULARS>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <Payment>
|- |- 🟥 <Number_of_Skips>
|- |- 🟥 <Payments_Specified>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔸PmtTot, 🔸PrinTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔸Pmt, 🔸Prin, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outSKIPS_IRREGULARS>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
    <Description>Successful Calculation</Description>
    <Payment>1072.13</Payment>
    <Number_of_Skips>3</Number_of_Skips>
    <Payments_Specified>4</Payments_Specified>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Payment>

Element TypeData Type
DataCurrency

This element is the computed regular payment. This payment amount is used for all payments which are not irregular (a skipped or fixed payment).

Attributes: None


🟥 <Results><Number_of_Skips>

Element TypeData Type
DataInteger

The number of skipped payments occurring during the loan's scheduled payment stream is contained in this element. If no payments are skipped, then this element will hold a value of zero.

Attributes: None


🟥 <Results><Payments_Specified>

Element TypeData Type
DataInteger

The number of skipped and irregular payments during the loan's schedules payment stream are contained in this element. Using this element and subtracting the value held in <Number_of_Skips> will produce the number of non-skipped irregular payments.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
    <AmtFin>10000.00</AmtFin>
    <FinChg>577.04</FinChg>
    <TotPmts>10577.04</TotPmts>
    <RegZAPR Type="Actuarial">9.999</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔸PmtTot, 🔸PrinTot,

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔸Pmt, 🔸Prin, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


Skipped and Pickup Payment Loans

This module is almost identical to the Skipped and Irregular Payment module, with only two differences:

  1. Irregular payments elements (see <IrregPmt>) with a specified Payment attribute value that is greater than zero are interpreted as "pickup" payments instead of "fixed" payments. A "pickup" payment is defined as the regular computed payment plus the additional specified Payment.

  2. The UsePrinPlusNotIrregs root element attribute found in the Skips and Irregulars module is not supported.

Sample Request

The example below skips the summer months of June, July and August and plans for a pickup payment of $1,000 to be made in the month of December.

<inSKIPS_PICKUPS AccrualCode="320">
   <LoanDate>2023-12-01</LoanDate>
   <PmtDate>2024-01-01</PmtDate>
   <IntRate>10</IntRate>
   <Proceeds>10000.00</Proceeds>
   <Term>12</Term>

   <!--Skip June, July, and August payments -->
   <IrregPmt Month="6" />
   <IrregPmt Month="7" />
   <IrregPmt Month="8" />

   <!--Specify a pickup payment of $1,000 in December of 2024 -->
   <IrregPmt Month="12" Year="2024" Payment="1000.00" />
</inSKIPS_PICKUPS>

Sample Response

The following response is returned from the SCEX when provided with the sample request above. Note that the final payment in December ($2,064.49) is $1,000 more than the regular computed payment of $1,064.49.

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outSKIPS_PICKUPS SYSTEM "outSKIPS_PICKUPS.dtd">
<outSKIPS_PICKUPS>
   <Results>
      <Description>Successful Calculation</Description>
      <Payment>1064.49</Payment>
      <Number_of_Skips>3</Number_of_Skips>
      <Payments_Specified>5</Payments_Specified>
   </Results>
   <FedBox>
      <AmtFin>10000.00</AmtFin>
      <FinChg>580.41</FinChg>
      <TotPmts>10580.41</TotPmts>
      <RegZAPR Type="Actuarial">9.999</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>10000.00</Principal>
      <Interest>580.41</Interest>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
   </Moneys>
   <Accrual>
      <Method>Actual/365 US Rule</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2024-12-01</Maturity>
   </Accrual>
   <PmtStream Term="5" Pmt="1064.49" Rate="10.000" Begin="2024-01-01"/>
   <PmtStream Term="3" Pmt="1064.49" Rate="10.000" Begin="2024-09-01"/>
   <PmtStream Term="1" Pmt="2064.49" Rate="10.000" Begin="2024-12-01"/>
   <AmTable>
      <GrandTotals PmtTot="10580.41" IntTot="580.39" PrinTot="10000.02"/>
      <SubTotals Year="2024" Start="1" Events="12" PmtSub="10580.41" IntSub="580.39" PrinSub="10000.02"/>
      <AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="1064.49" Int="84.93" Prin="979.56" EndBal="9020.44"/>
      <AmLine Idx="2" Date="2024-02-01" BegBal="9020.44" Pmt="1064.49" Int="76.61" Prin="987.88" EndBal="8032.56"/>
      <AmLine Idx="3" Date="2024-03-01" BegBal="8032.56" Pmt="1064.49" Int="63.82" Prin="1000.67" EndBal="7031.89"/>
      <AmLine Idx="4" Date="2024-04-01" BegBal="7031.89" Pmt="1064.49" Int="59.72" Prin="1004.77" EndBal="6027.12"/>
      <AmLine Idx="5" Date="2024-05-01" BegBal="6027.12" Pmt="1064.49" Int="49.54" Prin="1014.95" EndBal="5012.17"/>
      <AmLine Idx="6" Date="2024-06-01" BegBal="5012.17" Pmt="0.00" Int="0.00" Prin="0.00" UnpaidInt="42.5691" EndBal="5012.17"/>
      <AmLine Idx="7" Date="2024-07-01" BegBal="5012.17" Pmt="0.00" Int="0.00" Prin="0.00" UnpaidInt="83.765" EndBal="5012.17"/>
      <AmLine Idx="8" Date="2024-08-01" BegBal="5012.17" Pmt="0.00" Int="0.00" Prin="0.00" UnpaidInt="126.3341" EndBal="5012.17"/>
      <AmLine Idx="9" Date="2024-09-01" BegBal="5012.17" Pmt="1064.49" Int="168.90" Prin="895.59" EndBal="4116.58"/>
      <AmLine Idx="10" Date="2024-10-01" BegBal="4116.58" Pmt="1064.49" Int="33.83" Prin="1030.66" EndBal="3085.92"/>
      <AmLine Idx="11" Date="2024-11-01" BegBal="3085.92" Pmt="1064.49" Int="26.21" Prin="1038.28" EndBal="2047.64"/>
      <AmLine Idx="12" Date="2024-12-01" BegBal="2047.64" Pmt="2064.49" Int="16.83" Prin="2047.66" EndBal="-0.02"/>
   </AmTable>
</outSKIPS_PICKUPS>

Skipped and Pickup Payment Loans - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inSKIPS_PICKUPS>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseIntOnlyNotSkips, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 OddFinal

Data TypeValuesDefault
Enumdefault, true, false, 1, 0default

This attribute allows the calling application to specify an odd final payment calculation method which will override the default value found in the setup file for the given account. If not specified, then the value of default will be used.

Odd final payments are sometimes desired to produce perfect amortization (i.e. an ending balance of zero after the final payment is made).

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute (see below). If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseIntOnlyNotSkips

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to true, then any specified skipped payments (see the <IrregPmt> element) will be treated as interest only payments instead of skipped payments.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟦 <InterestPmtRate>

Element TypeData TypeValuesDefault
DataDecimal[-99.999...600]0

If this loan has interest only payments preceding the irregular loan (i.e. the value contained in <InterestPmts> is greater than zero), then this element contains the interest rate charged during the interest only payment stream.

If no interest only payments precede the irregular loan, then this element may be omitted.

Attributes: None


🟦 <InterestPmts>

Element TypeData TypeValuesDefault
DataInteger> 00

If present, this element determines the number of interest only payments which precede the start of the irregular loan. After the specified number of interest only payments are made, then the irregular loan continues for the number of payments specified in the <Term> element.

Also note that these interest only payments which precede the irregular payment loan are not affected by elements.

If this element is not present in the request, then no interest only payments will precede the irregular loan calculation.

Attributes: None


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The element data will determine the annual interest rate used for the loan. (Split rate loans require use of the setup files.)

The interest rate should be expressed as an annual percentage. For example, a loan computed with an interest rate of 6.125% would be specified as:

<IntRate>6.125</IntRate>

Attributes: None


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟦 <IrregPmt>[]

Element TypeData TypeValuesDefault
Empty--No irregular payment

These elements allow the calling application to specify when skipped and/or pickup payments are to be included in the loan's repayment schedule. The element itself is empty, as all skipped payment data is contained it the element's attributes.

Attributes: 🔹Index, 🔹 Month, 🔹Payment, 🔹Year

🔹 Index

Data TypeValuesDefault
Integer> 00

Instead of specifying a Month (and optionally, a Year) for a given skipped / irregular payment, you may optionally specify a payment number using the Index attribute. Thus, if you wish to specify that the first payment be skipped or irregular, you would set Index="1".

Interest only payments preceding the irregular loan (as specified by the <InterestPmts> element are not counted when specifying an Index.

Note that if you specify a payment index, then you should not specify the Month or Year attributes. If you do, the Index value will take precedence and the other two values will be ignored.

🔹 Month

Data TypeValuesDefault
Integer[0...12]0

The Month attribute allows the user to specify a month during which the skipped / irregular payment is applicable. If the Year attribute is not set for this element, then the skipped / irregular payment will be applied for each payment falling in the given month, throughout the entire term of the loan (excepting any interest only payments which precede the irregular loan).

On the other hand, if the Year attribute is set for this element, then the skipped / irregular payment will only be applied to those payments falling in the given month and year.

If the value of the Month attribute is set to zero (0), then this irregular payment specification applies to all payments in the loan. Since the loan must have at least one payment to compute, after specifying a month of zero, you will also need to specify an irregular payment entry with a payment amount of -1 (see the Payment attribute below).

If you wish to specify a skipped / irregular payment for a specific payment number (instead of specifying the month and optionally, the year), then use the Index attribute and do not specify a Month or Year attribute.

🔹 Payment

Data TypeValuesDefault
Currency> 00

This attribute determines the type of irregular payment for the specified month (and possible year). A value of 0 (zero) indicates that the specified payment(s) should be skipped (or interest only, if the [UseIntOnlyNotSkips](#root.useintonlynotskips) attribute is true).

Any value greater than zero indicates that the specified payment(s) should be treated as pickup payments, with the value provided taken as the additional amount to be added to the computed regular payment.

A value of -1 (negative one), indicates that this irregular payment should be the computed payment.

🔹 Year

Data TypeValuesDefault
Integer> 00

As discussed above, the Year attribute works closely with the Month attribute, and is entirely optional.


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟥 <Term>

Element TypeData TypeValues
DataInteger[2...600]*

The value of this element indicates the number of payments in the loan.

The term must be entered as a number of payments, not a duration of time. Therefore, <Term>72</Term> represents 72 payments, not 72 months (or years). This term is intimately tied to the PPY (# of payments per year) attribute of the root element. If the value of the PPY attribute was 24 (semimonthly) for this loan, the 72 payments would mean that the duration of the loan is three years, since years = number of payments / payments per year = 72 / 24 = 3.

* In general, the term can be no greater than 50 years, so the maximum entry would be 50 * PPY. Weekly loans, however, are limited to 30 years, or 1,560 payments.

Attributes: None


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: None


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Skipped and Pickup Payment Loans - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outSKIPS_PICKUPS>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <Payment>
|- |- 🟥 <Number_of_Skips>
|- |- 🟥 <Payments_Specified>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔸PmtTot, 🔸PrinTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔸Pmt, 🔸Prin, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outSKIPS_PICKUPS>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
    <Description>Successful Calculation</Description>
    <Payment>1072.13</Payment>
    <Number_of_Skips>3</Number_of_Skips>
    <Payments_Specified>4</Payments_Specified>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Payment>

Element TypeData Type
DataCurrency

This element is the computed regular payment. This payment amount is used for all payments which are not irregular (a skipped or fixed payment).

Attributes: None


🟥 <Results><Number_of_Skips>

Element TypeData Type
DataInteger

The number of skipped payments occurring during the loan's scheduled payment stream is contained in this element. If no payments are skipped, then this element will hold a value of zero.

Attributes: None


🟥 <Results><Payments_Specified>

Element TypeData Type
DataInteger

The number of skipped and irregular payments during the loan's schedules payment stream are contained in this element. Using this element and subtracting the value held in <Number_of_Skips> will produce the number of non-skipped irregular payments.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
    <AmtFin>10000.00</AmtFin>
    <FinChg>577.04</FinChg>
    <TotPmts>10577.04</TotPmts>
    <RegZAPR Type="Actuarial">9.999</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔸PmtTot, 🔸PrinTot,

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔸Pmt, 🔸Prin, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


Adjustable Rate Mortgage

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 example below starts off with a teaser rate of 4% for 12 months. After the teaser term expires, the loan quotation will move the rate towards the sum of the index + margin (10%) as constrained by the specified annual rate increase of 2% per year.

<inARM AccrualCode="320">

  <!-- Loan Terms -->
  <LoanDate>2024-12-01</LoanDate>
  <PmtDate>2025-01-01</PmtDate>
  <Proceeds>500000.00</Proceeds>
  <Term>60</Term>

  <!-- Basic ARM Prompts -->
  <TeaserRate>4.000</TeaserRate>
  <TeaserTerm>12</TeaserTerm>
  <Index>6.00</Index>
  <Margin>4.00</Margin>

  <!-- Rate Evolution -->
  <TermStep>12</TermStep>
  <AnnualRateIncrease>2.00</AnnualRateIncrease>

  <!-- Ceiling and Floor Rates -->
  <MinRate>4.00</MinRate>
  <MaxRate>12.00</MaxRate>

</inARM>

Sample Response

The following response is returned from the SCEX when provided with the sample request above.

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outARM SYSTEM "outARM.dtd">
<outARM>
   <Results>
      <Description>Successful Calculation</Description>
      <Number_of_Groups>4</Number_of_Groups>
   </Results>
   <FedBox>
      <AmtFin>500000.00</AmtFin>
      <FinChg>85428.16</FinChg>
      <TotPmts>585428.16</TotPmts>
      <RegZAPR Type="Actuarial">6.270</RegZAPR>
   </FedBox>
   <Moneys>
      <Principal>500000.00</Principal>
      <Interest>85428.16</Interest>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
   </Moneys>
   <Accrual>
      <Method>Actual/365 US Rule</Method>
      <Days1Pmt DayCount="Actual">31</Days1Pmt>
      <Maturity>2029-12-01</Maturity>
   </Accrual>
   <PmtStream Term="12" Pmt="9208.40" Rate="4.000" Begin="2025-01-01"/>
   <PmtStream Term="12" Pmt="9577.98" Rate="6.000" Begin="2026-01-01"/>
   <PmtStream Term="12" Pmt="9866.06" Rate="8.000" Begin="2027-01-01"/>
   <PmtStream Term="24" Pmt="10066.62" Rate="10.000" Begin="2028-01-01"/>
   <AmTable>
      <GrandTotals PmtTot="585428.16" IntTot="85428.11" PrinTot="500000.05"/>
      <SubTotals Year="2025" Start="1" Events="12" PmtSub="110500.80" IntSub="18319.66" PrinSub="92181.14"/>
      <SubTotals Year="2026" Start="13" Events="12" PmtSub="114935.76" IntSub="21935.29" PrinSub="93000.47"/>
      <SubTotals Year="2027" Start="25" Events="12" PmtSub="118392.72" IntSub="21685.11" PrinSub="96707.61"/>
      <SubTotals Year="2028" Start="37" Events="12" PmtSub="120799.44" IntSub="17197.99" PrinSub="103601.45"/>
      <SubTotals Year="2029" Start="49" Events="12" PmtSub="120799.44" IntSub="6290.06" PrinSub="114509.38"/>
      <AmLine Idx="1" Date="2025-01-01" BegBal="500000.00" Pmt="9208.40" Int="1698.63" Prin="7509.77" EndBal="492490.23"/>
      <AmLine Idx="2" Date="2025-02-01" BegBal="492490.23" Pmt="9208.40" Int="1673.12" Prin="7535.28" EndBal="484954.95"/>
      <AmLine Idx="3" Date="2025-03-01" BegBal="484954.95" Pmt="9208.40" Int="1488.08" Prin="7720.32" EndBal="477234.63"/>
      <AmLine Idx="4" Date="2025-04-01" BegBal="477234.63" Pmt="9208.40" Int="1621.29" Prin="7587.11" EndBal="469647.52"/>
      <AmLine Idx="5" Date="2025-05-01" BegBal="469647.52" Pmt="9208.40" Int="1544.05" Prin="7664.35" EndBal="461983.17"/>
      <AmLine Idx="6" Date="2025-06-01" BegBal="461983.17" Pmt="9208.40" Int="1569.48" Prin="7638.92" EndBal="454344.25"/>
      <AmLine Idx="7" Date="2025-07-01" BegBal="454344.25" Pmt="9208.40" Int="1493.73" Prin="7714.67" EndBal="446629.58"/>
      <AmLine Idx="8" Date="2025-08-01" BegBal="446629.58" Pmt="9208.40" Int="1517.32" Prin="7691.08" EndBal="438938.50"/>
      <AmLine Idx="9" Date="2025-09-01" BegBal="438938.50" Pmt="9208.40" Int="1491.19" Prin="7717.21" EndBal="431221.29"/>
      <AmLine Idx="10" Date="2025-10-01" BegBal="431221.29" Pmt="9208.40" Int="1417.71" Prin="7790.69" EndBal="423430.60"/>
      <AmLine Idx="11" Date="2025-11-01" BegBal="423430.60" Pmt="9208.40" Int="1438.50" Prin="7769.90" EndBal="415660.70"/>
      <AmLine Idx="12" Date="2025-12-01" BegBal="415660.70" Pmt="9208.40" Int="1366.56" Prin="7841.84" EndBal="407818.86"/>
      <AmLine Idx="13" Date="2026-01-01" BegBal="407818.86" Pmt="9577.98" Int="2078.20" Prin="7499.78" EndBal="400319.08"/>
      <AmLine Idx="14" Date="2026-02-01" BegBal="400319.08" Pmt="9577.98" Int="2039.98" Prin="7538.00" EndBal="392781.08"/>
      <AmLine Idx="15" Date="2026-03-01" BegBal="392781.08" Pmt="9577.98" Int="1807.87" Prin="7770.11" EndBal="385010.97"/>
      <AmLine Idx="16" Date="2026-04-01" BegBal="385010.97" Pmt="9577.98" Int="1961.97" Prin="7616.01" EndBal="377394.96"/>
      <AmLine Idx="17" Date="2026-05-01" BegBal="377394.96" Pmt="9577.98" Int="1861.13" Prin="7716.85" EndBal="369678.11"/>
      <AmLine Idx="18" Date="2026-06-01" BegBal="369678.11" Pmt="9577.98" Int="1883.84" Prin="7694.14" EndBal="361983.97"/>
      <AmLine Idx="19" Date="2026-07-01" BegBal="361983.97" Pmt="9577.98" Int="1785.13" Prin="7792.85" EndBal="354191.12"/>
      <AmLine Idx="20" Date="2026-08-01" BegBal="354191.12" Pmt="9577.98" Int="1804.92" Prin="7773.06" EndBal="346418.06"/>
      <AmLine Idx="21" Date="2026-09-01" BegBal="346418.06" Pmt="9577.98" Int="1765.31" Prin="7812.67" EndBal="338605.39"/>
      <AmLine Idx="22" Date="2026-10-01" BegBal="338605.39" Pmt="9577.98" Int="1669.83" Prin="7908.15" EndBal="330697.24"/>
      <AmLine Idx="23" Date="2026-11-01" BegBal="330697.24" Pmt="9577.98" Int="1685.20" Prin="7892.78" EndBal="322804.46"/>
      <AmLine Idx="24" Date="2026-12-01" BegBal="322804.46" Pmt="9577.98" Int="1591.91" Prin="7986.07" EndBal="314818.39"/>
      <AmLine Idx="25" Date="2027-01-01" BegBal="314818.39" Pmt="9866.06" Int="2139.04" Prin="7727.02" EndBal="307091.37"/>
      <AmLine Idx="26" Date="2027-02-01" BegBal="307091.37" Pmt="9866.06" Int="2086.54" Prin="7779.52" EndBal="299311.85"/>
      <AmLine Idx="27" Date="2027-03-01" BegBal="299311.85" Pmt="9866.06" Int="1836.87" Prin="8029.19" EndBal="291282.66"/>
      <AmLine Idx="28" Date="2027-04-01" BegBal="291282.66" Pmt="9866.06" Int="1979.13" Prin="7886.93" EndBal="283395.73"/>
      <AmLine Idx="29" Date="2027-05-01" BegBal="283395.73" Pmt="9866.06" Int="1863.42" Prin="8002.64" EndBal="275393.09"/>
      <AmLine Idx="30" Date="2027-06-01" BegBal="275393.09" Pmt="9866.06" Int="1871.16" Prin="7994.90" EndBal="267398.19"/>
      <AmLine Idx="31" Date="2027-07-01" BegBal="267398.19" Pmt="9866.06" Int="1758.23" Prin="8107.83" EndBal="259290.36"/>
      <AmLine Idx="32" Date="2027-08-01" BegBal="259290.36" Pmt="9866.06" Int="1761.75" Prin="8104.31" EndBal="251186.05"/>
      <AmLine Idx="33" Date="2027-09-01" BegBal="251186.05" Pmt="9866.06" Int="1706.69" Prin="8159.37" EndBal="243026.68"/>
      <AmLine Idx="34" Date="2027-10-01" BegBal="243026.68" Pmt="9866.06" Int="1597.98" Prin="8268.08" EndBal="234758.60"/>
      <AmLine Idx="35" Date="2027-11-01" BegBal="234758.60" Pmt="9866.06" Int="1595.07" Prin="8270.99" EndBal="226487.61"/>
      <AmLine Idx="36" Date="2027-12-01" BegBal="226487.61" Pmt="9866.06" Int="1489.23" Prin="8376.83" EndBal="218110.78"/>
      <AmLine Idx="37" Date="2028-01-01" BegBal="218110.78" Pmt="10066.62" Int="1852.45" Prin="8214.17" EndBal="209896.61"/>
      <AmLine Idx="38" Date="2028-02-01" BegBal="209896.61" Pmt="10066.62" Int="1782.68" Prin="8283.94" EndBal="201612.67"/>
      <AmLine Idx="39" Date="2028-03-01" BegBal="201612.67" Pmt="10066.62" Int="1601.85" Prin="8464.77" EndBal="193147.90"/>
      <AmLine Idx="40" Date="2028-04-01" BegBal="193147.90" Pmt="10066.62" Int="1640.43" Prin="8426.19" EndBal="184721.71"/>
      <AmLine Idx="41" Date="2028-05-01" BegBal="184721.71" Pmt="10066.62" Int="1518.26" Prin="8548.36" EndBal="176173.35"/>
      <AmLine Idx="42" Date="2028-06-01" BegBal="176173.35" Pmt="10066.62" Int="1496.27" Prin="8570.35" EndBal="167603.00"/>
      <AmLine Idx="43" Date="2028-07-01" BegBal="167603.00" Pmt="10066.62" Int="1377.56" Prin="8689.06" EndBal="158913.94"/>
      <AmLine Idx="44" Date="2028-08-01" BegBal="158913.94" Pmt="10066.62" Int="1349.68" Prin="8716.94" EndBal="150197.00"/>
      <AmLine Idx="45" Date="2028-09-01" BegBal="150197.00" Pmt="10066.62" Int="1275.65" Prin="8790.97" EndBal="141406.03"/>
      <AmLine Idx="46" Date="2028-10-01" BegBal="141406.03" Pmt="10066.62" Int="1162.24" Prin="8904.38" EndBal="132501.65"/>
      <AmLine Idx="47" Date="2028-11-01" BegBal="132501.65" Pmt="10066.62" Int="1125.36" Prin="8941.26" EndBal="123560.39"/>
      <AmLine Idx="48" Date="2028-12-01" BegBal="123560.39" Pmt="10066.62" Int="1015.56" Prin="9051.06" EndBal="114509.33"/>
      <AmLine Idx="49" Date="2029-01-01" BegBal="114509.33" Pmt="10066.62" Int="972.54" Prin="9094.08" EndBal="105415.25"/>
      <AmLine Idx="50" Date="2029-02-01" BegBal="105415.25" Pmt="10066.62" Int="895.31" Prin="9171.31" EndBal="96243.94"/>
      <AmLine Idx="51" Date="2029-03-01" BegBal="96243.94" Pmt="10066.62" Int="738.31" Prin="9328.31" EndBal="86915.63"/>
      <AmLine Idx="52" Date="2029-04-01" BegBal="86915.63" Pmt="10066.62" Int="738.19" Prin="9328.43" EndBal="77587.20"/>
      <AmLine Idx="53" Date="2029-05-01" BegBal="77587.20" Pmt="10066.62" Int="637.70" Prin="9428.92" EndBal="68158.28"/>
      <AmLine Idx="54" Date="2029-06-01" BegBal="68158.28" Pmt="10066.62" Int="578.88" Prin="9487.74" EndBal="58670.54"/>
      <AmLine Idx="55" Date="2029-07-01" BegBal="58670.54" Pmt="10066.62" Int="482.22" Prin="9584.40" EndBal="49086.14"/>
      <AmLine Idx="56" Date="2029-08-01" BegBal="49086.14" Pmt="10066.62" Int="416.90" Prin="9649.72" EndBal="39436.42"/>
      <AmLine Idx="57" Date="2029-09-01" BegBal="39436.42" Pmt="10066.62" Int="334.94" Prin="9731.68" EndBal="29704.74"/>
      <AmLine Idx="58" Date="2029-10-01" BegBal="29704.74" Pmt="10066.62" Int="244.15" Prin="9822.47" EndBal="19882.27"/>
      <AmLine Idx="59" Date="2029-11-01" BegBal="19882.27" Pmt="10066.62" Int="168.86" Prin="9897.76" EndBal="9984.51"/>
      <AmLine Idx="60" Date="2029-12-01" BegBal="9984.51" Pmt="10066.62" Int="82.06" Prin="9984.56" EndBal="-0.05"/>
   </AmTable>
</outARM>

Adjustable Rate Mortgage - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

ElementAttributes
🟥 <inARM>🔹Account, 🔹AccrualCode, 🔹AprType, 🔹CalcType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY
|- 🟦 <AmortTerm>
|- 🟥 <AnnualRateIncrease>
|- 🟦 <ARM_Tweaks>🔹ForceTeaserSegment, 🔹StarStepDown
|- 🟦 <Construction>🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor
|- 🟦 <Fee>[]🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name
|- 🟦 <FirstRateIncrease>
|- 🟦 <Format>🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator
|- 🟥 <Index>
|- 🟦 <InterestPmtRate>
|- 🟦 <InterestPmts>🔹Blended
|- 🟦 <IntStartDate>
|- 🟥 <LoanDate>
|- 🟦 <Margin>🔹UseAsMin
|- 🟦 <MaxRate>🔹ExemptPostTeaser, 🔹ExemptTeaser
|- 🟦 <MaxRateIncrease>
|- 🟦 <MinRate>🔹ExemptPostTeaser, 🔹ExemptTeaser
|- 🟦 <Mortgage_Insurance>🔹CashDown, 🔹LoanAmt, 🔹PropertyValue, 🔹Type
|- |- 🟥 <MI_Rate>[]🔸Switch
|- |- 🟦 <Periodic>🔹DropLTV, 🔹WarnLTV
|- |- 🟦 <UpFront>🔹Paid, 🔹Units
|- 🟦 <OddDaysPrepaid>🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI
|- 🟥 <PmtDate>
|- 🟦 <PostTeaserRate>
|- 🟥 <Proceeds>
|- 🟦 <Protection>🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps
|- |- 🟦 <Birthday1>
|- |- 🟦 <Birthday2>
|- |- 🟦 <Disability>🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table
|- |- 🟦 <Life>🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates
|- |- 🟦 <Unemployment>🔹Benefit, 🔹Covers, 🔹CovTerm
|- 🟦 <RoundRate>🔹Round
|- 🟥 <TeaserRate>
|- 🟥 <TeaserTerm>
|- 🟥 <Term>
|- 🟥 <TermStep>🔹AdjFirstInc
|- 🟦 <TILARESPA2015>🔹MaxPnIDetails, 🔹MinPnIDetails
|- 🟦 <TotalDown>

🟥 <inARM>

Element TypeData Type
Parent-

This element is the root element for the request. It is a parent element that has no data, but does have several attributes that offer a wide variety of adjustments.

Attributes: 🔹Account, 🔹AccrualCode, 🔹AprType, 🔹CalcType, 🔹Country, 🔹DataDirPath, 🔹ForceReload, 🔹HideAmort, 🔹Lastday, 🔹MAPR_Max, 🔹Metavante, 🔹OddFinal, 🔹PmtDollarRound, 🔹PmtRound, 🔹PPY, 🔹UseMAPR, 🔹YieldPPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 AprType

Data TypeValuesDefault
EnumSee belowdefault

This attribute 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 attribute is set to a valid value, then the specified method will be used to compute the APR for this loan calculation.

If the Country attribute has been set by the calling application and this attribute 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).

  • default - Use setup file value.
  • actuarial - Appendix J Actuarial APR
  • usrule - US Rule APR
  • eu - European Union APR
  • ca - Canadian APR
  • xirr - Extended Internal Rate of Return (same as excel function)
  • xirr360 - XIRR using a 360 divisor rather than a 365 divisor
  • irr - Simple Internal Rate of Return (same as excel function)

If this attribute is not specified and the Country attribute 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.

🔹 CalcType

Data TypeValuesDefault
EnumPayments, BalloonPayments

This attribute specifies how the payment stream is adjusted for rate changes during the term of the loan. If this attribute 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.

🔹 Country

Data TypeValuesDefault
Alpha-2 or Numeric-3 codeSee tableUS

This attribute 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 Country Codes Table for the list of supported countries and their associated codes.

Currently, the country code is used to determine the default value of the AprType attribute (see above).

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the response, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the response.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If present, this attribute overrides the Last Day setting in the setup files, which only applies to loans computed with an actual day interest 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 attribute, 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.

🔹 MAPR_Max

Data TypeValuesDefault
Decimal[-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 attribute.

🔹 Metavante

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, then the <Metavante> element will be included in the response. Also, some loans will also disclose <MinInterestPmt> and <MaxInterestPmt> elements.

🔹 OddFinal

Data TypeValuesDefault
Enumdefault, true, false, 1, 0default

This attribute allows the calling application to specify an odd final payment calculation method which will override the default value found in the setup file for the given account. If not specified, then the value of default will be used.

Odd final payments are sometimes desired to produce perfect amortization (i.e. an ending balance of zero after the final payment is made).

🔹 PmtDollarRound

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Payments are normally rounded to the penny, according to the method specified by the PmtRound attribute (see below). If the payment should be rounded to the dollar instead of the penny, then set the value of this attribute 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.

🔹 PmtRound

Data TypeValuesDefault
Enumdefault, nearest, up, down, bestdefault

This attribute allows the calling application to specify a payment rounding option which will override the value found in the setup file. If not specified, then the value of default will be used.

  • default - Use method specified in setup file.
  • nearest - Round computed payment to the nearest penny, using 5/4 rounding. e.g. 300.242 = 300.24, 300.245 = 300.25.
  • up - Round computed payment up to the next penny. e.g. 300.241 = 300.25.
  • down - Round computed payment down to the previous penny. e.g. 300.249 = 300.24.
  • best - Once the unrounded payment has been computed, amortize the loan using the rounded down and rounded up payment, and then return the payment which amortizes the loan’s ending balance closest to zero.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true, the SCE will compute the Military APR in addition to the Regulation Z APR. The <MAPR> element will be included in the XML loan response.

🔹 YieldPPY

Data TypeValuesDefault
Enum0, 2, 4, 6, 120

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 attribute with a value other than zero, the calling application must include an odd days prepaid fee in the request.


🟦 <AmortTerm>

Element TypeData TypeValues
DataIntegersee below

To specify a balloon payment for the ARM loan using a specified amortization term (similar to an <inBALLOON_SPECIFY_AMORT> request), then set the contents of this element to a value greater than that found in <Term>.

Attributes: None


🟥 <AnnualRateIncrease>

Element TypeData TypeValues
DataDecimal[-99.999...600]

Just how much the interest rate increases when a rate increase is due depends upon this element, in conjunction with the <TermStep> element. In our sample request the annual rate increase is specified as 2%, with rate adjustments every 12 monthly payments. Thus, each rate adjustment will see the interest rate increase by 2%.

Attributes: None


🟦 <ARM_Tweaks>

Element TypeData Type
Empty-

This optional element itself contains no data. Instead, all of the information used to "tweak" various ARM loan settings is contained in the following attributes of the element.

Attributes: 🔹ForceTeaserSegment, 🔹StarStepDown

🔹 ForceTeaserSegment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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?

🔹 StarStepDown

Data TypeValuesDefault
Enumdefault, true, false, 1, 0default

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 attribute to true. A default value instructs the SCE to use the value stored in the setup file.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--Not a construction loan

Include the <Construction> element to configure a construction period on a loan. The use of this element requires setup files configured to support construction loans, or specification of the Method to be used. If the specified account is not set up to support construction loans, this element will be ignored.

Attributes: 🔹Accrual, 🔹Active, 🔹HalfCommitment, 🔹Method, 🔹PermanentAttached, 🔹PPY, 🔸Rate, 🔸Term, 🔹UnitOddDayDivisor

🔹 Accrual

Data TypeValuesDefault
Enumdefault, unitperiod, actual360, actual365default

If the loan request is a construction loan with no permanent loan attached, this attribute allows the calling application to specify the accrual method used.

  • default - The setup files determine the default value for interest accrual.
  • unitperiod - Compute periodic interest using a 1/PPY factor.
  • actual360 - Compute periodic interest using the actual # of days between payments/360.
  • actual365 - Compute periodic interest using the actual # of days between payments/365.

🔹 Active

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this loan request includes a construction loan, then set this attribute to true. If no construction loan is desired, either do not specify the <Construction> element or set this attribute to false.

🔹 HalfCommitment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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.

🔹 Method

Data TypeValuesDefault
Enumdefault, simple, laserpro, intonlydefault

There are three methods used to define how construction loans are computed and disclosed. A method of default tells the SCE to use the method configured in the setup file. The meaning of the three methods are as follows:

  • simple - Compute an aggregate construction interest amount for the entire construction period for both pure construction loans and construction to permanent loans.
  • laserpro - Compute an aggregate construction interest amount for the entire construction period for pure construction loans. For construction to permanent loans, compute and disclose discrete interest-only payments during the construction period.
  • intonly - Compute and disclose discrete interest-only payments during the construction period for both pure construction loans and construction to permanent loans.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true and set up the permanent loan information in the request elements.

The default value of false indicates that this is solely a construction loan with no permanent attached. In this case, you still need to set up the <LoanDate>, <PmtDate> and <Proceeds> elements.

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 5212

The PPY attribute allows the calling application to specify the payment frequency during the construction period. The default value of monthly 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 attribute. Note that if a permanent loan is attached to the construction loan, that the permanent loan's payment frequency may differ from the construction period’s payment frequency.

🔸 Rate

Data TypeValuesDefault
Decimal[-99.999...600]0

This attribute determines the rate applied to the appropriate commitment amount during the term of the construction loan.

🔸 Term

Data TypeValuesDefault
Integer[1...60]*0

The term of the construction loan (in payments) is specified using this attribute. Please note that the term may not exceed five years.

* 60 is the maximum number of months in the Construction period. In general, the maximum entry is 5 * PPY, where the PPY is the payments per year attribute of the <Construction> element.

🔹 UnitOddDayDivisor (enum, [], Ignore)

Data TypeValuesDefault
Enumignore, 360, 365, vardpyignore

When specifying an Accrual method of type unitperiod, this attribute allows the calling application to specify how odd days between the loan and first payment dates are taken into account.

ignore means that all odd days are ignored, and the calculation will assume one full unit period. 360 and 365 will compute the actual number of days between the loan date and first payment date, and then use either a 360 or 365 divisor to determine the amount of interest accrued during that period. vardpy accrues interest in the same manner as accrual code 250/350.


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

Unlike most other elements, any number of fees may be defined, or none at all. All of the information used to compute a fee is contained in its attributes.

Attributes: 🔹AddToFinChg, 🔹AddToPrin, 🔹Adjust, 🔹CalcType, 🔸Entry, 🔹IsLoanCost, 🔹MAPR, 🔹MaxValue, 🔹MinValue, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be added to the principal balance (e.g. the fee is financed along with the amount requested), then set this attribute to true. If set to false, then the fee is paid up front out of the borrower’s pocket.

🔹 Adjust

Data TypeValuesDefault
Currencyany0

The optional attribute Adjust 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 attribute 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 SCEX is as follows:

<Fee CalcType="OnAmtFin" Entry="0.115" Adjust="-2000" AddToPrin="true" AddToFinChg="false" />

🔹 CalcType

Data TypeValuesDefault
EnumDollar, OnProceeds, OnAmtFin, OnPrin, DocStampDollar

The value of this attribute determines how the fee is to be computed, as described below:

  • Dollar - The Entry attribute is understood as a flat dollar amount.
  • OnProceeds - The Entry attribute is understood as a percentage value, to be applied to the loan’s proceeds. An Entry of 1.0 would represent a fee of 1.0% of proceeds.
  • OnAmtFin - The Entry attribute is understood as a percentage value, to be applied to the Amount Financed. An Entry of 0.5 would represent a fee of 0.5% of Amount Financed.
  • OnPrin - The Entry attribute 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 principal balance.
  • DocStamp - The Entry attribute is understood as a Florida doc stamp rate, to be applied to the loan’s principal balance. An Entry of 0.35 would represent a fee of 0.35% of the principal balance. You must set the AddToFinChg attribute to false, otherwise the doc stamp fee will return a value of zero.

🔸 Entry

Data TypeValues
Decimal or Currency>= 0

The Entry is the basic starting point fee value that determines the dollar value of the resulting fee computation. How this attribute is interpreted depends upon the CalcType attribute, described above. This value is either a dollar value or a percentage (aka "points").

🔹 IsLoanCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When requesting the new TILA RESPA outputs (via the <TILARESPA2015> element), 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 attribute should be set to false.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

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).

🔹 MaxValue

Data TypeValuesDefault
Currency>= 00

If a maximum value for the fee is specified and is greater than zero, then if the computed fee exceeds this maximum value, then this 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 attribute is applied to all fee types documented.

🔹 MinValue

Data TypeValuesDefault
Currency>= 00

If a minimum value for the fee is specified and is greater than zero, and if the Entry attribute holds a value greater than zero, then if the computed fee is less than this minimum value, then this 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. If a specified minimum value exceeds a specified maximum value, then the minimum value will be ignored. Please note that this attribute is applied to all fee types documented.

🔹 Name

Data TypeValuesDefault
Textanyn/a

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the response.


🟦 <FirstRateIncrease>

Element TypeData TypeValues
DataDecimal[-99.999...600]

If the value contained in this element 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 <ARM_Tweaks> element]), then the rate will decrease by the specified value.

Note that the calling application may specify either the <FirstRateIncrease> or the <PostTeaserRate>, but not both.

Attributes: None


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--See attributes

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0,false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <Index>

Element TypeData TypeValues
DataDecimal[-99.999...600]

This element holds the current value of the rate index at loan closing. When added together with the <Margin>, it produces the target interest rate to adjust towards after the <TeaserTerm> has expired.

Attributes: None


🟦 <InterestPmtRate>

Element TypeData TypeValuesDefault
DataDecimal[-99.999...600]0

If this loan has interest only payments preceding the ARM loan (i.e. the value contained in <InterestPmts> is greater than zero), then this element contains the interest rate charged during the interest only payment stream unless the interest only payments are configured to use the rates dictated by the ARM rate schedule (see Blended).

If no interest only payments precede the ARM loan, or if the interest only payments are configured to use the rates dictated by the ARM rate schedule (see Blended), then this element may be omitted.

Attributes: None


🟦 <InterestPmts>

Element TypeData TypeValuesDefault
DataInteger> 00

If present, this element 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 principal and interest payments. If this element is not present in the request, then no interest only payments will precede the ARM loan calculation.

Attributes: None

🔹 Blended

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 Blended attribute is set to true with <InterestPmts> specified as 12 and the <TeaserTerm> is set to 48, then 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 the Blended attribute was set to false, then the payment stream would be 12 interest only payments followed by 48 P&I payments at the teaser rate, etc.

If the Blended attribute is set to true, then the <InterestPmtRate> element is ignored. Please note that blended interest only payments are not allowed with ARM loans computed using a CalcType of Balloon.


🟦 <IntStartDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate> and <= <PmtDate><LoanDate>

This element contains the date on which interest begins to accrue on the loan’s principal balance. If this element is not specified, then the interest start date is defaulted to be the <LoanDate>. 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 <PmtDate>. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an interest start date April 27, 2024 would be specified as:

<IntStartDate>2024-04-27</IntStartDate>

Attributes: None


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element determines when interest begins to accrue. If interest begins on a later date, use the <IntStartDate> element to define the date on which interest begins to accrue.

This element contains 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. Hence, a loan date of March 4, 2024 would be specified as:

<LoanDate>2024-03-04</LoanDate>

Attributes: None


🟦 <Margin>

Element TypeData TypeValuesDefault
DataDecimal[-99.999...600]0

This element is closely tied to the <Index> element, and represents the difference between the target 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.

Attributes: 🔹UseAsMin

🔹 UseAsMin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If a <MinRate> element is not present in the request and the value of this attribute is set to true, then the value of the <Margin> element will be treated as a specified minimum rate for all purposes, including the TILA RESPA 2015 disclosures.


🟦 <MaxRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

This optional element 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 checked.

Note that there are three different ways to specify interest rate maximums:

  1. <Index> + <Margin>
  2. <TeaserRate> + <MaxRateIncrease>
  3. <MaxRate>

Attributes: 🔹ExemptPostTeaser, 🔹ExemptTeaser

🔹 ExemptPostTeaser

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not the post teaser rate (if one has been specified) is excluded from the maximum rate constraint. If the value of this attribute is set to true, then the post teaser rate may be greater than the specified maximum rate. If the value of this attribute is set to false, then the rate during the post teaser term can not be greater than the specified maximum rate.

🔹 ExemptTeaser

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not the teaser rate is excluded from the maximum rate constraint. If the value of this attribute is set to true, then the teaser rate may be greater than the specified maximum rate. If the value of this attribute is set to false, then rate during the teaser term can not be greater than the specified maximum rate.


🟦 <MaxRateIncrease>

Element TypeData TypeValues
DataDecimal[-99.999...600]

This optional element 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 checked.

Attributes: None


🟦 <MinRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The contents of this optional element 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 checked.

Attributes: 🔹ExemptPostTeaser, 🔹ExemptTeaser

🔹 ExemptPostTeaser

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not the post teaser rate (if one has been specified) is excluded from the minimum rate constraint. If the value of this attribute is set to true, then the post teaser rate may be less than the specified minimum rate. If the value of this attribute is set to false, then the rate during the post teaser term can not be less than the specified minimum rate.

🔹 ExemptTeaser

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not the teaser rate is excluded from the minimum rate constraint. If the value of this attribute is set to true, then the teaser rate may be less than the specified minimum rate. If the value of this attribute is set to false, then the rate during the teaser term can not be less than the specified minimum rate.


🟦 <Mortgage_Insurance>

Element TypeData TypeValuesDefault
Parent--No mortgage insurance

The <Mortgage_Insurance> element determines if this loan includes one of the supported types of mortgage insurance (MI) - PMI or FHA. This element contains child elements which further specify mortgage insurance options.

NOTE: Mortgage insurance is only supported on equal, balloon, and interest only loan builder requests at this time.

Attributes: 🔹CashDown, 🔹LoanAmt, 🔸PropertyValue, 🔹Type

🔹 CashDown

Data TypeValuesDefault
Currency>= 00

The CashDown attribute 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.

🔹 LoanAmt

Data TypeValuesDefault
Currency>= 0Principal balance

The LoanAmt attribute 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.

🔹 PropertyValue

Data TypeValuesDefault
Currency>= 00

This attribute’s value represents the appraised property value, and will be used in the calculation of the loan to value ratio.

🔹 Type

Data TypeValuesDefault
Enumpmi, fhapmi

This attribute determines the type of mortgage insurance to include with the loan. If the Type attribute is set to FHA, 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.


🟥 <Mortgage_Insurance><MI_Rate>[]

Element TypeData TypeValues
DataDecimal>= 0

The value of this element specifies the cost of mortgage insurance per $100 of the loan amount. Note that there may be more than one <MI_Rate> element defined in an XML loan request (see the Switch attribute below).

As an example, a loan computed with a MI rate of $1.50 per $100 would be specified as <MI_Rate>1.50</MI_Rate>.

Attributes: 🔸Switch

🔹 Switch

Data TypeValuesDefault
Integer> 00

This optional attribute 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 attribute. Single rate example (use a rate of $1.50 for the entire term of MI coverage):

<MI_Rate>1.50</MI_Rate>

Multiple rate example (use a rate of $1.50 for the first 10 years, with a rate of $0.20 for coverage beyond 10 years):

<MI_Rate>1.50</MI_Rate>
<MI_Rate Switch="120">0.20</MI_Rate>

🟦 <Mortgage_Insurance><Periodic>

Element TypeData TypeValuesDefault
DataInteger>= 00

The value of this element represents the term beyond which MI is no longer included. As an example, if mortgage insurance must be removed after the 180th payment, then the calling application should specify <Periodic>180</Periodic> in the XML loan request. 0 means no term removal is in effect.

Attributes: 🔹DropLTV, 🔹WarnLTV

🔹 DropLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".

🔹 WarnLTV

Data TypeValuesDefault
Decimal>= 0 and <= 1000

The value of this attribute 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".


🟦 <Mortgage_Insurance><UpFront>

Element TypeData TypeValuesDefault
DataDecimal>= 00

This element determines the up front fee for mortgage insurance, as disclosed in the <PMI_Fee> element in the results. If this element is not specified, 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 element can be omitted or set to zero.

The following attributes define how the fee is computed and disclosed.

Attributes: 🔹Paid, 🔹Units

🔹 Paid

Data TypeValuesDefault
EnumFinanced, AtClosing, ByLenderAtClosing

If the value of this attribute 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 a Pocket Fee that is not added to either the principal balance nor the finance charge.

🔹 Units

Data TypeValuesDefault
EnumMonths, Points, YearsMonths

If the Units attribute is set to Months, the value of the <UpFront> element represents the number of periodic MI premiums to be paid at closing.

If the Units attribute is set to Years, the value of the <UpFront> element 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 attribute is set to Points, the value of the <UpFront> element represents the percentage of principal to be paid up front. As of October 3, 2011, FHA loans use points.


🟦 <OddDaysPrepaid>

Element TypeData TypeValuesDefault
Empty--No odd days prepaid interest

If odd days interest should be treated as a prepaid finance charge or added to the first payment, then include this empty element in the request. The attributes of this element determine how odd days interest is computed and handled.

Attributes: 🔹AccrualCode, 🔹AddToPmt, 🔹AddToPrin, 🔹AnchorDate, 🔹ForceUnitPeriod, 🔹NoCap, 🔹UseDailyCost, 🔹UseNegODI

🔹 AccrualCode

Data TypeValuesDefault
EnumSee below220

The accrual code defines how the odd days interest is computed.

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.

AccrualCodeDescription
204Unit period simple w/ true 360 calendar and 360 day divisor
205Unit period simple w/ true 360 calendar and 365 day divisor
210Actual / 360 simple
211True 365 / 360 simple
220Actual / 365 simple
221True 365 / 365 simple
230Actual / Actual simple
231Midnight 366 simple
250Unit period simple w/ variable DPY divisor

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application wants the odd days interest to be added to the first payment, then set the value of this attribute to true. A value of false indicates that the odd days interest will be treated as a prepaid fee.

🔹 AddToPrin

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If any odd days interest should be treated as a financed prepaid fee, then set the value of this attribute to true. Note that if both AddToPmt and AddToPrin are set to true, then a warning message will be returned by the SCEX and the value of AddToPrin will be set to false.

🔹 AnchorDate

Data TypeValuesDefault
EnumBackUnitPeriod, BackDaysPerPeriodBackUnitPeriod

The computed number of odd days is the number of days between the loan date and the anchor date. This attribute determines how to arrive at the anchor date.

  • BackUnitPeriod - The anchor date is one unit period prior to the specified first payment date.
  • BackDaysPerPeriod - 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.

🔹 ForceUnitPeriod

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the loan's interest accrual is unit period, this attribute forces the period to the first payment to be 1/12 (or 1/(PmtsPerYear) in general). Without this attribute an accrual code of 202 (Unit Period /365) would use a factor of Days/365 rather than the expected 1/12.

🔹 NoCap

Data TypeValuesDefault
Booleantrue, false, 1, 0false

When an odd days interest fee is present and financed, the value of this attribute 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). If this value is true, the ODI is computed on the true principal balance less the ODI; false means "compute ODI on the true principal balance.

🔹 UseDailyCost

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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.

🔹 UseNegODI

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If there are negative odd days in the loan, then the value of this attribute determines if a negative odd days interest fee is computed. If the value of this attribute is false, then negative odd days fees are not allowed, the SCEX 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 an odd days interest credit) when there are negative odd days in a loan.


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate> and >= <IntStartDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of April 4, 2024 would be specified as:

<PmtDate>2005-04-04</PmtDate>

Attributes: None


🟦 <PostTeaserRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

Instead of specifying a first rate adjustment using the <FirstRateIncrease> element, 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 specify either the <FirstRateIncrease> or the <PostTeaserRate>, but not both.

Attributes: None


🟥 <Proceeds>

Element TypeData TypeValues
DataCurrency>= 0

The proceeds specifies the amount the customer has frequested to borrow, ignoring every other financed quantity. Proceeds of up to one billion dollars are accepted.

The amount should be expressed as a number. For example, a request including <Proceeds>10000.00</Proceeds> indicates an amount requested of 10,000.

Attributes: None


🟦 <Protection>

Element TypeData TypeValuesDefault
Parent--No protection included

The <Protection> element is used to specify debt protection coverages such as life, disability, involuntary unemployment, personal property and debt cancellation. Each type of coverage is specified by its own sub-element, along with the borrower birthdays. The following attributes apply to this element:

Attributes: 🔹FinanceProt, 🔹LineOfCredit, 🔹Mandatory, 🔹ShowBorrowerInfo, 🔹ShowCaps

🔹 FinanceProt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If the computed premiums for single premium debt protection products should be financed along with the proceeds, then this attribute 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!

🔹 LineOfCredit

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false.

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 Regulation Z Finance Charge, and hence affect the Regulation Z APR. In this case, the <Protection> element in the response will contain a Mandatory="true" attribute indicating this.

If the Mandatory attribute is set to false, the loan will treat any premiums / fees as normal.

🔹 ShowBorrowerInfo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the calling application would like to have data returned for each specified borrower instead of a single <CovTerm> element, then set the value of this attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Borrower> and <CovTerm> elements defined in the response for more information.

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the four debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01No birthday specified

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>.

Attributes: None


🟦 <Protection><Disability>

Element TypeData TypeValuesDefault
Empty--No disability coverage

The <Disability> element determines what type of disability coverage is requested for the loan. It also serves double duty as the debt cancellation coverage element, for accounts set up to compute debt cancellation using the disability tables. The element itself is empty, with all information needed for disability coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm, 🔹Table

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Disability> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Table

Data TypeValuesDefault
Integer[0...19]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no table number is specified, the first table (table zero) will be used. To find out the number of available plans, use the <AhSetCount> element in the <inINPUT_TOOL> response.


🟦 <Protection><Life>

Element TypeData TypeValuesDefault
Empty--No life coverage

The <Life> element determines what type of life coverage is requested for the loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attributes:

Attributes: 🔹Coverage, 🔹Covers, 🔹CovTerm, 🔹Dismemberment, 🔹Method, 🔹UseLevelRates

🔹 Coverage

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

If you wish to specify a coverage amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <life> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will assure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user specified coverage terms, then this attribute will be ignored.

🔹 Dismemberment

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the specified account has been set up to offer optional dismemberment coverage to be offered with life coverage (using an increased rate in the premium calculation), then this attribute determines whether or not this additional coverage will be provided.

🔹 Method

Data TypeValuesDefault
Enumdefault, net, grossdefault

If the specified account has been set up to offer single premium life coverage by default, net or gross coverage, then this attribute can be used to specify which type of coverage to compute with the loan. For all other accounts, the default value of default should be used (or simply do not specify the attribute at all).

🔹 UseLevelRates

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the account specified has been set up to offer single premium credit life using level rates instead of the normal decreasing rates, then set this attribute’s value to true. Otherwise, use the default value of false.


🟦 <Protection><Unemployment>

Element TypeData TypeValuesDefault
Empty--No unemployment coverage

The <Unemployment> element determines what type of involuntary unemployment coverage is requested for the loan. The element itself is empty, with all information needed for a coverage request being specified in the following attributes:

Attributes: 🔹Benefit, 🔹Covers, 🔹CovTerm

🔹 Benefit

Data TypeValuesDefault
Currency>= 00

If you wish to specify a benefit amount less than the maximum allowed, then do so with this attribute. Leaving this attribute unspecified will assure 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, then this attribute will be ignored.

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute 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 the appropriate <Birthday> elements). A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none or omit the <Unemployment> element entirely.

🔹 CovTerm

Data TypeValuesDefault
Integer>= 00

If you need to specify a coverage term (number of payments) less than the maximum allowed, then do so using this attribute. Leaving this attribute unspecified will ensure that the loan is covered for the maximum term allowed. Note that if the specified account has not been set up to allow for user-specified coverage terms, then this attribute will be ignored.


🟦 <RoundRate>

Element TypeData TypeValues
DataDecimal>= 0

If the value of this element is greater than zero, then the sum of the specified index and margin (i.e. the sum of the unrounded values specified in the request) will be rounded according to this value and the Round attribute defined below.

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 attribute specified.

If no value is specified for this element, then no rounding of the index plus margin (nor any other rates) will occur.

Attributes: 🔹Round

🔹 Round

Data TypeValuesDefault
Enumup, down, nearestnearest

If a value is specified for the <RoundRate> element, then the value of this attribute determines how the rounding will be performed.


🟥 <TeaserRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The teaser rate is the interest rate initially applied to the loan. 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.

Attributes: None


🟥 <TeaserTerm>

Element TypeData TypeValues
DataInteger[2...600]*

This element specifies the number of payments that the <TeaserRate> is in effect. No interest rate increase will take place during the teaser term.

Attributes: None


🟥 <Term>

Element TypeData TypeValues
DataInteger[2...600]*

The value of this element indicates the number of payments in the loan.

The term must be entered as a number of payments, not a duration of time. Therefore, <Term>72</Term> represents 72 payments, not 72 months (or years). This term is intimately tied to the PPY (# of payments per year) attribute of the root element. If the value of the PPY attribute was 24 (semimonthly) for this loan, the 72 payments would mean that the duration of the loan is three years, since years = number of payments / payments per year = 72 / 24 = 3.

* In general, the term can be no greater than 50 years, so the maximum entry would be 50 * PPY. Weekly loans, however, are limited to 30 years, or 1,560 payments.

Attributes: None


🟥 <TermStep>

Element TypeData TypeValues
DataInteger> 0

This element specifies the number of payments between interest rate increases after the teaser term has passed. In our sample request 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 12 months will use an increased rate, with the next 12 months increasing the rate again, etc.

If the value of this element 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 element is less than or equal to the number of payments per year, then the value of the <TermStep> element 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.

Attributes: 🔹AdjFirstInc

🔹 AdjFirstInc

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 defined above.


🟦 <TILARESPA2015>

Element TypeData TypeValuesDefault
Empty--No TILA RESPA disclosures

The presence or absence of this element determines whether or not the TILA RESPA data table is present in the output.

If this element is present in the loan request, then the SCEX will return 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 this element is not present, then the TILA RESPA outputs will not be generated.

Attributes: 🔹MaxPnIDetails, 🔹MinPnIDetails

🔹 MaxPnIDetails

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true.

🔹 MinPnIDetails

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true.


🟦 <TotalDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This optional element 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.

To generate a total down payment, please see the chapter detailing the SCEX’s Auto Prompts module.

Attributes: None


Adjustable Rate Mortgage - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outARM>🔹CountryName
|- 🟥 <Results>
|- |- 🟥 <Description>
|- |- 🟦 <XMLDetail>[]
|- |- 🟥 <Number_of_Groups>
|- 🟥 <FedBox>
|- |- 🟥 <AmtFin>
|- |- 🟥 <FinChg>
|- |- 🟥 <TotPmts>
|- |- 🟦 <TotalSalePrice>
|- |- 🟥 <RegZAPR>🔹Max, 🔹MaxExceeded, 🔸Type
|- |- 🟥 <MAPR>🔸Advance, 🔹Max, 🔹MaxExceeded
|- 🟦 <TILARESPA2015>
|- |- 🟦 <LoanCost>[]🔹In5Years, 🔹Name
|- |- 🟥 <TotalLoanCosts>
|- |- 🟥 <CD_TotPmts>
|- |- 🟥 <In5Years>🔸PaidPrincipal, 🔸PaidTotal
|- |- 🟥 <TIP>
|- |- 🟥 <MaxPnIPmt>🔸Date
|- |- 🟥 <MinRate>🔸Idx
|- |- 🟥 <MaxRate>🔸Idx
|- |- 🟥 <ProjectedPayments>🔸NumCols
|- |- |- 🟥 <PPCol>[]🔸Num, 🔸Title
|- |- |- |- 🟥 <Years>🔸End, 🔸Start
|- |- |- |- 🟥 <PnIPmt>🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min
|- |- |- |- 🟥 <MIPmt>
|- |- |- |- 🟥 <TotalPmt>🔸Max, 🔸Min
|- 🟥 <Moneys>
|- |- 🟥 <Principal>
|- |- 🟥 <Interest>
|- |- 🟦 <ConstructInterest>
|- |- 🟦 <OddDaysPrepaid>🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths
|- |- 🟦 <MinInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <MaxInterestPmt>🔸Index, 🔸Pmt
|- |- 🟦 <FinFees>
|- |- 🟦 <FinChgFees>
|- |- 🟦 <PocketFees>
|- |- 🟦 <MAPRFees>
|- |- 🟦 <Protection>🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt
|- |- 🟦 <MinIntChgAdj>
|- |- 🟦 <MinFinChgAdj>
|- |- 🟦 <Fee>[]🔹Name
|- |- 🟦 <PMI_Fee>
|- 🟥 <Accrual>
|- |- 🟥 <Method>
|- |- 🟥 <Days1Pmt>🔸DayCount
|- |- 🟥 <Maturity>
|- 🟦 <PMI>🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate
|- 🟥 <PmtStream>[]🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term
|- 🟦 <ProtectionInfo>[]🔸Formula, 🔸Product, 🔹RateType
|- |- 🟥 <CalcResult>
|- |- 🟥 <Cost>🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium
|- |- 🟥 <Coverage>🔸Amount, 🔸Note
|- |- 🟥 <Benefit>🔸Amount, 🔸Note, 🔸Periodic
|- |- 🟦 <CovTerm>🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note
|- |- 🟦 <Borrower>[]🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts
|- |- 🟦 <Caps>
|- 🟦 <AmTable>🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks
|- |- 🟦 <GrandTotals>[]🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot
|- |- 🟦 <SubTotals>[]🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year
|- |- 🟥 <AmLine>[]🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹IU, 🔹MaxInt, 🔹MaxPnI, 🔹MaxPrin, 🔹MinInt, 🔹MinPnI, 🔹MinPrin, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹UnpaidInt
|- 🟦 <Metavante>🔸FormsTerm, 🔸HostTerm

🟥 <outARM>

Element TypeData Type
Parent-

This element is the root element of the response, and contains all of the relevant outputs.

Attributes: 🔹CountryName

🔹 CountryName

Data TypeValuesDefault
TextSee tableUnited States of America

If a valid Country code was specified as an attribute of the input module element, the full name of the country associated with the specified Country code will be reported in this attribute.


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, any warning or error messages, and the most important numerical results for the query.

<Results>
  <Description>Successful Calculation</Description>
  <Number_of_Groups>4</Number_of_Groups>
</Results>

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Number_of_Groups>

Element TypeData Type
DataInteger

This element's value is the number of payment groups found in the computed loan. This value is equivalent to the number of <PmtStream> elements found in the XML result.

Attributes: None


🟥 <FedBox>

Element TypeData Type
Parent-

Some of the most important compliance related outputs are organized into the <FedBox> disclosures.

<FedBox>
  <AmtFin>500000.00</AmtFin>
  <FinChg>85428.16</FinChg>
  <TotPmts>585428.16</TotPmts>
  <RegZAPR Type="Actuarial">6.270</RegZAPR>
</FedBox>

Attributes: None


🟥 <FedBox><AmtFin>

Element TypeData Type
DataCurrency

The Regulation Z Amount Financed, which is defined as the amount of credit provided to you or on your behalf.

Attributes: None


🟥 <FedBox><FinChg>

Element TypeData Type
DataCurrency

This element contains the Regulation Z Finance Charge, described as the dollar amount the credit extension will cost you.

Attributes: None


🟥 <FedBox><TotPmts>

Element TypeData Type
DataCurrency

The amount which the borrower will have paid when the borrower has made all scheduled payments.

Attributes: None


🟦 <FedBox><TotalSalePrice>

Element TypeData TypeDefault
DataCurrency<TotPmts>

The sum of the total of payments plus the total down payment. Please note that if no <TotalDown> element was specified in the request, then this element will not be present.

Attributes: None


🟥 <FedBox><RegZAPR>

Element TypeData Type
DataDecimal

The Regulation Z APR, which is the cost of the extension of credit expressed as a yearly rate. The Reg. Z APR element has a few attributes, described below:

Attributes: 🔹Max, 🔹MaxExceeded, 🔸Type

🔹 Max

Data TypeDefault
Decimaln/a

This attribute specifies the maximum APR as configured in the account's setup files. If no maximum APR has been specified, then this attribute will not be present. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum APR of 36.000%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

If a maximum APR is configured in the account's setup files, then the value of this attribute indicates whether or not the current loan exceeds the maximum allowed APR. As an example, if the maximum APR has been set to 36% and the APR for the returned loan was 37.125%, the <RegZAPR> element would be:

<RegZAPR Type="Actuarial" Max="36.000" MaxExceeded="true">37.125</RegZAPR>

🔸 Type

Data TypeValues
EnumActuarial, USRule, EU_APR, Canadian_APR, XIRR, XIRR360, IRR, YieldIRR, Open_End

This attribute specifies the method used to compute the reported APR: Actuarial or US Rule The method used is dictated by the setup files for the given account, but may be overridden in the XML input query.

  • Actuarial - Governed by Appendix J to Regulation Z. Default US APR.
  • USRule - Used by large banks to mirror loan amortization.
  • EU_APR - Default European Union APR.
  • Canadian_APR - Default APR for Canada.
  • XIRR - Extended Internal Rate of Return (same as excel function).
  • XIRR360 - XIRR using a 360 divisor rather than a 365 divisor.
  • YieldIRR - Canadian mortgages may compute periodic interest using a fractional power of a periodic yield.
  • Open_End - Simply returns the interest rate.

🟦 <FedBox>—><MAPR>

Element TypeData Type
DataDecimal

If the military APR has been requested, then this element will be included in the output. The value of the element is the military APR, and the element has a few attributes, described below:

Attributes: 🔸Advance, 🔹Max, 🔹MaxExceeded

🔸 Advance

Data Type
Currency

This attribute is the equivalent of the Amount Financed for the Military APR. Specifically, it is the principal balance less any MAPR fees, debt protection, etc.

🔹 Max

Data TypeDefault
Decimal36.0

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max). If not specified, a default value of 36% is assumed. The value of this attribute should be displayed as a percentage. As an example, for Max="36.0", you would disclose a maximum Military APR of 36.0%.

🔹 MaxExceeded

Data TypeValuesDefault
Booleantrue, falsefalse

The value of this attribute 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> element would be:

<MAPR Advance="1350.00" Max="36.000" MaxExceeded="true">37.125</MAPR>

🟦 <TILARESPA2015>

Element TypeData Type
Parent-

This element contains child elements which are of interest to fulfilling the 2015 TILA RESPA rule. It will only be present if the <TILARESPA2015> element is present in the request.

Sample TILARESPA2015 output:

<TILARESPA2015>
  <TotalLoanCosts>0</TotalLoanCosts>
  <CD_TotPmts>27311.07</CD_TotPmts>
  <In5Years PaidTotal="27311" PaidPrincipal="25000"/>
  <TIP>9.244</TIP>
  <MaxPnIPmt Date="2012-11-01">1636.65</MaxPnIPmt>
  <MinRate Idx="1">5.651</MinRate>
  <MaxRate Idx="1">5.651</MaxRate>
  <ProjectedPayments NumCols="3">
      <PPCol Num="1" Title="Year 1">
        <Years Start="1" End="1"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="2" Title="Year 2">
        <Years Start="2" End="2"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
      <PPCol Num="3" Title="Year 3">
        <Years Start="3" End="3"/>
        <PnIPmt Min="636.65" Max="1636.65" IntOnly="none" Balloon="false"/>
        <MIPmt>0.00</MIPmt>
        <TotalPmt Min="636.65" Max="1636.65"/>
      </PPCol>
  </ProjectedPayments>
</TILARESPA2015>

Attributes: None


🟦 <TILARESPA2015><LoanCost>[]

Element TypeData Type
DataCurrency

For every <Fee> element present in the input which has its IsLoanCost attribute 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> input element), there will be a corresponding <LoanCost> element. The value of this element will be the numerical value of the fee, rounded to the nearest dollar.

Attributes: 🔹In5Years, 🔹Name

🔹 In5Years

Data TypeDefault
Currency<LoanCost>

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 attribute will be present and disclose the portion of this loan cost that is accrued during the first five years.

🔹 Name

Data TypeDefault
TextNULL

This attribute will hold the same value as the attribute of the same name for the <Fee> element. It is recommended that each fee have a unique Name for identification purposes.


🟥 <TILARESPA2015><TotalLoanCosts>

Element TypeData Type
DataCurrency

This element holds the sum of all borrower paid loan costs. Since all <LoanCost> element values are rounded dollar amounts, the value of this element will also be a rounded dollar amount.

Attributes: None


🟥 <TILARESPA2015><CD_TotPmts>

Element TypeData Type
DataCurrency

This element holds 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 will be the numerical value of the sum.

Attributes: None


🟥 <TILARESPA2015><In5Years>

Element TypeData Type
Empty-

This element is empty, with all important values required for the new "In 5 Years" section returned in the following two attributes of this element.

Attributes: 🔸PaidPrincipal, 🔸PaidTotal

🔸 PaidPrincipal

Data Type
Currency

This attribute 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.

🔸 PaidTotal

Data Type
Currency

This attribute 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.


🟥 <TILARESPA2015><TIP>

Element TypeData Type
DataDecimal

The value of this element holds the total interest percentage, rounded to three or fewer decimal places, as required.

Attributes: None


🟥 <TILARESPA2015><MaxPnIPmt>

Element TypeData Type
DataCurrency

The value of this element holds the maximum scheduled principal and interest payment during the term of the loan.

Attributes: 🔸Date

🔸 Date

Data Type
Date

This attribute contains 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. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.


🟥 <TILARESPA2015><MinRate>

Element TypeData Type
DataDecimal

The value of this element holds the minimum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the minimum rate is first applicable.


🟥 <TILARESPA2015><MaxRate>

Element TypeData Type
DataDecimal

The value of this element holds the maximum possible interest rate applied during the term of the loan.

Attributes: 🔸Idx

🔸 Idx

Data Type
Integer

This attribute contains the payment number for which the maximum rate is first applicable.


🟥 <TILARESPA2015><ProjectedPayments>

Element TypeData Type
Parent-

This element contains child elements which are of interest to filling the Projected Payments table. It will only be present if the <TILARESPA2015> element is present in the XML request for a supported loan type.

Attributes: 🔸NumCols

🔸 NumCols

Data TypeValues
Integer[1...4]

This attribute will hold the number of columns which must be present in the Projected Payments table. It will be a numeric value from 1 to 4.


🟥 <ProjectedPayments><PPCol>[]

Element TypeData Type
Parent-

For every column required in the Projected Payments table, there will be an associated <PPCol> element. This element is a parent to child elements which contain data associated with a single column of the table.

Attributes: 🔸Num, 🔸Title

🔸 Num

Data TypeValues
Integer[1...4]

This attribute will hold the number of the column to which the following data applies.

🔸 Title

Data Type
Text

The value of this attribute 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.


🟥 <ProjectedPayments><PPCol><Years>

Element TypeData Type
Empty-

The attributes of this element hold the beginning and ending year numbers for which this column data applies. The element itself is empty.

Attributes: 🔸End, 🔸Start

🔸 End

Data Type
Integer

The ending year associated with this column's data.

🔸 Start

Data Type
Integer

The beginning year associated with this column's data.


🟥 <ProjectedPayments><PPCol><PnIPmt>

Element TypeData Type
Empty-

This empty element has several attributes which describe the principal and interest payments associated with this column.

Attributes: 🔸Balloon, 🔸IntOnly, 🔸Max, 🔸Min

🔸 Balloon

Data TypeValues
Booleantrue, 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 attribute will be true.

🔸 IntOnly

Data TypeValues
Enumall, some, none
  • none - No payments associated with the column are Interest Only
  • some - Some, but not all, of the payments associated with the column are Interest Only.
  • all - All of the payments associated with the column are Interest Only.

Note that for the purposes of this attribute, 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.

🔸 Max

Data Type
Currency

This attribute holds the maximum principal and interest payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum principal and interest payment for this column.


🟥 <ProjectedPayments><PPCol><MIPmt>

Element TypeData Type
DataCurrency

The value of this element 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.

Attributes: None


🟥 <ProjectedPayments><PPCol><TotalPmt>

Element TypeData Type
Empty-

This empty element has two attributes which describe the estimated total payment or range of payments associated with this column. Note that this value does not include any estimated escrow, as the SCEX does not support escrow calculations. The calling application will need to increase these values by the estimated escrow amounts if any are present.

Attributes: 🔸Max, 🔸Min

🔸 Max

Data Type
Currency

This attribute holds the maximum estimated total payment for this column. If this value is not the same as the value of the Min attribute, then a range of rounded payments must be displayed. If the values are the same, then only a single value needs to be disclosed.

🔸 Min

Data Type
Currency

This attribute holds the minimum estimated total payment for this column.


🟥 <Moneys>

Element TypeData Type
Parent-

This element groups together those other major cash amounts not disclosed under the <FedBox> element, such as the principal balance, interest change, fee amounts and protection premiums.

   <Moneys>
      <Principal>10120.00</Principal>
      <Interest>1635.80</Interest>
      <OddDaysPrepaid OddDayCount="15" DailyCost="2.77">41.55</OddDaysPrepaid>
      <FinFees>120.00</FinFees>
      <FinChgFees>91.55</FinChgFees>
      <PocketFees>65.00</PocketFees>
      <MAPRFees>201.55</MAPRFees>
      <Protection Category="None" PerPmt="0.00" PerDay="0.00">0.00</Protection>
      <Fee Name="FinFee">60.00</Fee>
      <Fee Name="Prepaid Fee">50.00</Fee>
   </Moneys>

Attributes: None


🟥 <Moneys><Principal>

Element TypeData Type
DataCurrency

The principal balance is the amount on which interest is accrued. The principal balance consists of the amount requested by the borrower, any fees which are financed, as well as financed protection premiums.

Attributes: None


🟥 <Moneys><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the term of the loan, assuming the borrower will make all scheduled payments.

Attributes: None


🟦 <Moneys><ConstructInterest>

Element TypeData TypeDefault
DataCurrency0

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 element 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 <Interest> element, and both loans reflected in a single, combined amortization schedule.

If the requested loan was not a construction loan, or if construction loans have not been set up for the given account, then this element will not appear in the results.

Attributes: None


🟦 <Moneys><OddDaysPrepaid>

Element TypeData TypeDefault
DataCurrency0

This element, if present, holds the total odd days prepaid finance charge. If no odd days prepaid fee was requested, then this element will not be present in the output.

Attributes: 🔹AddToPmt, 🔹DailyCost, 🔸OddDayCount, 🔹OddMonths

🔹 AddToPmt

Data TypeValuesDefault
Booleantrue, falsefalse

If the odd days interest has been added to the first payment, this attribute will be present in the output with a value of true. If the odd days interest has been treated as a prepaid finance charge, then this attribute will not be present and a default value of false should be assumed.

🔹 DailyCost

Data TypeDefault
Currencyn/a

If the odd days prepaid fee is computed using a rounded daily cost, then the value of this attribute will hold that value. If the odd days prepaid is not computed using a rounded daily cost, then this attribute will not be present.

🔸 OddDayCount

Data Type
Integer

This attribute holds the number of odd days computed by the SCE for the requested loan.

🔹 OddMonths

Data TypeDefault
Integern/a

This attribute holds the number of odd months computed by the SCE for the requested loan when using odd days accrual method 250.


🟦 <Moneys><MinInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MinInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the minimum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><MaxInterestPmt>

Element TypeData TypeDefault
DataCurrencyn/a

The <MaxInterestPmt> element will only appear if the Metavante attribute has been set to true, and even then only under certain loan conditions. The element itself contains no data, as all required data is found in the following two attributes:

Attributes: 🔸Index, 🔸Pmt

🔸 Index

Data Type
Integer

The Index attribute specifies the payment number in the payment stream at which the maximum interest payment is achieved.

🔸 Pmt

Data Type
Currency

The interest payment amount for the given Index.


🟦 <Moneys><FinFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all financed fees requested for the loan. If no financed fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><FinChgFees>

Element TypeData TypeDefault
DataCurrency0

This element contains the sum of all APR affecting fees (those fees which are added to the <FinChg>) requested for the loan. If no APR affecting fees were requested, then this element will not show up in the response.

Attributes: None


🟦 <Moneys><PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element 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 element will not show up in the response.

Attributes: None


🟦 <Moneys><MAPRFees>

Element TypeData TypeDefault
DataCurrency0

This element 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.

Attributes: None


🟦 <Moneys><Protection>

Element TypeData TypeDefault
DataCurrency0

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below. The attributes of this element are as follows:

Attributes: 🔸Category, 🔹IsDp, 🔹Mandatory, 🔸PerDay, 🔸PerPmt

🔸 Category

Data TypeValues
EnumSee below

This attribute specifies the category under which the computed loan protection falls. The possible values for this attribute are:

  • None - No protection catetory has been identified.
  • SP - Single Premium protection financed at loan closing.
  • MOB - Monthly outstanding balance (paid on Payments).
  • TrueMOB - Premiums paid monthly on a date specified in the setup files.
  • PaidSP - Single premium protection paid at closing.
  • ConstantMOB - CMOB is a product paid with payments and a constant amount.
  • AddToPmtMOB - MOB insurance added to a constant P&I payment, resulting in variable payments.

🔹 IsDp

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute indicates if the specified account’s protection is set up as debt protection. If this attribute 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).

🔹 Mandatory

Data TypeValuesDefault
Booleantrue, falsefalse

This attribute should only appear in the response if the value of the attribute is true. If this attribute does not appear in the output, then the value of this attribute should default to false. If the value of the Mandatory attribute is true, then the total premium/fee amount for all insurance/debt protection products has been treated as a part of the Regulation Z Finance Charge, and hence will affect the Reg. Z APR.

🔸 PerDay

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per day.

🔸 PerPmt

Data Type
Currency

Contains the cost of all loan protection products expressed as dollars per payment.


🟦 <Moneys><MinIntChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><MinFinChgAdj>

Element TypeData TypeDefault
DataCurrency0

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 element will be returned in the response and will contain the value of the minimum finance charge adjustment.

Attributes: None


🟦 <Moneys><Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔹Name

🔹 Name

Data TypeDefault
TextNULL

Contains the value of the Name attribute of the corresponding <Fee> element from the request. If no such attribute is present in the <Fee> element, then none will be present in the response element.


🟦 <Moneys><PMI_Fee>

Element TypeData TypeDefault
DataCurrency0

If PMI has been requested on the loan, and if a number of up front payments have been specified, then this element will hold the total PMI fee for all upfront payments.

Attributes: None


🟥 <Accrual>

Element TypeData Type
Parent-

This element groups together interest accrual information, such as the accrual method used, days to the first payment, and the loan’s maturity date.

<Accrual>
  <Method>Actual/365 US Rule</Method>
  <Days1Pmt DayCount="Actual">74</Days1Pmt>
  <Maturity>2015-07-01</Maturity>
</Accrual>

Attributes: None


🟥 <Accrual><Method>

Element TypeData Type
DataText

The <Method> element contains a textual description of the interest accrual method used to compute the loan (e.g. "Unit Period 365 Simple").

Attributes: None


🟥 <Accrual><Days1Pmt>

Element TypeData Type
DataInteger

This element contains the number of days to the first payment, computed by one of two methods as specified in this element’s sole attribute.

Attributes: 🔸DayCount

🔸 DayCount

Data TypeValues
EnumActual, True360
  • Actual - The actual number of days between these two dates are used. 31 would be the day count for the 2024-01-01 to 2024-02-01.
  • True360 - All months have 30 days. 30 would be the day count for 2024-01-01 to 2024-02-01.

🟥 <Accrual><Maturity> (YYYY-MM-DD)

Element TypeData Type
DataDate

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. Hence, a maturity date of February 15, 2020 would be specified as <Maturity>2020-02-15</Maturity>.

Attributes: None


🟦 <PMI>

Element TypeData Type
Empty-

The PMI element 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> element, the <PmtStream> element(s), the <TotPmts> element, nor the Pmt attribute of the <AmLine> element.

<PMI Rate="1.00" LTV="100.00" PremiumPerYear="964.08" PremiumPerPeriod="80.34"/>

The element itself contains no data, as all associated PMI data is found in the following attributes:

Attributes: 🔹IndexToRemove, 🔹IndexToWarn, 🔸LTV, 🔸PremiumPerPeriod, 🔸PremiumPerYear, 🔸Rate

🔹 IndexToRemove

Data TypeDefault
Integer0

This attribute only appears if the PercentToRemove PMI input attribute 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.

In the sample above, after four payments are made, the ending principal balance to home value ratio drops below 70%, and hence the calculation engine returns IndexToRemove="4". Note that no PMI is included in the amortization schedule for payment numbers four or greater.

🔹 IndexToWarn

Data TypeDefault
Integer0

This attribute only appears if the PercentToWarn PMI input attribute is specified, and indicates that the payment index on which the remaining principal balance to home value ratio drops below the specified percentage. In the sample above, after three payments are made, the ending principal balance to home value ratio drops below 80%, and hence the calculation engine returns IndexToWarn="3".

🔸 LTV

Data Type
Decimal

The loan to value ratio of the computed loan, expressed as a percentage.

🔸 PremiumPerPeriod

Data Type
Currency

The periodic PMI premium amount.

🔸 PremiumPerYear

Data Type
Currency

The annual PMI premium amount

🔸 Rate

Data Type
Decimal

The percentage rate used in the PMI calculation.


🟥 <PmtStream>[]

Element TypeData Type
Empty-

The <PmtStream> element(s) describe the scheduled stream of payments for the computed loan in the order paid. Instead of disclosing each and every payment individually (which can be done with the <AmTable> element), the payment streams group together consecutive equal payments to produce a compressed output view.

The following code translates to "Twelve consecutive payments of $879.31 computed at 10.000% begin on January 22nd, 2024".

<PmtStream Term="12" Pmt="879.31" Rate="10.000" Begin="2024-01-22"/>

Each element describes a single stream of equal payments, using the following attributes to define the important properties of each resulting payment stream:

Attributes: 🔸Begin, 🔸Pmt, 🔸Rate, 🔸Term

🔸 Begin

Data Type
Date

This attribute contains 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. In the example above, the first payment stream is scheduled to begin on September 18, 2005. Hence, the Begin attribute for the first payment stream element would be specified as Begin="2005-09-18".

🔸 Pmt

Data Type
Currency

The Pmt attribute contains the computed payment amount for this payment stream. For the sample payment stream above, the payment amount is 879.31.

🔸 Rate

Data Type
Decimal

Contains the interest rate used for the duration of this payment stream. Usually, the interest rate will remain fixed for the duration of the loan unless you are computing an adjustable rate loan or you are computing a LaserPro construction loan with permanent loan attached.

🔸 Term

Data Type
Integer

The Term attribute holds the number of contiguous payments that make up the given payment stream. In the example payment stream above, the term for the stream is 12.


🟦 <ProtectionInfo>[]

Element TypeData Type
Parent-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the given loan. Each element group provides complete results for each requested product (decreasing life, level life, disability/debt cancellation, involuntary unemployment, or personal property).

Attributes: 🔸Formula, 🔸Product, 🔹RateType

🔸 Formula

Data TypeValues
Enumsee Protection Formulas

The Formula attribute contains an abbreviated description of the formula used to compute the desired protection product. The formula codes are described here.

🔸 Product

Data TypeValues
EnumLife, Level, Disability, Unemployment, Property

This attribute informs the calling application to which type of protection product this element refers: decreasing life, level life, disability/debt cancellation, involuntary unemployment or personal property.

🔹 RateType

Data TypeValues
EnumFixed, Variable
  • Fixed - Protection rate stays constant during the calculations.
  • Variable - Protection rate changed from Joint to Single as the loan evolves.

🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

<CalcResult>Valid Calculation</CalcResult>

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
Empty-

Attributes of this empty element 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.

The only time there will be two <Cost> elements to parse is when the account has been set up to use Plateau’s Uniguard product, and the user has requested joint coverage. If this is the case, then two <Cost> elements are provided to disclose two premiums instead of a single aggregate joint premium.

<Cost Premium="827.26" PerPmt="19.28" PerDay="0.63" Factor="1.0154"/>

Attributes: 🔸Factor, 🔸PerDay, 🔸PerPmt, 🔸Premium

🔸 Factor

Data Type
Decimal

The rate factor used to compute the premium for the requested protection product.

🔸 PerDay

Data Type
Currency

The daily cost of coverage, expressed in dollars.

🔸 PerPmt

Data Type
Currency

The cost of coverage expressed as dollars per payment.

🔸 Premium

Data Type
Currency

The total cost for this protection over the term of the loan.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount and note are provided in the following attributes of this empty element:

<Coverage Amount="75000.00" Note="Partial Coverage of $75,000"/>

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data Type
Currency

This attribute contains the aggregate coverage amount for this protection product.

🔸 Note

Data Type
Text

This Note 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.


🟥 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and involuntary unemployment products.

<Benefit Amount="1000.00" Note="Partial Benefit of $1,000"/>

Attributes: 🔸Amount, 🔸Note, 🔸Periodic

🔸 Amount

Data Type
Currency

Attribute which contains the monthly benefit amount for this protection product.

🔸 Note

Data Type
Text

This Note will describe 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.

🔹 Periodic

Data TypeDefault
Currencyn/a

If the account has been configured to disclose periodic benefits (as opposed to monthly benefit amounts, which are returned in the Amount attribute described above), and if the specified payment frequency is other than monthly, then this attribute will be present and will hold the periodic benefit amount.


🟦 <ProtectionInfo><CovTerm>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage for the requested product. If the request has specified the coverage term, then this element will be populated with that term.

<CovTerm InMonths="75" InPmts="75" Maturity="2018-09-22" Note="Truncated: Keep Benefit"/>

Attributes: 🔸InDays, 🔸InMonths, 🔸InPmts, 🔸Maturity, 🔸Note

🔹 InDays

Data TypeDefault
Integern/a

Attribute which expresses the term of coverage in days. This attribute will only be present for the level life product, and even then only if needed (for example, when covering single payment notes).

🔸 InMonths

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 InPmts

Data Type
Integer

Contains the number of payments covered.

🔸 Maturity (YYYY-MM-DD)

Data Type
Date

This attribute contains the maturity date for the requested coverage. All dates are in the form of YYYY-MM-DD, and must be 10 characters long.

🔸 Note

Data Type
Text

This Note 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.


🟦 <ProtectionInfo><Borrower>[]

Element TypeData Type
Empty-

This empty element provides the calling application with data about the term of coverage of a specified borrower, for the requested product. Note that this element will only be present if the input XML request has specified ShowBorrowerInfo= "true", and a valid birthdate was provided. The following attributes are defined for this purpose:

Attributes: 🔸AgeAtIssue, 🔸AgeAtMaturity, 🔸Birthday, 🔸Maturity, 🔸Months, 🔸Note, 🔸Pmts

🔸 AgeAtIssue

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 AgeAtMaturity

Data Type
Special - see below

If coverage is written on this borrower, then the value of this attribute 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.

🔸 Birthday

Data Type
Date

This attribute contains 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.

🔸 Maturity

Data Type
Date

The value of this attribute contains the coverage maturity date for this particular borrower.

🔸 Months

Data Type
Integer

Contains the term of coverage expressed as a number of months.

🔸 Note

Data Type
Text

This Note 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.

🔸 Pmts

Data Type
Integer

Contains the term of coverage expressed as a number of payments.


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

<Caps Cov="75000" Ben="1000" Term="84" InceptAge="65" AttainAge="66"/>

Attributes: 🔸AttainAge, 🔸Ben, 🔸Cov, 🔸InceptAge, 🔸Term

🔸 AttainAge

Data Type
Integer

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.

🔸 Ben

Data Type
Currency

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data Type
Currency

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data Type
Integer

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.

🔸 Term

Data Type
Integer

Contains the maximum coverage term, expressed in months. If no cap is present or applicable, then a value of zero is returned.


🟦 <AmTable>

Element TypeData Type
Parent-

This element (if present) contains child elements which describe the loan's amortization information. This element (and all of its child elements) will only be present if the HideAmort property of the root element of the input query is set to false.

<AmTable> Attributes will only occur as feedback data for Canadian APR's.

Attributes: 🔹AvgBal, 🔹Months, 🔹OddDays, 🔹Weeks

🔹 AvgBal

Data TypeDefault
Currencyn/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute is the average balance of the loan used in the Canadian APR calculation.

🔹 Months

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 OddDays

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.

🔹 Weeks

Data TypeDefault
Integern/a

This attribute will only appear if a Canadian APR is disclosed for the computed loan. The value of this attribute 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.


🟦 <AmTable><GrandTotals>[]

Element TypeData Type
Empty-

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 the following attributes:

<GrandTotals PmtTot="10551.72" IntTot="551.68" PrinTot="10000.04"/>

Attributes: 🔹AHTot, 🔹CLTot, 🔸IntTot, 🔹IUTot, 🔹PMITot, 🔸PmtTot, 🔸PrinTot,

🔹 AHTot

Data TypeDefault
Currency0

The AHTot attribute 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 over the duration of the loan.

🔹 CLTot

Data TypeDefault
Currency0

The CLTot attribute 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.

🔸 IntTot

Data Type
Currency

Contains the sum of all interest attributes in the AmLine elements. This amount will be different from the <Interest> element if there is a nonzero EndBal for the final line of amortization. The two will differ by this non-zero EndBal.

🔹 IUTot

Data TypeDefault
Currency0

The IUTot attribute 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 over the duration of the loan.

🔹 PMITot

Data TypeDefault
Currency0

The PMITot attribute 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.

🔸 PmtTot

Data Type
Currency

Contains the total of payments scheduled for the computed loan.

🔸 PrinTot

Data Type
Currency

Like IntTot above, this attribute contains the total amount paid to principal during the loan term, assuming all payments are made as scheduled.


🟦 <AmTable><SubTotals>[]

Element TypeData Type
Empty-

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 <SubTotals> element present. The element itself is empty, as all the interesting categories are found in the following attributes:

<SubTotals Year="2024" Start="1" Events="12" PmtSub="10551.72" IntSub="551.68" PrinSub="10000.04"/>

Attributes: 🔹AHSub, 🔹CLSub, 🔸Events, 🔸IntSub, 🔹IUSub, 🔹PMISub, 🔸PmtSub, 🔸PrinSub, 🔸Start, 🔸Year

🔹 AHSub

Data TypeDefault
Currency0

The AHSub attribute 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.

🔹 CLSub

Data TypeDefault
Currency0

The CLSub attribute 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.

🔸 Events

Data Type
Integer

This attribute defines the number of amortization events (contained in <AmLine> elements which are defined below) which belong to this calendar Year.

🔸 IntSub

Data Type
Currency

Holds the total amount paid to interest over the Year in question, assuming all payments are made as scheduled.

🔹 IUSub

Data TypeDefault
Currency0

The IUSub attribute 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.

🔹 PMISub

Data TypeDefault
Currency0

The PMISub attribute 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 upfront periodic PMI premiums) for PMI during the Year.

🔸 PmtSub

Data Type
Currency

Contains the total of payments scheduled for the Year in question.

🔸 PrinSub

Data Type
Currency

Like IntSub above, this attribute contains the total amount paid to principal during the Year in question, assuming all payments are made as scheduled.

🔸 Start

Data Type
Integer

This attribute defines the first amortization event which falls in the specified calendar Year. To find the <AmLine> element which corresponds to this value, match the Idx attribute of the <AmLine> element with the integer value reported by this attribute.

🔸 Year

Data Type
Integer

The given calendar year for which the subtotal data is applicable.


🟥 <AmTable><AmLine>[]

Element TypeData Type
Empty-

There is one <AmLine> element 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.) However, some loan protection methods (TruStage's monthly renewable product, to be exact) have amortization events which correspond to loan protection premiums being added to the loan balance on specific dates.

<AmLine Idx="1" Date="2024-01-01" BegBal="10000.00" Pmt="879.31" Int="84.93" Prin="794.38" EndBal="9205.62"/>

As with the <GrandTotals> and <SubTotals> elements, this element is empty and contains all of the useful information for a given point in the amortization of a loan in the following attributes.

Attributes: 🔹AH, 🔸BegBal, 🔹CL, 🔸Date, 🔸EndBal, 🔸Idx, 🔸Int, 🔹MaxInt, 🔹MaxPnI, 🔹MaxPrin, 🔹MinInt, 🔹MinPnI, 🔹MinPrin, 🔹PMI, 🔸Pmt, 🔸Prin, 🔹UnpaidInt

🔹 AH

Data TypeDefault
Currency0

The AH attribute 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.

🔸 BegBal

Data Type
Currency

The principal balance before the amortization event occurs.

🔹 CL

Data TypeDefault
Currency0

The CL attribute 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.

🔸 Date

Data Type
Currency

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.

🔸 EndBal

Data Type
Currency

The principal balance amount, after the amortization event has taken place.

🔸 Idx

Data Type
Integer

The index of the amortization event, which is either the payment number, or zero. A value of zero designates a protection premium that was charged on a date other than a payment date. (Occurs with protection category "TrueMOB").

🔸 Int

Data Type
Currency

The amount of the payment which goes to pay interest.

🔹 IU

Data TypeDefault
Currency0

The IU attribute 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.

🔹 MaxInt

Data TypeDefault
Currency-

The value of this attribute represents the amount of the MaxPnI payment which has been used to pay interest. This attribute will only be present if the MaxPnI attribute is present and if the request included <TILARESPA2015 MaxPnIDetails = "true" />.

🔹 MaxPnI

Data TypeDefault
Currency-

If the ARM loan specified a maximum lifetime interest rate (see <MaxRate>), and if TILA RESPA data has been requested (using the <TILARESPA2015> element), then this attribute will be present in each <AmLine> element that represents a payment. The value of this attribute 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.

🔹 MaxPrin

Data TypeDefault
Currency-

The value of this attribute represents the amount of the MaxPnI payment which has been used to pay down the principal balance. This attribute will only be present if the MaxPnI attribute is present and if the request included <TILARESPA2015 MaxPnIDetails = "true" />.

🔹 MinInt

Data TypeDefault
Currency-

The value of this attribute represents the amount of the MinPnI payment which has been used to pay interest. This attribute will only be present if the MinPnI attribute is present and if the request included <TILARESPA2015 MinPnIDetails = "true" />.

🔹 MinPnI

Data TypeDefault
Currency-

If the ARM loan specified a minimum lifetime interest rate (see <MinRate>), and if TILA RESPA data has been requested (using the <TILARESPA2015> element), then this attribute will be present in each <AmLine> element that represents a payment. The value of this attribute 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.

🔹 MinPrin

Data TypeDefault
Currency-

The value of this attribute represents the amount of the MinPnI payment which has been used to pay down the principal balance. This attribute will only be present if the MinPnI attribute is present and if the request included <TILARESPA2015 MinPnIDetails = "true" />.

🔹 PMI

Data TypeDefault
Currency0

This attribute contains the PMI premium for this payment.

🔸 Pmt

Data Type
Currency

The amount of the payment (or zero if the event is a "TrueMOB" protection premium).

🔸 Prin

The amount of the payment which goes to reduce the principal balance.

🔹 UnpaidInt

Data TypeDefault
Currency or Decimal0

This attribute 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 places. If rounded, then the unpaid interest is displayed to two (2) decimal places.


🟦 <Metavante>

Element TypeData Type
Empty-

This element will only be present if the Metavante attribute of the root element is set to true. The element itself is empty, as all of the useful information is in the following attributes:

Attributes: 🔸FormsTerm, 🔸HostTerm

🔸 FormsTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante FORMS method.

🔸 HostTerm

Data Type
Integer

The number of months in the loan, as computed using the Metavante HOST method.


Auto Prompts

The Auto Prompts module allows the calling application to build up a final proceeds amount based upon the usual elements found in an auto or boat sale. Thus, the price, down payment, trade in value, and taxes are just some of the elements taken into consideration.

Sample Request

The following is a sample request for an Auto Prompts calculation:

<inAUTO>
  <Price>55000.00</Price>
  <CashDown>10000.00</CashDown>
  <GrossTrade>5000.00</GrossTrade>
  <Lien>225</Lien>
  <Rebate ApplyToBalance="true">500.00</Rebate>
  <ServiceContract>150.00</ServiceContract>
  <TaxedFees>50.00</TaxedFees>
  <NonTaxedFees>75.00</NonTaxedFees>
  <Tax Method="PriceTrade" Rate="7.250" RebateReduce="true"></Tax>
  <LuxTax Rate="10.000" Threshold="50000.00" />
</inAUTO>

Sample Response

The following is a sample response generated by the previous sample request:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outAUTO SYSTEM "outAUTO.dtd">
<outAUTO>
  <Results>
    <Description>Valid Calculation</Description>
    <Proceeds>44092.38</Proceeds>
  </Results>
  <Auto>
    <Price>55000.00</Price>
    <Tax Rate="7.25" Method="PriceTrade">3592.38</Tax>
    <LuxTax Rate="10.000" Threshold="50000.00">500.00</LuxTax>
    <PricePlusTax>49550.00</PricePlusTax>
    <CashDown>10000.00</CashDown>
    <GrossTrade>5000.00</GrossTrade>
    <Lien>225.00</Lien>
    <Rebate ApplyToBalance="true">500.00</Rebate>
    <TotalDown>15275.00</TotalDown>
    <ServiceContract>150.00</ServiceContract>
    <TaxedFees>50.00</TaxedFees>
    <NonTaxedFees>75.00</NonTaxedFees>
    <TotalVehicleFees>275.00</TotalVehicleFees>
  </Auto>
</outAUTO>

Auto Prompts - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inAUTO>

Element TypeData Type
Parent-

This is the root element of the XML auto prompts request, and is required. This element is empty, and thus contains neither data nor child elements.

Attributes: None


🟦 <CashDown>

Element TypeData TypeValuesDefault
DataCurrency>= 00

The value of this element represents a cash down payment made at closing. If specified and greater than zero, this amount will be deducted from the Price, reducing the principal balance. If not specified, the cash down payment will default to zero.

Attributes: None


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--see attribute defaults

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟦 <GrossTrade>

Element TypeData TypeValuesDefault
DataCurrency>= 00

The gross dollar value of the trade in. If specified and greater than zero, this amount will be deducted from the price, reducing the principal balance. If not specified, the gross trade value will default to zero.

Attributes: None


🟦 <Lien>

Element TypeData TypeValuesDefault
DataCurrency>= 00

The value of this element should hold any payoff amount required for the trade-in. If specified and greater than zero, this amount will be added to the price, increasing the principal balance. If not specified, then the lien amount will default to zero.

Attributes: None


🟦 <LuxTax>

Element TypeData Type
Empty-

A luxury tax is a tax on non-essential goods (such as expensive cars, boats, etc.). The element itself is empty, and if not present, the luxury tax will be set to zero. To compute the luxury tax, the following attributes need to be specified:

Attributes: 🔸Rate, 🔸Threshold

🔸 Rate

Data TypeValues
Decimal>= 0

This attribute specifies the rate to be used to compute the luxury tax.

🔸 Threshold

Data TypeValues
Currency> 0

If the vehicle price exceeds this threshold amount, then luxury tax is computed on the difference between the vehicle price and the threshold amount. If the vehicle price is less than or equal to the threshold amount, then there will be no luxury tax.


🟦 <NonTaxedFees>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This element represents the sum of all financed fees on which tax will not be computed. If specified and greater than zero, then this amount will be added to the principal balance and total vehicle fees amount. If not specified, this amount will default to zero.

Attributes: None


🟥 <Price>

Element TypeData TypeValues
DataCurrency> 0

This element specifies the cost of a vehicle. The dollar amount should be expressed as a number. For example, if a vehicle costs $55,000, then you would include <Price>55000.00</Price> in the XML request.

Attributes: None


🟦 <Rebate>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This element represents a rebate amount given to the customer at time of purchase. If specified and greater than zero, this amount will either be deducted from the price plus tax amount, or may be considered as a separate amount returned to the borrower (see the ApplyToBalance attribute definition below for further information). If not specified, the rebate amount will default to zero. This element has a single possible attribute:

Attributes: 🔹ApplyToBalance

🔹 ApplyToBalance (#rebate.applytobalance)

Data TypeValuesDefault
Booleantrue, false, 1, 0true

If set to true, then the rebate amount specified above is applied o the, balance, l, wering it by the rebate amount. If false, then the rebate does not decrease the balance and is assumed to be given directly to the borrower.


🟦 <ServiceContract>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This element represents the cost of an extended warranty or service contract sold at the time of closing. If specified and greater than zero, this amount will be added to the principal balance and added to the total vehicle fees. If not specified, the service contract amount will default to zero.

Attributes: None


🟦 <Tax>

Element TypeData TypeValuesDefault
DataCurrency>= 00

The Tax element determines how and if sales tax is computed. If a precomputed tax amount is being sent to the SCEX, then the value of this element should contain the tax amount. If this element is not present, then a tax amount of zero will be assumed. The following attributes determine how tax is computed:

Attributes: 🔹Method, 🔸Rate, 🔹RebateReduce

🔹 Method

Data TypeValuesDefault
EnumPromptTax, Price, PriceTrade, PriceTradeLienPromptTax

This attribute determines whether or not the SCEX will accept a precomputed tax amount, or if it needs to compute the tax. PromptTax means that the tax amount has already been computed, and this value is contained in the element. The other three values indicate that tax will be computed by the SCEX, and each specified the base amount on which the tax will be computed.

  • PromptTax - Tax has already been computed as a side-calculation, and is directly entered as input.
  • Price - Base amount is entered vehicle price.
  • PriceTrade - Base amount is entered vehicle price less gross trade value.
  • PriceTradeLien - Base amount is entered vehicle price less gross trade value
    • any lien.

🔸 Rate

Data TypeValues
Decimal> 0

This attribute specifies the rate to be used to compute the tax, should the value of the Method attribute above be anything other than PromptTax.

🔹 RebateReduce

Data TypeValuesDefault
Booleantrue, false, 1, 0true

The value of this attribute determines if any rebate amount specified reduces the amount on which tax is computed. A value of true will reduce the taxable amount by the specified rebate amount, whereas a value of false will not change the taxable amount.


🟦 <TaxedFees>

Element TypeData TypeValuesDefault
DataCurrency>= 00

The value of this element holds the sum of all financed fees which are taxable. If specified and greater than zero, then this amount will be added to the principal balance, price plus tax amount, and total vehicle fees amount. If not specified, this amount will default to zero.

Attributes: None


Auto Prompts - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outAUTO>

Element TypeData Type
Parent-

This is the root element of the XML response, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, as well as any XML messages.

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Results><Proceeds>

Element TypeData TypeValues
DataCurrency>0

The computed number which represents the dollar amount remaining after taking into account the vehicle price, down payment, trade-in, taxes, etc. This value could then be used as the proceeds amount for a loan calculation request.

Attributes: None


🟥 <Auto>

Element TypeData Type
Parent-

This element contains child elements which contain the results of the auto prompts calculation.

Attributes: None


🟥 <Auto><Price>

Element TypeData Type
DataCurrency

The vehicle price, as specified in the request.

Attributes: None


🟦 <Auto><Tax>

Element TypeData TypeDefault
DataCurrency0

If the input requested that tax be computed, this element will contain the tax amount. Note that the two attributes Rate and Method will contain the same values as found in the input XML request.

Attributes: None


🟦 <Auto><LuxTax>

Element TypeData TypeDefault
DataCurrency0

If luxury tax was calculated, then this element will contain the luxury tax amount. Note that the two attributes Rate and Threshold will contain the same values as found in the input XML request.

Attributes: None


🟥 <Auto><PricePlusTax>

Element TypeData Type
DataCurrency

The vehicle price plus all computed taxes.

Attributes: None


🟦 <Auto><CashDown>

Element TypeData TypeDefault
DataCurrency0

If a cash down payment was specified in the XML input request, then this element will hold its value. Otherwise, this element will not be displayed.

Attributes: None


🟦 <Auto><GrossTrade>

Element TypeData TypeDefault
DataCurrency0

If a gross trade-in value was specified in the XML input request, then this element will hold its value. Otherwise, this element will not be displayed.

Attributes: None


🟦 <Auto><Lien>

Element TypeData TypeDefault
DataCurrency0

If a lien amount was specified in the XML input request, then this element will hold its value. Otherwise, this element will not be displayed.

Attributes: None


🟦 <Auto><Rebate>

Element TypeData TypeDefault
DataCurrency0

If a rebate amount was specified in the XML input request, then this element will hold its value. Otherwise, this element will not be displayed. Note that the ApplyToBalance attribute will contain the same value as found in the input XML request.

Attributes: None


🟦 <Auto><TotalDown>

Element TypeData TypeDefault
DataCurrency0

This value of this element represents the total down payment for the vehicle. It is equal to the cash down plus gross trade-in, less the lien amount, and plus any rebate if it is applied to the balance.

Attributes: None


🟦 <Auto><ServiceContract>

Element TypeData TypeDefault
DataCurrency0

If a service contract amount was specified in the XML input request, then this element will hold its value. Otherwise, this element will not be displayed.

Attributes: None


🟦 <Auto><TaxedFees>

Element TypeData TypeDefault
DataCurrency0

If any taxed fees were included in the XML input request, then this element will hold its value. Otherwise, this element will not be displayed.

Attributes: None


🟦 <Auto><NonTaxedFees>

Element TypeData TypeDefault
DataCurrency0

If any non-taxed fees were included in the XML input request, then this element will hold its value. Otherwise, this element will not be displayed.

Attributes: None


🟦 <Auto><TotalVehicleFees>

Element TypeData TypeDefault
DataCurrency0

If present, this element holds the sum of the vehicle service contract, taxable fees, and non-taxable fees. If not present, the total of vehicle fees is zero.

Attributes: None


Dealer Reserve

Banks will sometimes use auto dealers as intermediaries to acquire customers in need of financing. Dealer Reserve refers to an amount given as a commission or payment to a dealer or other indirect loan source as compensation for generating the loan.

Sample Request

The following is a sample request for a dealer reserve calculation:

<inDEALER_RESERVE Account="1" AccrualCode="201" 
    DataDirPath="C:\Work\WinLoan32\compile\"
    Method="DifferenceInRates" PPY="12">
    <LoanDate>2003-06-06</LoanDate>
    <PmtDate>2003-07-06</PmtDate>
    <Term>36</Term>
    <AmtFin>10000.00</AmtFin>
    <Payment>322.67</Payment>
    <Final>322.67</Final>
    <FinChg>0.00</FinChg>
    <ProcFee>25</ProcFee>
    <BuyRate>8.000</BuyRate>
    <NoteRate>10.000</NoteRate>
    <ReservePercent>95.000</ReservePercent>
    <FlatFee>0.0</FlatFee>
</inDEALER_RESERVE>

Sample Response

The following is a sample response generated by the previous sample request:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outACCOUNT SYSTEM "outACCOUNT.dtd" >
<outDEALER_RESERVE>
    <Results>
        <Description>Successful Calculation</Description>
    </Results>
    <GrossReserve>1000.00</GrossReserve>
    <DealerReserve FlatFeeUsed="false">800.00</DealerReserve>
    <BankReserve>200.00</BankReserve>
    <RegZAPR APRCheck="pass">10.021</RegZAPR>
</outDEALER_RESERVE>

Dealer Reserve - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inDEALER_RESERVE>

Element TypeData Type
Parent-

This is the root element of the XML Dealer Reserve message, and is required. This contains child elements which specify the particulars of the requested calculation, as well as calculation results. Many of the attributes for this element are identical in function and name as those defined in the chapter on Equal Payment loans. The following new attributes of the <inDEALER_RESERVE> element are:

Attributes: 🔹Account, 🔹AccrualCode, 🔹DataDirPath, 🔹Method, 🔹PPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 AccrualCode

Data TypeValuesDefault
EnumSee tabledefault

This property allows an accrual method to be used other than the accrual method dictated by the setup file for the given account. If no accrual code attribute is specified, the method defined in the setup file will be used. The Accrual Code Table lists all valid accrual codes available. Note that for the split rate accrual codes (i.e. those above 500), the split rate tiers must be defined in the setup file.

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 Method

Data TypeValuesDefault
EnumRatioOfRates, DifferenceInRates, DifferenceInFinChargesRatioOfRates

This attribute defines how the reserve is to be computed.

  • RatioOfRates - Compute the gross reserve factor as the ratio of the difference between the Note Rate and the Buy Rate to the Note rate: Gross reserve factor = (NoteRate - BuyRate) / NoteRate. If the Finance Charge is entered as data, apply the factor to the Finance Charge. If the Finance Charge is not entered, apply the factor to the computed Finance Charge = (<Term> - 1) * <Payment> + <Final> - <AmtFin>.

  • DifferenceInRates - Compute a loan based on accrual settings using a rate equal to the NoteRate - Buy Rate, and set the Gross Reserve equal to the computed Finance Charge.

  • DifferenceInFinCharges - Compute a loan based on the Buy Rate. If the Finance Charge is entered as data, set the Gross Reserve equal to the entered Finance Charge minus the Finance Charge computed at the Buy Rate. If the Finance Charge is not entered, compute the Finance Charge at the Note Rate as (<Term> - 1) * <Payment> + <Final> - <AmtFin>. Take the difference between this Finance Charge and the Finance Charge at the Buy Rate, and set the Gross Reserve equal this amount.

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.


🟥 <AmtFin>

Element TypeData TypeValues
DataCurrency> 0

The Amount Financed value of the transaction. This amount is assumed to be the amount earning interest (i.e. no prepaid charges).

Attributes: None


🟥 <BuyRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

The rate at which the dealer made his or her purchase (must be less than the <NoteRate>). The buy rate should be expressed as a percentage. For example, a buy rate of 8% would be specified as <BuyRate>8.000</BuyRate>.

Attributes: None


🟦 <Final>

Element TypeData TypeValuesDefault
DataCurrency>= 00

The final payment computed for the customer at the Dealer Rate. If this element is not used, the <Payment> will be used as the final payment. If the <Final> is different from the <Payment>, the loan is considered a balloon loan.

Attributes: None


🟦 <FinChg>

Element TypeData TypeValuesDefault
DataCurrency>= 00

The finance charge computed at the Note Rate. If this element is zero or not used, the Finance Charge is computed as (<Term> - 1) * <Payment> + <Final> - <AmtFin>.

Attributes: None


🟦 <FlatFee>

Element TypeData TypeValuesDefault
DataCurrency>= 00

If a flat fee is used instead of a computed reserve amount, that amount is entered here. In this case, a reserve amount is not computed. This flat fee is registered as the Dealer Reserve in the output.

Attributes: None


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--see attribute defaults

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element contains the date on which interest begins to accrue. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a loan date of June 6, 2003 would be specified as <LoanDate>2003-06-06</LoanDate>.

Attributes: None


🟥 <NoteRate>

Element TypeData TypeValues
DataDecimal`[-99.999...600]

The rate at which the dealer sold the unit. The note rate should be expressed as a percentage. For example, a note rate of 10% would be specified as <NoteRate>10.000</NoteRate>. This rate is assumed to be equal to the Regulation Z APR for purposes of APR verification.

Attributes: None


🟥 <Payment>

Element TypeData TypeValues
DataCurrency> 0

The regular payment computed for the customer at the Dealer Rate.

Attributes: None


🟥 <PmtDate>

Element TypeData TypeValues
DataDate>= <LoanDate>

This element contains the date on which the first payment of the loan is made, and must be on or after the loan date. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a first payment date of July 6, 2003 would be specified as <PmtDate>2003-07-06</PmtDate>.

Attributes: None


🟦 <ProcFee>

Element TypeData TypeValuesDefault
DataCurrency>= 00

If a processing fee is charged (which diminishes the net Dealer Reserve), it should be placed in this element.

Attributes: None


🟥 <ReservePercent>

Element TypeData TypeValues
DataDecimal[0..100]

The distribution of the Gross Reserve between the dealer and the original lender. The reserve percent should be expressed as a percentage. For example, if the dealer should receive 95% of the gross revenue (less any processing fees), then it would be specified as <ReservePercent>95.000</ReservePercent>.

Attributes: None


🟥 <Term>

Element TypeData TypeValues
DataInteger> 0

The term indicates the number of payments to be made at the specified payment frequency, after which the loan is scheduled to be paid off.

Attributes: None


Dealer Reserve - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outDEALER_RESERVE>

Element TypeData Type
Parent-

This is the root element of the XML response, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, as well as any XML messages.

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <GrossReserve>

Element TypeData Type
DataCurrency

The Gross Dealer Reserve is returned in this element. This reserve represents the total reserve before being distributed between the bank and the dealer.

Attributes: None


🟥 <DealerReserve>

Element TypeData Type
DataCurrency

The portion of the gross reserve dedicated to the dealer is reported in this element. The calculation is as follows: Dealer Reserve = GrossReserve * ReservePercent - ProcFee.

Attributes: 🔸FlatFeeUsed

🔸 FlatFeeUsed

Data TypeValues
Booleantrue, false

This attribute of the Dealer Reserve element informs the calling application if the disclosed Dealer Reserve is the result of a calculation (false or 0) or a flat fee passed as input (true or 1).


🟥 <BankReserve>

Element TypeData Type
DataCurrency

This element discloses the amount of the Gross Reserve owed to the Bank.

Attributes: None


🟥 <RegZAPR>

Element TypeData Type
DataDecimal

The computed Regulation Z APR of the original loan made to the borrower.

Attributes: 🔸APRCheck

🔸 APRCheck

Data TypeValues
Enumpass, fail, untested

If the APR entered during input (see <NoteRate>) is within compliance of Regulation Z, this attribute value will be set to pass; otherwise, fail will be reported. If an error was reported during the calculation and the data was not adequate to make the test, untested will be reported.


Open End Lending

An open end loan (also known as a line of credit) is a type of credit arrangement issued by a financial institution which offers an individual immediate access to a predetermined amount of cash upon demand without having to apply for a loan. Each month, a periodic disclosure is provided, which usually contains a minimum payment which is computed based upon the amount of funds drawn from the credit line (the balance) at the time of the calculation. As with closed end loans, protection products may be included with the calculation.

Sample Request

The following is a sample XML request for an open end loan calculation:

<inOpenEnd Account="2" BCPY="12" UseMAPR="true">
    <BeginDate>2001-01-01</BeginDate>
    <TimeToPmt TimeUnits="Days">30</TimeToPmt>
    <Balance>1000</Balance>
    <IntRate AccrualCode="220">9.000</IntRate>
    <Payment FloorPmt="0" PmtType="IntOnly">0</Payment>
    <Fee Name="ProcFee" Entry="5" AddToFinChg="true" MAPR="true" />
    <Protection ShowCaps="false">
        <Life Covers="both" />
        <Dis Plan="0" Covers="borrower1" />
        <Birthday1>1966-01-01</Birthday1>
        <Birthday2>1966-04-01</Birthday2>
    </Protection>
</inOpenEnd>

Sample Response

The following is a sample XML result generated by the previous sample request:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outOpenEnd SYSTEM "outOpenEnd.dtd" >
<outOpenEnd>
    <Results>
        <Description>Successful Calculation</Description>
    </Results>
    <RegZAPR FinChg="32.40">38.880</RegZAPR>
    <MAPR FinChg="34.70" Max="36.000" MaxExceeded="true">41.640</MAPR>
    <FinChgFees>25.00</FinChgFees>
    <MAPRFees>27.30</MAPRFees>
    <Fee Name="ProcFee">25.00</Fee>
    <PaymentInfo>
        <Interest Method="Actual/365 Simple">7.40</Interest>
        <PrinReduction>0.00</PrinReduction>
        <TotProtection PerDay="0.08">2.30</TotProtection>
        <Payment Warning="None" Days="30" Date="2001-01-31">9.70</Payment>
        <Payoff>1009.70</Payoff>
    </PaymentInfo>
    <ProtectionInfo Age="35" Product="Life">
        <CalcResult>Valid Calculation</CalcResult>
        <Cost Premium="1.50" PerDay="0.05" Factor="1.500"/>
        <Coverage Amount="1000.00" Note="Full protection"/>
    </ProtectionInfo>
    <ProtectionInfo Age="35" Product="Disability">
        <CalcResult>Valid Calculation</CalcResult>
        <Cost Premium="0.80" PerDay="0.03" Factor="0.800"/>
        <Benefit Amount="9.70" Note="Full protection"/>
    </ProtectionInfo>
</outOpenEnd>

Open End Lending - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inOpenEnd>

Element TypeData Type
Parent-

This is the root element of the XML open end query input message, and is required. This contains child elements which specify the particulars of the requested calculation. The following attributes of the <inOpenEnd> element are defined:

Attributes: 🔹Account 🔹APRDec 🔹BCPY 🔹DataDirPath 🔹MAPR_Max 🔹UseMAPR

🔹 Account (1..9999)

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should be used to compute the requested open end loan. Each account is numbered from 1 to 9,999, and each account corresponds to a set of setup files which define numerous settings which may affect the open end calculation, such as insurance rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 APRDec

Data TypeValuesDefault
Integer[1...5]3

The number of decimal places of accuracy for the disclosed APR is determined by this attribute. The default value of this attribute is three (3). Note that for the APR to be computed and disclosed, the BCPY attribute (see below) must be specified.

🔹 BCPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 52, 365, annual, semiannual, quarterly, bi-monthly, monthly, semimonthly, biweekly, weekly, daily, nonenone

The value of this attribute specifies the number of billing cycles per year, and is required to compute the effective annual percentage rate (APR) and MAPR. To remain backwards compatible with previous versions of the SCEX, this attribute is optional. If left unspecified, the value of BCPY is undetermined and the APR and MAPR will not be computed nor disclosed.

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 MAPR_Max

Element TypeData TypeValuesDefault
DataDecimal>= 036

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 attribute.

🔹 UseMAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this attribute is set to a value of true or 1, then the SCEX will compute the Military APR in addition to the Regulation Z effective APR. The <MAPR> element will be included in the XML loan response. Note that for the MAPR to be computed and disclosed, the BCPY attribute (see above) must be specified.


🟥 <BeginDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element contains the date on which interest begins accruing for the scheduled payment. As an example, assuming that interest should begin accruing on March 15, 2009, then we would pass in a begin date of <BeginDate>2009-03-15</BeginDate>.

Attributes: None


🟦 <Balance>

Element TypeData TypeValuesDefault
DataDecimal>=00

Contains the outstanding principal balance of the open end loan, on which interest will be accrued. If the <Balance> is not specified, then the <Limit> must be specified.

Attributes: None


🟦 <Fee>[]

Element TypeData TypeValuesDefault
Empty--No fee

The <Fee> element itself contains no data. Instead, all of the information used to compute the fee is contained in the following attributes of the element:

Attributes: 🔹AddToFinChg, 🔸Entry, 🔹MAPR, 🔹Name

🔹 AddToFinChg

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If this fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), then set this attribute to true. The default value of false indicates that the fee does not affect the Finance Charge nor APR.

🔸 Entry

Data TypeValues
Currency>= 0

The fee amount, expressed in dollars and cents.

🔹 MAPR

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute 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 attribute.

Note that debt protection products are automatically included in the calculation of the Military APR.

🔹 Name

Data TypeValuesDefault
Textanyempty

This attribute is for convenience purposes only, and does not affect the calculation of the fee in any manner. If a Name attribute is specified for the <Fee> element, then the corresponding <Fee> element in the XML output will have a Name attribute with the same value. This allows you to easily differentiate fees in the output XML.


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal>=0

The rate at which interest will accrue on the outstanding principal balance.

Attributes: 🔹AccrualCode

🔹 AccrualCode

Data TypeValuesDefault
EnumSee table Below220

This attribute allows the calling application to specify an accrual method for use during the open end calculation. If no accrual code attribute is specified, then a value of 220 is assumed. Please reference the table below for a description of the numeric accrual codes.

Accrual CodeDescription
201Unit period simple w/ 360 day divisor
202Unit period simple w/ 365 day divisor
204Unit period simple w/ true 360 calendar and 360 day divisor.
205Unit period simple w/ true 360 calendar and 365 day divisor.
210Actual / 360 simple
220Actual / 365 simple
230Actual / Actual simple
231Actual / Actual simple w/ day count starting at midnight.

🟦 <Limit>

Element TypeData TypeValuesDefault
DataDecimal>= 00

The maximum amount that can be drawn from the credit line. One must specify either the <Limit> or the <Balance>.

Attributes: 🔸PercentForBal

🔸 PercentForBal

Data TypeValues
Decimal>= 0

This attribute is mandatory when using the <Limit> element. It represents the estimated percentage of the total line of credit that the customer will use, and hence is used to compute the monthly cost.

As an example, <Limit PercentForBal="42.0">100000</Limit> is exactly equivalent to passing <Balance>42000</Balance>.


🟦 <Payment>

Element TypeData TypeValuesDefault
Empty---

Currently, the element value is not used. It may be used in the future, however.

Attributes: 🔹PmtType, 🔹FloorPmt, 🔹Lastday, 🔹PayoffPercent

🔹 PmtType

Data TypeValuesDefault
EnumSee table BelowPrinPlusInt

This attribute allows the calling application to specify the method used for computing the minimum payment. If no payment type attribute is specified, then the PrinPlusInt method is used by default.

Payment TypeDescription
EqualPmtCompute the loan as if it were a standard equal payment installment loan. This method requires the <Term> element.
IntOnlyThe minimum payment includes only interest and protection, with no principal reduction.
PrinPlusIntThe minimum payment includes interest, protection, and a principal reduction amount equal to Balance/Term. This method requires the <Term> element.
PercentToPayoffThe minimum payment is computed as a percentage of the principal plus interest. Protection is added to this calculated amount.
PercentToBalanceThe minimum payment is computed as a percentage of the balance, plus interest due. Protection is added to this calculated amount.

🔹 FloorPmt

Data TypeValuesDefault
Decimal>= 00

If the value of this attribute is greater than zero, and if the computed payment falls below this value, then the returned payment will be set equal to this floor payment amount.

🔹 Lastday

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute defines the ‘Last Day’ setting for loans computed with an actual day 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 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.

🔹 PayoffPercent

Element TypeData TypeValuesDefault
DataDecimal>= 00

If PmtType is equal to PercentToPayoff or PercentToBalance, then this attribute is required, and must hold the percent used to calculate the principal and interest payment.

As an example: suppose that the balance is $10,000, interest is calculated as $83.33, and that the value of PercentToPayoff is 3.000%, then the principal and interest payment is 3% of $10,083.33, or $302.50 (payments are rounded to the nearest penny).


🟦 <Protection>

Element TypeData Type
Parent-

The <Protection> element is used to specify debt protection coverages such as life, disability, and job loss. Each type of coverage is specified by its own subelement, along with the borrower birthdays.

Attributes: 🔹ShowCaps

🔹 ShowCaps

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute to true. Otherwise, leave this attribute unspecified or set it to false. See the <Caps> element defined in the output section for more information.


🟦 <Protection><Birthday1>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element contains 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</Birthday1>. Note that this element must be set if the Covers attribute of any of the two debt coverage elements is set to borrower1 or both.

Attributes: None


🟦 <Protection><Birthday2>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element contains the date of birth of the secondary borrower. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a birthday of May 21, 1969 would be specified as <Birthday2>1969-05-21</Birthday2>. Note that this element must be set if the Covers attribute of any of the two debt coverage elements is set to both.

Attributes: None


🟦 <Protection><Dis>

Element TypeData Type
Empty-

The <Dis> element determines what type of disability coverage is desired. The element itself is empty, with all information needed for disability coverage request being specified in the following attribute:

Attributes: 🔹Covers 🔹Plan

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute determines what type of disability coverage is being requested. The values borrower1 and borrower2 represent single coverage on either the primary or secondary borrower respectively. A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none.

🔹 Plan

Data TypeValuesDefault
Integer[0...19*]0

If the specified account has been set up with multiple disability or debt cancellation plans, then this attribute determines which plan number will be used. If no plan number is specified, the first plan (plan zero) will be used. To find out the number of available plans, use the <AHSetCount> element returned from an <inINPUT_TOOL> query.


🟦 <Protection><Job>

Element TypeData Type
Empty-

The <Job> element determines what type of job loss coverage is requested for the open end loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attribute:

Attributes: 🔹Covers

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute determines what type of job loss coverage is being requested. The values borrower1 and borrower2 represent single coverage on either the primary or secondary borrower respectively. A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none.


🟦 <Protection><Lif>

Element TypeData Type
Empty-

The <Lif> element determines what type of life coverage is requested for the open end loan. The element itself is empty, with all information needed for a life coverage request being specified in the following attribute:

Attributes: 🔹Covers

🔹 Covers

Data TypeValuesDefault
Enumborrower1, borrower2, both, noneborrower1

This attribute determines what type of life coverage is being requested. The values borrower1 and borrower2 represent single coverage on either the primary or secondary borrower respectively. A request for joint coverage on both borrowers is indicated by a value of both. Finally, if no coverage is desired, specify a value of none.


🟦 <Term>

Element TypeData TypeValues
DataInteger>0

Sometimes, the minimum monthly payment is computed as if the loan were a closed end loan of a specific term. Enter that term if your open end lending uses a PmtType of EqualPmt or PrinPlusInt. If the PmtType attribute is not one of these two values, then this element may be omitted.

Attributes: None


🟥 <TimeToPmt>

Element TypeData TypeValues
DataInteger>= 0

The numeric, unitless quantity representing the time from the <BeginDate> to the payment. In our sample above, the <TimeToPmt> element holds a value of 1, indicating that time between the <BeginDate> and the date on which the payment is due is one unit of time (see TimeUnits attribute below).

Attributes: 🔹TimeUnits

🔹 TimeUnits

Data TypeValuesDefault
EnumDays, Months, DateMonths

The units associated with the parent element. In the example above, the unit of time is Months. For the following examples, assume a <BeginDate> of 2009-03-01:

<TimeToPmt TimeUnits="Date">2009-04-01</TimeToPmt>

Indicates that the payment date is on April 1, 2009.

<TimeToPmt TimeUnits="Months">1</TimeToPmt>

Also indicates that the payment date is on April 1, 2009.

<TimeToPmt TimeUnits="Days">31</TimeToPmt>

Also indicates that the payment date is on April 1, 2009.

Note that when using the Days value, the actual number of days will be used to compute the payment date.


Open End Lending - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outOpenEnd>

Element TypeData Type
Parent-

This is the root element of the XML open end query result message, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟥 <Results>

Element TypeData Type
Parent-

This element contains child elements which describe the success or failure of the calculation, as well as any XML messages.

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <Results><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

In our sample output above, no warnings are returned by the SCEX, and hence there are no <XMLDetail> elements returned.

Attributes: None


🟦 <RegZAPR>

Element TypeData TypeDefault
DataDecimaln/a

The computed effective annual percentage rate (APR). The SCEX will return this element if the number of billing cycles per year (see BCPY) has been specified, and is greater than zero.

Attributes: 🔸FinChg

🔸 FinChg

Data TypeValues
Decimal>= 0

The computed finance charge used in the calculation of the effective APR. This is the sum of the interest charge and all finance charge affecting fees.


🟦 <MAPR>

Element TypeData TypeDefault
DataDecimaln/a

If the military APR has been requested (see UseMAPR) and a valid number of billing cycles per year (see BCPY) has been specified, then this element will be included in the output. The value of the element is the military APR, and the element has the following attributes:

Attributes: 🔸FinChg, 🔸Max, 🔸MaxExceeded

🔸 FinChg

Data Type
Decimal

The computed "military finance charge", used in the calculation of the MAPR. This is the sum of the interest charge, all finance charge affecting fees, all MAPR affecting fees, and all protection premiums/fees.

🔸 Max

Data Type
Decimal

This attribute specifies the maximum Military APR as specified in the input XML (see MAPR_Max. The value of this attribute should be displayed as a percentage. As an example, for Max="36.000", you would disclose a maximum Military APR of 36%.

🔸 MaxExceeded

Data TypeValues
Booleantrue, false

The value of this attribute 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 open-end loan was 37.125%, the <MAPR> element would be:

<MAPR FinChg="375.00" Max="36.000" MaxExceeded="true">37.125</MAPR>.


🟦 <FinChgFees>

Element TypeData TypeDefault
DataCurrency0

The value of this element contains the sum of all fees which affect the Finance Charge. This element will only be present in the output if the value is greater than zero.

Attributes: None


🟦 <MAPRFees>

Element TypeData TypeDefault
DataCurrency0

The value of this element contains the sum of all fees which affect the Military APR. This element will only be present in the output if the value is greater than zero, and the Military APR has been disclosed.

Attributes: None


🟦 <PocketFees>

Element TypeData TypeDefault
DataCurrency0

This element holds the sum of all fees which do not affect the finance charge. If no out of pocket fees were requested, then this element will not show up in the XML output.

Attributes: None


🟦 <Fee>[]

Element TypeData TypeDefault
DataCurrency0

For each non-zero fee requested in the loan calculation, there will be a <Fee> element containing the computed fee amount.

Attributes: 🔸Name

🔸 Name

Data Type
Text

Contains the value of the Name attribute of the corresponding <Fee> element from the XML request. If no such attribute is present in the request element, then none will be present in the response element.


🟦 <PaymentInfo>

Element TypeData Type
Parent-

This element groups together payment result amounts, such as the amount to principal, interest, protection, and total payment.

Attributes: None


🟦 <PaymentInfo><Balance>

Element TypeData TypeDefault
DataCurrency0

This element contains the computed balance, and only appears when the <Limit> element is present in the input XML query.

Attributes: None


🟥 <PaymentInfo><Interest>

Element TypeData Type
DataCurrency

This element contains the total interest accrued during the payment period, assuming the borrower makes the scheduled payment on time.

Attributes: 🔸Method

🔸 Method

Data Type
Text

The Method attribute contains a textual description of the interest accrual method.


🟥 <PaymentInfo><PrinReduction>

Element TypeData Type
DataCurrency

The amount of the payment which reduces the principal balance.

Attributes: None


🟥 <PaymentInfo><TotProtection>

Element TypeData Type
DataCurrency

Contains the total cost of all protection plans included with the computed loan. For the individual plan costs, see the <ProtectionInfo> elements described below.

Attributes: 🔸PerDay

🔸 PerDay

Data TypeValues
Decimal>= 0

Contains the cost of all loan protection products expressed as dollars per day.


🟥 <PaymentInfo><Payment>

Element TypeData Type
DataCurrency

This element holds the total computed payment, which includes the <Interest> and <TotProtection> element values.

Attributes: 🔸Date, 🔸Days, 🔸Warning

🔸 Date

Data TypeValues
DateYYYY-MM-DD

Holds the date on which the payment is scheduled. All dates are in the form of YYYY-MM-DD, and must be 10 characters long. Hence, a payment date of April 15, 2009 would be disclosed as Date="2009-04-15".

🔸 Days

Data TypeValues
Integer>=0

Returns the number of days used in the calculation of interest. Note that this value not be the actual number of days between the begin date and payment date for accrual codes 204 and 205.

🔸 Warning

Data TypeValues
EnumNone, FloorPmt, NegativeAm

Any special conditions encountered while computing the payment will be reported in this attribute. A value of None indicates that no special conditions were triggered. The FloorPmt value means that the calculated payment was less than the specified floor payment (see the FloorPmt attribute of the <Payment>). A value of NegativeAm indicates that the computed payment is less than the accrued interest.


🟥 <PaymentInfo><Payoff>

Element TypeData Type
DataCurrency

The maximum payment (which will pay off the open end loan if paid on schedule) is contained within this element. Note that this payment includes the <Interest> and <TotProtection> element values.

Attributes: None


🟦 <ProtectionInfo>[]

Element TypeData Type
Empty-

These elements (there may be more than one if more than one type of protection was requested) contain information related to the various protection products requested on the open end loan. Each element provides information for one of the protection products (life, disability, or job loss) in its attributes or child elements.

Attributes: 🔹Age, 🔸Product,

🔹 Age

Data TypeValues
Integer>= 18

This attribute contains the age used to compute the protection fee. If age is not taken into consideration when computing the protection fee, then this attribute will not appear.

🔸 Product

Data TypeValues
EnumLife, Disability, JobLoss

This attribute informs the calling application to which type of protection product this element refers: life, disability, or job loss.


🟥 <ProtectionInfo><CalcResult>

Element TypeData Type
DataText

This element 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 child elements of <ProtectionInfo> 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 child elements of <ProtectionInfo>, as the product was not computed.

Attributes: None


🟥 <ProtectionInfo><Cost>

Element TypeData Type
DataCurrency

Attributes of this empty element provide the cost of the protection product in total.

Attributes: 🔸Factor, 🔸PerDay, 🔸Premium

🔸 Premium

Data Type
Currency

The total cost for this protection.

🔸 PerDay

Data Type
Currency

The daily cost of protection, expressed in dollars.

🔸 Factor

Data Type
Decimal

The rate factor stored in the setup file used to compute the fee for the requested protection product is contained in this attribute.


🟥 <ProtectionInfo><Coverage>

Element TypeData Type
Empty-

The aggregate coverage amount is provided in the following attribute of this empty element:

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data TypeValues
Currency> 0

Attribute which contains the aggregate coverage amount for this protection product. In the example open end output, the life coverage amount is returned as Amount="10000.00".

🔸 Note

Data TypeValues
TextAny

This Note will describe the type of protection provided. If full coverage has been provided, then the note will contain Full Coverage. Otherwise, the note will describe the type of partial coverage used. In our example open end calculation, life, disability, and job loss products did not encounter a cap, hence producing the following output: Note="Full Coverage".


🟦 <ProtectionInfo><Benefit>

Element TypeData Type
Empty-

This empty element will only show up for the disability and job loss products. The attributes of this element which contain benefit information are:

Attributes: 🔸Amount, 🔸Note

🔸 Amount

Data TypeValues
Currency> 0

Attribute which contains the benefit amount for this protection product. In the example loan output, the disability benefit amount is returned as Amount="750.00".

🔸 Note

Data TypeValues
TextAny

This attribute will describe the type of protection 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. In our example open end calculation, the disability benefit was capped at $750, producing the following output: Note="Partial Benefit of $750".


🟦 <ProtectionInfo><Caps>

Element TypeData Type
Empty-

This empty element provides the calling application with data about the maximum terms, amounts, and ages associated with the requested product. This element will only be present if the ShowCaps attribute of the <Protection> element is set to true.

Attributes: 🔸Ben, 🔸Cov, 🔸InceptAge

🔸 Ben

Data TypeValues
Currency> 0

Contains the maximum monthly benefit amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 Cov

Data TypeValues
Currency> 0

Contains the maximum aggregate coverage amount, expressed in dollars. If no cap is present or applicable, then a value of zero is returned.

🔸 InceptAge

Data TypeValues
Integer>= 18

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.


Refunds

Single premium insurance products are computed up front, and the premiums computed are usually added to the principal balance and hence are financed along with the amount the borrower has requested. These premiums are calculated with the assumption that the loan will be paid off as scheduled. If a loan is paid off early, then the borrower is often due a refund of the pre-computed premiums (hereafter, simply called a refund).

This module allows the calling application to compute the refund amounts for credit life, disability, involuntary unemployment, and personal property insurances. Refund calculations depend on setup file settings that are stored in the refund setup file (ref####.ini), where #### is a four-digit number from 0000 to 9999. Proper configuration of the refund setup file is necessary to produce expected results.

Sample Request

The following is a sample SCEX request for a refund calculation, where the original equal payment loan was originated on June 6, 2015 with a first payment date of July 1, 2015. The loan term was scheduled for 60 months, with a maturity date of June 1, 2020. Single credit life and disability were written on the loan, with premium amounts of $355.06 for life and $411.34 for disability. The computed equal payment was $228.52. Assuming that the borrower pays off the loan on the date of the 36th payment (June 1, 2018), the refund XML request would look as follows:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE inREFUND SYSTEM "inREFUND.dtd">
<inREFUND Account="1" DataDirPath="C:\SCEX\" LoanType="equal" PPY="monthly">
  <LoanDate>2015-06-06</LoanDate>
  <RefundDate>2018-06-01</RefundDate>
  <PmtDate>2015-07-01</PmtDate>
  <IntRate>10.000</IntRate>
  <Term>60</Term>
  <Payment>228.52</Payment>
  <Balloon>228.52</Balloon>
  <CL Premium="355.06" ScheduledPmts="60" PremiumMethod="net" CoverageType="single" />
  <AH Premium="411.34" ScheduledPmts="60" CoverageType="single" Plan="0" />
</inREFUND>

Sample Response

The following is a sample response generated by the previous sample request:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outREFUND SYSTEM "outREFUND.dtd">
<outREFUND>
  <CalcResult Code="0">Successful Calculation</CalcResult>
  <TotalRefund>306.56</TotalRefund>
  <CLRefund RemainingPmts="24">142.02</CLRefund>
  <AHRefund RemainingPmts="24">164.54</AHRefund>
</outREFUND>

Refunds - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inREFUND>

Element TypeData Type
Parent-

This is the root element of the XML refund request and is required. This contains child elements which specify the particulars of the requested refund. The following attributes of the <inREFUND> element are defined:

Attributes: 🔹Account, 🔹DataDirPath, 🔹ForceReload, 🔹LoanType, 🔹PPY

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should 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 files which define numerous settings which may affect the loan calculation, such as the accrual method, insurance methods and rates, etc. If this attribute is not specified, a default value of 1 will be used.

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 LoanType

Data TypeValuesDefault
Enumequal, balloon, spn, intonly, prinplus, irregequal

Different types of loans may require different refund calculations, depending upon the configured refund method for a given insurance type. If this attribute is not specified a value of equal will be assumed.

The allowed values of this attribute and their meanings are described in the table below:

Loan TypeDescription
equalEqual payment loan
balloonBalloon payment loan
spnSingle payment note
intonlyInterest only loan
prinplusFixed principal reduction loan, with optional interest only payments
irregIrregular payment loan with optional skipped payments

🔹 PPY

Data TypeValuesDefault
EnumSee belowmonthly

PPY is an abbreviation for payments per year, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month*
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.


🟦 <AH>

Element TypeData Type
Empty-

If single premium disability was written on the original loan, then this element should be present to provide the necessary information to compute a disability refund. The element itself is empty, with all required data associated with the computed disability product specified using the following attributes of this element.

Attributes: 🔹CoverageType, 🔹Plan, 🔹Premium, 🔹ScheduledPmts

🔹 CoverageType

Data TypeValuesDefault
Enumsingle, jointsingle

The value of this attribute specifies whether the original decreasing life premium covered one or two borrowers.

🔹 Plan

Data TypeValuesDefault
Integer[0..19]0

If the specified account has been set up with multiple disability plans, then this attribute determines which plan number will be used. If no plan number is specified, the first plan (plan zero) will be used. To find out the number of available plans, use the <AHSetCount> element returned from an <inINPUT_TOOL> query.

🔹 Premium

Data TypeValuesDefault
Currency>= 00

The value of this attribute specifies the original decreasing life premium quoted with the original loan. If this attribute is not specified, a default value of zero (0) will be assumed, and no refund computed.

🔹 ScheduledPmts

Data TypeValuesDefault
Integer>= 00

Specify the original decreasing life term of coverage (in months) as the value of this attribute. If a decreasing life premium greater than zero is specified, then this attribute is also required, and no refund computed.


🟦 <AmortTerm>

Element TypeData TypeValuesDefault
DataInteger>= 00

To compute refunds for certain TruStage insurance products (specifically, those using refund formulas 7 and 8), the desired amortization term of the original loan is required.

Attributes: None


🟥 <Balloon>

Element TypeData TypeValues
DataCurrency> 0

This value of this element is the final payment of the original loan. If the final payment is the same value as the regular payment (see above), then simply specify the same value for this element as well.

Attributes: None


🟦 <CL>

Element TypeData Type
Empty-

If single premium decreasing credit life was written on the original loan, then this element should be present to provide the necessary information to compute a decreasing life refund. The element itself is empty, with all required data associated with the computed decreasing life product specified using the following attributes of this element.

Attributes: 🔹CoverageType 🔹Premium, 🔹PremiumMethod, 🔹ScheduledPmts,

🔹 CoverageType

Data TypeValuesDefault
Enumsingle, jointsingle

The value of this attribute specifies whether the original decreasing life premium covered one or two borrowers.

🔹 Premium

Data TypeValuesDefault
Currency>= 00

The value of this attribute specifies the original decreasing life premium quoted with the original loan. If this attribute is not specified, a default value of zero (0) will be assumed, and no refund computed.

🔹 PremiumMethod

Data TypeValuesDefault
Enumgross, netgross

If the specified Account has been configured to offer the option of net or gross coverage written on the original loan, then the value of this attribute should specify the type of coverage written on the original loan. If the specified Account allows for only one type of decreasing life coverage, then this attribute may be omitted.

🔹 ScheduledPmts

Data TypeValuesDefault
Integer>= 00

Specify the original decreasing life term of coverage (in months) as the value of this attribute. If a decreasing life premium greater than zero is specified, then this attribute is also required, and no refund computed.


🟦 <IntRate>

Element TypeData TypeValuesDefault
DataDecimal[-99.999...600]0

This element specifies the interest rate used in the calculation of the original loan. The interest rate is not always required, as some refund calculations ignore the original interest rate. However, since some refund calculations do require the interest rate, we recommend that you always include it with the XML input. The interest rate should be expressed as a percentage. For example, a loan computed with a rate of 6.125% would be specified as <IntRate>6.125</IntRate>.

Attributes: None


🟦 <IU>

Element TypeData Type
Empty-

If single premium involuntary unemployment was written on the original loan, then this element should be present to provide the necessary information to compute an involuntary unemployment refund. The element itself is empty, with all required data associated with the computed involuntary unemployment product specified using the following attributes of this element.

Attributes: 🔹Premium, 🔹ScheduledPmts

🔹 Premium

Data TypeValuesDefault
Currency>= 00

The value of this attribute specifies the original decreasing life premium quoted with the original loan. If this attribute is not specified, a default value of zero (0) will be assumed, and no refund computed.

🔹 ScheduledPmts

Data TypeValuesDefault
Integer>= 00

Specify the original decreasing life term of coverage (in months) as the value of this attribute. If a decreasing life premium greater than zero is specified, then this attribute is also required, and no refund computed.


🟦 <LL>

Element TypeData Type
Empty-

If single premium level credit life was written on the original loan, then this element should be present to provide the necessary information to compute a level life refund. The element itself is empty, with all required data associated with the computed level life product specified using the following attributes of this element.

Attributes: 🔹Premium

🔹 Premium

Data TypeValuesDefault
Currency>=00

The value of this attribute specifies the original level life premium quoted with the original loan. If this attribute is not specified, a default value of zero (0) will be assumed, and no refund computed.


🟥 <LoanDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element contains the date on which the original loan amount was disbursed. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. A loan date of June 6, 2015 would be specified as <LoanDate>2015-06-06</LoanDate>.

Attributes: None


🟥 <Payment>

Element TypeData TypeValues
DataCurrency> 0

This element should hold the computed regular payment of the original loan.

Attributes: None


🟦 <PmtDate>

Element TypeData TypeValuesDefault
DataDate>= <LoanDate>0

If the original loan was a single payment note (i.e. LoanType = "spn"), then the payment date of the single payment is required. For all other loan types, this element will be ignored. All dates must be in the form of YYYY-MM-DD, and be 10 characters long.

Attributes: None


🟦 <PP>

Element TypeData Type
Empty-

If single premium personal property was written on the original loan, then this element should be present to provide the necessary information to compute a personal property refund. The element itself is empty, with all required data associated with the computed personal property product specified using the following attributes of this element.

Attributes: 🔹Premium, 🔹ScheduledPmts

🔹 Premium

Data TypeValuesDefault
Currency>= 00

The value of this attribute specifies the original decreasing life premium quoted with the original loan. If this attribute is not specified, a default value of zero (0) will be assumed, and no refund computed.

🔹 ScheduledPmts

Data TypeValuesDefault
Integer>=00

Specify the original decreasing life term of coverage (in months) as the value of this attribute. If a decreasing life premium greater than zero is specified, then this attribute is also required, and no refund computed.


🟥 <RefundDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

The value of this element contains the date on which the refund is to be computed. All dates must be in the form of YYYY-MM-DD, and be 10 characters long.

Attributes: None


🟥 <Term>

Element TypeData TypeValues
DataInteger> 0

The term indicates the number of payments that were originally scheduled to be made when the loan was written.

Attributes: None


Refunds - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outREFUND>

Element TypeData Type
Parent-

This is the root element of the XML refund query input message and is required. This contains child elements which specify the particulars of the requested refund. The following attributes of the <inREFUND> element are defined:

Attributes: None


🟥 <CalcResult>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation, and the Code attribute will hold a value of zero (0).

Otherwise, this element will contain a description of the problem encountered during the attempted computation. Please consult the attributes of this element for further information.

Attributes: 🔹Attribute, 🔸Code, 🔹Element, 🔹Mode

🔹 Attribute

Data TypeDefault
Textn/a

This attribute will be present only when the calculation was not completed successfully (i.e., the value of the Code attribute is a value other than zero (0)).

🔸 Code

Data TypeValues
Integer[0..31]

A value of zero (0) indicates a successful calculation, and the Mode, Element, and Attribute attributes will not be present. A value greater than zero indicates an error condition. Please consult Table 27.2 for the allowed values of this attribute and their meanings. Also, the Mode, Element, and Attribute attributes may hold useful information for tracking down the issue.

CodeDescription
0Refund calculation computed successfully.
1Unexpected system error.
2Unexpected SCEX error.
3XML input validation against the DTD has failed, XML input is invalid.
4Invalid payments per year specified.
5Scheduled number of payments must be greater than zero (0).
6Scheduled number of payments cannot be greater than the loan term.
7Specified attribute is not in the list of valid attributes for this element.
8Unknown coverage type specified.
9Unknown premium method specified.
10Invalid loan type specified.
11Invalid formula type specified.
12Payment date is before loan date.
13Refund date is before loan date.
14Term must be greater than zero (0).
15Amortization term must be greater than zero (0).
16Amortization term must be greater than or equal to term.
17Payment must be greater than zero (0).
18Balloon must be greater than or equal to zero (0).
19Premium cannot be less than zero (0).
20Coverage must be greater than zero (0).
21AH plan must be greater than or equal to one (1).
22Unknown element specified.
23Unknown attribute specified.
24All premiums are zero (0) - no refunds computed.
25Cannot load CL setup file.
26Cannot load AH setup file.
27Cannot load refund setup file.
28Zero (0) denominator in CL_CUNA_NonBalloon() routine.
29AH rule of anticipation - original term in months is zero (0).
30AH rule of anticipation - rate at original term is zero (0).
31Rule of anticipation method is not allowed for this product.

🔹 Element

Data TypeDefault
Textn/a

This attribute will be present only when the calculation was not completed successfully (i.e., the value of the Code attribute is a value other than zero (0)) and the value of the Mode attribute is ParseInput. If present, the value of this attribute informs the calling application the element of the XML input in which the XML parsing error occurred.

🔹 Mode

Data TypeValuesDefault
EnumParseInput, Calculate, LoadOutputParseInput

If the calculation was not completed successfully (i.e., the value of the Code attribute is a value other than zero (0)), then this attribute will be present. The value of this attribute informs the calling application the general area during which the error was encountered. The potential values for this attribute are:

  • ParseInput - Error encountered while parsing the XML input. The Element attribute will be present indicating the element in which the error occurred. The Attribute attribute also may be present, if the input parsing error relates to an attribute specified in the input XML.

  • Calculate - Error encountered while attempting to compute the refund. The Element and Attribute attributes will not be present.

  • LoadOutput — Error encountered while attempting to build and return the XML output. The Element and Attribute attributes will not be present.


🟦 <XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <TotalRefund>

Element TypeData Type
DataCurrency

The value of this element is the computed decreasing credit life refund due to the borrower. This element will only be returned if the specified decreasing credit life premium is greater than zero.

Attributes: 🔸RemainingPmts

🔸 RemainingPmts

Data Type
Integer

The value of this attribute is the computed term of coverage beyond the specified refund date, and is used in the computation of the refund amount.


🟦 <CLRefund>

Element TypeData TypeDefault
DataCurrency0

The value of this element is the computed decreasing credit life refund due to the borrower. This element will only be returned if the specified decreasing credit life premium is greater than zero.

Attributes: 🔸RemainingPmts

🔸 RemainingPmts

Data Type
Integer

The value of this attribute is the computed term of coverage beyond the specified refund date, and is used in the computation of the refund amount.


<LLRefund>

Element TypeData TypeDefault
DataCurrency0

The value of this element is the computed level credit life refund due to the borrower. This element will only be returned if the specified level credit life premium is greater than zero.

Attributes: 🔸RemainingPmts 🔸RemainingPmts

🔹 Remaining

Data TypeDefault
Integer0

With single payment notes calibrated in days, the "Remaining" number of days of coverage after refund are reported in this attribute.

🔹 RemainingPmts

Data TypeDefault
Integer0

The value of this attribute is the computed term of coverage beyond the specified refund date, and is used in the computation of the refund amount.


🟦 <AHRefund>

Element TypeData TypeDefault
DataCurrency0

The value of this element is the computed disability refund due to the borrower. This element will only be returned if the specified disability premium is greater than zero.

Attributes: 🔸RemainingPmts

🔸 RemainingPmts

Data Type
Integer

The value of this attribute is the computed term of coverage beyond the specified refund date, and is used in the computation of the refund amount.


🟦 <IURefund>

Element TypeData TypeDefault
DataCurrency0

The value of this element is the computed involuntary unemployment refund due to the borrower. This element will only be returned if the specified involuntary unemployment premium is greater than zero.

Attributes: 🔸RemainingPmts

🔸 RemainingPmts

Data Type
Integer

The value of this attribute is the computed term of coverage beyond the specified refund date, and is used in the computation of the refund amount.


🟦 <PPRefund>

Element TypeData TypeDefault
DataCurrency0

The value of this element is the computed personal property refund due to the borrower. This element will only be returned if the specified personal property premium is greater than zero.

Attributes: 🔸RemainingPmts

🔸 RemainingPmts

Data Type
Integer

The value of this attribute is the computed term of coverage beyond the specified refund date, and is used in the computation of the refund amount.


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 retirement, it is natural to ask what amount of monthly income will I receive given a planned retirement account balance of X dollars, with a planned retirement term of 360 months? Similarly, given a planned retirement 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 two of them, one may find the third. Instead of creating three different input and output XML interfaces, only one input format and one output format are used, each of which is detailed below.

Sample Request

The following is a sample request for an annuity calculation, where the monthly income amount is computed based upon the balance at retirement, interest rate and the desired term of income (360 months):

<inANNUITY CalcType="getMonthlyIncome">
  <BeginBalance>500000.00</BeginBalance>
  <IntRate>5.000</IntRate>
  <MonthlyIncome></MonthlyIncome>
  <MonthsOfIncome>360</MonthsOfIncome>
</inANNUITY>

Sample Response

The following is a sample response generated by the sample request above:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outANNUITY SYSTEM "outAnnuity.dtd">
<outANNUITY>
  <CalcResult>Valid Calculation</CalcResult>
  <BeginBalance>500000.00</BeginBalance>
  <IntRate>5.000</IntRate>
  <MonthlyIncome>2684.11</MonthlyIncome>
  <MonthsOfIncome>360</MonthsOfIncome>
  <TotalIncome>966279.60</TotalIncome>
  <Gain>466279.60</Gain>
</outANNUITY>

Retirement Annuities - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inANNUITY>

Element TypeData Type
<Parent>-

Attributes: 🔹CalcType

This is the root element of the request, and is required. This contains child elements which specify the particulars of the requested annuity calculation, as well as calculation results. The following attributes of the <inANNUITY> element are defined:

🔹 CalcType

Data TypeValuesDefault
EnumgetBeginBalance, getMonthlyIncome, getMonthsOfIncomegetMonthlyIncome

The CalcType attribute informs the SCE which of the three basic variables involved in the annuity is to be computed. The element corresponding to the variable being being solved for does not need to be present in the request (and if present, the value of the element will be ignored).


🟦 <BeginBalance>

Data TypeValuesDefault
Currency>00

The beginning balance is the amount which is present in the retirement 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. CalcType= "getBeginBalance"), then you may omit this element from the request.

Attributes: None


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--see attribute defaults

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <IntRate>

Element TypeData TypeValuesDefault
DataDecimal[-99.999...600]0

This element dictates the rate at which interest accrues throughout the term of the annuity.

Attributes: None


🟦 <MonthlyIncome>

Element TypeData TypeValuesDefault
DataCurrency> 0-

This element specifies the desired monthly income amount. If you are computing the monthly income amount (e.g. CalcType= "getMonthlyIncome"), then you may omit this element from the request.

Attributes: None


🟦 <MonthsOfIncome>

Element TypeData TypeValuesDefault
DataInteger> 0-

This element 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. CalcType= "getMonthsOfIncome"), then you may omit this element from the request.

Attributes: None


Retirement Annuities - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

🟥 <outANNUITY>

Element TypeData Type
Parent-

This is the root element of the response, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟥 <CalcResult>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Valid Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCE issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <BeginBalance>

Element TypeData Type
DataCurrency

The beginning balance is the amount which is present in the retirement account when the annuity starts.

Attributes: None


🟥 <IntRate>

Element TypeData Type
DataDecimal

The rate at which interest will accrue on the balance during the term of the annuity.

Attributes: None


🟥 <MonthlyIncome>

Element TypeData Type
DataCurrency

The amount of the monthly disbursement.

Attributes: None


🟥 <MonthsOfIncome>

Element TypeData Type
DataInteger

This element returns the number of months of income provided by the annuity.

Attributes: None


🟥 <TotalIncome>

Element TypeData Type
DataCurrency

The total income is the sum of all monthly disbursements made during the term of the annuity.

Attributes: None


🟥 <Gain>

Element TypeData Type
DataCurrency

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.

Attributes: None


Certificates of Deposit

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 modules to cover each possible CD calculation, a single response and request is used.

Sample Request

The following is a sample request for a CD calculation, where the future value is computed based upon present value, rate and term:

<inCD BasisDays="365" CalcType="getFutureValue" Compounding="monthly">
   <DepositDate>2005-10-27</DepositDate>
   <PresentValue>5000.00</PresentValue>
   <FutureValue></FutureValue>
   <IntRate>5.25</IntRate>
   <Term Units="months">12</Term>
</inCD>

Sample Response

The following is a sample response generated by the previous sample request:

<outCD>
   <CalcResult>Valid Calculation</CalcResult>
   <PresentValue>5000.00</PresentValue>
   <FutureValue>6165.57</FutureValue>
   <IntRate>5.250</IntRate>
   <Term Units="months">48</Term>
   <Maturity>2009-10-27</Maturity>
   <Gain>1165.57</Gain>
   <APY>5.374</APY>
</outCD>

Certificates of Deposit - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inCD>

Element TypeData Type
Parent-

This is the root element of the request, and is required. This element contains child elements which specify the particulars of the requested CD. The following attributes of the <inCD> element are defined.

Attributes: 🔹BasisDays, 🔹CalcType, 🔹Compounding

🔹 BasisDays

Data TypeValuesDefault
Enum360, 365365

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 attribute. If no value is specified, then 365 is assumed.

🔹 CalcType

Data TypeValuesDefault
EnumgetFutureValue, getPresentValue, getTerm, getIntRategetFutureValue

The CalcType attribute informs the SCE which of the four basic variables involved in a CD is to be computed. The element corresponding to the variable being being solved for does not need to be present in the request (and if present, the value of the element will be ignored).

🔹 Compounding

Data TypeValuesDefault
Enum[See table below]daily

The Compounding attribute defines the periodicity at which interest is computed. The specified compounding period affects the allowable values for the <Term> element's Units attribute.

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).


🟥 <DepositDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element contains the date on which the amount of the CD is deposited and interest begins to accrue. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a deposit date of October 27, 2005 would be specified as <DepositDate>2005-10-27</DepositDate>.

Attributes: None


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--see attribute defaults

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟦 <FutureValue>

Element TypeData TypeValuesDefault
DataCurrency> 00

The future value is the amount that the CD is worth at the end of its term. The future value is equal to the present value plus all interest accrued during the term. If you are computing the future value (e.g. CalcType= "getFutureValue"), then leave this element empty or omit the element entirely.

Attributes: None


🟦 <IntRate>

Element TypeData TypeValuesDefault
DataDecimal[-99.999...600]0

This element dictates the rate at which interest accrues throughout the term of the CD. If you are computing the interest rate (e.g. CalcType= "getIntRate"), then leave this element empty or omit the element entirely.

Attributes: None


🟦 <PresentValue>

Element TypeData TypeValuesDefault
DataCurrency> 00

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= "getPresentValue"), then leave this element empty or omit the element entirely.

Attributes: None


🟦 <Term>

Element TypeData TypeValuesDefault
DataInteger> 00

The term element 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 Units attribute below.

Also note that the value of this element is somewhat restricted given certain Compounding frequencies and Term Units. The table below will summarize the restrictions.

CompoundingUnits AllowedTerm Restrictions
1, annualyears, monthsmonths must be divisible by 12
2, semiannualyears, monthsmonths must be divisible by 6
4, quarterlyyears, monthsmonths must be divisible by 3
6, bimonthlyyears, monthsmonths must be divisible by 2
12, monthlyyears, monthsn/a
24, semimonthlyyears, months, daysn/a
dailyyears, months, daysn/a
continuousyears, months, daysn/a
simpleyears, months, daysn/a

Attributes: 🔹Units

🔹 Units

Data TypeValuesDefault
Enumyears, months, daysmonths

This attribute specifies the units used for the CD's <Term>. The three options are: years, months, and days.


Certificates of Deposit - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outCD>

Element TypeData Type
Parent-

This is the root element of the response, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟥 <CalcResult>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Valid Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCE issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

In our sample output above, no warnings are returned by the SCE, and hence there are no <XMLDetail> elements returned.

Attributes: None


🟥 <PresentValue>

Element TypeData Type
DataCurrency

Present value of the CD, representing the initial deposit made on the specified deposit date.

Attributes: None


🟥 <FutureValue>

Element TypeData Type
DataCurrency

The future value of the CD at its maturity.

Attributes: None


🟥 <IntRate>

Element TypeData Type
DataDecimal

The rate at which interest will accrue on the CD.

Attributes: None


🟥 <Term>

Element TypeData Type
DataInteger

The value of this element is the number of unit periods (as specified in the Units attribute) between the deposit date and the CD’s maturity date.

Attributes: 🔸Units

🔸 Units

Data TypeValues
Enumyears, months, days

This attribute specifies the units used for the CD’s term. The three options are: years, months, and days.


🟥 <Maturity>

Element TypeData Type
DataDate

The date of maturity for the CD. All dates are in the form of YYYY-MM-DD, and must be 10 characters long. Hence, a maturity date of October 27, 2009 is specified as <Maturity>2009-10-27</Maturity>.

Attributes: None


🟥 <Gain>

Element TypeData Type
DataCurrency

The <Gain> is the difference between the future value and the present value. It is the amount by which the present value increased over the term of the CD.

Attributes: None


🟥 <APY>

Element TypeData Type
DataDecimal

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.

Attributes: None


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 current 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: specify the initial balance, periodic deposit amount, current and retirement ages, and interest rate to compute the future value; or compute the necessary periodic deposit amount to achieve a target future value.

Sample Request

The following is a sample request for an IRA calculation, where the future value is computed based upon an initial balance, periodic deposit amount, current and retirement ages, and interest rate.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE inIRA SYSTEM "inIRA.dtd">
<inIRA CalcType="getFutureValue" Compounding="annual">
  <BeginBalance>10000.00</BeginBalance>
  <Deposit DepositFrequency="annual">2000.00</Deposit>
  <IntRate>8.000</IntRate>
  <CurrentAge>38</CurrentAge>
  <RetireAge>65</RetireAge>
  <FutureValue></FutureValue>
</inIRA>

Sample Response

The following is a sample response generated by the previous sample request:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outIRA SYSTEM "outIRA.dtd">
<outIRA>
    <CalcResult>Valid Calculation</CalcResult>
    <BeginBalance>100000.00</BeginBalance>
    <Deposit DepositFrequency="annual">2000.00</Deposit>
    <IntRate>8.000</IntRate>
    <CurrentAge>38</CurrentAge>
    <RetireAge>65</RetireAge>
    <Term Units="years">27</Term>
    <FutureValue>268558.27</FutureValue>
    <Yield>8.000</Yield>
    <Gain>204558.27</Gain>
</outIRA>

Individual Retirement Accounts - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inIRA>

Element TypeData Type
Parent-

Attributes: 🔹CalcType, 🔹Compounding

This is the root element of the request, and is required. This element contains child elements which specify the particulars of the requested IRA, as well as calculation results. The following attributes of the <inIRA> element are defined:

🔹 CalcType

Data TypeValuesDefault
EnumgetFutureValue, getDepositGivenFuturegetFutureValue

The CalcType attribute informs the SCE which of the IRA calculations is to be performed. If solving for the future value, the <FutureValue> element may be omitted from the request. When solving for the deposit, the <Deposit> element may be omitted, so long as the default deposit frequency of annual is intended.

🔹 Compounding

Data TypeValuesDefault
Enum1,2,4,6,12,3601

The Compounding attribute defines the periodicity at which interest is computed. The specified compounding period affects the allowable values for the DepositFrequency attribute of the <Deposit> element - please see its description below.


🟦 <BeginBalance>

Element TypeData TypeValuesDefault
DataCurrency>= 00

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.

Attributes: None


🟥 <CurrentAge>

Element TypeData TypeValues
DataInteger> 0

The current age of the individual.

Attributes: None


🟦 <Deposit>

Element TypeData TypeValuesDefault
DataCurrency> 00

The deposit element specifies the periodic deposit amount to be made to the IRA account. The periodicity of the deposit is dictated by the DepositFrequency attribute, detailed below.

If you are computing the periodic deposit amount necessary to generate a specified future value (e.g. CalcType="getDepositGivenFuture"), then leave this element empty.

Attributes: 🔹DepositFrequency

🔹 DepositFrequency

Data TypeValuesDefault
Enum1,2,4,6,12, annual, semiannual, quarterly, bimonthly, monthlyannual

This attribute specifies the periodicity of the deposit amount. Thus, if you wanted to make monthly deposits to an IRA account, the attribute value should be specified as 12 or ‘monthly`. The frequency of deposits limits the allowable compounding frequencies.

Deposit FrequencyAllowed Compounding Frequencies
1, annualannual, semiannual, quarterly, bimonthly, monthly, daily
2, semiannualsemiannual, quarterly, bimonthly, monthly, daily
4, quarterlyquarterly, bimonthly, monthly, daily
6, bimonthlybimonthly, monthly, daily
12, monthlymonthly, daily

Note that when computing the periodic deposit amount, the deposit frequency may be specified (e.g. <Deposit DepositFrequency="annual" />).


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--see attribute defaults

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟦 <FutureValue>

Element TypeData TypeValuesDefault
DataCurrency> 00

The future value is the balance of the IRA account at the investor'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. CalcType="getFutureValue"), then leave this element empty or omit it all together.

Attributes: None


🟥 <IntRate>

Element TypeData TypeValues
DataDecimal[-99.999...600]

This element dictates the rate at which interest accrues throughout the term of the IRA.

Attributes: None


🟥 <RetireAge>

Element TypeData TypeValues
DataInteger> 0

The desired retirement age of the individual. This value must be greater than that found in the <CurrentAge> element. By subtracting the current age from the retirement age, the SCE determines the number of years the IRA account will be allowed to grow.

Attributes: None


Individual Retirement Accounts - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outIRA>

Element TypeData Type
Parent-

This is the root element of the response, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟥 <CalcResult>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Valid Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCE issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <BeginBalance>

Element TypeData Type
DataCurrency

The beginning balance is the amount which is present in the IRA account at the investor's <CurrentAge>. Interest accrues on this initial amount (plus the periodic deposit amounts), much like interest accrues on the principal balance of a loan.

Attributes: None


🟥 <Deposit>

Element TypeData TypeValues
DataCurrency> 0

The deposit element specifies the periodic deposit amount to be made to the IRA account. The periodicity of the deposit is dictated by the DepositFrequency attribute, detailed below.

Attributes: 🔹DepositFrequency

🔸 DepositFrequency

Data TypeValues
Enum1,2,4,6,12, annual, semiannual, quarterly, bimonthly, monthly

This attribute specifies the periodicity of the deposit amount.


🟥 <IntRate>

Element TypeData Type
DataDecimal

This element dictates the rate at which interest accrues throughout the term of the IRA.

Attributes: None


🟥 <CurrentAge>

Element TypeData Type
DataInteger

The current age of the individual.

Attributes: None


🟥 <RetireAge>

Element TypeData Type
DataInteger

The desired retirement age of the individual. By subtracting the current age from the retirement age, the SCE determines the number of years the IRA account will be allowed to grow.

Attributes: None


🟥 <Term>

Element TypeData Type
DataInteger

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.

Attributes: None


🟥 <FutureValue>

Element TypeData Type
DataCurrency

The future value is the balance of the IRA account at the investor'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.

Attributes: None


🟥 <Gain>

Element TypeData Type
DataCurrency

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.

Attributes: None


🟥 <Yield>

Element TypeData Type
DataCurrency

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.

Attributes: None


APR Verification

If a loan is computed outside of the SCE and does not provide the Regulation Z (or country appropriate) APR, or if you wish to validate a computed APR, then the APR Verification functionality will be of interest to you. The SCEX 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 element’s or attribute’s descriptions. For example, Section (a)(1) refers to Appendix J, Section a, Subsection 1 of Regulation Z.

Sample Request

The following is a sample request for an APR check calculation:

<inREGZ_APR>
    
    <!-- APR To Test -->
    <TestAPR>6.126</TestAPR>

    <!-- Loan Data -->
    <Advance Date="2023-12-01" AmtFin="10000" />
    <PmtStream Begin="2024-01-16" Term="6" Pmt="1700.20" />

</inREGZ_APR>

Sample Response

The following is a sample response generated by the request above:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outREGZ_APR SYSTEM "outREGZ_APR.dtd" >
<outREGZ_APR>
   <Results>
      <Description>Successful Calculation</Description>
   </Results>
   <RegZAPR_Data>
      <Method>Actuarial</Method>
      <UnitPeriod Base="Month" Mult="1">1_Month</UnitPeriod>
      <PeriodsPerYear>12</PeriodsPerYear>
      <RegZAPR>6.001</RegZAPR>
   </RegZAPR_Data>
   <APRCheck_Data>
      <LoanType MultAdv="false" IrregPeriod="false" IrregPmt="false">Regular</LoanType>
      <RegZAPR>6.001</RegZAPR>
      <TestAPR>6.126</TestAPR>
      <Difference>0.125</Difference>
      <Tolerance>0.125</Tolerance>
      <InCompliance OnCusp="true">true</InCompliance>
   </APRCheck_Data>
   <Event_Data>
      <Transaction_Date>2023-12-01</Transaction_Date>
      <AmtFin Count="1" PresVal="10000.00">10000.00</AmtFin>
      <TotPmt Count="6" PresVal="9999.9996">10201.20</TotPmt>
   </Event_Data>
   <AmTable ErrorDown="-0.0327" Error="0.0004" ErrorUp="0.0334">
      <AmLine Idx="0" Date="2023-12-01" Unit="0" Frac="0" Adv="10000.00" PresVal="10000.00" PresValSum="10000.00"/>
      <AmLine Idx="1" Date="2024-01-16" Unit="1" Frac="15/30" Pmt="1700.20" PresVal="1687.5204" PresValSum="8312.4796"/>
      <AmLine Idx="2" Date="2024-02-16" Unit="2" Frac="15/30" Pmt="1700.20" PresVal="1679.1234" PresValSum="6633.3562"/>
      <AmLine Idx="3" Date="2024-03-16" Unit="3" Frac="15/30" Pmt="1700.20" PresVal="1670.7681" PresValSum="4962.5881"/>
      <AmLine Idx="4" Date="2024-04-16" Unit="4" Frac="15/30" Pmt="1700.20" PresVal="1662.4545" PresValSum="3300.1336"/>
      <AmLine Idx="5" Date="2024-05-16" Unit="5" Frac="15/30" Pmt="1700.20" PresVal="1654.1822" PresValSum="1645.9514"/>
      <AmLine Idx="6" Date="2024-06-16" Unit="6" Frac="15/30" Pmt="1700.20" PresVal="1645.9511" PresValSum="0.0004"/>
   </AmTable>
</outREGZ_APR>

APR Verification - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inREGZ_APR>

Element TypeData Type
Parent-

This is the root element of the XML APR message, and is required. This contains child elements which specify the particulars of the requested APR, as well as calculation results. The following attributes of the <inREGZ_APR> element are defined:

Attributes: 🔹DecAccuracy, 🔹HideAmort, 🔹Method

🔹 DecAccuracy

Data TypeValuesDefault
Int[1..5]See Below

The number of decimal places of accuracy for the disclosed APR is determined by this attribute. The default value of this attribute depends upon the selected Method. For Actuarial and USRule, the default value is 3. For EU_APR, the default value is 1.

🔹 HideAmort

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute determines whether or not an amortization schedule will be included in the XML results, given a successful loan calculation. If you do not require the use of the amortization schedule, then setting this attribute to true will suppress its output. The default value of false will return the amortization schedule as part of the XML output.

🔹 Method

Data TypeValuesDefault
EnumActuarial, USRule, EU_APR, XIRR, XIRR360, IRR, YieldIRRActuarial

In the United States of America, 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 SCEX 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 attribute to specify the method used to compute the APR. If a value of USRule is specified, make sure to set the <USRule> element's attributes, as appropriate.


🟦 <ActuarialTweaks>

Element TypeData TypeValuesDefault
Empty--see attribute defaults

This element is only considered if the APR Method specified is Actuarial. The element itself contains no data. Instead, all of the information used to compute the fee is contained in the following attributes of the element:

Attributes: 🔹ForceSemimonth, 🔹OddDaysPrepaid 🔹SemiMonthlyFixedFraction, 🔹SinglePayFraction

🔹 ForceSemimonth

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The computation of the unit period may mean that a loan may not be recognized as Semimonthly. This attribute overrides the default calculation in favor of a forced unit period as semimonth. This attribute should be replaced with its <UnitPeriod StandardPeriod="Semimonth" /> equivalent.

🔹 OddDaysPrepaid

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Loans that have used an Odd Days Prepaid charge, common with mortgage loans, may use this attribute to adjust the APR to assume one unit period to the first payment. Otherwise, choose false.

🔹 SemiMonthlyFixedFraction

Data TypeValuesDefault
Booleantrue, false, 1, 0true

This setting is 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.

🔹 SinglePayFraction

Data TypeValuesDefault
EnumInDays, InMonthsInDays

This attribute 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".


🟥 <Advance>[]

Element TypeData TypeValuesDefault
Empty--see attribute defaults

This element represents an advance made during the loan. This advance amount is equal to the total amount earning interest less prepaid fees. One may think of these entries as streams of Amounts Financed (in the RegulationZ sense).

Attributes: 🔸AmtFin, 🔸Date, 🔹Freq, 🔹LastDay, 🔹Term

🔸 AmtFin

Data TypeValuesDefault
Currency> 00

This attribute defines the advance amount for each of the Term advances. This dollar amount should be expressed as a number. For example, a request including Amt="10000.00" indicates a periodic advance of $10,000.

🔸 Date

Data TypeValues
Date>= 1900-01-01

This attribute contains the date on which this advance is started. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an advance stream started on November 21, 2006 would be specified as Date="2006-11-21".

🔹 Freq

Data TypeValuesDefault
Enum1, 2, 4, 6, 1212

On the rare occasion that multiple, regular advances are streamed together, one may define the periodicity of these regularly occurring advances. Monthly advances are assumed.

🔹 LastDay

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Were advances in this stream assumed to be the last day of the month?

🔹 Term

Data TypeValuesDefault
Integer> 00

The Term attribute determines the number of advance events which occur with the given Freq. Most loans have a single advance, or advances at irregular periods, which is why one advance per stream is assumed.


🟦 <AmLine>[]

Element TypeData TypeValuesDefault
Empty--see attribute defaults

SCEX Amortization Schedules may be fed into the RegZAPR application in lieu of payment schedules. This option will be useful when one wishes to verify or get some insight into a particular disclosed SCE APR. One would copy and paste the entire amortization schedule as an expression of the payment stream.

For any other data entry, please use the <Advance>, <PmtStream> and <Premium> elements.

Attributes: see <AmTable>


🟦 <AmTableTweaks>

Element TypeData TypeValuesDefault
Empty--see attribute defaults

The amortization of a loan has many potential adjustments that can have an effect downstream within its amortization. Is interest rounded down? Or to the nearest penny? These slight variations or "tweaks" are identified and modified in this element.

The element itself contains no data. Instead, all of the information used to compute the fee is contained in the following attributes of the element:

Attributes: 🔹DollarDec, 🔹ForceDay, 🔹RoundInt, 🔹StrictTime

🔹 DollarDec

Data TypeValuesDefault
Integer[3..9]4

Dollar 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 dollar quantities may be trimmed to the number of decimal places indicated by this attribute. 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’.

🔹 ForceDay

Data TypeValuesDefault
Integer[0,29..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 were “31”, rather than 30.

🔹 RoundInt

Data TypeValuesDefault
EnumNone, Down, Nearest, UpNone

If interest is rounded within the amortization schedule for US Rule loans, set the rounding method here.

🔹 StrictTime

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Loans that have used an Odd Days Prepaid charge, common with mortgage loans, may use this attribute to adjust the APR to assume one unit period to the first payment. Otherwise, choose 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). StrictTime 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 SCEX 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 attribute it true, the SCEX will calculate the fraction of a unit period strictly according to the rules of Appendix J of Regulation Z. A value of textfalse instructs the SCEX 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.


🟦 <Construction>

Element TypeData TypeValuesDefault
Empty--no construction period

Loans which have a construction period require data to be passed using this element. The element itself contains no data. Instead, all of the information used to define the construction period is contained in the following attributes of the element:

Attributes: 🔹AsPrepaid, 🔸EndDate, 🔸Interest, 🔹PermanentAttached, 🔹Prepaid

🔹 AsPrepaid

Data TypeValuesDefault
Booleantrue, false, 1, 0false

This attribute is only applicable when the attribute PermanentAttached is true. If the permanent loan treats the construction interest as a prepaid finance fee, then set the value of this attribute to true. On the other hand, 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 attribute to false.

🔸 EndDate

Data TypeValues
Date>= 1900-01-01

The date on which the construction period terminates.

🔸 Interest

Data TypeValues
Currency> 0

The total amount of construction interest.

🔹 PermanentAttached

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute’s value to true. The default value of false indicates that this is solely a construction loan with no permanent attached.

🔹 Prepaid

Data TypeValuesDefault
Currency> 00

This attribute holds the total prepaid charge for points and fees, excluding construction interest. This attribute need only be specified when the attribute PermanentAttached is false.


🟥 <PmtStream>[]

Element TypeData TypeValuesDefault
Empty--see attribute defaults

One or more <PmtStream> elements 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. The element itself is empty, as all necessary data for each payment stream is contained in the element’s attributes, which are described below.

Attributes: 🔸Begin, 🔸Pmt, 🔸Term, 🔹LastDay, 🔹PPY, 🔹SemimonthlyDay

🔸 Begin

Data TypeValues
Date>= 1900-01-01

This attribute 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. Hence, a payment stream starting date of December 10, 2006 would be specified as Begin="2006-12-10".

🔹 LastDay

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Were payments in this stream assumed to be the last day of the month?

🔸 Pmt

Data TypeValuesDefault
Currency> 00

This attribute 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. This dollar amount should be expressed as a number. For example, a request including Pmt="500.00" indicates a periodic payment of $500.

🔹 PPY

Data TypeValuesDefault
EnumSee Table Below12

PPY is an abbreviation for ‘payments per year’, and as one might surmise, determines the payment frequency for the loan. The default value of monthly 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 attribute.

ValueTranslationDescription
1AnnualOnce Per Year
2SemiAnnualTwice Per year (every six months)
4QuarterlyFour per year (every three months)
6BimonthlySix per year (every two months)
12MonthlyTwelve per year (every month)
24SemimonthlyTwice Per Month *
26BiweeklyEvery two weeks
52WeeklyEvery week

* Semimonthly loans are characterized by making two payments per month on the same days. A common semimonthly schedule is to make payments every 1st and 16th of the month. Another common schedule is the 15th and the end of every month.

The LoanBuilder module allows for semimonthly loans to be scheduled for two days that are not regularly 15 days apart, such as payments due the 1st and 17th of each month. These more exotic semimonthly loans can be computed using the SemimonthlyDay attribute of the <PmtStream>[] element.

🔹 SemimonthlyDay

Data TypeValuesDefault
Integer[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 attribute or specify a value of 0, then the even numbered payments will be generated using the default method within the SCEX. If you wish to specify the day number on which even numbered payments fall (overriding the default method used in the SCEX), then set the value of this attribute to the desired day number. Setting the value of this attribute 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, 2020 with payments that fall on the Ist and 15th of each month for 24 payments, the element should look something like this:

<PmtStream 
   PmtType="CalcPmt" Begin="2020-01-01" Amount="###.###" 
   Term="24" PPY="24" SemimonthlyDay="15"
/>

🔸 Term

Data TypeValuesDefault
Integer> 00

The Term attribute determines the number of payment events which occur with the given Frequency.


🟦 <Premium>[]

Element TypeData TypeValuesDefault
Empty--see attribute defaults

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 these elements for entering loan premiums.

Attributes: 🔸Date, 🔸Prem, 🔹Freq, 🔹LastDay, 🔹Term

🔸 Date

Data TypeValues
Date>= 1900-01-01

This attribute 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. Hence, a payment stream starting date of December 10, 2006 would be specified as Date="2006-12-10".

🔸 Prem

Data TypeValues
Currency> 0

The amount of the voluntary loan protection. Do not include protection fees that are Mandatory, since they are APR affecting fees. The purpose of including these off-payment fees is to eliminate them from the APR.

🔹 Freq

Data TypeValuesDefault
Enum1, 2, 4, 6, 1212

The frequency of premiums is entered in a standard payments per year format. e.g. 4="Quarterly", etc.

🔹 LastDay

Data TypeValuesDefault
Booleantrue, false, 1, 0false

Was the premium intended for the last day of the month?

🔹 Term

Data TypeValuesDefault
Integer> 00

The number of protection fees in the stream.


🟦 <TestAPR>

Element TypeData TypeValuesDefault
DataDecimalUnrestricted-

The SCEX 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 SCEX 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 element. The test APR should be expressed as a percentage. For example, a loan computed with test APR of 6.395% would be specified as <TestAPR>6.395</TestAPR>.

Attributes: None


🟦 <TestFinChg>

Element TypeData TypeValuesDefault
DataCurrencyUnrestricted-

If this element is present and contains a value greater than zero, then the SCEX will compute the Regulation Z Finance Charge for the given loan and compare it to the value specified in this element. The magnitude of the difference between the computed and test values will be returned in the XML results. If this element 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 XML results.

Attributes: None


🟦 <TestTotPmt>

Element TypeData TypeValuesDefault
DataCurrencyUnrestricted-

If this element is present and contains a value greater than zero, then the SCEX will compute the Regulation Z Total of Payments for the given loan and compare it to the value specified in this element. The magnitude of the difference between the computed and test values will be returned in the XML results. If this element 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 XML results however no Difference or TestValue attributes will be present.

Attributes: None


🟦 <Transaction_Date>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01see below

The Transaction Date is generally the date of the first <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. All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a transaction date of October 27, 2006 would be specified as <Transaction_Date>2006-10-27</Transaction_Date>.

Attributes: None


🟦 <UnitPeriod>

Element TypeData TypeValuesDefault
Empty--see below

If this element is not present in the XML request, then the SCEX will compute the unit period. Including this element instructs the SCEX to use the unit period specified by the calling application. Please note that this element is empty, with all required data specifying the unit period passed as attributes of this element.

Attributes: 🔸StandardPeriod, 🔹Multiple

🔸 StandardPeriod

Data TypeValues
EnumDay, Week, Month, Year, Semimonth

This attribute defines the standard unit period. The unit period will be some integral multiple of this standard unit period, as specified by the Multiple attribute below.

🔹 Multiple

Data TypeValuesDefault
Integer>= 11

This attribute defines the integral number of standard unit periods in the defined unit period.

As an example, if you wanted to specify a biweekly unit period, then you would include the following in the XML request:

<UnitPeriod StandardPeriod="Week" Multiple="2" />

Similarly, if you wanted to specify a quarterly unit period, then you would include the following in the XML request:

<UnitPeriod StandardPeriod="Month" Multiple="3" />

🟦 <USRule>

Element TypeData TypeValuesDefault
Empty--see attribute defaults

This element is only considered if the APR Method specified is USRule. The element itself contains no data. Instead, all of the information used to compute the fee is contained in the following attributes of the element:

Attributes: 🔹Calendar, 🔹CalendarTweak, 🔹Divisor, 🔹PremBeforePmt

🔹 Calendar

Data TypeValuesDefault
EnumActualDay, UnitPeriod, FedCalendarActualDay

Actual day, unit period, and Federal calendars are supported with US Rule interest.

🔹 CalendarTweak

Data TypeValuesDefault
EnumNone, True360, True365, Midnight366None
  • True360 mans 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”.

🔹 Divisor

Data TypeValuesDefault
Enum360, 365, 366, PerPeriod, 365.25, VarDPY365

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.

🔹 PremBeforePmt

Data TypeValuesDefault
Booleantrue, false, 1, 0true

Are premiums processed before or after payments? “true” means premiums are amortized before payments, false means payments are processed before premiums.


APR Verification - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outREGZ_APR>

Element TypeData Type
Parent-

This is the root element of the XML APR query result message, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟥 <Results>

Element TypeData Type
Parent-

This parent element contains the reports the success or failure(s) of the calc request.

Attributes: None


🟥 <Results>—><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value ‘Successful Calculation’. Otherwise, this element will contain a description of the problem encountered during the atstempted computation.

Attributes: None


🟦 <Results>—><XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The XMLDetail elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an XMLDetail element.

In our sample output above, no warnings are returned by the SCEX, and hence there are no XMLDetail elements returned.

Attributes: None


🟥 <RegZAPR_Data>

Element TypeData Type
Parent-

The Regulation Z APR data is contained in the sub-elements of this element. This element contains no data.

Attributes: None


🟥 <RegZAPR_Data>—><Accrual>

Element TypeData Type
DataText

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.

Attributes: None


🟥 <RegZAPR_Data>—><Method>

Element TypeData TypeValues
DataEnumActuarial, US Rule, EU-APR

‘Actuarial’, ‘US Rule’, or ‘EU-APR’ will be displayed as the value for this element.

Attributes: None


🟥 <RegZAPR_Data>—><PeriodsPerYear>

Element TypeData Type
DataInteger

The number of periods per year are displayed in this element.

Attributes: None


🟥 <RegZAPR_Data>—><RegZAPR>

Element TypeData Type
DataDecimal

The computed APR value is reported by this element, according to the APR method and number of decimal places requested through the inputs.

Attributes: None


🟥 <RegZAPR_Data>—><UnitPeriod>

Element TypeData Type
Empty-

This element contains attributes and a text description of the unit period used in the calculation. The data in this element concatenates the data in its elements. For instance, when Base="Month" and Mult="1", this element is "1_Month".

Attributes: 🔸Base, 🔸Mult

🔸 Base

Data TypeValues
EnumDay, Week, Month, Year, SemiMonth

The Unit Period for any loan has a basic unit of measurement. All possibilities are listed in this attribute.

🔸 Mult

Data TypeValues
Integer>0

The unit multiple composing the Unit Period. For instance, if the unit period were 6 months, the Base is Month, the Mult is 6.


🟦 <APRCheck_Data>

Element TypeData Type
Parent-

The elements describing the analysis of a user-entered APR are all contained in the child nodes of this element. This element, itself, has no data. Note that this element and its associated child elements will only be present if a <TestAPR> was included in the request.

Attributes: None


🟥 <APRCheck_Data>—><LoanType>

Element TypeData TypeValues
DataEnumRegular, Irregular

The Loan Type is either Regular or Irregular. All loans are assumed to be regular unless they contain multiple advances, an irregular period or an irregular payment, all of which are defined below. Note: skipped payment loans are irregular loans, because, though the payments are regular, the periods are not.

Attributes: 🔸IrregPeriod, 🔸IrregPmt, 🔸MultAdv

🔸 IrregPeriod

Data TypeValues
Booleantrue, false, 1, 0

If a loan has an irregular period between payments, this attribute is true; otherwise, it is false. An irregular period is any period between payments not a unit period. (See Section 18.2.7)

🔸 IrregPmt

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If a loan has an irregular payment, this attribute 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 attribute will be true.

🔸 MultAdv

Data TypeValues
Booleantrue, false, 1, 0

If a loan has more than one advance, this attribute will be true; otherwise, it is false.


🟥 <APRCheck_Data>—><RegZAPR>

Element TypeData TypeValues
DataDecimalUnrestricted

The computed APR is reported by this element, according to the number of decimal places requested through the inputs.

Attributes: None


🟥 <APRCheck_Data>—><TestAPR>

Element TypeData Type
DataDecimal

The APR that appears in the input xml which is to be tested for compliance.

Attributes: None


🟥 <APRCheck_Data>—><Difference>

Element TypeData Type
DataDecimal

The difference between the computed APR and the test APR is displayed for easy comparison to the tolerance.

Attributes: None


🟦 <APRCheck_Data>—><Tolerance>

Element TypeData Type
DataDecimal

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”. Official Staff Commentary 226.22(a)(1) - (3)

Note that this element will only appear when Actuarial or US Rule APR methods are in effect.

Attributes: None


🟦 <APRCheck_Data>—><InCompliance>

Element TypeData TypeValues
DataBooleantrue, false

This element is true or false, depending on whether the difference element 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.

Note that this element will only appear when Actuarial or US Rule APR methods are in effect.

Attributes: 🔹OnCusp

🔹 OnCusp

Data TypeValuesDefault
Booleantrue, falsefalse

If a <Difference> is exactly equal to the <Tolerance>, the TestAPR is noted as being "On the cusp"; that is to say, it is maximally distant from the actual APR without being flagged as out of tolerance. This designation is not required by Appendix J of Regulation Z, but is a warning that the algorithm producing the test apr may warrant further testing.


🟥 <Event_Data>

Element TypeData Type
Parent-

Though [<Event_Data>] has no data itself, the elements it contains are the sums of other important quantities, as described below:

Attributes: None


🟥 <Event_Data>—><Transaction_Date>

Element TypeData Type
ParentDate

The <Transaction_Date> is one of three values, depending on the input: The date entered as the <Transaction_Date> from the inputs, the date of the first advance if the <Transaction_Date> was omitted, or one unit period before the first payment in the case of loans with OddDaysPrepaids.

Attributes: None


🟥 <Event_Data>—><AmtFin>

Element TypeData Type
DataCurrency

This element represents the total amount financed for the loan or, more generally, the total of <Advance> elements from the Request.

Attributes: 🔸Count, 🔹PresVal

🔸 Count

Data TypeValues
integer>0

The number of advances for a loan are displayed in this attribute.

🔹 PresVal

Data TypeValues
Decimal-

When the APR Method is “Actuarial”, the present value of all advances are displayed in this attribute.


🟦 <Event_Data>—><FinChg>

Element TypeData Type
DataCurrency

This element represents the total finance charge for the loan, and will only be present if the request provided a value greater than zero for the <TestFinChg> element.

Attributes: 🔸TestValue, 🔹Difference

🔸 TestValue

Data TypeValues
Currency-

The <TestFinChg> that appears in the request which is to be tested for compliance.

🔸 Difference

Data TypeValues
Currency-

The magnitude of the difference between the test Finance Charge and the computed Finance Charge.


🟥 <Event_Data>—><TotPmt>

Element TypeData Type
DataCurrency

This element represents the sum of all payments.

Attributes: 🔸Count, 🔹PresVal, 🔹TestValue, 🔹Difference

🔸 Count

Data Type
Integer

The number of payments is recorded here.

🔹 PresVal

Data TypeDefault
Decimal-

When the APR Method is “Actuarial”, the present value of all payments are displayed in this attribute.

🔸 TestValue

Data Type
Currency

The <TestTotPmt> that appears in the input xml which is to be tested for compliance.

🔹 Difference

Data TypeDefault
Currency-

The magnitude of the difference between the test total of payments and the computed total of payments.


🟥 <Event_Data>—><TotPrem>

Element TypeData Type
DataCurrency

This element represents the total of premiums input through the request.

Attributes: 🔸Count, 🔹PresVal

🔸 Count

Data Type
Integer

The number of premiums defined in the input are displayed in this attribute.

🔹 PresVal

Data TypeDefault
Decimal-

When the APR Method is “Actuarial”, the present value of all premiums are displayed in this attribute.


🟥 <AmTable>

Element TypeData Type
Parent-

Though [<AmTable>] has no data itself, the elements it contains are the sums of other important quantities, as described below:

Attributes: 🔸Error, 🔸ErrorDown, 🔸ErrorUp

🔸 Error

Data Type
Decimal

The balance at the end of amortization using the disclosed RegZAPR. The correct RegZAPR is the rate which produces the smallest balance after amortization. Therefore, the magnitude of both ErrorDown and ErrorUp attributes should be greater than this value.

🔸 ErrorDown

Data Type
Decimal

The balance at the end of amortization using the disclosed RegZAPR less one rate unit. As an example, if the disclosed RegZAPR is 10.000%, then the [ErrorDown] attribute 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 attribute, because the rate with a minimum error magnitude defines the correct RegulationZ APR.

🔸 ErrorUp

Data Type
Decimal

The balance at the end of amortization using the disclosed RegZAPR plus one rate unit. As an example, if the disclosed RegZAPR is 10.000%, then the ErrorUp attribute 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 attribute, because the rate with a minimum error magnitude defines the correct RegulationZ APR.


🟥 <AmTable>—><AmLine>

Element TypeData Type
Empty-

The AmLine element contains the actual events that drive the calculation of the APR; however, the information required to compute a particular APR depends heavily on what type of APR that's being computed. Of the seven different methods of APR computation (namely Actuarial, USRule, EU_APR, XIRR, XIRR360, IRR, YieldIRR) the structure of <AmLine> attributes can reduce to two structures: Present Value and USRule.

Attributes: 🔹Adv, 🔹BegBal, 🔸Date, 🔹EndBal, 🔹Factor, 🔹Frac, 🔸Idx, 🔹IntPaid, 🔹IntUnpaid, 🔹Pmt, 🔹Prem, 🔹PresVal, 🔹PresValSum, 🔹Unit

🔹 Adv

Data TypeDefault
Currency-

Cash advances are recorded in this attribute, common to all APR Methods.

🔹 BegBal

Data TypeDefault
Currency-

USRule APR's are unique, in that they do no compute present values but, rather, re-amortize the loan. The balance prior to applying the cash event and interest is recorded in this attribute.

🔸 Date

Data Type
Date

The date of the AmLine event is recorded in this attribute in a YYYY-MM-DD format.

🔹 EndBal

Data TypeDefault
Currency-

USRule APR's note the effect of the AmLine by recording the ending balance. Note that one AmLine's EndBal is the next line's BeginBal.

🔹 Factor

Data TypeDefault
Decimal-

APR Methods of USRule, EU_APR, XIRR, XIRR360, IRR, YieldIRR record the Factor used in their calculation. This factor represents a measure of time appropriate to that calculation.

🔹 Frac

Data TypeDefault
Decimal-

Actuarial APR's require both the number of unit periods and the fraction of a unit period to be computed as required by Appendix J to Regulation Z. From these two values, the cash of the event is discounted. The fractional value is recorded in this attribute.

🔸 Idx

Data Type
Integer

The timewise sequence of events starting at zero is recorded in this attribute.

🔹 IntPaid

Data TypeDefault
Currency-

USRule APR's record the interest paid, if any.

🔹 IntUnpaid

Data TypeDefault
Decimal-

USRule APR's record any unpaid interest.

🔹 Pmt

Data TypeDefault
Currency-

Payments are recorded in this attribute, common to all APR Methods.

🔹 Prem

Data TypeDefault
Currency-

Protection Fees or Premiums are recorded in this attribute.

🔹 PresVal

Data TypeDefault
Decimal-

The present value resulting from the computation on the cash amount is recorded in this attribute.

🔹 PresValSum

Data TypeDefault
Decimal-

The running total of the accumulated present values are stored in this attribute.

🔹 Unit

Data TypeDefault
Integer-

Actuarial APR's require the number of unit periods between the event and the <Transaction_Date> to be computed before the cash is present value discounted. That number is recorded in this attribute.


Annual Percentage Yield

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:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE inAPY SYSTEM "inAPY.dtd" >
<inAPY DecAccuracy="4" Compounding="Daily" Statement="Monthly" >
    <Principal>1000.00</Principal>
    <Interest>61.68</Interest>
    <InvestDate>2014-04-16</InvestDate>
    <MaturityDate>2015-04-16</MaturityDate>
</inAPY>

Sample Response

The following is a sample response generated by the sample request above:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outAPY SYSTEM "outAPY.dtd">
<outAPY>
    <Results>
        <Description>Successful Calculation</Description>
    </Results>
    <APY Formula="General">6.1680%</APY>
    <Timeline>
        <Compounding Frequency="Daily">1</Compounding>
        <Statements Frequency="Monthly">30</Statements>
        <InvestmentDate>2014-04-16</InvestmentDate>
        <MaturityDate Days="365">2014-04-16</MaturityDate>
    </Timeline>
    <Investment>
        <Principal>1000.00</Principal>
        <Interest>61.68</Interest>
    </Investment>
</outAPY>

Annual Percentage Yield - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inAPY>

Element TypeData Type
Parent-

This is the root element of the request, and is required. This contains child elements which specify the particulars of the requested APY. The following attributes of the <inAPY> element are defined:

Attributes: 🔹Compounding, 🔹DecAccuracy, 🔹Statement

🔹 Compounding

Data TypeValuesDefault
EnumDaily, Weekly, BiWeekly, Monthly, BiMonthly, Quarterly, SemiAnnual, AnnualDaily

The Compounding attribute specifies the frequency that interest is compounded. If the deposit compounds continuously, then specify a value of Daily.

🔹 DecAccuracy

Data TypeValuesDefault
Integer[3..5]3

The number of decimal places of accuracy for the disclosed APY is determined by this attribute.

🔹 Statement

Data TypeValuesDefault
EnumMonthly, BiMonthly, Quarterly, SemiAnnual, AnnualMonthly

The Statement attribute determines the frequency that statements are provided to the customer by the deposit institution.


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--see attribute defaults

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <Interest>

Element TypeData TypeValues
DataCurrency>= 0

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.

Attributes: None


🟦 <InvestDate>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01-

This optional element 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 compounded annually and statements are disclosed monthly, then this element may be omitted.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, an investment date of April 16, 2014 would be specified as <InvestDate>2015-04-16</InvestDate>.

Attributes: None


🟦 <MaturityDate>

Element TypeData TypeValuesDefault
DataDate>= 1900-01-01-

This optional element contains 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 compounded annually and statements are disclosed monthly, then this element may be omitted.

All dates must be in the form of YYYY-MM-DD, and be 10 characters long. Hence, a maturity date of April 16, 2015 would be specified as <MaturityDate>2014-04-16</MaturityDate>.

Attributes: None


🟥 <Principal>

Element TypeData Type
DataCurrency

The value of this element specifies the total amount earning interest.

Attributes: None


Annual Percentage Yield - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outAPY>

Element TypeData Type
Parent-

This is the root element of the XML APY query result message, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟥 Results

Element TypeData Type
Parent-

The basic results of the xml calculation are captured as child elements of the "Results" parent.

Attributes: None


🟥 Results<Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value ‘Successful Calculation’. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 Results<XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The XMLDetail elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an XMLDetail element.

In our sample output above, no warnings are returned by the SCEX, and hence there are no XMLDetail elements returned.

Attributes: None


🟥 <APY>

Element TypeData Type
DataDecimal

The APY, as defined in Appendix A to Part 1030 of Truth in Savings, and computed by the SCEX. This element has a single attribute, as described below.

Attributes: 🔸Formula

🔸 Formula

Data TypeValues
EnumGeneral, Special

The Formula attribute 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 formula 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.


🟥 <Timeline>

Element TypeData Type
Parent-

This element contains child elements which describe the timeline of the deposit.

Attributes: None


🟥 <Timeline><Compounding>

Element TypeData Type
DataInteger

The value of this element specifies the number of days in each compounding period.

Attributes: 🔸Frequency

🔸 Frequency

Data TypeValues
EnumDaily, Weekly, BiWeekly, Monthly, BiMonthly, Quarterly, SemiAnnual, Annual

The value of this attribute specifies the frequency that interest is compounded.


🟥 <Timeline><Statements>

Element TypeData Type
DataInteger

The value of this element specifies the number of days in each statement period.

Attributes: 🔸Frequency

🔸 Frequency

Data TypeValues
EnumMonthly, BiMonthly, Quarterly, SemiAnnual, Annual

The value of this attribute specifies the frequency that statements are sent to the customer by the deposit institution.


🟦 <Timeline><InvestmentDate>

Element TypeData TypeDefault
DataDate-

Returns the investment date which was passed into the SCEX. If no investment date was specified, then this element will not appear in the response .

Attributes: None


🟦 <Timeline><MaturityDate>

Element TypeData TypeDefault
DataDate-

Returns the maturity date which was passed into the SCEX. If no maturity date was specified, then this element will not appear in the response.

Attributes: 🔸Days

🔸 Days

Element TypeData Type
DataInteger

The days attribute contains the number of days between the investment and maturity dates.


🟥 <Investment>

Element TypeData Type
Parent-

This element contains child elements which describe the deposit investment.

Attributes: None


🟥 <Investment><Interest>

Element TypeData Type
DataCurrency

This element contains the value of the <Interest> element passed into the SCEX.

Attributes: None


🟥 <Investment><Principal>

Element TypeData Type
DataCurrency

The value of this element specifies the total amount earning interest.

Attributes: None


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:

  1. the APR test fails;
  2. the points and fees test fails; or
  3. 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 SCEX with the required information, and then the SCEX 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 the FFIEC's web site.

Please note that it is necessary that these files be updated weekly, or else the SCEX 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.

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.

Sample Request

The following is a sample SCEX request for a HCM calculation:

<inHCM DataDirPath="C:\SCEX\">
    <LockInDate>2013-05-09</LockInDate>
    <Lien Type="first" Rate="fixed" Dwelling="personal_property" />
    <Term PPY="12">360</Term>
    <LoanAmount>265102.04</LoanAmount>
    <AmountFinanced>255102.04</AmountFinanced>
    <APR>9.91</APR>
    <FinanceCharge>292688.40</FinanceCharge>
    <InterestCharge>266366.36</InterestCharge>
    <FederalStatePremiumsFees>0.00</FederalStatePremiumsFees>
    <PMI After="2025.00" AtOrBefore="625.00" MaxAllowedAtOrBefore="7653.06" />
    <ThirdPartyCharges>0.00</ThirdPartyCharges>
    <DiscountPoints FullRates="6.00" Fee="5102.04"></DiscountPoints>
    <LoanOriginatorFees>0.00</LoanOriginatorFees>
    <RealEstateFees FinanceAmt="0.00">0.00</RealEstateFees>
    <CreditInsurance FinanceAmt="0.00">0.00</CreditInsurance>
    <PrepaymentPenalty Max="0" Total="0" FinanceAmt="0" After36Months="false" AmountPrepaid="0" />
</inHCM>

Sample Response

The following is the XML response associated with the request above:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outHCM SYSTEM "outHCM.dtd">
<outHCM>
    <Description>Valid Calculation</Description>
    <IsHcm Apr="true" PointsFees="false" Prepayment="false">true</IsHcm>
    <AprTrigger Date="2013-05-06" Apor="3.410" Spread="6.500" Difference="0.000"/>
    <PointsFeesTrigger TotalLoanAmount="255102.04" TotalPointsFees="5072.04" MaxPointsFees="12755.10"/>
    <PrepaymentTrigger After36Months="false" Total="0.00" Max="0.00"/>
</outHCM>

High Cost Mortgage (HCM) - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

🟥 <inHCM>

Element TypeData Type
Parent-

This is the root element of the HCM query input message, and is required. This contains child elements which specify the particulars of the already computed loan which is being examined to see if it is a HCM. The following attributes of the <inHCM> element are defined:

Attributes: 🔹DataDirPath

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCEX will look for a data folder containing the APOR and hcm.ini files in the path specified. Thus, in the example above where DataDirPath is set to C:\SCEX\, the SCEX will look for the APOR and hcm.ini files in C:\SCEX\data. Note that the APOR files must be named as follows: YieldTableFixed.txt and YieldTableAdjustable.txt.

If the calling application wishes to specify the data directory path in its entirety (e.g. the calling app does not want the SCEX to append \data to the provided path), then simply terminate the specified DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCEX will look for the APOR files in C:\SCEX\bank1\.

If this attribute is not set, the SCEX will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> query, and set via the SCEX API.

Since the APOR and hcm.ini 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 HIPML module, and thus a single location containing the APOR files can be used for both modules.


🟥 <AmountFinanced>

Element TypeData TypeValues
DataCurrency> 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 SCEX returns the loan’s Amount Financed under <outLOANTYPE><FedBox><AmtFin>.

Attributes: None


🟥 <APR>

Element TypeData TypeValues
DataDecimal[-99.999...600]

This element 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)):

  1. 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.
  2. 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.
  3. If the rate plan varies and is not based on an index (case 2 above), then the APR equals the maximum interest rate that may be imposed during the term of the loan.

Attributes: None


🟦 <CreditInsurance>

Element TypeData TypeValuesDefault
DataCurrency>= 00

Any premiums or other charges payable at or before consummation for any credit life, credit disability, credit unemployment, or credit property insurance, or any other life, accident, health, or loss-of-income insurance for which the creditor is a beneficiary. See Section 1026.32(b)(1)(iv).

Attributes: 🔹FinanceAmt

🔹 FinanceAmt

Data TypeValuesDefault
Currency>=00

The value of this attribute specifies the amount of the above specified premiums and/or fees which were financed.


🟦 <DiscountPoints>

Element TypeData TypeValuesDefault
DataDecimal[0...600]0

This element 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”.

Attributes: 🔹Fee, 🔹FullRate

🔹 Fee

Data TypeValuesDefault
Currency>= 00

The total fee due for the discounted interest rate.

🔹 FullRate

Data TypeValuesDefault
Decimal>= 00

The value of this attribute specifies the non-discounted rate, or the interest rate without any discount.


🟦 <FederalStatePremiumsFees>

Element TypeData TypeValuesDefault
DataCurrency> 00

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).

Attributes: None


🟥 <FinanceCharge>

Element TypeData TypeValues
DataCurrencyany

As defined in Regulation Z (Section 1026.4), the dollar amount that the credit will cost the borrower. As an example, the SCEX returns the loan’s Finance Charge under <outLOANTYPE><FedBox><FinChg>.

Attributes: None


🟦 <Format>

Element TypeData TypeValuesDefault
Empty--see attribute defaults

The <Format> element is one of the first elements parsed from a request, as the attributes of this empty element affect how date and numeric values are parsed and validated.

Attributes: 🔹CurrencyDecimals, 🔹DateFormat, 🔹DateSeparator, 🔹DecimalSeparator, 🔹StrictDP, 🔹ThousandSeparator

🔹 CurrencyDecimals

Data TypeValuesDefault
Enum0, 22

When displaying and parsing Currency values, the value of this attribute determines the maximum number of decimal places allowed after the DecimalSeparator.

🔹 DateFormat

Data TypeValuesDefault
EnumYMD, MDY, DMYYMD

When displaying and parsing Date values, this field determines the expected format for all Date fields. The following DateFormat options are allowed:

  • YMD - All dates should be formatted as YYYY-MM-DD.
  • MDY - All dates should be formatted as MM-DD-YYYY.
  • DMY - All dates should be formatted as DD-MM-YYYY.

Note that the character which separates the individual month, day, and year portions of the date is configurable via the DateSeparator attribute.

🔹 DateSeparator

Data TypeValuesDefault
CharOne character-

When displaying and parsing Date values, this attribute determines the character used to separate the individual month, day, and year portions of a date.

🔹 DecimalSeparator

Data TypeValuesDefault
CharOne character.

When displaying and parsing Currency or Decimal numeric values, this attribute determines the character used to separate the fractional part from the whole.

🔹 StrictDP

Data TypeValuesDefault
Booleantrue, false, 1, 0false

If the value of this attribute 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 attribute is 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.

🔹 ThousandSeparator

Data TypeValuesDefault
CharOne character,

When displaying numeric values, this attribute determines the character used to separate the thousands places from the hundreds. Note that when parsing numeric values, the value of this attribute is ignored.


🟥 <InterestCharge>

Element TypeData TypeValues
DataCurrencyany

This element contains 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 SCEX returns the loan’s Interest Charge under <outLOANTYPE><Moneys><Interest>.

Attributes: None


🟥 <Lien>

Element TypeData Type
Empty-

This element itself contains no data. Instead, all of the information used to determine the type of lien is contained in the following attribute of the element:

Attributes: 🔹Dwelling, 🔹Rate, 🔹Type

🔹 Dwelling

Data TypeValuesDefault
Enumpersonal_property, otherpersonal_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%.

🔹 Rate

Data TypeValuesDefault
Enumfixed, variablefixed

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 SCEX will look-up the APOR from the YieldTableFixed.txt file. If the loan uses a variable or adjustable rate, then the SCEX will look-up the APOR from the YieldTableAdjustable.txt file.

🔹 Type

Data TypeValuesDefault
Enumfirst, subordinatefirst

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%.


🟥 <LoanAmount>

Element TypeData TypeValues
DataCurrency> 0

The Loan Amount is the face amount of the note (i.e., the principal balance).

Attributes: None


🟦 <LoanOriginatorFees>

Element TypeData TypeValuesDefault
DataCurrency>= 00

The value of this element represents all compensation paid directly or indirectly by a consumer or creditor to a loan originator. See Section 1026.32(b)(1)(ii).

Attributes: None


🟥 <LockInDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element contains 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. Hence, a lock in date of December 29, 2009 would be specified as <LockInDate>2009-12-29</LockInDate>.

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 precede 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 SCEX 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.

Attributes: None


🟦 <PMI>

Element TypeData Type
Empty-

This element itself contains no data. Instead, all of the information used to specify PMI information is contained in the following attribute of the element:

Attributes: 🔹After, 🔹AtOrBefore, 🔹MaxAllowedAtOrBefore

🔹 After

Data TypeValuesDefault
Currency>= 00

This attribute specifies the private mortgage insurance premiums payable after consummation. See Section 1026.32(b)(1)(i)(C)(1).

🔹 AtOrBefore

Data TypeValuesDefault
Currency>= 00

The value of this attribute represents private mortgage insurance premiums paid at or before consummation. See Section 1026.32(b)(1)(i)(C)(2).

🔹 MaxAllowedAtOrBefore

Data TypeValuesDefault
Currency>= 00

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).


🟦 <PrepaymentPenalty>

Element TypeData Type
Empty-

This element itself contains no data. Instead, all of the information used to specify any prepayment penalty information is contained in the following attribute of the element:

Attributes: 🔹After36Months, 🔹AmountPrepaid, 🔹FinanceAmt, 🔹Max, 🔹Total

🔹 After36Months

Data TypeValuesDefault
Booleantrue, falsefalse

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 attribute to true.

Setting this value to true will trigger the prepayment penalty test, and his classify the specified loan as a HCM.

🔹 AmountPrepaid

Data TypeValuesDefault
Currency>= 00

If the maximum prepayment penalty exceeds 2% of this attribute’s value, then the prepayment penalty test will be triggered.

🔹 FinanceAmt

Data TypeValuesDefault
Currency>= 00

The value of this attribute specifies the amount of the total prepayment penalty which was financed by the creditor.

🔹 Max

Data TypeValuesDefault
Currency>= 00

The maximum prepayment penalty that may be charged or collected under the terms of the mortgage loan. See Section 1026.32(b)(1)(v).

🔹 Total

Data TypeValuesDefault
Currency>= 00

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).


🟦 <RealEstateFees>

Element TypeData TypeValuesDefault
DataCurrencyany0

Please see Section 1026.32(b)(1)(iii) for a discussion of the real estate fees and other charges which should be included here.

Attributes: 🔹FinanceAmt

🔹 FinanceAmt

Data TypeValuesDefault
Currency>= 00

The value of this attribute specifies the amount of the above specified real estate fees and other charges which were financed.


🟦 <Term>

Element TypeData TypeValuesDefault
DataInteger>= 00

The <Term> element 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> or <TermInYears> element.

Attributes: 🔹PPY

🔹 PPY

Data TypeValuesDefault
Enum1, 2, 4, 6, 12, 24, 26, 52, annual, semiannual, quarterly, bimonthly, monthly, semimonthly, biweekly, weekly12

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 monthly will result in a loan with an initial fixed rate period of 12 payments per year. If the loan in question uses a payment frequency other than monthly, specify it using this attribute.


🟦 <TermInYears>

Element TypeData TypeValuesDefault
DataInteger[1..50]0

The <TermInYears> element 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.

Note that the calling application must specify either the <Term> or <TermInYears> element.

Attributes: None


🟦 <ThirdPartyCharges>

Element TypeData TypeValuesDefault
DataCurrency>= 00

This element 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).

Attributes: None


High Cost Mortgages (HCM) - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outHCM>

Element TypeData Type
Parent-

This is the root element of the HCM query output message, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟥 <Results><Description>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Successful Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <XMLDetail>[]

Element TypeData TypeDefault
DataTextn/a

The XMLDetail elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

In our sample output above, no warnings are returned by the SCEX, and hence there are no <XMLDetail> elements returned.

Attributes: None


🟥 <IsHcm>

Element TypeData TypeValues
DataBooleantrue, false

The value of this element will either be true or false, and will indicate whether or not the submitted loan is a HCM. The following attributes of this element detail the results of the three tests (Apr, Points and Fees, and Prepayment tests):

Attributes: 🔸Apr, 🔸PointsFees, 🔸Prepayment

🔸 Apr

Data TypeValues
Booleantrue, false

If the Apr test was triggered, then the value of this attribute will be true.

🔸 PointsFees

Data TypeValues
Booleantrue, false

If the Points and Fees test was triggered, then the value of this attribute will be true.

🔸 Prepayment

Data TypeValues
Booleantrue, false

If the Prepayment test was triggered, then the value of this attribute will be true.


🟥 <AprTrigger>

Element TypeData Type
Empty-

This element provides further information on the HCM Apr test, which may be of interest to the calling application. The element itself contains no data. Instead, all of the relevant information is contained in the following attributes of the element:

Attributes: 🔸Apor, 🔸Date, 🔸Difference, 🔸Spread

🔸 Apor

Data Type
Decimal

The value of this attribute contains the Average Prime Offer Rate for the submitted loan. This value is retrieved from the appropriate APOR file (fixed or adjustable).

🔸 Date

Data Type
Date

The Date attribute 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).

🔸 Difference

Data Type
Decimal

The value of this attribute 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.

🔸 Spread

Data Type
Decimal

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.


🟥 <PointsFeesTrigger>

Element TypeData Type
Empty-

This element provides further information on the HCM points and fees test, which may be of interest to the calling application. The element itself contains no data. Instead, all of the relevant information is contained in the following attributes of the element:

Attributes: 🔸MaxPointsFees, 🔸TotalLoanAmount, 🔸TotalPointsFees

🔸 MaxPointsFees

Data Type
Currency

If the computed total points and fees value for the submitted loan exceeds this value, then the loan is a HCM. The maximum points and fees value calculation is defined in Section 1026.32(a)(1)(ii).

🔸 TotalLoanAmount

Data Type
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.

🔸 TotalPointsFees

Data Type
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.


🟥 <PrepaymentTrigger>

Element TypeData Type
Empty-

Attributes: 🔸After36Months, 🔸Max, 🔸Total

This element provides further information on the HCM prepayment test, which may be of interest to the calling application. The element itself contains no data. Instead, all of the relevant information is contained in the following attributes of the element:

🔸 After36Months

Data TypeValues
Booleantrue, false

If the creditor can charge a prepayment penalty more than 36 months after consummation, then the loan is a HCM.

🔸 Max

Data Type
Currency

The maximum prepayment penalty is computed according 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 HCM.

🔸 Total

Data Type
Currency

This attribute returns the total potential amount of prepayment penalties.


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 the FFIEC's web site.

Please note that it is necessary that these files be updated weekly, or else the SCEX 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.

Sample Request

The following is a sample SCEX request for a HPML calculation:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE inHPML SYSTEM "inHPML.dtd">
<inHPML DataDirPath="C:\SCEX\">
  <Lien Type="first" Jumbo="false" />
  <Loan RateType="fixed" />
  <LockInDate>2009-12-22</LockInDate>
  <RegZApr>5.500</RegZApr>
  <TermInYears>30</TermInYears>
</inHPML>

Sample Response

The following is the XML response associated with the request above:

<?xml version="1.0" standalone="no"?>
<!DOCTYPE outHPML SYSTEM "outHPML.dtd">
<outHPML>
  <Description>Valid Calculation</Description>
  <IsHpml Apor="5.000" Spread="1.5" Difference="-1.0" Date="2009-12-21">false</IsHpml>
</outHPML>

Higher Priced Mortgage Loans (HPML) - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inHPML>

Element TypeData Type
Parent-

This is the root element of the HPML query input message, and is required. This contains child elements which specify the particulars of the already computed loan which is being examined to see if it is a HPML. The following attributes of the <inHPML> element are defined:

Attributes: 🔹DataDirPath

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.


🟥 <Lien>

Element TypeData Type
Empty-

This element itself contains no data. Instead, all of the information used to determine the type of lien is contained in the following attribute of the element:

Attributes: 🔹Jumbo, 🔹Type

🔹 Jumbo

Data TypeValuesDefault
Booleantrue, false, 1, 0false

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 attribute will be ignored for subordinate-lien loans.

🔹 Type

Data TypeValuesDefault
Enumfirst, subordinatefirst

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%.


🟥 <Loan>

Element TypeData Type
Empty-

This element itself contains no data. Instead, all of the information used to determine the type of loan is contained in the following attribute of the element:

Attributes: 🔹RateType

🔹 RateType

Data TypeValuesDefault
Enumfixed, adjustablefixed

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 SCEX will look-up the APOR from the YieldTableFixed.txt file. If the loan uses an adjustable rate, then the SCEX will look-up the APOR from the YieldTableAdjustable.txt file.


🟥 <LockInDate>

Element TypeData TypeValues
DataDate>= 1900-01-01

This element contains 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. Hence, a lock in date of December 22, 2009 would be specified as <LockInDate>2009-12-22</LockInDate>.

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 precede it by more than 6 days. Since these files 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 SCEX 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.

Attributes: None


🟥 <RegZApr>

Element TypeData TypeValues
DataDecimalany

This element contains the computed Regulation Z APR for the loan we are checking. The Regulation Z APR should be expressed as a percentage. For example, a loan computed with a Reg. Z APR of 5.5% would be specified as <RegZApr>5.5</RegZApr>.

Attributes: None


🟥 <TermInYears>

Element TypeData TypeValues
DataInteger[1...50]

The <TermInYears> element 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.

Attributes: None


Higher Priced Mortgage Loans (HPML) - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outHPML>

Element TypeData Type
Parent-

This is the root element of the HPML query input message, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟥 <Description>

Element TypeData TypeValues
DataText-

If the calculation was completed successfully, then this element will contain the value 'Valid Calculation'. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

Attributes: None


🟦 <XMLDetail>[]

Element TypeData TypeDefault
DataTextn/a

The XMLDetail elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

In our sample output above, no warnings are returned by the SCEX, and hence there are no <XMLDetail> elements returned.

Attributes: None


🟥 <IsHpml>

Element TypeData TypeValues
DataBooleantrue, false

The value of this element will either be true or false, and will indicate whether or not the submitted loan is a HPML. The following attributes of this element provide a bit more detailed information, which may be of interest to the calling application:

Attributes: 🔸Apor , 🔸Spread , 🔸Difference , 🔸Date

🔸 Apor

Data TypeValues
DecimalNo Restriction

The value of this attribute contains the Average Prime Offer Rate for the submitted loan. This value is retrieved from the appropriate APOR file (fixed or adjustable).

🔸 Spread

Data TypeValues
DecimalNo Restriction

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.

🔸 Difference

Data TypeValues
DecimalNo Restriction

The value of this attribute 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.

🔸 Date

Data TypeValues
Date>= 1900-01-01

The Date attribute 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).


Account List

The SCEX’s account interface allows the user to determine the name of each account set up for the SCEX 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 SCEX 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

The following is a sample SCEX request for account information:

<inACCOUNT
   DataDirPath="C:\SCEX\"
   AccountStart="1"
   AccountEnd="99"
/>

Sample Response

The following is a sample XML response generated by the previous sample request:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outACCOUNT SYSTEM "outACCOUNT.dtd">
<outACCOUNT>
  <Accounts Number="2">
    <Account Number="1">Single Premium</Account>
    <Account Number="2">MDB</Account>
  </Accounts>
</outACCOUNT>

Account List - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inACCOUNT>

Element TypeData Type
Parent-

Attributes: 🔹AccountEnd, 🔹AccountStart, 🔹DataDirPath

This is the root element of the XML account request, and is required. This element is empty, and thus contains neither data nor child elements. The following attributes of the <inACCOUNT> element are defined:

🔹 AccountEnd

Data TypeValuesDefault
Integer[1...9999]9999

Attribute which allows the user to specify an account number other than the default to terminate the account list. If left unspecified, or if a value is provided which exceeds the number of accounts in the clients.set file, then the last account number will be used.

🔹 AccountStart

Data TypeValuesDefault
Integer[1...9999]9999

This optional attribute allows the user to specify a starting account number. The default value of 1 will return an account list starting with the first account. If the account start value exceeds the number of accounts available, then the start value will be set to 1.

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.


Account List - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outAccount>
|- 🟦 <XMLDetail>[]
|- 🟥 <Accounts>🔸Number
|- |- 🟥 <Account>[]🔸Number

🟥 <outACCOUNT> (module)

Element TypeData Type
Parent-

This is the root element of the XML account response, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟦 <XMLDetail>[]

Element TypeData TypeDefault
DataTextn/a

The XMLDetail elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

In our sample output above, no warnings are returned by the SCEX, and hence there are no <XMLDetail> elements returned.

Attributes: None


🟥 <Accounts>

Element TypeData Type
Parent-

This element contains the number of accounts returned in the list (as an attribute), and is the parent element for the individual elements containing the information for each account.

Attributes: 🔸Number

🔸 Number

Data Type
Integer

This attribute specifies the number of accounts returned in the account list. If AccountStart and AccountEnd were both specified in the input query, and if they were both valid, then Number = AccountEnd – AccountStart + 1.


🟥 <Accounts><Account>[]

Element TypeData Type
DataText

This element contains the account name (as element data) and number (as a property) of a single account. The element data is taken from the clients.set file.

Attributes: 🔸Number

🔸 Number

Data Type
Integer

This attribute associates the correct account number (as specified by the Account property in most loan input queries) with the account name.


Input Tool

The input tool interface allows the calling application to request user interface information for a given account and loan type. The SCE then reads the setup files for the specified account, and returns information useful for determining what prompts and/or options should be displayed to the user.

What type of user interface information is returned? Whether or not insurance is allowed on a given loan type, the number of payments per year allowed, etc. For a complete description, see the output definition in the last half of the chapter.

Sample Request

The following is a sample request for the Input Tool module:

<inINPUT_TOOL
   Account="1"
   DataDirPath="C:\SCEX\"
   ForceReload="false"
   LoanType="Equal"
/>

Note that like the Version module, the Input Tool request consists solely of one empty root element. All data sent as part of the request is in the form of attributes of the root element.

Sample Response

The following is a sample response returned by the previous sample request:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outINPUT_TOOL SYSTEM "outINPUT_TOOL.dtd">
<outINPUT_TOOL>
 <CalcResult>Valid Calculation</CalcResult>
 <LoanSetup>
  <DefaultDays>30</DefaultDays>
  <MinDays>1</MinDays>
  <MaxDays>90</MaxDays>
  <MaxDaysSinglePay>365</MaxDaysSinglePay>
  <DefAmount>20000.00</DefAmount>
  <MinAmount>0.00</MinAmount>
  <MaxAmount>10000000.00</MaxAmount>
  <ShowRate>1</ShowRate>
  <DefRate>10.000</DefRate>
  <MinRate>0.002</MinRate>
  <MaxRate>21.00</MaxRate>
  <ShowPPY>1</ShowPPY>
  <PPY>11111111</PPY>
  <DefTerm>36</DefTerm>
  <MinTerm>2</MinTerm>
  <MaxTerm>360</MaxTerm>
  <PromptFinIns>0</PromptFinIns>
  <AllowPast28>1</AllowPast28>
  <AllowAutoLoans>0</AllowAutoLoans>
  <True360>0</True360>
  <DebtProtection>0</DebtProtection>
  <DebtTitle>Debt Protection</DebtTitle>
  <ShowHOEPALoanType>0</ShowHOEPALoanType>
  <PremiumType>0</PremiumType>
  <PromptOpenEnd>0</PromptOpenEnd>
  <DiscloseHOEPA>2</DiscloseHOEPA>
  <AcceleratedBiWeekly>0</AcceleratedBiWeekly>
  <DefaultBirthday>19660416</DefaultBirthday>
 </LoanSetup>
 <ARM>
  <FirstRateIncrease>2.000</FirstRateIncrease>
  <RoundRate>0.000</RoundRate>
  <TeaserTermDef>24</TeaserTermDef>
  <TermInc>12</TermInc>
  <TeaserRateDef>6.000</TeaserRateDef>
  <MaxAnnualInc>2.000</MaxAnnualInc>
  <MaxLoanInc>6.000</MaxLoanInc>
  <MinLifeRate>0.000</MinLifeRate>
  <MaxLifeRate>0.000</MaxLifeRate>
 </ARM>
 <PMI>
  <AllowPMI>0</AllowPMI>
  <AssumePMI>0</AssumePMI>
  <UpFront>2</UpFront>
  <PercentToWarn>0</PercentToWarn>
  <PercentToRemove>80</PercentToRemove>
  <AddToPrin>0</AddToPrin>
  <AddToFinChg>0</AddToFinChg>
  <PutPMIinAmort>0</PutInAmort>
  <PromptFrequency>1</PromptFrequency>
  <PromptUpFront>0</PromptUpFront>
  <PromptAddToPrin>0</PromptAddToPrin>
  <PromptAddToFinChg>0</PromptAddToFinChg>
 </PMI>
 <CreditLife>
  <CLTitle>Credit Life</CLTitle>
  <CLAbbrev>CL</CLAbbrev>
  <CLAllow>1</CLAllow>
  <CLSingleOnCoBorrower>0</CLSingleOnCoBorrower>
  <CLDefault>1</CLDefault>
  <CLDefaultMethod>1</CLDefaultMethod>
  <CLPromptMethod>0</CLPromptMethod>
  <CLPromptTermGross>0</CLPromptTermGross>
  <CLPromptTermNet>1</CLPromptTermNet>
  <CLPromptTermMOB>0</CLPromptTermMOB>
  <CLPromptDismemberment>1</CLPromptDismemberment>
  <CLPromptUseLevelRates>1</CLPromptUseLevelRates>
  <CLPromptBirthdaysGross>0</CLPromptBirthdaysGross>
  <CLPromptBirthdaysNet>1</CLPromptBirthdaysNet>
  <CLPromptBirthdaysMOB>0</CLPromptBirthdaysMOB>
  <CLPromptCov>0</CLPromptCov>
  <CLMinLoanTerm>0</CLMinLoanTerm>
  <CLMinTruncTerm>0</CLMinTruncTerm>
  <CLAllowNonMonthlyGross>1</CLAllowNonMonthlyGross>
  <CLAllowWeeklyGross>1</CLAllowWeeklyGross>
  <CLAllowNonMonthlyNet>1</CLAllowNonMonthlyNet>
  <CLAllowWeeklyNet>1</CLAllowWeeklyNet>
  <CLAllowNonMonthlyMOB>0</CLAllowNonMonthlyMOB>
  <CLAllowWeeklyMOB>0</CLAllowWeeklyMOB>
  <CLMult>6</CLMult>
  <CLNBCManditory>0</CLNBCManditory>
  <LLTitle>Level Life</LLTitle>
  <LLAbbrev>LL</LLAbbrev>
 </CreditLife>
 <AccidentHealth>
  <AHTitle>Accident &amp; Health</AHTitle>
  <AHAbbrev>AH</AHAbbrev>
  <AHAllow>1</AHAllow>
  <AHSingleOnCoBorrower>0</AHSingleOnCoBorrower>
  <AHMethod>0</AHMethod>
  <AHAllowBalloonGross>1</AHAllowBalloonGross>
  <AHAllowBalloonNet>1</AHAllowBalloonNet>
  <AHDefault>1</AHDefault>
  <AHPromptBenefit>0</AHPromptBenefit>
  <AHPromptTermGross>0</AHPromptTermGross>
  <AHPromptTermNet>0</AHPromptTermNet>
  <AHMinTruncTerm>0</AHMinTruncTerm>
  <AHPromptBirthdays>1</AHPromptBirthdays>
  <AHMult>1</AHMult>
  <AHOnly>1</AHOnly>
  <AHJointWOJointCL>1</AHJointWOJointCL>
  <AHNonMonthly>1</AHNonMonthly>
  <AHSetCount>1</AHSetCount>
  <AHSetTitle>14 Retro</AHSetTitle>
  <AHCoverBalloon>0</AHCoverBalloon>
  <AHTermEqualsCL>0</AHTermEqualsCL>
 </AccidentHealth>
 <InvoluntaryUnemployment>
  <IUTitle>Involuntary Unemployment</IUTitle>
  <IUAbbrev>IU</IUAbbrev>
  <IUAllow>1</IUAllow>
  <IUDefault>1</IUDefault>
  <IUSingleOnCoBorrower>0</IUSingleOnCoBorrower>
  <IUOnly>1</IUOnly>
  <IUJointWOJointCL>1</IUJointWOJointCL>
  <IUwoAH>1</IUwoAH>
  <IUJointWOJointAH>1</IUJointWOJointAH>
  <IUPromptBenefit>0</IUPromptBenefit>
  <IUPromptTerm>0</IUPromptTerm>
  <IUMult>1</IUMult>
  <IUPromptBirthdays>0</IUPromptBirthdays>
  <IUTermEqualsCLTerm>0</IUTermEqualsCLTerm>
  <IUNonMonthly>0</IUNonMonthly>
 </InvoluntaryUnemployment>
 <PersonalProperty>
  <PPTitle>Personal Property</PPTitle>
  <PPAbbrev>PP</PPAbbrev>
  <PPAllow>1</PPAllow>
  <PPDefault>1</PPDefault>
  <PPPromptCoverage>0</PPPromptCoverage>
 </PersonalProperty>
</outINPUT_TOOL>

Input Tool - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inINPUT_TOOL>

Element TypeData Type
Parent-

This is the root element of the XML request, and is required. This element is empty, and thus contains neither data nor child elements.

The following attributes of the <inINPUT_TOOL> element are defined:

Attributes: 🔹Account, 🔹DataDirPath, 🔹ForceReload, 🔹LoanType

🔹 Account

Data TypeValuesDefault
Integer[1...9999]1

This attribute specifies which account should be used to query user interface settings. If this attribute is not specified, a default value of 1 will be used.

🔹 DataDirPath

Data TypeValuesDefault
TextSee belowSee below

If this attribute is set, the SCE will look for a data folder containing the setup files in the path specified. Thus, if the DataDirPath is set to C:\SCEX\, the SCE will look for the setup files in C:\SCEX\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 DataDirPath with an asterisk (*). Thus, if the DataDirPath is set to C:\SCEX\bank1\*, the SCE will look for the setup files in C:\SCEX\bank1\.

If this attribute is not set, the SCE will attempt to locate the data folder in the default data directory path location, which can be retrieved using the <inVERSION> module query, and set via the SCE API.

This attribute 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 DataDirPath for each grouping, you can easily separate the groups from one another instead of grouping them all together in a single directory.

🔹 ForceReload

Data TypeValuesDefault
Booleantrue, false, 1, 0false

The SCE caches setup files previously used. This improves performance for subsequent loan requests using one of the cached accounts. However, if you need the SCE to reload the setup files for a given request (e.g. you just copied over new setup files), then you can set this attribute to true and the setup files will be forced to reload. If left at the default value of false, then setup files are only reloaded when the SCE notices that one of the setup files has been modified.

🔹 LoanType

Data TypeValuesDefault
Enum[See Table Below]Equal

The LoanType attribute asks what kind of repayment plan is associated with the loan in question. Different loan types will harvest different data from the setup files.

LoanTypeExplanationModules
EqualLoans with equal paymentsEQUAL_PMT, EQUAL_PROCEEDS and EQUAL_TERM
BalloonBalloon loansBALLOON_SPECIFY_AMORT, BALLOON_SPECIFY_REGULAR, BALLOON_SPECIFY_FINAL
SinglePayLoans with a single paymentSINGLE_PAYMENT
IntOnlyInterest only payments with a final payoffINTEREST_ONLY
PrinPlusConstant principal + InterestPRINCIPAL_PLUS_INTEREST
SkipsPickupsSkipped payments or Pickup PmtsSKIPS_PICKUPS
SkipsIrregsSkipped payments or Irregular PmtsSKIPS_IRREGULARS
ARMAdjustable Rate MortgagesARM

The LoanType attribute specifies the type of loan about which the calling application wishes to query user interface information. This is necessary because some user interface options apply to one type of loan, but not another. As an example, credit life may be allowed on equal and balloon payment loans, but disallowed on all others. If this attribute is left unspecified, then an equal loan is assumed.


Input Tool - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outINPUT_TOOL>
|- 🟥 <CalcResult>
|- 🟦 <XMLDetail>[]
|- 🟥 <LoanSetup>
|- |- 🟥 <DefaultDays>
|- |- 🟥 <MinDays>
|- |- 🟥 <MaxDays>
|- |- 🟥 <MaxDaysSinglePays>
|- |- 🟥 <DefAmount>
|- |- 🟥 <MinAmount>
|- |- 🟥 <MaxAmount>
|- |- 🟥 <ShowRate>
|- |- 🟥 <DefRate>
|- |- 🟥 <MinRate>
|- |- 🟥 <MaxRate>
|- |- 🟥 <ShowPPY>
|- |- 🟥 <PPY>
|- |- 🟥 <DefTerm>
|- |- 🟥 <MinTerm>
|- |- 🟥 <MaxTerm>
|- |- 🟥 <PromptFinIns>
|- |- 🟥 <AllowPast28>
|- |- 🟥 <AllowAutoLoans>
|- |- 🟥 <True360>
|- |- 🟥 <DebtProtection>
|- |- 🟥 <DebtTitle>
|- |- 🟥 <ShowHOEPALoanType>
|- |- 🟥 <PremiumType>
|- |- 🟥 <PromptOpenEnd>
|- |- 🟥 <DiscloseHOEPA>
|- |- 🟥 <AcceleratedBiWeekly>
|- |- 🟥 <DefaultBirthday>
|- |- 🟥 <Construction>
|- 🟥 <ARM>
|- |- 🟥 <FirstRateIncrease>
|- |- 🟥 <RoundRate>
|- |- 🟥 <TeaserTermDef>
|- |- 🟥 <TermInc>
|- |- 🟥 <TeaserRateDef>
|- |- 🟥 <MaxAnnualInc>
|- |- 🟥 <MaxLoanInc>
|- |- 🟥 <MinLifeRate>
|- |- 🟥 <MaxLifeRate>
|- 🟥 <PMI>
|- |- 🟥 <AllowPMI>
|- |- 🟥 <AssumePMI>
|- |- 🟥 <UpFront>
|- |- 🟥 <PercentToWarn>
|- |- 🟥 <PercentToRemove>
|- |- 🟥 <AddToPrin>
|- |- 🟥 <AddToFinChg>
|- |- 🟥 <PutPMIinAmort>
|- |- 🟥 <PromptFrequency>
|- |- 🟥 <PromptUpFront>
|- |- 🟥 <PromptAddToPrin>
|- |- 🟥 <PromptAddToFinChg>
|- 🟥 <CreditLife>
|- |- 🟥 <CLTitle>
|- |- 🟥 <CLAbbrev>
|- |- 🟥 <CLAllow>
|- |- 🟥 <CLSingleOnCoBorrower>
|- |- 🟥 <CLDefault>
|- |- 🟥 <CLDefaultMethod>
|- |- 🟥 <CLPromptMethod>
|- |- 🟥 <CLPromptTermGross>
|- |- 🟥 <CLPromptTermNet>
|- |- 🟥 <CLPromptTermMOB>
|- |- 🟥 <CLPromptDismemberment>
|- |- 🟥 <CLPromptUseLevelRates>
|- |- 🟥 <CLPromptBirthdaysGross>
|- |- 🟥 <CLPromptBirthdaysNet>
|- |- 🟥 <CLPromptBirthdaysMOB>
|- |- 🟥 <CLPromptCov>
|- |- 🟥 <CLMinLoanTerm>
|- |- 🟥 <CLMinTruncTerm>
|- |- 🟥 <CLAllowNonMonthlyGross>
|- |- 🟥 <CLAllowWeeklyGross>
|- |- 🟥 <CLAllowNonMonthlyNet>
|- |- 🟥 <CLAllowWeeklyNet>
|- |- 🟥 <CLAllowNonMonthlyMOB>
|- |- 🟥 <CLAllowWeeklyMOB>
|- |- 🟥 <CLMult>
|- |- 🟥 <CLNBCManditory>
|- |- 🟥 <LLTitle>
|- |- 🟥 <LLAbbrev>
|- 🟥 <AccidentHealth>
|- |- 🟥 <AHTitle>
|- |- 🟥 <AHAbbrev>
|- |- 🟥 <AHAllow>
|- |- 🟥 <AHSingleOnCoBorrower>
|- |- 🟥 <AHMethod>
|- |- 🟥 <AHAllowBalloonGross>
|- |- 🟥 <AHAllowBalloonNet>
|- |- 🟥 <AHDefault>
|- |- 🟥 <AHPromptBenefit>
|- |- 🟥 <AHPromptTermGross>
|- |- 🟥 <AHPromptTermNet>
|- |- 🟥 <AHMinTruncTerm>
|- |- 🟥 <AHPromptBirthdays>
|- |- 🟥 <AHMult>
|- |- 🟥 <AHOnly>
|- |- 🟥 <AHJointWOJointCL>
|- |- 🟥 <AHNonMonthly>
|- |- 🟥 <AHSetCount>
|- |- 🟥 <AHSetTitle>[]
|- |- 🟥 <AHTermEqualsCL>
|- 🟥 <InvoluntaryUnemployment>
|- |- 🟥 <IUTitle>
|- |- 🟥 <IUAbbrev>
|- |- 🟥 <IUAllow>
|- |- 🟥 <IUDefault>
|- |- 🟥 <IUSingleOnCoBorrower>
|- |- 🟥 <IUOnly>
|- |- 🟥 <IUJointWOJointCL>
|- |- 🟥 <IUwoAH>
|- |- 🟥 <IUJointWOJointAH>
|- |- 🟥 <IUPromptBenefit>
|- |- 🟥 <IUPromptTerm>
|- |- 🟥 <IUMult>
|- |- 🟥 <IUPromptBirthdays>
|- |- 🟥 <IUTermEqualsCLTerm>
|- |- 🟥 <IUNonMonthly>
|- 🟥 <PersonalProperty>
|- |- 🟥 <PPTitle>
|- |- 🟥 <PPAbbrev>
|- |- 🟥 <PPAllow>
|- |- 🟥 <PPDefault>
|- |- 🟥 <PPPromptCoverage>

🟥 <outINPUT_TOOL>

Element TypeData Type
Parent-

This is the root element of the XML response, and is required. This element simply acts as a container for all of the result child elements.

🟥 <CalcResult>

Element TypeData Type
DataText

If the calculation was completed successfully, then this element will contain the value Valid Calculation. Otherwise, this element will contain a description of the problem encountered during the attempted computation.

🟦 <XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

In our sample output above, no warnings are returned by the SCEX, and hence there are no <XMLDetail> elements returned.


🟥 <LoanSetup>

Element TypeData Type
Parent-

This element contains child elements describing general loan user interface issues, such as miscellaneous minimum, maximum, and default values, allowed payment frequencies, etc.

🟥 <LoanSetup><DefaultDays>

Element TypeData Type
DataInteger

Contains the default number of days between the loan date and the date of first payment.

🟥 <LoanSetup><MinDays>

Element TypeData Type
DataInteger

Defines the minimum number of days allowed between the loan date and the first payment date for monthly loans only. This value is not enforced within the SCE as it is a user interface issue.

🟥 <LoanSetup><MaxDays>

Element TypeData Type
DataInteger

Defines the maximum number of days allowed between the loan date and the first payment date for monthly loans only. This value is not enforced within the SCE as it is a user interface issue.

🟥 <LoanSetup><MaxDaysSinglePays>

Element TypeData Type
DataInteger

Defines the maximum number of days allowed between the loan date and the single payment date for single payment loans. This value is not enforced within the SCE as it is a user interface issue.

🟥 <LoanSetup><DefAmount>

Element TypeData Type
DataCurrency

Contains the default proceeds amount.

🟥 <LoanSetup><MinAmount>

Element TypeData Type
DataCurrency

Holds the minimum proceeds amount allowed. This value is not enforced within the SCE as it is a user interface issue.

🟥 <LoanSetup><MaxAmount>

Element TypeData Type
DataCurrency

Holds the maximum proceeds amount allowed. This value is not enforced within the SCE as it is a user interface issue.

🟥 <LoanSetup><ShowRate>

Data TypeValues
Booleantrue, false, 1, 0

Not all accrual methods require a prompt to be visible for the note rate (e.g. split rate loans which have their rates defined in the setup files). A value of 1 means that the note rate prompt should be displayed, whereas a value of 0 indicates that it need not be displayed.

🟥 <LoanSetup><DefRate>

Element TypeData Type
DataDecimal

Contains the default note rate amount.

🟥 <LoanSetup><MinRate>

Element TypeData Type
DataDecimal

Holds the minimum note rate allowed. This value is not enforced within the SCE as it is a user interface issue.

🟥 <LoanSetup><MaxRate>

Element TypeData Type
DataDecimal

Holds the maximum note rate allowed. This value is not enforced within the SCE as it is a user interface issue.

🟥 <LoanSetup><ShowPPY>

Data TypeValues
Booleantrue, false, 1, 0

Should an entry prompting for the payment frequency be displayed? 1 = yes, 0 = no.

🟥 <LoanSetup><PPY>

Element TypeData TypeValues
DataInteger[See Table Below]

If the payment frequency needs to be prompted (see <ShowPPY>), then this element informs the user interface which payment frequencies are allowed. The content of this element is eight characters in length, and each character will be either a one (1) or a zero (0). A value of 1 indicates that the payment frequency associated with the position should be allowed, whereas a value of 0 indicates that the frequency should not be offered.

PositionPayment Frequency
1Monthly
2Annual
3Semiannual
4Quarterly
5Bimonthly
6Semimonthly
7Biweekly
8Weekly

🟥 <LoanSetup><DefTerm>

Element TypeData Type
DataInteger

Defines the default loan term, expressed as a number of months.

🟥 <LoanSetup><MinTerm>

Element TypeData Type
DataInteger

Holds the minimum loan term (expressed in months) allowed. This value is not enforced within the SCE as it is a user interface issue.

🟥 <LoanSetup><MaxTerm>

Element TypeData Type
DataInteger

Holds the maximum loan term (expressed in months) allowed. This value is not enforced within the SCE as it is a user interface issue.

🟥 <LoanSetup><PromptFinIns>

Element TypeData Type
DataInteger

Some institutions and insurance types allow the borrower to pay for the insurance premium up front, instead of financing it. If financing the insurance is an option which should be available, then this element will be set to 1, for yes. Otherwise, a value of 0 will signify that this is not an option, and no prompt should appear.

🟥 <LoanSetup><AllowPast28>

Data TypeValues
Booleantrue, false, 1, 0

If the first payment date is allowed to fall on a day number greater than 28, then this element will be set to 1, for yes. Otherwise, a value of 0 will signify that payment dates beyond the 28th day of a month are not allowed.

🟥 <LoanSetup><AllowAutoLoans>

Data TypeValues
Booleantrue, false, 1, 0

If this account has been set up to auto prompts, then this element will be set to 1. Otherwise, a value of 0 indicates that no auto prompts are necessary. This is primarily for the Winloan32, as the SCE itself has no auto prompts defined. Instead, the calling application would need to take into account price, down payment, etc. and then feed the resulting actual loan amount to the SCE.

🟥 <LoanSetup><True360>

Data TypeValues
Booleantrue, false, 1, 0

If this account has been set up to use a True 360 day calendar (e.g. all months have 30 days, regardless of the actual number of days between payments), then this element will contain the value 1. Otherwise, a value of 0 will be present.

🟥 <LoanSetup><DebtProtection>

Element TypeData Type
DataText

If this account has been set up to offer debt protection coverage instead of insurance, then this element will hold the value 1. Otherwise, a value of 0 will be present. This setting is useful to distinguish debt protection verbiage from insurance verbiage, such as "fee" instead of "premium".

🟥 <LoanSetup><DebtTitle>

Element TypeData Type
DataText

Different lending institutions may use different terminology when offering debt protection. The value of this element contains the title of this product for the account.

🟥 <LoanSetup><ShowHOEPALoanType>

Data TypeValues
Booleantrue, false, 1, 0

HOEPA calculations have been deprecated in the SCE, so you may ignore this element.

🟥 <LoanSetup><PremiumType>

Element TypeData TypeValues
DataInteger[0..3]

The type of premium which has been set up for the account may be useful knowledge for your user interface. The numeric values possible and their associated meanings are as follows: 0 = standard single premium, 1 = standard monthly outstanding balance, 2 = True monthly outstanding balance, 3 = TruStage single premium.

🟥 <LoanSetup><PromptOpenEnd>

Data TypeValues
Booleantrue, false, 1, 0

If this element holds a value of 1, then this account has been set up to prompt the user if this is a TruStage open ended loan. A TruStage open ended loan causes all age and term related truncation caps to be ignored.

If this element holds a value other than 1, then the open ended prompt need not be displayed (and the corresponding LineOfCredit attribute of the <Protection> element should be set to false.

🟥 <LoanSetup><DiscloseHOEPA>

Data TypeValues
Booleantrue, false, 1, 0

HOEPA calculations have been deprecated in the SCE, so you may ignore this element.

🟥 <LoanSetup><AcceleratedBiWeekly>

Data TypeValues
Booleantrue, false, 1, 0

Accounts that have set up accelerated biweekly payment schedules will report a value of 1 in this element. If normal biweekly payments are set up, then a value of 0 will be returned.

If accelerated biweekly payment schedules are in effect, it is very important to understand that the value of the <Term> element sent to the SCEX will be interpreted as a number of monthly payments, not biweekly payments. The SCE will then compute a monthly loan based upon that term, divide the resulting payment in half, and then compute a biweekly loan term using the computed payment. This computed biweekly term is then returned with the response, along with all of the other standard result information.

🟥 <LoanSetup><DefaultBirthday>

Element TypeData Type
DataInteger

The default birthday to be used with protection products is entered here as an integer. e.g. January 17, 1996 would be returned as 19960117.

🟥 <LoanSetup><Construction>

Element TypeData TypeValues
DataInteger1, 2

Accounts that do not have construction loans configured will return a value of 0. If construction loans have been configured for this account, then a value greater than zero will be returned in this element, identifying the construction loan method in use:

  • 1 = simple method where construction interest is treated as a prepaid fee when a permanent loan is attached
  • 2 = LaserPro method which prepends interest only payments to the amortization schedule when a permanent loan is attached.

🟥 <ARM>

Element TypeData Type
Parent-

This element contains child elements describing how adjustable rate mortgages have been configured in the setup files. When computing ARMs, you can use these values as is, as defaults, or ignore them completely.

🟥 <ARM><FirstRateIncrease>

Element TypeData Type
DataDecimal

The default UI value for the <FirstRateIncrease> element of an <inARM> request.

🟥 <ARM><RoundRate>

Element TypeData Type
DataDecimal

The default UI value for the <RoundRate> element of an <inARM> request.

🟥 <ARM><TeaserTermDef>

Element TypeData Type
DataInteger

The default UI value for the <TeaserTerm> element of an <inARM> request.

🟥 <ARM><TermInc>

Element TypeData Type
DataInteger

The default UI value for the <TermSteps> element of an <inARM> request.

🟥 <ARM><TeaserRateDef>

Element TypeData Type
DataDecimal

The default UI value for the <TeaserRate> element of an <inARM> request.

🟥 <ARM><MaxAnnualInc>

Element TypeData Type
DataDecimal

The default UI value for the <AnnualRateIncrease> element of an <inARM> request.

🟥 <ARM><MaxLoanInc>

Element TypeData Type
DataDecimal

The default UI value for the <MaxRateIncrease> element of an <inARM> request.

🟥 <ARM><MinLifeRate>

Element TypeData Type
DataDecimal

The default UI value for the <MinRate> element of an <inARM> request.

🟥 <ARM><MaxLifeRate>

Element TypeData Type
DataDecimal

The default UI value for the <MaxRate> element of an <inARM> request.


🟥 <PMI>

Element TypeData Type
Parent-

This element contains child elements describing user interface issues dealing with PMI.

🟥 <PMI><AllowPMI>

Data TypeValues
Booleantrue, false, 1, 0

If PMI coverage is allowed, and hence if the prompts associated with it should appear, then the value of this element is 1. Otherwise, a value of 0 is returned and all further child elements of PMI may be ignored.

🟥 <PMI><AssumePMI>

Data TypeValues
Booleantrue, false, 1, 0

The value of this element indicates whether or not PMI coverage should be provided as a default with a new loan. A value of 1 indicates that PMI coverage should be defaulted to true, whereas a zero value indicates a default PMI coverage of false.

🟥 <PMI><UpFront>

Element TypeData Type
DataInteger

This element contains the number of periodic PMI premiums to be made up front, as reported in the setup files. When calling the SCE and requesting PMI coverage, you may either use this value or select a different value.

🟥 <PMI><PercentToWarn>

Element TypeData Type
DataInteger

This element contains the loan to value ratio at which a warning should be issued, as reported in the setup files. When calling the SCE and requesting PMI coverage, you may either use this value or select a different value.

🟥 <PMI><PercentToRemove>

Element TypeData Type
DataInteger

This element contains the loan to value ratio at which PMI coverage should be removed, as reported in the setup files. When calling the SCE and requesting PMI coverage, you may either use this value or select a different value.

🟥 <PMI><AddToPrin>

Data TypeValues
Booleantrue, false, 1, 0

The <AddToPrin> element determines if the up front PMI fee should be added to the principal balance, as reported in the setup files. A value of 1 means that the PMI fee should be added to the principal balance, whereas a value of 0 indicates that the PMI fee will be paid out of pocket. When calling the SCE and requesting PMI coverage, you may either use this value or select a different value.

🟥 <PMI><AddToFinChg>

Data TypeValues
Booleantrue, false, 1, 0

The <AddToFinChg> element determines if the up front PMI fee should be included in the Reg. Z Finance Charge (and hence, affect the APR), as reported in the setup files. A value of 1 means that the PMI fee should be added to the finance charge, whereas a value of 0 indicates that the PMI fee will not affect the finance charge nor APR. When calling the SCE and requesting PMI coverage, you may either use this value or select a different value.

🟥 <PMI><PutPMIinAmort>

Data TypeValues
Booleantrue, false, 1, 0

This element determines if the periodic PMI premiums should be included in the returned amortization schedule, as reported in the setup files. A value of 1 means that the PMI premiums should be included with the amortization table, whereas a value of 0 indicates that PMI will not show up in the amortization table. When calling the SCE and requesting PMI coverage, you may either use this value or select a different value.

🟥 <PMI><PromptFrequency>

Data TypeValues
Booleantrue, false, 1, 0

If the value of this element is 1, then the setup files indicate that the application should allow the user to select a PMI frequency different than the payment frequency of the loan. The application would then use this prompt's value to fill the Freq attribute of the PMI element for a loan requesting PMI coverage. A value of 0 indicates that the PMI frequency need not be prompted, and no Freq attribute need be specified (it will default to the payment frequency of the loan).

🟥 <PMI><PromptUpFront>

Data TypeValues
Booleantrue, false, 1, 0

If the value of this element is 1, then the setup files indicate that the application should allow the user to specify a number of periodic premiums to be paid up front (with the default value specified in the UpFront element discussed above). The application would then use this prompt's value to fill the UpFront attribute of the PMI element for a loan requesting PMI coverage. A value of 0 indicates that the UpFront PMI premium need not be prompted, and the UpFront attribute should be set to the value of the UpFront element.

🟥 <PMI><PromptAddToPrin>

Data TypeValues
Booleantrue, false, 1, 0

If the value of this element is 1, then the setup files indicate that the application should allow the user to specify whether or not the up front periodic PMI premiums should be added to the principal balance or not (with the default value specified in the <AddToPrin> element discussed above). The application would then use this prompt's value to fill the AddToPrin attribute of the PMI element for a loan requesting PMI coverage. A value of 0 indicates that this option need not be prompted, and the AddToPrin attribute should be set to the value of the AddToPrin element.

🟥 <PMI><PromptAddToFinChg>

Data TypeValues
Booleantrue, false, 1, 0

If the value of this element is 1, then the setup files indicate that the application should allow the user to specify whether or not the up front periodic PMI premiums should be added to the finance charge or not (with the default value specified in the AddToFinChg element discussed above). The application would then use this prompt's value to fill the AddToFinChg attribute of the PMI element for a loan requesting PMI coverage. A value of 0 indicates that this option need not be prompted, and the AddToFinChg attribute should be set to the value of the <AddToFinChg> element.


🟥 <CreditLife>

Element TypeData Type
Parent-

This element contains child elements describing user interface issues dealing with credit life.

🟥 <CreditLife><CLTitle>

Element TypeData Type
DataText

This element holds the product title associated with the SCE's credit life calculation option. 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 (e.g. DCL for debt cancellation life). The title may be used for inputs (e.g. "Credit Life Option") and outputs (e.g. "Credit Life Premium").

🟥 <CreditLife><CLAbbrev>

Element TypeData Type
DataText

Like the <CLTitle> element above, this element provides an abbreviation to be used for the product associated with the SCE's credit 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").

🟥 <CreditLife><CLAllow>

Data TypeValues
Booleantrue, false, 1, 0

If credit life coverage is allowed, and hence if the prompts associated with it should appear, then the value of this element is 1. Otherwise, a value of 0 is returned.

🟥 <CreditLife><CLSingleOnCoBorrower>

Data TypeValues
Booleantrue, false, 1, 0

If single coverage is allowed on the co-borrower, then this element will hold a value of 1. If it holds a value of 0, then single life is only allowed on the primary borrower.

🟥 <CreditLife><CLDefault>

Element TypeData TypeValues
DataInteger[0..3]

Specifies the default credit life option: 0 = None, 1 = Single, 2 = Joint, 3 = Single on Co-borrower.

🟥 <CreditLife><CLDefaultMethod>

Element TypeData TypeValues
DataInteger[0..2]

The default credit life method as specified in the setup files: 0 = Gross, 1 = Net, 2 = MOB.

🟥 <CreditLife><CLPromptMethod>

Data TypeValues
Booleantrue, false, 1, 0

Some accounts using single premium insurance may support both net and gross credit life. If this is the case, this element will hold a value of 1 to signal the UI that the user should be prompted for the credit life method. A value of 0 indicates that prompting for the credit life method is not required, as only one method is allowed.

🟥 <CreditLife><CLPromptTermGross>

Data TypeValues
Booleantrue, false, 1, 0

If this element holds a value of 1, then the user may be prompted for a desired term of coverage for single premium gross credit life. A value of 0 indicates that user specified truncation is not allowed and should not be prompted.

🟥 <CreditLife><CLPromptTermNet>

Data TypeValues
Booleantrue, false, 1, 0

If this element holds a value of 1, then the user may be prompted for a desired term of coverage for single premium net credit life. A value of 0 indicates that user specified truncation is not allowed and should not be prompted.

🟥 <CreditLife><CLPromptTermMOB>

Data TypeValues
Booleantrue, false, 1, 0

If this element holds a value of 1, then the user may be prompted for a desired term of coverage for MOB credit life. A value of 0 indicates that user specified truncation is not allowed and should not be prompted.

🟥 <CreditLife><CLPromptDismemberment>

Data TypeValues
Booleantrue, false, 1, 0

Some accounts allow for an additional dismemberment option to be written with the credit life policy (with an associated rate increase). If dismemberment is an option for this account, then the element will hold a value of 1. Otherwise, a value of 0 indicates that no dismemberment is offered.

🟥 <CreditLife><CLPromptUseLevelRates>

Data TypeValues
Booleantrue, false, 1, 0

In some states, it is legal to compute decreasing credit life using level rates. If that is an option for the account specified, then this value will contain a value of 1 indicating that the UI should prompt for the option to use level rates. A value of 0 indicates that this option is not allowed, and hence the prompt for using level rates should not be presented to the user.

🟥 <CreditLife><CLPromptBirthdaysGross>

Data TypeValues
Booleantrue, false, 1, 0

If age caps are in effect for single premium gross life coverage, and the UI needs to prompt for birthdays, then this value will be set to 1. If age truncation is not set up, then this element will hold a value of 0.

🟥 <CreditLife><CLPromptBirthdaysNet>

Data TypeValues
Booleantrue, false, 1, 0

If age caps are in effect for single premium net life coverage, and the UI needs to prompt for birthdays, then this value will be set to 1. If age truncation is not set up, then this element will hold a value of 0.

🟥 <CreditLife><CLPromptBirthdaysMOB>

Data TypeValues
Booleantrue, false, 1, 0

If age caps are in effect for MOB life coverage, and the UI needs to prompt for birthdays, then this value will be set to 1. If age truncation is not set up, then this element will hold a value of 0.

🟥 <CreditLife><CLPromptCov>

Data TypeValues
Booleantrue, false, 1, 0

If the account has been set up to allow for a coverage amount to be specified by the user, then this value will be set to 1 to indicate that the UI should prompt the user for a life coverage amount. A value of 0 indicates that only the default coverage amount will be considered, and hence there is no need to prompt for a user specified coverage.

🟥 <CreditLife><CLMinLoanTerm>

Data TypeValues
Booleantrue, false, 1, 0

This element contains the minimum loan term (in months) for which credit life coverage is allowed. A value of 0 indicates that no minimum loan term is in effect.

🟥 <CreditLife><CLMinTruncTerm>

Data TypeValues
Booleantrue, false, 1, 0

This element holds the minimum term (in months) that credit life may be truncated. If the coverage term is truncated to a value less than this amount, then coverage will be dropped. A value of 0 indicates that there is no credit life minimum truncation term.

🟥 <CreditLife><CLAllowNonMonthlyGross>

Data TypeValues
Booleantrue, false, 1, 0

If single premium gross credit life is allowed on loans with payment frequencies of 1, 2, 4, or 6 payments per year, then this element will hold a value of 1. A value of 0 indicates that coverage is not allowed on these payment frequencies, and hence the UI need not display credit life prompts.

🟥 <CreditLife><CLAllowWeeklyGross>

Data TypeValues
Booleantrue, false, 1, 0

If single premium gross credit life is allowed on loans with payment frequencies of 24, 26, or 52 payments per year, then this element will hold a value of 1. A value of 0 indicates that coverage is not allowed on these payment frequencies, and hence the UI need not display credit life prompts.

🟥 <CreditLife><CLAllowNonMonthlyNet>

Data TypeValues
Booleantrue, false, 1, 0

If single premium net credit life is allowed on loans with payment frequencies of 1, 2, 4, or 6 payments per year, then this element will hold a value of 1. A value of 0 indicates that coverage is not allowed on these payment frequencies, and hence the UI need not display credit life prompts.

🟥 <CreditLife><CLAllowWeeklyNet>

Data TypeValues
Booleantrue, false, 1, 0

If single premium net credit life is allowed on loans with payment frequencies of 24, 26, or 52 payments per year, then this element will hold a value of 1. A value of 0 indicates that coverage is not allowed on these payment frequencies, and hence the UI need not display credit life prompts.

🟥 <CreditLife><CLAllowNonMonthlyMOB>

Data TypeValues
Booleantrue, false, 1, 0

If MOB credit life is allowed on loans with payment frequencies of 1, 2, 4, or 6 payments per year, then this element will hold a value of 1. A value of 0 indicates that coverage is not allowed on these payment frequencies, and hence the UI need not display credit life prompts.

🟥 <CreditLife><CLAllowWeeklyMOB>

Data TypeValues
Booleantrue, false, 1, 0

If MOB credit life is allowed on loans with payment frequencies of 24, 26, or 52 payments per year, then this element will hold a value of 1. A value of 0 indicates that coverage is not allowed on these payment frequencies, and hence the UI need not display credit life prompts.

🟥 <CreditLife><CLMult>

Element TypeData TypeValues
DataInteger1, 3, 6, 12

If the user is allowed to specify a truncated term of coverage for credit life (see <CLPromptTermGross>, <CLPromptTermNet> and <CLPromptTermMOB> above), then this value defines the multiple which the entered term of coverage must with. Possible values are: 1 (any), 3, 6 and 12.

🟥 <CreditLife><CLNBCManditory>

Data TypeValues
Booleantrue, false, 1, 0

This was a custom modification made for a specific client, and can safely be ignored by all others.

🟥 <CreditLife><LLTitle>

Element TypeData Type
DataText

This element holds the product title associated with the SCE's level credit life calculation. This title defaults to Level Life, although customers who wish to customize the name of this offering may do so.

The title may be used for inputs (e.g. "Level Life Option") and outputs (e.g. "Level Life Premium").

🟥 <CreditLife><LLAbbrev>

Element TypeData Type
DataText

Like the <LLTitle> element above, this element provides an abbreviation to be used for the product associated with the SCE’s level credit life calculation option. The value of this element defaults to LL, although customers who wish to customize this abbreviation may do so. The title is primarily useful when producing outputs (e.g. "LL Coverage Term").


🟥 <AccidentHealth>

Element TypeData Type
Parent-

This element contains child elements describing user interface issues dealing with accident and health coverage (A&H).

🟥 <AccidentHealth><AHTitle>

Element TypeData Type
DataText

This element holds the product title associated with the SCE's accident and health calculation option. This title defaults to Accident & Health, although customers who wish to customize the name of this offering may do so. For example, it could simply be called Disability.

🟥 <AccidentHealth><AHAbbrev>

Element TypeData Type
DataText

Like the <AHTitle> element above, this element provides an abbreviation to be used for the product associated with the SCE’s accident and health 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 life product for regulatory reasons (e.g., DCD for debt cancellation disability).

The title may be used for inputs (e.g., "AH Option") and outputs (e.g., "AH Coverage Term").

🟥 <AccidentHealth><AHAllow>

Element TypeData TypeValues
DataInteger[0..2]

If A&H coverage is allowed by the account settings, then this element will contain a value of either 1 (single A&H only) or 2 (both single and joint A&H offered). A value of 0 indicates that A&H coverage is not allowed for this account.

🟥 <AccidentHealth><AHSingleOnCoBorrower>

Data TypeValues
Booleantrue, false, 1, 0

If single coverage is allowed on the co-borrower, then this element will hold a value of 1. If it holds a value of 0, then single life is only allowed on the primary borrower.

🟥 <AccidentHealth><AHMethod>

Element TypeData TypeValues
DataInteger[0..2]

This element describes the method used to compute the A&H premium: 0 = Single Premium, 1 = MOB Net, 2 = MOB Gross.

🟥 <AccidentHealth><AHAllowBalloonGross>

Data TypeValues
Booleantrue, false, 1, 0

If A&H coverage is allowed on balloon loans covered with single premium gross credit life insurance, then this element will hold a value of 1. Otherwise, a value of 0 will be present.

🟥 <AccidentHealth><AHAllowBalloonNet>

Data TypeValues
Booleantrue, false, 1, 0

If A&H coverage is allowed on balloon loans covered with single premium net credit life insurance, then this element will hold a value of 1. Otherwise, a value of 0 will be present.

🟥 <AccidentHealth><AHDefault>

Element TypeData TypeValues
DataInteger[0..3]

Specifies the default A&H option: 0 = None, 1 = Single, 2 = Joint, 3 = Single on Co-borrower.

🟥 <AccidentHealth><AHPromptBenefit>

Data TypeValues
Booleantrue, false, 1, 0

If the account has been set up to allow for a benefit amount to be specified by the user, then this value will be set to 1 to indicate that the UI should prompt the user for the desired A&H benefit amount. A value of 0 indicates that only the default benefit amount will be considered, and hence there is no need to prompt for a user specified benefit.

🟥 <AccidentHealth><AHPromptTermGross>

Data TypeValues
Booleantrue, false, 1, 0

If this element holds a value of 1, then the user may be prompted for a desired term of coverage for A&H coverage with single premium gross credit life. A value of 0 indicates that user specified truncation is not allowed and should not be prompted.

🟥 <AccidentHealth><AHPromptTermNet>

Data TypeValues
Booleantrue, false, 1, 0

If this element holds a value of 1, then the user may be prompted for a desired term of coverage for A&H coverage with single premium net credit life. A value of 0 indicates that user specified truncation is not allowed and should not be prompted.

🟥 <AccidentHealth><AHMinTruncTerm>

Element TypeData Type
DataInteger

This element holds the minimum term (in months) that A&H may be truncated. If the coverage term is truncated to a value less than this amount, then coverage will be dropped. A value of 0 indicates that there is no minimum truncation term.

🟥 <AccidentHealth><AHPromptBirthdays>

Data TypeValues
Booleantrue, false, 1, 0

If age caps are in effect for A&H, and the UI needs to prompt for birthdays, then this value will be set to 1. If age truncation is not set up, then this element will hold a value of 0.

🟥 <AccidentHealth><AHMult>

Element TypeData TypeValues
DataInteger1, 3, 6, 12

If the user is allowed to specify a truncated term of coverage for A&H (see <AHPromptTermGross> and <AHPromptTermNet> above), then this value defines the number of which the entered term of coverage must be a multiple. Possible values are: 1 (any), 3, 6 and 12.

🟥 <AccidentHealth><AHOnly>

Data TypeValues
Booleantrue, false, 1, 0

If A&H is allowed without credit life, then this element will hold the value 1. A value of 0 indicates that A&H may not be written without life coverage.

🟥 <AccidentHealth><AHJointWOJointCL>

Data TypeValues
Booleantrue, false, 1, 0

If Joint A&H is allowed without joint credit life, then this element will hold the value 1. A value of 0 indicates that joint A&H may not be written without joint life coverage. Note that if the value of <AHOnly> is 0, then this setting should be ignored.

🟥 <AccidentHealth><AHNonMonthly>

Data TypeValues
Booleantrue, false, 1, 0

If A&H is allowed on loans with payment frequencies other than monthly, then this element will hold a value of 1. A value of 0 indicates that coverage is not allowed on non-monthly loans, and hence the UI need not display A&H prompts.

🟥 <AccidentHealth><AHSetCount>

Element TypeData Type
DataInteger

The number of A&H rate sets available is specified by this element.

🟥 <AccidentHealth><AHSetTitle>[]

Element TypeData Type
DataText

For each A&H rate set available (see above for the number available), there will be one <AHSetTitle> element holding the name of the set. The order of these elements corresponds to the Table numbers used to specify the sets. Thus, the first <AHSetTitle> element holds the name of the first A&H rate set, and corresponds to Table="0".

🟥 <AccidentHealth><AHTermEqualsCL>

Data TypeValues
Booleantrue, false, 1, 0

Some accounts are set up such that specified terms of coverage are allowed for credit life and disability, however they must be the same. If this is the case, then this element will hold a value of 1.

On the other hand, if different specified terms of coverage are allowed, then this element will contain a value of 0.


🟥 <InvoluntaryUnemployment>

Element TypeData Type
Parent-

This element contains child elements describing user interface issues dealing with involuntary unemployment coverage (IUI).

🟥 <InvoluntaryUnemployment><IUITitle>

Element TypeData Type
DataText

This element holds the product title associated with the SCE’s involuntary unemployment calculation option. This title defaults to Involuntary Unemployment, although customers who wish to customize the name of this offering may do so. For example, it could simply be called Unemployment, or Job Loss. 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., "Involuntary Unemployment Option") and outputs (e.g., "Involuntary Unemployment Premium").

🟥 <InvoluntaryUnemployment><IUIAbbrev>

Element TypeData Type
DataText

Like the <IUITitle> element above, this element provides an abbreviation to be used for the product associated with the SCE’s involuntary unemployment 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 life product for regulatory reasons (e.g., DCU for debt cancellation unemployment).

The title may be used for inputs (e.g., "IU Option") and outputs (e.g., "IU Coverage Term").

🟥 <InvoluntaryUnemployment><IUAllow>

Element TypeData TypeValues
DataInteger[0..2]

If IUI coverage is allowed by the account settings, then this element will contain a value of either 1 (single IUI only) or 2 (both single and joint IUI offered). A value of 0 indicates that IUI coverage is not allowed for this account.

🟥 <InvoluntaryUnemployment><IUIDefault>

Element TypeData TypeValues
DataInteger[0..2]

Specifies the default IUI option. 0 = None, 1 = Single, 2 = Joint, 3 = Single on Co-borrower.

🟥 <InvoluntaryUnemployment><IUSingleOnCoBorrower>

Data TypeValues
Booleantrue, false, 1, 0

If single coverage is allowed on the co-borrower, then this element will hold a value of 1. If it holds a value of 0, then single life is only allowed on the primary borrower.

🟥 <InvoluntaryUnemployment><IUOnly>

Data TypeValues
Booleantrue, false, 1, 0

If IUI is allowed without A&H, then this element will hold the value 1. A value of 0 indicates that IUI may not be written without A&H coverage.

🟥 <InvoluntaryUnemployment><IUJointWOJointCL>

Data TypeValues
Booleantrue, false, 1, 0

If Joint IUI is allowed without joint credit life, then this element will hold the value 1. A value of 0 indicates that joint IUI may not be written without joint life coverage. Note that if the value of <IUOnly> is 0, then this setting should be ignored.

🟥 <InvoluntaryUnemployment><IUwoAH>

Data TypeValues
Booleantrue, false, 1, 0

If IUI is allowed without A&H, then this element will hold the value 1. A value of 0 indicates that IUI may not be written without A&H coverage.

🟥 <InvoluntaryUnemployment><IUJointWOJointAH>

Data TypeValues
Booleantrue, false, 1, 0

If joint IUI is allowed without joint A&H, then this element will hold the value 1. A value of 0 indicates that joint IUI may not be written without joint A&H.

🟥 <InvoluntaryUnemployment><IUPromptBenefit>

Data TypeValues
Booleantrue, false, 1, 0

If the account has been set up to allow for a benefit amount to be specified by the user, then this value will be set to 1 to indicate that the UI should prompt the user for a the desired IUI benefit amount. A value of 0 indicates that only the default benefit amount will be considered, and hence there is no need to prompt for a user specified benefit.

🟥 <InvoluntaryUnemployment><IUPromptTerm>

Data TypeValues
Booleantrue, false, 1, 0

If this element holds a value of 1, then the user may be prompted for a desired term of coverage for IUI coverage. A value of 0 indicates that user specified truncation is not allowed and should not be prompted.

🟥 <InvoluntaryUnemployment><IUMult>

Element TypeData TypeValues
DataInteger1, 3, 6, 12

If the user is allowed to specify a truncated term of coverage for IUI (see <IUPromptTerm> above), then this value defines the number of which the entered term of coverage must be a multiple. Possible values are: 1 (any), 3, 6 and 12.

🟥 <InvoluntaryUnemployment><IUPromptBirthdays>

Data TypeValues
Booleantrue, false, 1, 0

If age caps are in effect for IUI, and the UI needs to prompt for birthdays, then this value will be set to 1. If age truncation is not set up, then this element will hold a value of 0.

🟥 <InvoluntaryUnemployment><IUTermEqualsCLTerm>

Data TypeValues
Booleantrue, false, 1, 0

Some accounts are set up such that specified terms of coverage are allowed for credit life and IUI, however they must be the same. If this is the case, then this element will hold a value of 1.

On the other hand, if different specified terms of coverage are allowed, then this element will contain a value of 0.

🟥 <InvoluntaryUnemployment><IUNonMonthly>

Data TypeValues
Booleantrue, false, 1, 0

If IUI is allowed on loans with payment frequencies other than monthly, then this element will hold a value of 1. A value of 0 indicates that coverage is not allowed on non-monthly loans, and hence the UI need not display IUI prompts.


🟥 <PersonalProperty>

Element TypeData Type
Parent-

This element contains child elements describing user interface issues dealing with personal property coverage (PP).

🟥 <PersonalProperty><PPTitle>

Element TypeData Type
DataText

This element holds the product title associated with the SCE’s personal property calculation option. This title defaults to Personal Property, although customers who wish to customize the name of this offering may do so. For example, it could simply be called Property. Customers who offer debt cancellation instead of insurance will also usually wish to change the name of their personal property product for regulatory reasons.

The title may be used for inputs (e.g. "Personal Property Option") and outputs (e.g. "Personal Property Premium").

🟥 <PersonalProperty><PPAbbrev>

Element TypeData Type
DataText

Like the <PPTitle> element above, this element provides an abbreviation to be used for the product associated with the SCE’s personal property 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 life product for regulatory reasons (e.g. DCP for debt cancellation property).

The title may be used for inputs (e.g. "PP Option") and outputs (e.g. "PP Coverage Term").

🟥 <PersonalProperty><PPAllow>

Element TypeData TypeValues
DataInteger[0..2]

If PP coverage is allowed by the account settings, then this element will contain a value of either 1 (single PP only) or 2 (both single and joint PP offered). A value of 0 indicates that PP coverage is not allowed for this account.

🟥 <PersonalProperty><PPDefault>

Element TypeData TypeValues
DataInteger[0..2]

Specifies the default PP option: 0 = None, 1 = Single, 2 = Joint.

🟥 <PersonalProperty><PPPromptCoverage>

Data TypeValues
Booleantrue, false, 1, 0

If the account has been set up with a personal property type which allows the user to specify a coverage amount, then this element will hold the value of 1. Otherwise, a value of 0 indicates that no coverage prompt need be displayed for PP.

Setup Cache

In the section covering the SCEX's Account module, it was shown how to list all of the accounts present in a given data directory path. In this chapter, a setup file is defined as the tuple (data path, account number).

As of the January, 2009 release of the SCEX, a setup file cache is initialized when the SCEX is first loaded. This cache will store setup files in memory, so that later calls to the SCEX which utilize cached setup files will not need to reload the files for each calculation, so long as the setup file remains in the cache. This cache will prove most beneficial to applications which allow access to multiple setup files, such as those commonly found in ASP and SAAS solutions and web hosted applications.

Sample Request

The following is a sample SCEX request for setup file cache information:

<inSETUPS Cmd="List" Arg1="all" Arg2="all" />

Much like the Account and Version module requests of previous chapters, this input query is made up of a single (empty) element with three (3) optional attributes.

Sample Response

No matter what Cmd attribute value is specified in the request, the format of the response is the same. The following is a sample response generated by the previous request:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE outSETUPS SYSTEM "outSETUPS.dtd">
<outSETUPS>
  <Setups Count="3" Max="100">
    <Setup Index="1" Path="c:\scex\" Account="2" LastUsed="00:00:16" UseCount="0" HitCount="1" />
    <Setup Index="2" Path="c:\scex\" Account="1" LastUsed="00:00:04" UseCount="0" HitCount="1" />
    <Setup Index="3" Path="c:\banks\" Account="9" LastUsed="00:00:24" UseCount="0" HitCount="1" />
  </Setups>
</outSETUPS>

Setup Cache - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.


🟥 <inSETUPS>

Element TypeData Type
Parent-

This is the module element of the XML setup file cache request. This element is empty, and thus contains neither data nor child elements. The following attributes of the <inSETUPS> element are defined:

Attributes: 🔹Arg1, 🔹Arg2, 🔹Cmd

🔹 Arg1

Element TypeData TypeDefault
DataTextNULL

This optional attribute is used to specify the first argument for the specified Cmd. Please see the Cmd attribute to determine if this argument is necessary, and if so, what values are valid.

🔹 Arg2

Element TypeData TypeDefault
DataTextNULL

This optional attribute is used to specify the second argument for the specified Cmd. Please see the Cmd attribute to determine if this argument is necessary, and if so, what values are valid.

🔹 Cmd

Element TypeData TypeDefault
EnumList, Flush, HardFlush, SetMaxList

There are four commands (Cmd) which the setup file cache request recognizes. Each of these commands is detailed below, along with the number of arguments (Arg1 and Arg2) supported.

  • List - The List command is the default command used if none is provided, and requires no arguments. Any values specified in Arg1 or Arg2 are ignored. This command simply returns the setup file cache status, and does not act on the setup file cache in any manner.

  • Flush - The Flush command flushes (clears) a specified setup file (or files) from RAM based upon values provided in the arguments.

    The Flush command flushes a specified setup file (or files) based upon values provided in the arguments. For each setup file in the cache which matches the criteria found in both of the arguments, if the UseCount is equal to zero, then the setup file will be cleared from the cache.

    • Arg1 holds the path value against which all setup files in the cache will be compared. If the value of Arg1 is all, then all setup files will be matched. Please note that this comparison is case sensitive!

    • Arg2 holds the account value against which all setup files will be compared. Similar to Arg1, a value of all indicates that all setup file wills be matched.

    Example 1: Flush all setup files.

    <inSETUPS Cmd="Flush" Arg1="all" Arg2="all" />
    

    Example 2: Flush all setup files in directory c:\scex\.

    <inSETUPS Cmd="Flush" Arg1="c:\scex\" Arg2="all" />
    

    Example 3: Flush all setup files with account number one.

    <inSETUPS Cmd="Flush" Arg1="all" Arg2="1" />
    
  • HardFlush - The HardFlush command operates identically to the Flush command, with the sole exception that all setup files in the cache which match both criteria will be flushed, even if UseCount is greater than zero.

  • SetMax - This command allows the calling application to set the maximum cache size to the integer value specified in Arg1. Acceptable values range from 1 to 10,000.

    Note that if an application sets a new maximum cache size to a value less than the number of setup files already present in the cache, none will be flushed. To do so, the application much send a separate Flush command.


Setup Cache - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.


🟥 <outSETUPS> (Module)

Element TypeData Type
Parent-

This is the module element of the XML setup file cache response. This element simply acts as a container for all of the result child elements.

Attributes: None


🟦 <XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <Setups>

Element TypeData Type
Parent-

This element contains the number of setup files currently cached (as an attribute), as well as the capacity of the cache. It is also the parent element for the individual elements containing the information for each cached setup file.

Attributes: 🔸Count, 🔸Max

🔸 Count

Data TypeValues
Integer[1...999]

This attribute specifies the number of setup files currently cached.

🔸 Max

Data TypeValues
Integer[1...999]

This attribute specifies the maximum number of setup files which may be cached. An application can alter this value using the SetMax command (see the Cmd attribute).


🟦 <Setups>[]<Setup>

Element Type
Empty

This element contains relevant data for every setup file present in the cache. The element itself contains no data. Instead, all of the information of use is contained in the following attributes of the element:

Attributes: 🔸Account, 🔸HitCount, 🔸Index, 🔸LastUsed, 🔸Path, 🔸UseCount

🔸 Account

Data TypeValues
Integer[1...9999]

This account number associated with the setup file in the cache.

🔸 HitCount

Data TypeValues
Integer[0...]

This attribute contains a value indicating the number of times this setup file was requested for check-out. It is zero based, thus the first time a setup file is requested, it's HitCount is set to zero.

🔸 Index

Data TypeValues
Integer[1...9999]

This attribute associates the a number with each setup file in the cache.

🔸 LastUsed

Data TypeValues
Timehh:mm:ss

The LastUsed attribute reports the number of hours, minutes, and seconds (hh:mm:ss) since the setup file was last requested by the SCE.

🔸 Path

Data TypeValues
Textspecial

The Path attribute is the data directory path associated with the setup file. Note that on the Windows platform, file and path names are not case sensitive. Thus, all data directory paths are converted to lowercase upon entry to the SCE. Howwever, on platforms which are case sensitive (e.g. Linux), no changes are made to the case of characters which make up the data directory path.

🔸 UseCount

Data TypeValues
Integer[1...9999]

The UseCount attribute returns the number of times the setup file is currently in use at the time the request is made. When setup files are used in the SCE, a check-out and check-in process is used. That is, the SCE checks out a setup file and increments it's use count to signal to the SCE to not do anything with the setup file until the SCE is done with the setup file, it checks it back in and decreases its use count.

Thus, if a setup file's use count is greater than zero, it means that the setup file could still be in use somewhere within the engine (or it could mean that for some reason, it was not checked back in). In either case, a Flush command will not remove any setup files with a UseCount > 0.

To remove a setup file from the cache with a UseCount > 0, one would need to use the HardFlush command. Please see the Cmd attribute for more information on the various commands you can send to the XML interface.


Version

The SCEX's Version interface is the simplest contained in the SCEX, and hence makes an ideal starting point. The versions of libraries in use by their host applications is also of critical importance, so let us tackle it now.

Sample Request

All XML requests sent to the SCEX must conform to a document structure that the SCEX expects and can understand. Since the application calling the SCEX is providing the XML data which the SCEX will parse, it is necessary that the calling application create valid XML queries.

The following is a sample SCEX request for version information:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>  
<!DOCTYPE inVERSION SYSTEM "inVERSION.dtd">  
<inVERSION/>  

As this is the first XML message we are documenting, let’s go through this (admittedly small) XML document line by line.

Line 1 is the XML declaration, and will be the same for all requests sent to the SCEX, no matter the loan type and/or data contained within the request. Note that the XML declaration line is optional.

Line 2 is the document type declaration, and will vary depending upon the 'calculation' you wish the SCEX to perform. In this instance, the document type declaration specifies that this XML request is for the Version module, and that the inputs will adhere to the definition found in the DTD (document type definition) file inVERSION.dtd. If you are familiar with DTD files, then you may view each to get a concise (and completely up to date) definition of the input and output XML queries supported by the current version of the SCEX. Note that DTD declaration line is also optional.

Note that the file name inVERSION.dtd is not a fully qualified path name (FQPN). That is, it does not include the entire file system path to the DTD file. If a FQPN is not provided for the DTD, then the SCEX assumes that the DTD is located in the xml directory where the SCEX.DLL is located. If you are using the SCEX in its installed location, then this would be InstallDir\xml\.

Also, please note that the DTD files should never be modified by you unless you have been instructed to do so by Sherman and Associates, Inc. The DTD files describe the valid interface to the SCEX, and if modified, may render the SCEX unable to verify if input and output XML messages are valid.

Line 3 contains the version request in its entirety. The version request is a trivial request, made up of a single element.

Since lines 1 and 2 are optional, an even more compact request that results in the same response is as follows:

<inVERSION/>

Sample Response

After submitting an inVERSION request to the SCEX, and receiving a successful calculation result from the xmlcalc() routine, the buffer for the result XML is ready to be parsed.

The following is a sample XML result generated by the previous sample request, at the time this documentation was being written (2007-01):

<?xml version="1.0" standalone="no" ?>  
<!DOCTYPE outVERSION SYSTEM "outVERSION.dtd">  
<outVERSION>  
  <SCEVersion>N/A</SCEVersion>  
  <SCEVersion>2007.1.0</SCEVersion>  
  <SCEXPath>N/A</SCEXPath>  
  <SCEXPath>C:\Sherman\SCEX\</SCEXPath>  
  <DefaultDataDirPath>C:\Sherman\SCEX\</DefaultDataDirPath>  
  <CurrentPath>C:\Sherman\SCEX\</CurrentPath>  
</outVERSION>  

Lines 1 and 2 consist of the XML declaration and the document type declaration, respectively. If a FQPN for the DTD was specified in the request, then the result XML will also contain a FQPN for the DTD file name.

Line 3 is the root element for the outputs of the Version response. This element contains all the child elements holding the calculation results.

Line 5 returns the version information for both the SCEX. Lines 6 through 9 return path information about the SCEX and current directory. Line 10 closes out the root element and terminates the XML result.

Please note that the SCE is now subsumed within the SCEX, so lines 4 and 6 will always return a value of N/A.

Version - Request

Please see the Legend to understand the conventions used to document each element and attribute. Note that for requests, the XML elements are documented in alphabetical order by parent element.

ElementAttributes
🟥 <inVERSION>

🟥 <inVERSION>

Element TypeData Type
Parent-

This is the root element of the XML request, and is required. This element is empty, and thus contains neither data nor child elements.

Attributes: None


Version - Response

Please see the Legend to understand the conventions used to document each element and attribute. Note that for responses, the XML elements are documented in the order that they appear in the response.

ElementAttributes
🟥 <outVERSION>
|- 🟦 <XMLDetail>[]
|- 🟥 <SCEVersion>
|- 🟥 <SCEXVersion>
|- 🟥 <SCEPath>
|- 🟥 <SCEXPath>
|- 🟥 <DefaultDataDirPath>
|- 🟥 <CurrentPath>

🟥 <outVERSION>

Element TypeData Type
Parent-

This is the root element of the XML response, and is required. This element simply acts as a container for all of the result child elements.

Attributes: None


🟦 <XMLDetail>[]

Element TypeData TypeDefault
DataTextNULL

The <XMLDetail> elements are messages passed back to the calling application which detail the status of the XML request. If the SCEX issues any warnings regarding unrecognized elements or attributes, then each warning message will be displayed in an <XMLDetail> element.

Attributes: None


🟥 <SCEVersion>

Contains the version information for the SCE. As discussed above, since the SCE is now contained within the SCEX, the value of this element will always be N/A.

Attributes: None


🟥 <SCEXVersion>

Contains the version information for the SCEX, as found in the SCEX library.

Attributes: None


🟥 <SCEPath>

Contains the fully qualified path for the SCE. Since the SCE is now contained within the SCEX, the value of this element will always be N/A.

Attributes: None


🟥 <SCEXPath>

Contains the fully qualified path for the SCEX. That is, it specified the location on the filesystem of the scex.dll or libscex.so in use. For the Linux build of the SCEX, the value returned will be the path of the host application using the SCEX library.

Attributes: None


🟥 <DefaultDataDirPath>

Contains the fully qualified path for the default directory in which the SCEX will look for a data/ folder containing setup files. To temporarily override the default data directory path for an XML request, specify a different DataDirPath attribute when sending XML to the SCEX, or use one of the SCEX API calls which allow the calling application to specify the default data directory for the request. When the SCEX is first loaded, the default data directory is initialized to the same value as that returned by the <SCEXPath> element above.

Attributes: None


🟥 <CurrentPath>

Contains the fully qualified path for the current directory, as reported by the operating system.

Attributes: None


Documentation History

This chapter provides a history of modifications made to this reference manual in 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 2025-04

  1. No documentation changes.

Release 2025-01

  1. The Loan Builder module's Amount attribute for the <PmtStream> element has been updated to document the new options available for fixed payment streams.

Release 2024-10

  1. New MinPnIDetails and MaxPnIDetails atttributes for the <TILARESPA2015> element in the ARM module allow the calling application to request detailed information about the MinPnI and MaxPnI payments that may be returned in the amortization schedule for ARM loans with TILARESPA2015 disclosures. If set to true, then the amounts to interest and principal for each of these payments may also be returned in the <AmLine> response element.

Release 2024-07

  1. The Loan Builder module's <PmtStream> element now supports the new ReplaceIdx attribute which is used to apply a replacement payment stream to a subset of the payments.

Release 2024-04

  1. The Loan Builder module’s <Advance> element now supports new NewPmt and Position attributes which are used when the calling application wishes to compute a loan with multiple advances, where each advance generates a new payment stream.

  2. Loan Builder now supports a <BalAdj> element, which will adjust the loan balance during amortization. The origin of this element is to allow an easy mechanism to replenish the balance for HELOC lending.

Release 2024-01

  1. The <NBCDebtCancelation> element has been removed from the Input Tool module response as the setup file setting which corresponded to this element has been deprecated and removed.

  2. The Refund module now supports TermInDays and LLMatuirty attributes which allow the refund module to compute level life refunds for single payment notes whose term of coverage is expressed in days instead of months.

Accrual Codes

The following table is the master list of all possible Accrual Codes available with the Sherman Calculation Engine.

Different elements or attributes, however, will be limited to a subset of these codes. Careful attention must, therefore, be paid to the particular element or attribute in question.

APR Codes's, however, are different from Interest Accrual Codes. APR Codes are conventions for analyzing a loan's finance charge after the loan has been computed. Accrual Codes, on the other hand, are the ways to compute interest charges as a part of computing the loan before an APR can be assessed.

Accrual CodeDescriptionPmtAccrual
defaultKeep previous method. Original default is 201 - UnitPeriod/360 Simple
100UnitPeriod/Federal Calendar Actuarial
101UnitPeriod/Toyota Motor Credit Actuarial
201UnitPeriod/360 SimpleX
202UnitPeriod/365 SimpleX
203UnitPeriod/DaysPerPeriod Simple (e.g. 91 for quarterly payment frequencies)X
204UnitPeriod True360/360 SimpleX
205UnitPeriod True360/365 SimpleX
206UnitPeriod True360/DaysPerPeriod Simple (e.g. 91 for quarterly payment frequencies)X
207UnitPeriod/Federal Calendar Simple
208UnitPeriod/365.25 Simple
209UnitPeriod True360/365.25 Simple
210Actual/360 SimpleX
211True365/360 SimpleX
220Actual/365 SimpleX
221True365/365 SimpleX
230Actual/Actual SimpleX
231Midnight 366 SimpleX
240Actual/365.25 Simple
250UnitPeriod/VarDPY SimpleX
301UnitPeriod/360 US RuleX
302UnitPeriod/365 US RuleX
303UnitPeriod/DaysPerPeriod US Rule (e.g. 91 for quarterly payment frequencies)X
304UnitPeriod True360/360 US RuleX
305UnitPeriod True360/365 US RuleX
306UnitPeriod True360/DaysPerPeriod US Rule (e.g. 91 for quarterly payment frequencies)X
307UnitPeriod/Federal Calendar US Rule
308UnitPeriod/365.25 US Rule
309UnitPeriod True360/365.25 US Rule
310Actual/360 US RuleX
311True365/360 US RuleX
320Actual/365 US RuleX
321True365/365 US RuleX
330Actual/Actual US RuleX
331Midnight 366 US RuleX
340Actual/365.25 US RuleX
350UnitPeriod/VarDPY US RuleX
401UnitPeriod/360 Add-On
402UnitPeriod/365 Add-Onv
403UnitPeriod/DaysPerPeriod Add-On (e.g. 91 for quarterly payment frequencies)
404True360/360 Add-On
405True360/365 Add-On
406True360/DaysPerPeriod Add-On (e.g. 91 for quarterly payment frequencies)

Table 13.3: Loan Builder Accrual Codes and Descriptions

Countries

This chapter 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.

CountryAlpha-2Numeric-3Currency DP
CanadaCA1242
ChinaCN1562
Czech RepublicCZ2032
Hong KongHK3442
HungaryHU3482
IrelandIE3722
ItalyIT3802
PhilippinesPH6082
PolandPL6162
RomaniaRO6422
SloveniaSI7052
UkraineUA8042
United KingdomGB8262
United States of AmericaUS8402

Protection Formula Codes

Formula CodeDescription
NoneNo coverage requested.
UnknownUnknown formula code.
SP_Gross_StandardSingle premium standard gross.
SP_Gross_AllLevelAsDecreasingSingle premium gross on each individual payment.
SP_Gross_DiscountedSingle premium discounted gross.
SP_Gross_RemPmtsSingle premium gross, sum of partial premiums computed on outstanding payments vis-a-vis actuarial net.
SP_Gross_LevelSingle premium gross using level life.
SP_Gross_Level_EachPmtSingle premium gross, each payment is covered with level life as if each were a single payment note.
SP_Gross_Level_AsDecreasingNot currently used.
SP_Gross_Level_RemPmtsSingle premium gross, balance at truncated term covered with level.
SP_Net_StandardSingle premium standard net.
SP_Net_DiscountedSingle premium discounted net.
SP_Net_StraightLineSingle premium straight-line net.
SP_Net_MainTruncationSingle premium net, Maine truncation formula.
SP_Net_AmericanBankersSingle premium net, American Bankers formula.
SP_Net_PekinTruncationSingle premium net, Pekin insurance truncation formula.
SP_Net_WarmSpringsSingle premium net, Warm Springs formula.
SP_Net_StraightLine_AmerRepubSingle premium straight-line net, American Republic formula.
SP_Net_RemBalsSingle premium net, sum of partial premiums, each computed as rate times remaining balance.
SP_Net_LevelSingle premium net with level.
SP_Net_LevelAtCapSingle premium net, level at the cap.
MOB_NetStandard MOB net.
MOB_GrossStandard MOB gross.
MOB_BenefitStandard MOB on the benefit.
TrueMOB_NetTrue MOB net.
TrueMOB_GrossTrue MOB gross.
Ordinary_ExecTerm_ARSouthern Pioneer's Executive Term ordinary life product for Arkansas.
Ordinary_ProtectAllALProtective Life's (now a part of Life of the South) Protect-All ordinary life product for Alabama.
Ordinary_ProtectAll_GAProtect-All ordinary life product for Georgia.
Ordinary_ProtectAll_NCProtect-All ordinary life product for North Carolina.
Ordinary_ProtectAll_LAProtect-All ordinary life product for Louisiana.
Ordinary_ProtectAll_SCProtect-All ordinary life product for South Carolina.
Ordinary_Uniguard_TNUniguard ordinary life product for Tennessee.
CUNA_SP_Formula1TruStage's single premium formula #1.
CUNA_SP_Formula2TruStage's single premium formula #2.
CUNA_SP_Formula3TruStage's single premium formula #3.
CUNA_SP_Formula6TruStage's single premium formula #6.
Formula CodeDescription
gmAllLevelBalloonAll payments covered with level insurance.
gmAllLevelBalloonAsDecreasingDecreasing coverage on covered payments, computed using level rates.
gmAllLevelEqualLevel coverage on each payment.
gmAllLevelEqualAsDecreasingDecreasing coverage on covered payments, computed using level rates.
gmAllLevelPmtsGross coverage on covered payments, level coverage on remaining payments.
gmBalloonStandardGross coverage on balloon payment loans (standard).
gmDiscountedDiscounted gross coverage.
gmDiscountedBalloonDiscounted gross coverage on regular payments only.
gmEPStandardGross coverage on equal payments (standard).
gmIntOnlyLevel coverage on final payment.
gmIntOnlyPlusLevel coverage on final payment, gross decreasing on interest only.
gmIrregGross coverage on outstanding sum of remaining & payments.
gmLevelRemPmtsGross coverage on covered payments, level coverage on remaining payments.
gmLevelTruncatedLevel coverage on covered payments, level coverage on remaining balance.
gmNoneNo coverage requested.
gmSinglePayGross coverage on single payment loans (standard).
mobBenefitCoverage on the payment.
mobCreditREConstant monthly premium product.
mobCUNALevelRateTruStage’s Level Rate product.
mobCUNAMonthlyRenewableTruStage’s Monthly Renewable product.
mobNoneNo coverage requested.
mobOnBalanceStandard coverage on outstanding balance.
mobOnPaymentsCoverage on outstanding payments.
nmAnicoLevelA special ANICO method used to compute level and decreasing coverage on the loan.
nmBalDiscountedDiscounted net pay-off on balloon payment loan.
nmBalLevelOnFinalNet coverage, with final payment covered by level.
nmBalStandardActuarial net pay-off on balloon payment loan.
nmBalStraightLineStraight line net pay-off on balloon payment loan.
nmBalStraightLineAmerRepubStraight line net pay-off formula used by American Republic.
nmCUNAAmortTruStage's formula used in specified amortization term balloon loans.
nmCUNASP1TruStage’s single premium formula #1.
nmCUNASP2TruStage’s single premium formula #2.
nmCUNASP3TruStage’s single premium formula #3.
nmCUNASP4TruStage’s single premium formula #4.
nmCUNASP5TruStage’s single premium formula #5.
nmEPDiscountedDiscounted net pay-off on equal payments.
nmEPStandardActuarial net pay-off on equal payments.
nmEPStraightLineStraight line net pay-off on equal payments.
nmIrregDecreasingNet coverage on outstanding balances.
nmIrregDiscountedDiscounted net coverage on outstanding balances.
nmLevelAtCapSingle premium net coverage, constant premium until balance is below cap.
nmNoneNo coverage requested.
nmSPNDecreasingDecreasing coverage on the principal balance.
nmSPNDiscountedActuarialy discounted decreasing coverage.
nmSPNStandardLevel coverage on the principal balance.
olExecutiveTerm_ARSouthern Pioneer’s Executive Term ordinary life product for Arkansas.
olProtectAll_ALProtective Life’s (now a part of Life of the South) Protect-All ordinary life product for Alabama.
olProtectAll_GAProtect-All ordinary life product for Georgia.
olProtectAll_LAProtect-All ordinary life product for Louisiana.
olProtectAll_NCProtect-All ordinary life product for North Carolina.
olProtectAll_SCProtect-All ordinary life product for South Carolina.
olProtectAll_TNProtect-All ordinary life product for Tennessee.
olUniGuardDecreasingUniguard decreasing ordinary life product.
olUniGuardDecreasingAndLevelUniguard level coverage written in conjunction with decreasing coverage.
olUniGuardLevelUniguard level ordinary life product.
ppmGrossPersonal property coverage on total of payments.
ppmNetPersonal property coverage on principal balance.
ppmOnEntryPersonal property coverage on entered amount.
SinglePremiumSingle premium coverage for A&H or IUI.
Drop CodeDrop Reason
0Successful Calculation
1This insurance must be written with CL
2No coverage on non-monthly loans
3No coverage on Equal Payment Loans
4No coverage on Balloon Loans
5No coverage on Single Payment Loans
6No coverage on Interest Only Loans
7No coverage on Principal Plus Loans
8No coverage on Skips/Pickups/Irregs
9Borrower too old at loan inception
10Co-Borrower too old at loan inception
11Term exceeded cap
12Borrower became too old during loan
13Co-Borrower became too old during loan
14Loan term is less than minimum allowed
15Computed rate was zero
16An invalid AH Plan was passed
17Truncation term less than the minimum
18Benefit cap was exceeded
19Coverage cap was exceeded
20Windows experienced an error
21Windows error reading the setup file
22NOT CURRENTLY USED
23Equal Payment or Balloons Only
24NOT CURRENTLY USED
25Coverage is not allowed on this loan
26Truncation term isn’t a valid multiple
27Keyboard truncation not allowed
28No keyboard truncation with Net
29No keyboard truncation with Gross
30No decreasing life. All coverage level
31Term too big for insurance coverage
32Joint requested, only single allowed
33The age is above the maximum in band
34The term is above the maximum in band
35Balloon is too small for Level Life
36All Coverage allocated to decreasing.
37No keyboard truncation with MOB
38TruStage No Single Pay Terms ¡ 6 Months
39Credit Life not allowed on Annual Loans
40Below the Minimum Insurance Term
41Below the Minimum Loan Term
42Formula is undefined
43AH Requires use of a table of rates
44LR Requires single rates, not tables
45Customer not eligible for Insurance
46The insurance code (e.g., 1=single) was not valid
47Monthly Renewable exception
48Borrower is currently older than the termination age
49CoBorrower is older than the termination age
50Maine Truncation only defined for monthly loans
51Converting SP ARHate to MOB caused an exception
52Non-Monthly not allowed with Ordinary Life
53AH is not allowed with Ordinary Life
54Probably a log calc tripped up an exception
55Entry for Borrower Birthday is zero
56Entry for CoBorrower Birthday is zero
57No coverage for loans; Monthly
58No coverage on construction loans
59The term of coverage must equal CL Term
60Loan Setup is a premium type not Single premium
61No insurance allowed on ARM Loans
62ARM Loans are only covered with MOB Net
63Coverage is not allowed on Coborrower
64Borrower is less than the minimum age
65CoBorrower is less than the minimum age
66Loan To Value (** Not Implemented **)
67ARM Loans only use MOB Net or MOB on Benefit
68Credit Life does not permit CMOB rollbacks
69Credit Life does not permit CMOB on interest only payments nor construct loans
70This insurance must be written with AH
71This insurance must be written with Joint AH
72Coverage not allowed with partial benefit and truncation
73This insurance must be written with Joint CL
74Preceding Interest Only payments do not allow for protection
75Coverage not allowed on Open end loans
76PrimaFacie rates must be expressed as $/100/Year
77Loans with "Open End=1" must be equal payments
78Premium is zero
79The loan has an error and therefore reports no protection info
80Product not available for any loan
81Level cannot be offered if decreasing has been removed
82An unknown ordinary life method has been chosen
83No Keyboard benefit allowed
84TrueMOB protection requested, but no events were logged
85Keyboard truncation is not allowed with gross truncated level insurance

The SCEX Loan Server Service

As mentioned in the introductory chapter of this reference manual, the SCEX Loan Server goes one step beyond the SCEX, turning the SCEX into a multi-platform calculation engine, allowing applications on non-Windows platforms to harness the power of the SCEX.

The SCEX Loan Server provides a TCP/IP communication wrapper around the SCEX. As 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 SCEX Loan Server is a 32-bit Windows 2000 / XP / 2003 service. The Loan Server listens on a specified port for incoming loan calculation requests. When it receives a loan request, the Loan Server dispatches the SCEX XML loan request to the SCEX. Once the SCEX returns an XML result, the SCEX Loan Server then returns the XML result buffer to the client via TCP/IP.

Installation and Administration

The SCEX Loan Server Service is provided as an optional installation component in the main SCEX installer application. Refer to the Installation chapter for further details on how to install the SCEX Loan Server service.

Important: Since the SCEX Loan Server is a service and will run without a logon, it is best to install the service and all related files in a local subdirectory (i.e., NOT located on a network drive).

Once installed, the SCEX Loan Server will automatically start and configure itself to launch whenever the computer restarts. The service will appear as "SCEX Loan Server" in the Windows Services application.

To access Services:

  1. Click Start.
  2. Choose Run... and type SERVICES.MSC.

From there, you can start, pause, resume, and stop the service.

Configuration

When the service first starts, it creates a configuration file called LoanServerService.INI with default values. You can modify these key-value pairs using any text editor. To apply changes:

  1. Pause the SCEX Loan Server service.
  2. Resume the service, which will read and implement the new values.

Default Configuration:

[Settings]
Port=8000
TimeOut=30

[Logging]
Enabled=0
LogLevel=0
FileName=C:\LoanServerLog.txt

General Settings

  • Port: The port number on which the server listens for client connections.
  • Timeout: The number of seconds a client connection can remain idle before being automatically disconnected.

Logging Settings

  • Enabled: Whether file logging is enabled (1) or disabled (0).
  • LogLevel: Specifies the detail of the logs:
    • 0: Minimal (errors, service start/stop/pause/resume).
    • 1: Adds details for connections (remote address, loan processed, disconnection).
    • 2: Logs XML input from the client.
    • 3: Logs XML output sent to the client.
  • FileName: The path of the log file. Note: If logging is enabled, monitor the file size periodically as it will grow over time.

Usage

To use the SCEX Loan Server Service, the client application must:

  1. Establish a TCP/IP connection to the server's IP address, specifying the appropriate port (default: 8000).

  2. Send an XML request formatted as follows:

    <BEGIN DATA>
    ...normal XML input query goes here...
    <END DATA>
    
  3. The server will process the query and return the result in the following format:

    RESULT-CODE: ###
    RESULT-LENGTH: ###
    
    ...normal XML result query goes here...
    

Response Format:

  • RESULT-CODE: Numeric result of the processed query. Refer to Table 3.1 for code meanings.
  • RESULT-LENGTH: The character length of the XML result body (excluding the header).

The header ends with a blank line. If RESULT-LENGTH > 0, the body of the response follows the header.

After sending the result, the server will disconnect the client automatically.

Persistent Connections

If you need to send multiple XML requests in quick succession, persistent connections can be used to avoid creating a new TCP/IP connection for each request. For this, wrap the XML query in:

<BEGIN PDATA>
...XML query...
<END PDATA>

This method keeps the TCP/IP connection open after the result is sent, ready to receive another XML envelope. Note: The timeout value still applies, so idle connections will be disconnected.