Expected Payments

This object represents the expected loan payments on due dates. Expected payments are what we expect to receive from a borrower on a specific date. Expected payments are created as a result of loan amortization. The amounts and due dates can change during lifetime of a loan. For example, a borrower might change due dates frequency from monthly to weekly and it will lower periodic payment amount.

Get loan expected payments

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

loanId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The unique identifier of the Loan we wish to retrieve. Can be Peach or lender's external identifier.

Responses
200

Success

get/people/{personId}/loans/{loanId}/expected-payments
Response samples
application/json
{
  • "status": 0,
  • "count": 0,
  • "data": {
    }
}

Change due dates schedule

Change due date allows the customer to change the frequency of a loan and/or the specific day(s) that due dates will fall on.

For accounts/loans with frequency!=singleTerm (aka non-single term), modifications to the expected payments schedule resulting from Change Due Date do not impact the current period. Changes are only effective starting in the next period.

For accounts/loans with frequency=singleTerm, only specific days can be modified. The change impacts the current (single) period of the loan. The caller must pass dueDatesFrequency=singleTerm.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

loanId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The unique identifier of the Loan we wish to retrieve. Can be Peach or lender's external identifier.

Request Body schema: application/json
required
previewMode
boolean
Default: false

In previewMode=true, the loan doesn't change, and no changes are saved to the database.

dueDatesFrequency
string
Default: "monthly"

The frequency of due dates.

Enum: "weekly" "everyTwoWeeks" "twiceMonthly" "monthly" "singleTerm"
Array of (string or null) or integers or null (SpecificDays)

Specific days designate the day(s) that due dates will fall on. The allowed values for specific day(s) depends on the paymentFrequency.

weekly - provide one number in the valid range 1-7. 1=Monday...7=Sunday.

For example: [1].

everyTwoWeeks - provide two inputs. The first input (required) is an integer in the valid range 1-7. 1=Monday...7=Sunday.

The second input is a date that indicates when to start the cycle. If the second input is not passed, the system will default to the first valid start date based on the first input (the day of week passed in). If this date is provided then it can override the minimum due date gap specified on the loan type.

For example: [1, "2020-09-16"].

twiceMonthly - provide two numbers in the valid range 1-31. 1=first day of a month. Use 31 to indicate the last day of a month.

For example: [1, 15] or [15, 31].

monthly - provide one or two numbers, depending on the loan type periodCalculationType configuration:

  • If periodCalculationType=dueDate, then provide one number in the valid range 1-31. This is the recurring due date. 1=first day of a month. Use 31 to indicate the last day of a month. For example: [1].
  • If periodCalculationType=statementDate, then provide one number in the valid range 1-31. This is the recurring statement date. 1=first day of a month. Use 31 to indicate the last day of a month. For example: [1].
  • If periodCalculationType=fixedStatementAndDueDates, then provide two numbers. First number represents a recurring statement date and the valid range is 1-31. Use 31 to indicate the last day of a month. Second number represents a recurring due date and the valid range is 1-28. Two numbers must be different. For example: [1, 15] - statements are on 1st and due dates are on 15th. Notes:
    • If the due date precedes the statement day, it's pushed to the next month. For example: [20, 10] and today is Oct 1, 2024. The first statement date is Oct 20, 2024 and the first due date is Nov 10th.
    • For February in non-leap years, if the statement date is ≥ 29 and the due date is 28, the statement date becomes March 1st.

singleTerm - provide one number to indicate duration as a number of calendar days or provide a valid calendar date in the future. This option is only valid for use on the installment type and at loan origination. For example: [90] or ["2020-09-16"].

For weekly, everyTwoWeeks, twiceMonthly, monthly: If specificDays is left null, then the system will calculate due dates according to the paymentFrequency relative to the origination or activation date (or use existing specific days in the case of change due date).

For singleTerm: The specificDays is mandatory.

agreementDocumentId
string

The document descriptor ID corresponding to the accepted loan term change agreement. This is required unless previewMode=true or isShowRevisedTermsOnFrequencyChange=false on the loan type.

caseId
string

An identifier for an existing case.

sendNotice
boolean (SendNoticeCancelAutopay)
Default: true

When set to false, the system will NOT send a loanPaymentScheduleChanged notice to the borrower.

