Loans

Borrowers typically have loans. We support multiple loan types and each loan type comes with its set of federal and state compliance rules. You can maintain different statuses of a loan. A borrower can have multiple loans. A loan can belong to multiple people but only one borrower can be defined as a mainBorrower. A loan is always created using the mainBorrower borrower identifier. Other people can be added as part of the loan details.

All loan attributes can be updated as long as the loan is in pending status. Once the loan status changes to originated attributes of atOrigination object become read only and cannot be updated.

A Loan doesn't start accruing interest until it is activated. To activate the loan, call Activate a loan. On activation the loan can use the due dates and payments schedule from the atOrigination object or the loan can be re-amortized using the activation date as the loan start date.

Create loan

Add a new loan.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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.

query Parameters
validate
boolean
Default: true

Validate the contact through an external API. This is only used for addresses currently.

Request Body schema: application/json
Any of:

Represents a loan. A loan always belongs to a borrower, and most of the interactions between a lender and a borrower are associated with a particular loan.

type
string
Value: "installment"
loanTypeId
required
string

The loan type identifier. This is created specifically for each lender's loan product by Peach.

externalId
string or null non-empty

A lender's identifier for a loan or a draw.

After the object is successfully created, a lender can use id or externalId identifiers to fetch the object.

To fetch the object using externalId you need to add ext- to the URL.

Note: Don't add ext- to the identifier value. For example: if the external identifier is ABCDE, then pass externalId=ACBCE and NOT ext-ABCDE when creating the object.

object or null

The reason(s) why the loan application or the draw request was declined.

object

Various loan timestamps.

metaData
object or null

Store any type of key/value pairs in the form of a JSON dictionary.

nickname
string or null

The loan's nickname. Nickname is a friendly name of the loan and is displayed in the UI. Nickname is different from loan ID. Nickname can be changed by a borrower.

servicedBy
required
string

The entity type that services the loan.

creditor, thirdPartyServicer - means that the loan is serviced on the Peach platform.

debtCollectionAgency - means that the loan is no longer serviced on the Peach platform. The loan can be still visible in Borrower Portal. The clarify, the loan is not deleted from the Peach platform.

Enum: "creditor" "thirdPartyServicer" "debtCollectionAgency"
status
required
string

The current status of the loan. New loans must be created in pending, originated or declined status.

pending - the loan is in the application stage. Loan atOrigination details and terms can be changed (via API).

originated - the loan was signed by the borrower and originated by the lender. Loan atOrigination details cannot be changed. Originated loans do not start accruing interest until activated.

declined - an application was declined. This is a terminal state.

active - the loan is active. Most loans are expected to be active.

frozen - the loan is temporarily frozen. The loan will not accrue any interest, no payments can be processed and no notifications are sent to the borrower.

accelerated - the loan was accelerated. The loan will not accrue any additional interest and the entire balance is due.

chargedOff - the loan was charged off.

paidOff - the loan was successfully paid off.

canceled - the loan was canceled. Canceled loans are not shown in UI. This is a terminal state.

Enum: "pending" "originated" "declined" "active" "frozen" "accelerated" "chargedOff" "paidOff" "canceled"
isClosed
boolean

Indicates whether the loan with multiple advances is closed. If true and the loan type installment with multiple advances, new Advances cannot be created and the advance schedule cannot be updated.

Array of objects

For loans with multiple people attached, use this field to add additional people. You do not need to include the main borrower, who will be created from the url parameter.

object (Installment)

This object contains loan details and terms as they were shown to a borrower at origination.

Responses
200

Success

