This API is organized around REST.
Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
You can use the API in test mode, which does not affect your live data. The API key you use to authenticate the request determines whether the request is in live mode or test mode.
Peach Finance API utilizes cursor-based pagination via the startingAfter
and endingBefore
parameters. Both parameters take an existing Object ID value and return objects in reverse chronological order. The endingBefore
parameter returns objects listed before the named object. The startingAfter
parameter returns objects listed after the named object. If both parameters are provided, only endingBefore
is used.
The size of the page can be limited using the limit
parameter. limit
is optional; the default is 25 and can be between 1 and 100. Sending both startingBefore
and endingAfter
is not currently supported.
Some endpoints will allow sending a sortBy
parameter, enumerating the fields that can be used to sort the results returned by that particular endpoint. For example, if the results can be sorted by createdAt
and updatedAt
, then sending sortBy=[updatedAt, -createdAt]
will return the results sorted by updatedAt
in ascending order and createdAt
in descending order lexicographically.
Some Peach objects have a metaData
attribute. You can use this attribute to pass key-value data as part of an object.
Metadata can be used when you need to store additional information on an object. Metadata is not used by Peach. It is stored as part of an object and returned to you.
Do not store any personal identifiable information (such as SSN) as metadata. Use dedicated attributes for PII as these attributes are encrypted.
Note: Metadata attribute can hold up to 50 keys, with key names up to 100 characters long and values up to 500 characters long.
Some Peach attributes use common formats.
YYYY-MM-DD
. Dates are computed relative to either2001-01-01T12:00:00Z
or with UTC offset like 2001-01-01T12:00:00-07:00
. Some date-times will include subsecond precision to an arbitrary number of digits like 2001-01-01T12:00:00.123Z
.Peach objects always have unique identifiers created by Peach. Some objects support external IDs. If external ID is supported, the object will have externalId
attribute. You can fetch objects using external ID (only objects that support external IDs). Peach IDs have the same format XX-YYYY-YYYY.
XX - is a prefix from the list below.
YYYY-YYYY - is a random set of numbers and letters (capital characters A-Z and digits 1-9). The digit zero is not used to avoid confusion with capital letter O.
External IDs allows avoiding the need to map IDs between your system and Peach. You can pass your IDs when creating various objects at Peach and then use the same IDs to fetch the information back.
When fetching data with external IDs or when sending a request that requires a reference to an object using its external ID (for example, inside a body of a POST request), there is a need to add a ext-
in front of the ID. This will make sure Peach knows these are external IDs being used.
For example, fetching a borrower using the external ID would look like GET /api/people/ext-MY_EXTERNAL_BORROWER_ID
.
When creating objects with external IDs, the ext-
prefix is not needed. For example, when creating a new borrower the body would look like:
POST /api/people
{
"externalId" : "MY_EXTERNAL_BORROWER_ID"
...
}
Prefix | Object |
---|---|
UR | User |
BO | Borrower |
BN | Person Name |
BI | Person Identity |
CT | Contact |
LT | Loan Type |
IR | Investor |
LN | Loan |
LN | Loan Draw |
LA | Installment Advances |
CP | Company |
TX | Transaction |
EV | Event |
EM | Event Message |
PT | Payment Instrument |
PA | Payment ID |
DD | Document Descriptor |
FT | Fee Type |
MS | Person Monitoring Status |
CS | Case |
CE | Case Type |
AP | Autopay |
IN | Interaction |
DT | Do Not Interact Type |
DN | Do Not Interact |
NT | Notification Type |
NO | Notification |
TD | Template Descriptor |
TV | Template Version |
CO | Code |
CR | Compliance Rule |
SR | Service |
FD | FEMA Disaster Details |
NT | Note |
CN | Consent |
LR | Legal Representative |
RL | Role |
PM | Permission |
WT | Workflow Type |
ST | Workflow Step Type |
IT | Workflow Item Type |
WF | Workflow |
WS | Workflow Step |
WI | Workflow Workitem |
VT | Verification Type |
VE | Verification |
VA | Verification Attempt |
OB | Obligation |
RE | Repayment Notification Descriptor |
LP | Loan People |
RA | InterestRate |
PE | Period (loan) |
IA | Loan Investor Association |
SE | Settlement |
RF | Loan Refund |
SM | Statement |
SA | Statement Activity |
SD | Statement Draw Info |
LF | Loan Fee |
AE | Autopay Expected Payment |
FE | FEMA Disaster |
TY | Loan Tape Type |
TA | Loan Tape |
MR | Merchant |
LS | Loan Reporting Status |
CA | Credit Agency |
CL | Collection Agency |
CI | Card Issuer |
WH | Webhook |
AF | ACHFile Upload Monitoring |
FB | Funding Account Balance |
BC | Borrower Campaign |
RN | Campaign Run |
CX | Contact Exporter |
TC | Transaction Chargeback |
PS | Promise to Pay Plan |
P2 | Promise to Pay Period |
LL | Loan Label |
AK | API Key |
AT | AI Call Transcription Result |
SU | AI Call Summary Result |
Our system supports pull events via our REST API. You can see more information here.
Compliance Guard covers core regulatory obligations related to servicing and collections. It does not cover rules required for debt collection agencies (though some of them are applicable to creditors and servicers as a best practice.)
Compliance Guard allows you to:
Peach ensures consistency of the loan's ledger and balances. In order to make sure that multiple operations are not writing to the ledger at the same time, Peach uses locks to protect the consistency of the loan.
In situations where an API call affects a loan's ledger, the system will lock the loan to protect its consistency. Subsequent calls that affect that loan's ledger might return a 423 Locked
status if the loan is still locked. In these cases, you can make a call to Lock Status to check if the loan is still locked.
If you are trying to make a call and get 423 Locked
, consider polling on the Lock Status to check when the lock is released. Most locks are short. Some API calls (e.g. retroactive interest adjustment or payment backdate) can trigger a loan replay. Loan replays can last several minutes, during which the loan will be locked.
Most of the API endpoints are asynchronous by design. There are situations in which you might want to wait until the API call/operation finishes. Some API endpoints have a special query parameter called sync
.
For example:
When sync=true
, the call will be blocked until the async operation has finished. If the operation takes too long, you will get a 408 Request Timeout
response. In that case, you need to poll on that specific operations' result. For example: if you make a call to add a Payment Instrument, and it times out, you can poll the /payment-instruments
endpoint to see if the new payment instrument has been added.
BETA - Standardization of error response bodies is in progress.
Peach uses conventional HTTP response codes to indicate the success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that resulted from the provided information (e.g., a required parameter was missing), and codes in the 5xx range indicate an error with the Peach service. Error response bodies have the following JSON format:
{
"statusCode": 400,
"message": "A description of the error.",
"errorType": "TheErrorType"
}
For a list of error types, see the Errors section.
https://sandboxapi.peach.finance/api/
Identity objects represent various forms of identification that a borrower may have. We allow one primary identity per borrower, and any number of secondary identities. The identity sent when creating a borrower is the primary identity, and cannot be deleted/archived or changed to be a secondary identity.
This object allows you to add and manage a Borrower's contact information. A Borrower can have an "unlimited" number of contacts. However, it is important to properly create key contact objects.
Peach Borrower Portal (if used by the lender), shows the following contacts only:
EMAIL
contactType=email, label=personal or work, affiliation=self, status=primary.
MOBILE PHONE
contactType=phone, label=personal, affiliation=self, status=primary.
HOME PHONE
contactType=phone, label=home, affiliation=self, status=secondary.
HOME ADDRESS
contactType=address, label=home, affiliation=self, status=primary.
The Peach system sends notices (e.g. payment reminder) to borrowers (if configured by the lender). In order for a notice to be sent successfully, both contact object and template must exist. If a contact cannot be found, the system will not send a notice. The system will try to find the following contact objects:
Email notices: contactType=email, valid=true, affiliation=self, status=primary (if "primary" is not found, the system searches for "secondary" and then for "additional")
Text message/SMS notices: contactType=phone, valid=true, affiliation=self, receiveTextMessages=true, label=personal, status=primary (if "primary" is not found, the system searches for "secondary" and then for "additional")
This object allows you to add or create documents related to a borrower. There are multiple ways to use document object:
To create a new document there are two steps:
When a new document is rendered from the template you just need to complete step #1.
A borrower verification session represents the question and response flow for an agent to verify the identity of a human who purports to be a particular borrower. For instance, upon receiving a phone call, an agent would initiate a borrower verification, ask the questions to the borrower, and enter their responses. A set of responses are either correct (thus verifying the human as the borrower) or they are incorrect.
The agent is never shown the correct answers, so privacy risks are minimized and socially engineered security attacks are mitigated.
The campaign feature allows lenders to create a list of borrower contacts that meet certain criteria, for consumption by auto-dialer systems. For example, if the "Auto-create collection cases" procedure is configured along with the auto-close feature you can create a query that looks at the open collection cases to understand what borrowers you consider to still be delinquent after starting collections on them. You can then layer on which cases have been snoozed and/or do not have scheduled calls. The campaign feature has two basic components. The Campaign, is a query that collects a list of borrowers to contact that can be triggered at predefined intervals. The Contact Exporter defines how and where the contacts are delivered. Multiple Campaigns can use a single Exporter. The lender can create and maintain a list of Campaigns and Contact Exporters as needed.
This object allows you to create custom Campaigns. A Campaign is characterized by a set of rules, defined as a SQL query created in Redash and associated with the Campaign. A Campaign can be triggered at predefined intervals. For example, a Campaign can be triggered every day to add borrowers who are 30 days past due. Campaigns can also be manually triggered. When a Campaign is triggered by schedule or manually, a query is executed against the lender's replica data and returns a list of person IDs. The output is sent to the configured Contact Exporter to be written as a configurable CSV file with contact information required by auto dialers and other systems.
A bulk sender object represents a campaign worker which sends messages to the borrowers returned by a campaign's query results.
For each row returned by the campaign a message is sent via the Send endpoint.
In order for a bulk sender to function, at a minimum the campaign's query results must return at least the column borrowerId
. For more details on required columns see per-InteractionSubject
documentation for Campaign run.
If no channel
is specified the campaign will send to all channels with a defined template.
This object allows you to add cases to a borrower that are relevant to servicing or collections. For example, a bankruptcy case. A borrower can have multiple cases. If you enabled Compliance Guard monitoring feature, we'll create a new case every time a borrower matches to one of the external data sources we use. For example, if you monitor for active military, and we match one of your borrowers to the SCRA (https://scra.dmdc.osd.mil/scra/) database we'll create a new case with type=militaryDuty
.
This object allows you to create custom case types. You then can create case instances from a case type. Peach has a predefined collection of special case types, such as bankruptcy
, identityTheft
, and more. You can use any of the special types as your base case type. To customize your case type you can:
Do Not Interact Types
If you don't want to use any of the special predefined case types, then use generic
as your base type.
The Smart Reviews system allows for creating reminder tasks in the Peach CRM based on certain key events or triggers. For example, a trigger could be when a borrower starts military service.
At creation time, all case types are supplied with a default smart review configuration that is disabled by default. Smart review tasks can be enabled by setting the smartReviews.enable
flag.
This object allows for the management of many cases across a number of borrowers. That is to say that a supercase can create, manage, and close many cases at once.
This is particularly useful if an issue occurs which affects a large group of borrowers.
subcases
/cases
endpoint)Managing "who" is affected by a supercase is an important aspect of supercases:
member
of a supercase is one "borrower-loan" pairing.population
is a set of members added at once.population
's membership may be changed until it is "committed" by setting isDraft: false
, at which time the memberships are locked and subcases are created.This object allows you to block interactions on a borrower; and must be connected with a case. You can create multiple Do Not Interact instances on a borrower but only one instance on a case. There are two ways to create Do Not Interacts:
Manually - after a case is created, you can manually create Do Not Interact objects on any borrower case.
In bulk on a Supercase, on the related subcases. See Create Do Not Interact instances on all subcases for more details.
This object allows you to create custom Do Not Interact Types
which will create Do Not Interact
instances automatically when case conditions are met. For example, when a new bankruptcy
case is initiated
, the system can automatically create Do Not Interact
to block debt collection related interactions for 30 calendar days.
The conditions are set in the following way. There are two triggers and one condition fields that you can configure:
onStatus
- triggered based on the case status.onOutcome
- triggered based on the case outcome.onCondition
- condition(s) based on case fields values.You must provide at least one trigger, onStatus
or onOutcome
, when creating a new Do Not Interact Type
object.
Few examples:
onStatus=processing
, onOutcome=null
, onCondition=null
- the Do Not Interact
instance will be created when the case status is changed to processing
.onStatus=completed
, onOutcome=approved
, onCondition=null
- the Do Not Interact
instance will be created when the case status is changed to completed
and the outcome is approved
.Do Not Interact Types
must be associated with Case Types
. A Do Not Interact Type
object can be associated with multiple Case Types
.
This object allows you to create custom Notification Types
which will create interaction
instances (such as emails, text messages, etc.) automatically when case conditions are met. For example, when a new bankruptcy
case is initiated
, the system can automatically send an email notification and ask the borrower to provide supporting documents.
The conditions are set in the following way. There are two triggers and one condition fields that you can configure:
onStatus
- triggered based on the case status.onOutcome
- triggered based on the case outcome.onCondition
- condition(s) based on case fields values.You must provide at least one trigger, onStatus
or onOutcome
, when creating a new Notification Type
object.
Few examples:
onStatus=processing
, onOutcome=null
, onCondition=null
- the interaction
instance will be created when the case status is changed to processing
.onStatus=completed
, onOutcome=approved
, onCondition=null
- the interaction
instance will be created when the case status is changed to completed
and the outcome is approved
.Notification Types
must be associated with Case Types
. A Notification Type
object can be associated with multiple Case Types
.
Specifies the nature of a Note
Specify that this note should be sorted to the top of the list by default.
https://sandboxapi.peach.finance/api/interactions/{interactionId}/notes
curl -i -X POST \
'https://sandboxapi.peach.finance/api/interactions/{interactionId}/notes' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"createdAt": "2019-08-24T14:15:22Z",
"deletedAt": "2019-08-24T14:15:22Z",
"id": "string",
"updatedAt": "2019-08-24T14:15:22Z",
"archived": false,
"category": "generic",
"content": "string",
"important": false,
"pinned": false,
"sensitiveData": false,
"status": "active",
"taskableInstruction": false
}'
{ "message": "string", "status": 0, "data": { "createdAt": "2019-08-24T14:15:22Z", "deletedAt": "2019-08-24T14:15:22Z", "id": "string", "updatedAt": "2019-08-24T14:15:22Z", "archived": false, "archivedAt": "2019-08-24T14:15:22Z", "archivedBy": { … }, "caseId": "string", "category": "generic", "content": "string", "createdBy": { … }, "deletedBy": { … }, "edited": false, "important": false, "interactionId": "string", "object": "note", "oldContent": [], "pinned": false, "sensitiveData": false, "status": "active", "supercaseId": "string", "taskableInstruction": false, "type": "borrowerNote", "updatedBy": { … } } }
https://sandboxapi.peach.finance/api/interactions/{interactionId}/notes/{noteId}
curl -i -X GET \
'https://sandboxapi.peach.finance/api/interactions/{interactionId}/notes/{noteId}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>'
{ "message": "string", "status": 0, "data": { "createdAt": "2019-08-24T14:15:22Z", "deletedAt": "2019-08-24T14:15:22Z", "id": "string", "updatedAt": "2019-08-24T14:15:22Z", "archived": false, "archivedAt": "2019-08-24T14:15:22Z", "archivedBy": { … }, "caseId": "string", "category": "generic", "content": "string", "createdBy": { … }, "deletedBy": { … }, "edited": false, "important": false, "interactionId": "string", "object": "note", "oldContent": [], "pinned": false, "sensitiveData": false, "status": "active", "supercaseId": "string", "taskableInstruction": false, "type": "borrowerNote", "updatedBy": { … } } }
Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.
Specifies the nature of a Note
Specify that this note should be sorted to the top of the list by default.
https://sandboxapi.peach.finance/api/interactions/{interactionId}/notes/{noteId}
curl -i -X PUT \
'https://sandboxapi.peach.finance/api/interactions/{interactionId}/notes/{noteId}' \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-d '{
"createdAt": "2019-08-24T14:15:22Z",
"deletedAt": "2019-08-24T14:15:22Z",
"id": "string",
"updatedAt": "2019-08-24T14:15:22Z",
"archived": false,
"category": "generic",
"content": "string",
"important": false,
"pinned": false,
"sensitiveData": false,
"status": "active",
"taskableInstruction": false
}'
{ "message": "string", "status": 0, "data": { "createdAt": "2019-08-24T14:15:22Z", "deletedAt": "2019-08-24T14:15:22Z", "id": "string", "updatedAt": "2019-08-24T14:15:22Z", "archived": false, "archivedAt": "2019-08-24T14:15:22Z", "archivedBy": { … }, "caseId": "string", "category": "generic", "content": "string", "createdBy": { … }, "deletedBy": { … }, "edited": false, "important": false, "interactionId": "string", "object": "note", "oldContent": [], "pinned": false, "sensitiveData": false, "status": "active", "supercaseId": "string", "taskableInstruction": false, "type": "borrowerNote", "updatedBy": { … } } }
Task-Worker Pairing Configs are used to configure the behavior of tasks in the CRM. A TWPC is used to define the rules for how tasks are assigned to agents (i.e., workers).
In order to configure a TWPC you need to understand the contents of task and worker objects. See the List Unterminated Task endpoint and the List Workers endpoint for more details.
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.
This object represents an installment advance (also called loan proceeds or loan disbursements). Advances should be used for installment loans of type "multiple advances". Advances can be made on Loan objects only. To clarify, Advances cannot be made on Line of Credit objects. Advances increase principal balance of a Loan. Each advance has a unique identifier.
This object represents a draw. Draws can be made on Line of Credit loans only. Draws can be amortized or non-amortized. If amortized, the draw will be amortized over the selected number of periods and aligned to the Line of Credit due dates. If non-amortized, the draw is due on a due date following the current period statement creation. A draw can have different interest and promo rates from the Line of Credit. Each draw has a unique identifier, similar to a loan.
This object represents a line of credit purchase. Purchases can be made on Draw objects only. Purchases of type regular increase principal balance of a Draw. Some purchase types, such as cashBack
or refund
are actually reduce the principal balance of a Draw. Each purchase has a unique identifier.
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.
This object represents information on the borrower's obligation for a given loan period. It also provides information on the current status of the fulfillment of the obligation vis-Ã -vis the amount due and the due date. The obligation is dynamically changing as a result of factors such as payments and service credits made, and the crossing over of due dates.
Payment plans are a specific type of hardship tool that can be used to create a temporary loan schedule for a borrower. Lenders can create a payment plan by specifying the paymentPlanType
, numberOfPeriods
and amount
. After the numberOfPeriods
ends, any remaining periods of the loan will be paid according to the originally scheduled recurring amount and frequency of the loan at the time when the payment plan was created.
When the agreed upon recurring payment plan amount
is less than the originally scheduled payment amount, the system uses isExtendLoanDuration
to ascertain whether to keep the existing loan duration
or automatically extend the original loan duration
.
When the agreed upon recurring payment plan amount
is more than the originally scheduled recurring amount, the loan duration
will be shortened to the point where the remaining balance of the loan is paid off.
Only one active payment plan is allowed at a time. Please note that creating an active payment plan will overwrite changes made to the loan schedule such as due date deferrals, change due date, and change loan terms. This is because the payment plan by design creates a new loan schedule.
If a loan is on a payment plan, other hardship tools cannot be used. Lenders must cancel the payment plan and then make any required loan modifications.
Payment plan is presently for installment only.
This object represents a Promise to Pay Plan
. A Promise to Pay Plan
is a group of Promise to Pay Periods— unscheduled payments that was verbally committed by a borrower. Promise to Pay Plan
s are defined on an account level. Promise to Pay Plan
s are not guaranteed payments. They are used to track verbal commitments made by borrowers.
Note: When creating or updating a Promise to Pay Plan
, either pass a schedule
object, or pass schedule descriptor attributes— startDate
, frequency
, specificDays
, duration
and amount
. Mixing the two approaches is not allowed.
This object represents the interest and promo rates of the loan. You can modify interest and promo rates at any time. If a rate is modified or added with an effective date in the past, we will recalculate loan balances retroactively and future expected payments from the effective date. If a rate is modified or added with effective date in the future, we will recalculate future expected payments only.
This object represents line of credit (e.g. credit card) or loan (e.g. personal installment) statement. Each statement is associated with one due date.
For lines of credit, statements are created one calendar day after the period end date. The number of dates between a statement creation and a due date can be configured by lenders, but are normally 14 or 21 days.
For installments, there are two options for when statements can be created:
Interactions represent communications with a borrower.
Whenever Peach communicates with a borrower an interaction is recorded.
Additionally, communications taking place outside of Peach should be recorded as interactions.
Past interactions information is used by Compliance Guard to make decisions about when and how it is appropriate to communicate again with a borrower.
Peach allows clients to bring their own/partner bank to process ACH payments. If configured, the Peach system will create NACHA files and upload them to the provided destination (SFTP). The Peach system will download NACHA return files from the same destination. Make sure you coordinate this setup with the Peach team.
NACHA requires bank accounts to be verified. If you are using Peach system to process ACH payments, borrowers have two options to verify their bank account:
Please note the following logic of how Peach system selects payment processor for micro-deposits. A payment method is associated with a borrower object instead of a specific loan because the same method can be used to pay multiple loans.
default=true
, the system will use the default=true
payment processor to initiate micro-deposits.default=true
, the system will use the default=true
payment processor to initiate micro-deposits.pending
, originated
, active
, frozen
, accelerated
, chargedOff
] of ONE loan type only, the system will use that loan type's ACH payment processor for micro-deposits. If the loan type doesn't have an ACH payment processor associated, the system will use the default=true
processor to initiate micro-deposits.pending
, originated
, active
, frozen
, accelerated
, chargedOff
] of more than one loan type, the system will use the default=true
processor to initiate micro-deposits.Allows lenders to keep track of merchants associated with loans and purchases. Merchant details can be shown in the Peach Borrower Portal. The following attributes are shown to a borrower:
NAME
businessName
ADDRESS
address
DEPARTMENT OR CONTACT NAME
primaryContactName
EMAIL
primaryContactEmail
PHONE
primaryContactPhone
This object represents an event. Events are sent from Peach to you. Events can be related to any object in this API.
Event Name | Occurs when | Related Object |
---|---|---|
advance.statuschanged | an advance status changes | Advance |
advance.updated | an advance amount is updated | Advance |
autopay.schedule.created | an autopay schedule is set up | Autopay |
autopay.schedule.cancel | an autopay schedule is canceled | Autopay |
autopay.schedule.changed | an autopay schedule is changed | Autopay |
autopay.payment.rescheduled | an autopay payment is rescheduled | Autopay |
autopay.payment.canceled | an autopay payment is canceled | Autopay |
card.created | a card is created | Card |
card.replacement.requested | a card replacement is requested | Card |
card.status.changed | a card's status is changed | Card |
case.changed | a case is created, updated, or deleted, with precise change information | Case |
case.created | [DEPRECATED - use case.changed instead] a case is created | Case |
case.deleted | [DEPRECATED - use case.changed instead] a case is deleted | Case |
case.updated | [DEPRECATED - use case.changed instead] a case is updated | Case |
case.association.added | an association is added to a case | Case |
case.association.removed | an association is removed from a case | Case |
case.donotinteract.changed | a DoNotInteract object is created, updated, or deleted, with precise change information | Case |
case.donotinteract.created | [DEPRECATED - use case.donotinteract.changed instead] a DoNotInteract object is created | Case |
case.donotinteract.deleted | [DEPRECATED - use case.donotinteract.changed instead] a DoNotInteract object is deleted | Case |
case.donotinteract.updated | [DEPRECATED - use case.donotinteract.changed instead] a DoNotInteract object is updated | Case |
case.donotinteract.expired | a DoNotInteract object has expired | Case |
case.escalation.changed | a case escalation is created, updated, or deleted, with precise change information | Case |
case.escalation.created | [DEPRECATED - use case.escalation.changed instead] a case escalation is created | Case |
case.escalation.canceled | [DEPRECATED - use case.escalation.changed instead] a case escalation is canceled | Case |
contact.created | a contact is created | Contact |
contact.deleted | a contact is deleted | Contact |
contact.updated | a contact is updated | Contact |
communication.send | communication is attempted | Interaction |
indexrate.created | index rate is created | Loan Type |
indexrate.updated | index rate is updated | Loan Type |
interaction.blocked | interaction is blocked for a borrower | Interaction |
loan.balance.changed | a loan balance changed | Loan |
loan.closed | a loan is closed | Loan |
loan.created | a loan is created | Loan |
loan.credit.limit.changed | a loan credit limit was changed | Loan |
draw.credit.limit.changed | a draw credit limit was changed | Draw |
loan.creditreporting.created | a loan is scheduled to start credit reporting | Credit Reporting Status |
loan.creditreporting.stopped | a loan is scheduled to stop credit reporting | Credit Reporting Status |
loan.current | a loan is current or became current | Loan |
loan.duedate.defer | a single loan due date is deferred | Loan |
loan.fee.booked | a dynamic fee is applied | Loan |
loan.fee.canceled | a dynamic fee is canceled | Loan |
loan.fee.changed | a dynamic fee is changed | Loan |
loan.interest.capitalized | interest capitalization is triggered after a due date | Loan |
loan.interestaccrued.min | minimum interest charge is triggered on a draw | Draw |
loan.latefee.booked | a late fee is applied | Loan |
loan.modificationfee.booked | a modification fee is applied | Loan |
loan.migration.succeeded | a loan migration succeeds | Loan |
loan.migration.failed | a loan migration fails | Loan |
loan.obligation.statuschanged | a change in a loan's obligation status is recorded | Loan |
loan.overdue | a loan is overdue | Loan |
loan.overdue.update | a loan is overdue | Loan |
loan.ownerchanged | a loan changes owners | Loan |
loan.paymentplan.setup | a loan payment plan is set up | Loan |
loan.period.started | a loan period has started | Loan |
loan.promiseplan.created | a promise to pay plan is created | Promise to Pay Plan |
loan.promiseplan.statuschanged | a promise to pay plan status changes | Promise to Pay Plan |
loan.promiseplan.due.today | a promise to pay plan is due today | Promise to Pay Plan |
loan.promiseplan.overdue | a promise to pay plan becomes "overdue" | Promise to Pay Plan |
loan.promiseplan.current | a promise to pay plan changes from "overdue" to "current" | Promise to Pay Plan |
loan.promoprogram.created | a promo program is created | Loan |
loan.promoprogram.updated | a promo program is updated | Loan |
loan.rate.created | rate is created | Loan |
loan.rate.updated | rate is updated | Loan |
loan.refunded | payments on a loan are refunded | Loan |
loan.reimbursement.initiated | a borrower reimbursement is initiated | Loan |
loan.reimbursement.processed | a borrower reimbursement is processed | Loan |
loan.schedule.defer | a loan schedule is deferred | Loan |
loan.servicefee.booked | a service fee is booked | Loan |
loan.statuschanged | a loan changes status | Loan |
person.consent.updated | a borrower updates their consents | Borrower |
person.created | a borrower is created | Borrower |
person.monitoring.bankruptcy.started | bankruptcy and deceased monitoring begins for a borrower | Borrower |
person.monitoring.scra.started | SCRA monitoring begins for a borrower | Borrower |
payment.instrument.created | a payment instrument is created | Payment Instrument |
payment.instrument.updated | a payment instrument is updated | Payment Instrument |
payment.instrument.deactivated | a payment instrument is deactivated | Payment Instrument |
payment.applied | DEPRECATED used in place of payment.initiated for internal ACH prior to deprecation. | Transaction |
payment.chargeback | a payment is charged back | Transaction |
payment.chargeback.reversed | a payment is chargeback is reversed | Transaction |
payment.failed | a payment fails | Transaction |
payment.initiated | a payment is initiated | Transaction |
payment.pending | a payment is pending | Transaction |
payment.reversed | a payment is reversed | Transaction |
payment.succeeded | a payment is succeeded | Transaction |
payment.scheduled | a payment is scheduled | Transaction |
payment.rescheduled | a payment is rescheduled | Transaction |
payment.due.today | periodically for external transactions with a status of "scheduled" | Transaction |
payment.hold.days.expired | a transaction's hold days expired | Transaction |
paymentplan.created | a payment plan is created | Payment Plan |
paymentplan.statuschanged | a payment plan changes status | Payment Plan |
purchase.authorized | a purchase is authorized | Purchase |
purchase.settled | a purchase is settled | Purchase |
purchase.applied | a purchase is applied. | Purchase |
purchase.created | a purchase is created | Purchase |
purchase.changed | a purchase is updated | Purchase |
purchase.dispute.created | a purchase dispute is created | Purchase Dispute |
purchase.dispute.updated | a purchase dispute is updated | Purchase Dispute |
statement.created | a statement is created | Loan |
reconciliation.payment.failed | a reconciliation payment fails | Transaction |
This utility function is used for managing index interest rates (for example, a rate that is pegged to the prime rate of the Fed). Index Interest Rates are set at the loan type level and can be used by loans associated with the loanTypeId. Index Interest Rates are only relevant to interest rates and not relevant to promo rates.
Index Interest Rate values can be updated with a new value with an effective date in the past. When a new Index Interest Rate value is set, the previous rate end date will be set to one calendar day before the new rate's effective date. If the new rate's effective date is in the past, the Peach system will replay all Active loans (to clarify, Active loans at the time of Index Interest Rate update) with the new Index Interest Rate value and re-accrue loans' interest.
Allows lenders to keep track of different collection agencies that charged-off loans may be assigned to. This is useful when a lender assigns charged off loans to a third party debt collection agency. The Peach Borrower Portal will display the collection agency information to the borrower. The lender can continue to use Peach as the system of record / ledger for charged off loans. The lender can post any payments collected by the collection agency as isExternal=true
transactions. The Peach system will waterfall the payments and update loan balances.