Note: Changing the loan terms will automatically cancel an existing Autopay (if enabled). A borrower, an agent or API caller needs to turn on / enable a new Autopay plan after the loan terms change is completed. If the loan has Autopay enabled:

  • When sendNotice=false, the system will NOT send an autopayCanceledBySystem notice.
  • When sendNotice=true, the system will send an autopayCanceledBySystem notice in addition to the applicable loan terms notice.
Responses
200

Success

post/people/{personId}/loans/{loanId}/expected-payments
Request samples
application/json
{
  • "previewMode": false,
  • "dueDatesFrequency": "weekly",
  • "specificDays": [
    ],
  • "agreementDocumentId": "string",
  • "caseId": "string",
  • "sendNotice": true
}
Response samples
application/json
{
  • "status": 0,
  • "count": 0,
  • "data": {
    }
}

Get draw expected payments

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

loanId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The unique identifier of the Loan we wish to retrieve. Can be Peach or lender's external identifier.

drawId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The draw identifier.

Responses
200

Success

get/people/{personId}/loans/{loanId}/draws/{drawId}/expected-payments
Response samples
application/json
{
  • "status": 0,
  • "count": 0,
  • "data": {
    }
}

Defer single due date

Defer single due date takes the amount in a selected due date and defers the amount to another due date in the future. The deferral amount can be moved to an existing due date or alternatively, to a new due date added after the last existing due date. These two options are mutually exclusive.

Fees associated with the amount in the period to be deferred will not be moved.

Limitations:

  • Cannot defer due date which is due on the day of the request. e.g. Cannot defer 1/31 on 1/31
  • Only applicable to installment loans.
Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

loanId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The unique identifier of the Loan we wish to retrieve. Can be Peach or lender's external identifier.

Request Body schema: application/json
required
previewMode
boolean
Default: false

If previewMode=true, the loan doesn't change and no changes are saved to the database.

selectedDueDate
required
string <date>

The selected due date to defer. It can be the due date of the current period or a future due date in the loan schedule.

newDueDate
string <date>

The proposed new due date, chosen from an existing due date after the selected date. The addAfterLastDueDate field should be toggled to false if utilizing this option.

addAfterLastDueDate
boolean
Default: false

true to move the new due date to a date after the last due date. The date will be calculated based upon the existing loan cadence. The newDueDate field should be left empty if utilizing this option.

agreementDocumentId
string

The document descriptor ID corresponding to the accepted loan term change agreement.

waiveFee
boolean
Default: false

true to charge a fee for deferral of a due date. The fee amount is defined as part of the loan type.

sendNotice
boolean (SendNoticeCancelAutopay)
Default: true

When set to false, the system will NOT send a loanPaymentScheduleChanged notice to the borrower.

Note: Changing the loan terms will automatically cancel an existing Autopay (if enabled). A borrower, an agent or API caller needs to turn on / enable a new Autopay plan after the loan terms change is completed. If the loan has Autopay enabled:

  • When sendNotice=false, the system will NOT send an autopayCanceledBySystem notice.
  • When sendNotice=true, the system will send an autopayCanceledBySystem notice in addition to the applicable loan terms notice.
caseId
string

An identifier for an existing case.

Responses
200

Success

post/people/{personId}/loans/{loanId}/defer-due-date
Request samples
application/json
{
  • "previewMode": false,
  • "selectedDueDate": "2019-08-24",
  • "newDueDate": "2019-08-24",
  • "addAfterLastDueDate": false,
  • "agreementDocumentId": "string",
  • "waiveFee": false,
  • "sendNotice": true,
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "count": 0,
  • "data": {
    }
}

Change loan terms

Change loan terms creates a customer payment plan for the borrower. There are several options:

The first option is passing in duration, which we use to calculate the new recurring amount going forward. The second option is passing in the recurringAmount, which we use to calculate the remaining duration of the loan. The third option is not passing either duration or recurringAmount, in which case the behavior is similar to the Change Due Date endpoint. The fourth option is passing duration and recurringAmount, which we use to calculate the final payment amount

Unlike the Change Due Date endpoint, for the Change Loan Terms endpoint, any modifications to the amount in the expected payments schedule resulting from Change Loan Terms are effective from the current period. But modifications to the dueDate in the expected payments schedule are only effective starting in the next period.