post/people/{personId}/loans
Request samples
application/json
{
  • "type": "installment",
  • "loanTypeId": "string",
  • "externalId": "string",
  • "declineReason": {
    },
  • "timestamps": {
    },
  • "metaData": { },
  • "nickname": "string",
  • "servicedBy": "creditor",
  • "status": "pending",
  • "isClosed": true,
  • "additionalPeople": [
    ],
  • "atOrigination": {
    }
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Get loans

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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.

query Parameters
limit
integer [ 1 .. 100 ]
Default: 25

The maximum count of results to retrieve.

startingAfter
string

Return results starting after the provided object identifier.

endingBefore
string

Return results ending before the provided object identifier.

status
Array of strings
Items Enum: "all" "active" "pending" "originated" "declined" "frozen" "accelerated" "chargedOff" "paidOff" "canceled"
Responses
200

Success

404

Not found

get/people/{personId}/loans
Response samples
application/json
{
  • "total": 0,
  • "count": 0,
  • "nextUrl": "string",
  • "previousUrl": "string",
  • "data": [
    ]
}

Get loan by ID

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Update loan

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
validate
boolean
Default: true

Validate the contact through an external API. This is only used for addresses currently.

force
boolean
Default: false

Override that enables the update of a borrower's address of a loan.

Request Body schema: application/json
metaData
object or null

Store any type of key/value pairs in the form of a JSON dictionary.

nickname
string

A nickname the borrower gave the loan.

status
string

The current status of the loan. New loans must be created in pending, originated or declined status.

pending - the loan is in the application stage. Loan atOrigination details and terms can be changed (via API).

originated - the loan was signed by the borrower and originated by the lender. Loan atOrigination details cannot be changed. Originated loans do not start accruing interest until activated.

declined - an application was declined. This is a terminal state.

active - the loan is active. Most loans are expected to be active.

frozen - the loan is temporarily frozen. The loan will not accrue any interest, no payments can be processed and no notifications are sent to the borrower.

accelerated - the loan was accelerated. The loan will not accrue any additional interest and the entire balance is due.

chargedOff - the loan was charged off.

paidOff - the loan was successfully paid off.

canceled - the loan was canceled. Canceled loans are not shown in UI. This is a terminal state.

Enum: "pending" "originated" "declined" "active" "frozen" "accelerated" "chargedOff" "paidOff" "canceled"
Installment (object) or Line of Credit (object)

This object can only be updated when the loan has status=pending.

Responses
200

Success

put/people/{personId}/loans/{loanId}
Request samples
application/json
{
  • "metaData": { },
  • "nickname": "string",
  • "status": "pending",
  • "atOrigination": {
    }
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Get loan lock status

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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

Succeeded

get/people/{personId}/loans/{loanId}/lock-status
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Get loan periods

Returns loan's payment periods.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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

Loan Periods

get/people/{personId}/loans/{loanId}/periods
Response samples
application/json
{
  • "count": 0,
  • "data": [
    ]
}

Activate loan

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
amortizationAtActivation
string

Instructions on how to activate a loan in originated status. The loan status changes to active after a successful activation.

expectedPaymentsAtOrigination - we will use the exact atOrigination.expectedPayments due dates and amounts. The loan is not re-amortized.

amortizeAtActivation - we will re-amortize the loan using today's date as the loan start date. atOrigination.paymentFrequency and atOrigination.specificDays are used to create due dates. atOrigination.expectedPayments due dates and amounts are not used.

Enum: "expectedPaymentsAtOrigination" "amortizeAtActivation"
sendNotice
boolean
Default: true

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

Responses
200

Success

408

Request Timeout

post/people/{personId}/loans/{loanId}/activate
Request samples
application/json
{
  • "amortizationAtActivation": "expectedPaymentsAtOrigination",
  • "sendNotice": true
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Reimburse

The reimburse endpoint should be used when the lender owes money to a borrower on a given loan. The endpoint will execute a reimbursement according to the specified reimbursementAmount. If the reimbursementAmount is greater than the amount owed to the borrower, the system will not process the reimbursement and return an error. Funds are reimbursed to a specified payment instrument. The endpoint will update the ledger and create a new transaction.

If the loan type is installment, the loan must be in paidOff status to process reimbursement. If the loan type is line of credit, the loan can be in active, accelerated, chargedOff or paidOff status to process reimbursement.

If paymentInstrumentId is isExternal=true, the payment method can be of any type (e.g. bank account, card, etc.) If paymentInstrumentId is isExternal=false and Peach is processing payments (per company configuration), the payment method must be a bank account.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
isExternal
boolean

If set to true, the lender assumes responsibility for transferring funds to the borrower. If set to false, Peach handles the transfer of funds to the borrower.

externalTransactionId
string

A transaction external identifier. If passed, the new reimbursement transaction that the system will create will have the externalTransactionId.

reimbursementAmount
required
number <integer>

The requested reimbursement amount.

paymentInstrumentType
required
string
Enum: "bankAccount" "card" "check" "payroll" "paymentNetwork"
paymentInstrumentId
string^ext-|^[A-Z]{2}-[A-Z0-9]+-[A-Z0-9]+|^\d+$

Peach's unique or lender's external identifier. Not required if the paymentInstrumentType=check and the check is processed/sent by Peach.

transactionStatus
string

Only applicable if isExternal=true. The status in which the new reimbursement transaction will be created. If the status is set to pending, the caller can later update the transaction status via Update transaction endpoint. Only applicable if isExternal=true.

Enum: "pending" "succeeded"
contactId
string

An identifier of an existing contact. Required if the paymentInstrumentType is check and the check is processed/sent by Peach.

caseId
string

An identifier for an existing case.

Responses
201

created

post/people/{personId}/loans/{loanId}/reimburse
Request samples
application/json
{
  • "isExternal": true,
  • "externalTransactionId": "string",
  • "reimbursementAmount": 0,
  • "paymentInstrumentType": "bankAccount",
  • "paymentInstrumentId": "string",
  • "transactionStatus": "pending",
  • "contactId": "string",
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Cancel loan

The cancel loan endpoint will change the status of a loan to canceled, and trigger any cancellation-related logic, such as removing a loan from active monitoring and handling the accounting treatment for canceled loans.

An installment loan must be in originated or pending status to be canceled.

A line of credit loan can be canceled if it has no draws with active purchases.

Special permission is required to cancel active loans.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
force
boolean
Default: false

Override that enables the cancellation of active loans not managed by Peach. Requires the loan:cancel.force permission. Forced cancellation should only be used for testing purposes.

Request Body schema: application/json
cancellationReason
string

The cancellation reason:

technicalIssue - loan was created due to a technical issue.

wrongLoanTerms - loan was created with the wrong terms.

wrongBorrower - loan was created on the wrong borrower.

other - for any other reason requiring cancellation.

Enum: "technicalIssue" "wrongLoanTerms" "wrongBorrower" "other"
sendCancellationNotice
boolean
Default: false

When set to true, the system will send loanCanceled notice to the borrower.

caseId
string

An identifier for an existing case.

Responses
204

Success no content

post/people/{personId}/loans/{loanId}/cancel
Request samples
application/json
{
  • "cancellationReason": "technicalIssue",
  • "sendCancellationNotice": false,
  • "caseId": "string"
}

Close loan

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
caseId
string

An identifier for an existing case.

sendNotice
boolean
Default: true

When set to true, the system will send a locLineClosed notice to the borrower.

closeReason
string

The reason why the account closed. If passed, the copy will be used in the locLineClosed communication template. Make sure to phrase the copy as a full sentence or paragraph.

closeRequestedByBorrower
required
boolean
Default: false

Set to true if a borrower requested to close the account.

Responses
204

Success no content

post/people/{personId}/loans/{loanId}/close
Request samples
application/json
{
  • "caseId": "string",
  • "sendNotice": true,
  • "closeReason": "string",
  • "closeRequestedByBorrower": false
}

Get loan credit limit

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
effectiveDate
string <date>
Responses
200

Success

get/people/{personId}/loans/{loanId}/credit-limit
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Update loan credit limit

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
creditLimitAmount
required
number <float>

The credit limit amount for the line or draw. Only applicable to line of credit or installment loan with multiple advances. For installment loans with multi-advances, it is the amount financed set at origination.

sendNotice
boolean
Default: true

Whether the system sent locCreditLimitChanged notice to the borrower.

adverseActionReason
string

The reason why the credit limit was changed. If passed, the copy used in the locCreditLimitChanged communication template. Make sure to phrase the copy as a full sentence or paragraph.

caseId
string

An identifier for an existing case.

Responses
200

Success

post/people/{personId}/loans/{loanId}/credit-limit
Request samples
application/json
{
  • "creditLimitAmount": 0,
  • "sendNotice": true,
  • "adverseActionReason": "string",
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Freeze loan

Freeze loan will change the status of an active loan to frozen effective as of the current date. The loan will remain in a frozen status until the Unfreeze endpoint is called.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
caseId
string

An identifier for an existing case.

sendNotice
boolean
Default: true

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

Responses
204

Success no content

post/people/{personId}/loans/{loanId}/freeze
Request samples
application/json
{
  • "caseId": "string",
  • "sendNotice": true
}

Unfreeze loan

The Unfreeze endpoint will change the status of a frozen loan back to active.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
previewMode
boolean
Default: false

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

retroactivelyAccrueInterest
boolean
Default: false

true to accrue interest (as usual) for periods occuring when the loan was frozen. false to make periodic payments occuring during the frozen period interest-free.

shiftDueDates
boolean
Default: false

true to defer the periodic payment amounts associated with periods that fall in the frozen period to one or more new periods generated at the end of a loan. false to keep the amounts in unfrozen periods.

sendNotice
boolean
Default: true

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

caseId
string

An identifier for an existing case.

Responses
200

Success

423

Locked

post/people/{personId}/loans/{loanId}/unfreeze
Request samples
application/json
{
  • "previewMode": false,
  • "retroactivelyAccrueInterest": false,
  • "shiftDueDates": false,
  • "sendNotice": true,
  • "caseId": "string"
}
Response samples
application/json
{
  • "count": 0,
  • "data": {
    }
}

Accelerate loan

The accelerate endpoint will change the status of an active loan to accelerated, and trigger any acceleration-related logic and accounting treatment.

Acceleration is only valid for installment and line of credit loans.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
effectiveDate
required
string <date>

The effective date of the loan acceleration. The date should be the current date in the local timezone. Passing in "today" will also set the field to today's date.

sendNotice
boolean
Default: true

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

caseId
string

An identifier for an existing case.

Responses
200

Loan Accelerate

post/people/{personId}/loans/{loanId}/accelerate
Request samples
application/json
{
  • "effectiveDate": "2019-08-24",
  • "sendNotice": true,
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Reverse accelerate

A loan must be in accelerated status to be reversed.

The reverse accelerate endpoint will reverse a loan in accelerated status, and roll back any acceleration-related logic and accounting treatment.

Reverse acceleration triggers a replay of the loan starting from the day of acceleration as if the loan was in active status. This means if the acceleration occurred on day 90 of the loan, and the reverse acceleration is triggered on day 100, the loan will be replayed as an active loan with interest accrual between days 90-100. If the reversal is triggered on day 90 (the same day of the acceleration), no additional interest is accrued. The result of a reverse acceleration is a loan in active status.

The accelerationDueWithin and chargeOffDueWithin configurations of the loan are still in force. So a loan could possibly go back to accelerated or chargedOff status during the next day if the balance is not paid on the day a reversal was made.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
caseId
string

An identifier for an existing case.

Responses
200

Loan Reverse Accelerate

post/people/{personId}/loans/{loanId}/reverse-accelerate
Request samples
application/json
{
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Charge-off loan

The charge-off endpoint will change the status of a loan to charged-off, and trigger any charge-off-related logic and accounting treatment.

A loan must be in accelerated status before being moved to charged-off. If an active loan is being charged off, this endpoint will handle moving the loan status to acceleration before charging off. Charge-off is only valid for installment and line of credit loans.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
effectiveDate
required
string <date>

The effective date of the loan charge-off. The date should be the current date in the local timezone. Passing in "today" will also set the field to today's date.

chargedOffReason
required
string

The reason for loan charge off:

term means the loan was charged off per loan type configuration after X days overdue.

fraudulent means the loan was charged off for fraudulent reason.

bankruptcy means the loan was charged off because of bankruptcy.

legal means the loan was charged off because of some legal reason.

Enum: "term" "fraudulent" "bankruptcy" "legal"
sendNotice
boolean
Default: true

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

caseId
string

An identifier for an existing case.

Responses
200

Loan Charge Off

post/people/{personId}/loans/{loanId}/charge-off
Request samples
application/json
{
  • "effectiveDate": "2019-08-24",
  • "chargedOffReason": "term",
  • "sendNotice": true,
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Reverse charge-off

A loan must be in charged-off status to be reversed.

The reverse charge-off endpoint will reverse a loan in chargedOff status, and roll back any charge-off-related logic and accounting treatment.

Reverse charge-off triggers a replay of the loan starting from the day of charge off as if the loan was in active status. This means if the charge-off occurred on day 120 of the loan, and the reverse charge-off is triggered on day 130, the loan will be replayed as an active loan with interest accrual between days 120-130. If the reversal is triggered on day 120 (the same day of the charge-off), no additional interest is accrued. The result of a reverse charge-off is a loan in active status.

The chargeOffDueWithin configurations of the loan is still in force. So a loan could possibly go back to chargedOff status during the next day if the balance is not paid on the day a reversal was made.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
caseId
string

An identifier for an existing case.

Responses
200

Loan Reverse Charge Off

post/people/{personId}/loans/{loanId}/reverse-charge-off
Request samples
application/json
{
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Refresh loan

In the case that a loan is out of sync, the refresh endpoint will make sure that obligations, expected payments, and interest accrual is brought into sync.

Refresh loan is only valid for the statuses of active, accelerate, paidOff, and chargedOff.

Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string^ext-|^[A-Z]{2}-[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^ext-|^[A-Z]{2}-[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
204

Success

post/people/{personId}/loans/{loanId}/refresh