For all four options, it is optional to specify a new frequency and/or specific days. Change loan terms will cancel any due date deferrals for the current or future periods.

Only applicable to installment loans.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

loanId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The unique identifier of the Loan we wish to retrieve. Can be Peach or lender's external identifier.

Request Body schema: application/json
required
previewMode
boolean
Default: false

In previewMode=true, the loan doesn't change, and no changes are saved to the database.

dueDatesFrequency
string
Default: "monthly"

The frequency of due dates.

Enum: "weekly" "everyTwoWeeks" "twiceMonthly" "monthly" "singleTerm"
Array of (string or null) or integers or null (SpecificDays)

Specific days designate the day(s) that due dates will fall on. The allowed values for specific day(s) depends on the paymentFrequency.

weekly - provide one number in the valid range 1-7. 1=Monday...7=Sunday.

For example: [1].

everyTwoWeeks - provide two inputs. The first input (required) is an integer in the valid range 1-7. 1=Monday...7=Sunday.

The second input is a date that indicates when to start the cycle. If the second input is not passed, the system will default to the first valid start date based on the first input (the day of week passed in). If this date is provided then it can override the minimum due date gap specified on the loan type.

For example: [1, "2020-09-16"].

twiceMonthly - provide two numbers in the valid range 1-31. 1=first day of a month. Use 31 to indicate the last day of a month.

For example: [1, 15] or [15, 31].

monthly - provide one or two numbers, depending on the loan type periodCalculationType configuration:

  • If periodCalculationType=dueDate, then provide one number in the valid range 1-31. This is the recurring due date. 1=first day of a month. Use 31 to indicate the last day of a month. For example: [1].
  • If periodCalculationType=statementDate, then provide one number in the valid range 1-31. This is the recurring statement date. 1=first day of a month. Use 31 to indicate the last day of a month. For example: [1].
  • If periodCalculationType=fixedStatementAndDueDates, then provide two numbers. First number represents a recurring statement date and the valid range is 1-31. Use 31 to indicate the last day of a month. Second number represents a recurring due date and the valid range is 1-28. Two numbers must be different. For example: [1, 15] - statements are on 1st and due dates are on 15th. Notes:
    • If the due date precedes the statement day, it's pushed to the next month. For example: [20, 10] and today is Oct 1, 2024. The first statement date is Oct 20, 2024 and the first due date is Nov 10th.
    • For February in non-leap years, if the statement date is ≥ 29 and the due date is 28, the statement date becomes March 1st.

singleTerm - provide one number to indicate duration as a number of calendar days or provide a valid calendar date in the future. This option is only valid for use on the installment type and at loan origination. For example: [90] or ["2020-09-16"].

For weekly, everyTwoWeeks, twiceMonthly, monthly: If specificDays is left null, then the system will calculate due dates according to the paymentFrequency relative to the origination or activation date (or use existing specific days in the case of change due date).

For singleTerm: The specificDays is mandatory.

agreementDocumentId
string

The document descriptor ID corresponding to the accepted loan term change agreement. This is required unless previewMode=true or isShowRevisedTermsOnFrequencyChange=false on the loan type.

caseId
string

An identifier for an existing case.

sendNotice
boolean (SendNoticeCancelAutopay)
Default: true

When set to false, the system will NOT send a loanPaymentScheduleChanged notice to the borrower.

Note: Changing the loan terms will automatically cancel an existing Autopay (if enabled). A borrower, an agent or API caller needs to turn on / enable a new Autopay plan after the loan terms change is completed. If the loan has Autopay enabled:

  • When sendNotice=false, the system will NOT send an autopayCanceledBySystem notice.
  • When sendNotice=true, the system will send an autopayCanceledBySystem notice in addition to the applicable loan terms notice.
recurringAmount
number <float>

The requested recurring amount under the new payment plan.

duration
integer

The remaining duration - in months starting from the current day - under the new payment plan.

Responses
200

Success

post/people/{personId}/loans/{loanId}/payment-plan
Request samples
application/json
{
  • "previewMode": false,
  • "dueDatesFrequency": "weekly",
  • "specificDays": [
    ],
  • "agreementDocumentId": "string",
  • "caseId": "string",
  • "sendNotice": true,
  • "recurringAmount": 0,
  • "duration": 0
}
Response samples
application/json
{
  • "status": 0,
  • "count": 0,
  • "data": {
    }
}

Change loan terms SCRA

Creates a customer payment plan for the borrower in accordance with SCRA regulations. Only applicable to installment loans.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

loanId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The unique identifier of the Loan we wish to retrieve. Can be Peach or lender's external identifier.

query Parameters
sync
boolean
Default: false

Make the process synchronous.

Request Body schema: application/json
required
annualRate
number <float>
Default: 0.06

The annual interest rate for the period defined. Format is decimal. For example, 0.01 is 1% annual rate, 0.2 is 20% annual rate.

startDate
required
string <date>

The start date of the period. The start date is inclusive.

endDate
required
string or null <date>

The end date of the period. The end date is inclusive.

isCancelFees
boolean
Default: true

When set to true, the system will waive any fees that were charged during the period.

sendNotice
boolean (SendNoticeCancelAutopay)
Default: true

When set to false, the system will NOT send a loanPaymentScheduleChanged notice to the borrower.

Note: Changing the loan terms will automatically cancel an existing Autopay (if enabled). A borrower, an agent or API caller needs to turn on / enable a new Autopay plan after the loan terms change is completed. If the loan has Autopay enabled:

  • When sendNotice=false, the system will NOT send an autopayCanceledBySystem notice.
  • When sendNotice=true, the system will send an autopayCanceledBySystem notice in addition to the applicable loan terms notice.
caseId
string

An identifier for an existing case.

Responses
200

Success

post/people/{personId}/loans/{loanId}/payment-plan-scra
Request samples
application/json
{
  • "annualRate": 0.06,
  • "startDate": "2019-08-24",
  • "endDate": "2019-08-24",
  • "isCancelFees": true,
  • "sendNotice": true,
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "count": 0,
  • "data": {
    }
}

Defer schedule

Defer schedule allows lenders to shift the entire expected payments schedule. There are two use cases:

Defer during the first period of the loan. In this scenario we "extend" the first period by the requested buffer (while honoring frequency and specific days). As a result, the first due date will be shifted in the future (and all subsequent due dates).

Defer after the first period has passed. In this scenario, we defer all due dates that fall between "today's date" and "today's date + buffer days" to the end of the loan one by one. It will extend the term of the loan by the number of periods equal to number of due dates that were deferred. If the current date falls on a due date, it will not be deferred as the period has ended.

Only applicable to installment loans.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

A Borrower's unique identifier, tied to a person or a business. Can be Peach or a lender's external identifier.

loanId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

The unique identifier of the Loan we wish to retrieve. Can be Peach or lender's external identifier.

Request Body schema: application/json
required
previewMode
boolean
Default: false

If previewMode=true, the loan doesn't change and no changes are saved to the database.

bufferToPushOutSchedule
required
integer or null

When deferring during the first period, this represents the number of calendar days that will be added to today's date. The resulting date will be used to push out due dates (today's date + buffer days). Interest will continue to accrue.

When deferring after the first period, we defer all due dates that fall between "today's date" and "today's date + buffer days" to the end of the loan one by one. If the current date falls on a due date, it will not be deferred as the period has ended.

agreementDocumentId
string

The document descriptor ID corresponding to the accepted loan term change agreement.

waiveFee
boolean
Default: false

true to charge a deferral fee. The fee amount is defined as part of the loan type.

sendNotice
boolean (SendNoticeCancelAutopay)
Default: true

When set to false, the system will NOT send a loanPaymentScheduleChanged notice to the borrower.

Note: Changing the loan terms will automatically cancel an existing Autopay (if enabled). A borrower, an agent or API caller needs to turn on / enable a new Autopay plan after the loan terms change is completed. If the loan has Autopay enabled:

  • When sendNotice=false, the system will NOT send an autopayCanceledBySystem notice.
  • When sendNotice=true, the system will send an autopayCanceledBySystem notice in addition to the applicable loan terms notice.
caseId
string

An identifier for an existing case.

Responses
200

Success

post/people/{personId}/loans/{loanId}/defer-schedule
Request samples
application/json
{
  • "previewMode": false,
  • "bufferToPushOutSchedule": 0,
  • "agreementDocumentId": "string",
  • "waiveFee": false,
  • "sendNotice": true,
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "count": 0,
  • "data": {
    }
}

Request sandbox access