Peach Finance API (2023-11-29)

Introduction

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.

Pagination

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.

Metadata

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.

Attributes Formats

Some Peach attributes use common formats.

  1. Interest rate, promo rate and APR - Rates are annual. Format is decimal. For example, 0.005 is 0.5% annual rate, 0.01 is 1% annual rate, 0.2 is 20% annual rate.
  2. Dates - Dates are in format YYYY-MM-DD. Dates are computed relative to either
    • the company timezone, which is configured on the company config, or
    • the product timezone, which is configured on the Loan Type. Note: it is possible for a company to have multiple products with different timezones.
  3. Date-times - Timestamps are in ISO-8601 format expressed either in UTC like 2001-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.
  4. Amount - Amounts are in decimal format with 2 places after the decimal point. For example, 32.45 is thirty-two dollars and forty-five cents.

Identifiers

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

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

List of Prefixes

PrefixObject
URUser
BOBorrower
BNPerson Name
BIPerson Identity
CTContact
LTLoan Type
IRInvestor
LNLoan
LNLoan Draw
LAInstallment Advances
CPCompany
TXTransaction
EVEvent
EMEvent Message
PTPayment Instrument
PAPayment ID
DDDocument Descriptor
FTFee Type
MSPerson Monitoring Status
CSCase
CECase Type
APAutopay
INInteraction
DTDo Not Interact Type
DNDo Not Interact
NTNotification Type
NONotification
TDTemplate Descriptor
TVTemplate Version
COCode
CRCompliance Rule
SRService
FDFEMA Disaster Details
NTNote
CNConsent
LRLegal Representative
RLRole
PMPermission
WTWorkflow Type
STWorkflow Step Type
ITWorkflow Item Type
WFWorkflow
WSWorkflow Step
WIWorkflow Workitem
VTVerification Type
VEVerification
VAVerification Attempt
OBObligation
RERepayment Notification Descriptor
LPLoan People
RAInterestRate
PEPeriod (loan)
IALoan Investor Association
SESettlement
RFLoan Refund
SMStatement
SAStatement Activity
SDStatement Draw Info
LFLoan Fee
AEAutopay Expected Payment
FEFEMA Disaster
TYLoan Tape Type
TALoan Tape
MRMerchant
LSLoan Reporting Status
CACredit Agency
CLCollection Agency
CICard Issuer
WHWebhook
AFACHFile Upload Monitoring
FBFunding Account Balance
BCBorrower Campaign
RNCampaign Run
CXContact Exporter
TCTransaction Chargeback
PSPromise to Pay Plan
P2Promise to Pay Period
LLLoan Label
AKAPI Key
ATAI Call Transcription Result
SUAI Call Summary Result

Events

Our system supports pull events via our REST API. You can see more information here.

Compliance Guard

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:

  • Run real-time regulatory checks before initiating an outbound communication with a borrower. Rules cover laws on the federal level and 50 states + DC. The system runs appropriate rules based on loan type, loan status, location of a borrower, borrower status, and past communications.
  • Monitor for bankruptcy, deceased, active military, and FEMA (disasters). You can monitor for all four or any combination of the four. On hits, we automatically create "cases" with all details, block future outbound communications (if needed), and notify you about the cases.

Configuring Compliance Guard

  • Peach will configure an appropriate loan type for you. It allows us to select a predefined set of regulatory rules
  • Peach will work with you to override regulatory rules based on your risk appetite. You can "mute" rules. You can add rules. This is typically done with your legal and compliance teams.
  • Peach will work with you to add business rules based on your needs. For example, don't allow outbound debt collection calls on Sundays. This is typically done with your operations and product teams.

Implementing Compliance Guard in your system

  • You need to create borrower and loan objects in the Peach system. For more details see Borrower Management and Loans Management.
  • You need to report all communications with a borrower. Not required for monitoring. This way Peach can track all interactions with the borrower. For more details see Communicator & Interactions.
  • When sending a communication through Peach it will automatically check Compliance Guard rules to determiend if the communication is compliant. If it is not compliant, the communication will not be rejected. (Some send endpoints do not perform Compliance Guard checks, but they should be clearly marked.)
  • You can also manually check if a communication is compliant by using the Can interact endpoint.

Locks

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.

Sync calls

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.

Errors

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.

Download OpenAPI description
Languages
Servers

https://sandboxapi.peach.finance/api/

Frontend

Endpoints for use in configuring the frontend before and after authentication.

Operations

Auth

Authentication and authorization related endpoints.

Operations

API Keys

API Keys can be managed with these endpoints.

Operations

Borrowers

The Borrower object represents a borrower. It allows you to maintain different statuses that are associated with the same borrower. The API allows you to create, delete and update your borrowers. You can retrieve an individual borrower as well as a list of all your borrowers.

Operations

Identity

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.

Operations

Contact Information

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

Operations

Payment Instruments

This object represents a payment method (e.g. bank account, credit card, debit card, etc.) belonging to a borrower.

Operations

Documents

This object allows you to add or create documents related to a borrower. There are multiple ways to use document object:

  • Render a document from a Peach template. For example, loan terms or Autopay agreement.
  • Upload any type of file. For example, a PDF copy of borrower's driver license.
  • Documents can also be used to render a legal disclosure from Peach template.

To create a new document there are two steps:

  1. Create a document descriptor.
  2. Upload document content/file.

When a new document is rendered from the template you just need to complete step #1.

Operations

Verifications

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.

Operations

Verification Types

This object represents configurations describing how new borrower verifications should behave.

Operations

Campaign Overview

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.

Campaigns

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.

Operations

Contact Exporters

This object allows you to create custom Contact Exporters. The Contact Exporter defines how and where the contacts generated by the Campaign are delivered.

Operations

Bulk Senders

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.

Operations

Cases

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.

Operations

Case Types

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:

  • Add additional custom fields
  • Add and remove automatic Do Not Interact Types
  • Add custom name
  • Add custom description

If you don't want to use any of the special predefined case types, then use generic as your base type.

Operations

Smart Reviews

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.

Supercases

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.

  • Cases created by a supercase are called subcases
  • A supercase can only manage cases it has created (i.e., NOT cases created via the /cases endpoint)

Managing "who" is affected by a supercase is an important aspect of supercases:

  • A member of a supercase is one "borrower-loan" pairing.
  • A population is a set of members added at once.
    • A supercase might have many populations if different members are added at different times.
    • It's useful to keep track of sets of members like this because different actions might need to be taken on different members depending on when they're added to a supercase.
    • A 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.
Operations

Do Not Interact

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:

  1. Manually - after a case is created, you can manually create Do Not Interact objects on any borrower case.

  2. In bulk on a Supercase, on the related subcases. See Create Do Not Interact instances on all subcases for more details.

Operations

Do Not Interact Types

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:

  1. onStatus - triggered based on the case status.
  2. onOutcome - triggered based on the case outcome.
  3. 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.

Operations

Notification 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:

  1. onStatus - triggered based on the case status.
  2. onOutcome - triggered based on the case outcome.
  3. 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.

Operations

Notes

Operations

Workflows

Operations

Workflow Types

Operations

Tasks

Tasks are used to track work that needs to be done by agents in the CRM. Tasks are automatically assigned to agents based on configurable characteristics of the agents and the tasks.

Operations

Task-Worker Pairing Configs

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.

Operations

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.

Operations

Installment Advances

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.

Operations

Installment Refunds

This object represents refunds. Various situations require full or partial refunds of a loan. Depending on the refund amount and whether the borrower has made payments, a refund may also trigger a reimbursement to the borrower.

Operations

Line of Credit Draws

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.

Operations

Line of Credit Purchases

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.

Operations

Line of Credit Migration

Operations

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.

Operations

Obligations

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.

Operations

Periods

Operations

Payment Plans

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.

Operations

Promise to Pay Plans

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 Plans are defined on an account level. Promise to Pay Plans 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.

Operations

Fees

This object contains information about the fees that are charged to the loan, including draw, origination or dynamic fees, such as late fees.

Operations

Rates

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.

Operations

Transactions

This object represents payments and credits. Payments represent real money that were paid back by borrowers. Credits are adjustments made on a loan. Credits lower balances similar to payments. Credits can be issued by customer service representatives or supervisors.

Operations

Statements

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:

  1. One calendar day after the period end date, which is also the due date. In this case, the statement date and due date are the same.
  2. A number of calendar days before the period end date. The offset (as number of calendar days) can be configured by lenders. In this case, a statement is created and sent before the period ends, which means some of the statement details are calculated based on partial period data (e.g. amount of interest accrued in the period.)
Operations

Autopay

This object represents the current Autopay plan. The current Autopay plan must be canceled before creating a new plan. The autopay cadence can be aligned to due dates or can be on a different payment schedule.

Operations

Balances

This object represents current loan balances.

Operations

Credit Reporting

This object represents loan credit reporting data as it was reported to credit bureaus.

Operations

Loan Investors

Investors associated with a loan.

Operations

Collection Agency

Allows a loan to be assigned to a collection agency

Operations

Promo Programs

Operations

Card

BETA

Allows lenders to associate physical or virtual card with a loan or line of credit.

Operations

Loan Labels

Operations

Communicator

Send and receive communications like email and text messages with borrowers and their contacts. When sending and receiving communications an interaction is usually created.

Operations

Templates

The templates system is used manage templates and render content from existing templates. Templates can be used, for instance, when sending emails and text messages. Custom branding and dynamic fields can be added into templates.

Operations

System Documents & UI

Peach displays some messages as documents or UI elements. You may choose to customize the content of these messages using the templating system.

System Sent Messages

Peach automatically sends messages on your behalf. For example when autopay is enabled for a borrower a message with subject autopayEnabled is sent.

Interactions

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.

Operations

Leave interaction convo

Request

Path
interactionIdstring(AnyId)^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...write-onlyrequired

Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.

curl -i -X POST \
  'https://sandboxapi.peach.finance/api/interactions/{interactionId}/convo/leave' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Success

Get previous interactions

Request

For this interaction, get all the previous interactions linked to it via the previousInteractionId field.

Path
interactionIdstring(AnyId)^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...write-onlyrequired

Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.

Query
includeArray of stringsnon-empty

A list of additional interaction relationships to include in the response object.

  • When include=borrower the borrower field will be populated (otherwise it will be null). This is data describing the borrower associated with this interaction.
  • When include=contact the contact`` field will be populated (otherwise it will be null`). This is contact data for the contact this interaction was sent to or from.
  • When include=lastTaskMeta the lastTaskMeta field will be populated (otherwise it will be null). This is meta data about the most recently ended task associated with this interaction.

You can include multiple fields by passing multiple values, e.g., include=borrower,contact.

Items Enum"borrower""contact""lastTaskMeta"
curl -i -X GET \
  'https://sandboxapi.peach.finance/api/interactions/{interactionId}/previous?include=borrower' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

Success

Bodyapplication/json
dataArray of GenericInteraction (object) or VoiceInteraction (object) or EmailInteraction (object) or TextInteraction (object) or ChatInteraction (object) or MailInteraction (object)(Interaction)
messagestring
statusinteger

HTTP status code.

Response
application/json
{ "data": [ { … } ], "message": "string", "status": 0 }

Download interaction recording

Request

Path
interactionIdstring(AnyId)^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...write-onlyrequired

Interaction's unique identifier to track interactions for. Can be Peach or lender's external identifier.

Query
dispositionstring

Tells the response from the file download to set the Content-Disposition header to the given value.

  • attachment means "download the file"
  • inline means "open the file in the default manner". e.g., if the file were an .mp3 the browser's default audio player would open.
Enum"inline""attachment"
returnUrlboolean

If true, will return a URL to the content instead of redirecting to the content.

Default false
curl -i -X GET \
  'https://sandboxapi.peach.finance/api/interactions/{interactionId}/recording-content?disposition=inline&returnUrl=false' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>'

Responses

If the returnUrl parameter is true then return the url rather than redirecting.

Bodyapplication/json
urlstring(uri)
Response
application/json
{ "url": "http://example.com" }

Compliance Guard

Compliance Guard helps ensures communications with borrowers are compliant with regulations.

Operations

Promo Programs Type

Operations

Payment Processors

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:

  1. Connect their online bank account via Plaid.
  2. Trigger micro-deposits and verify amounts.

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.

  • If you have only one loan type and one payment processor with default=true, the system will use the default=true payment processor to initiate micro-deposits.
  • If you have more than one loan type and one payment processor with default=true, the system will use the default=true payment processor to initiate micro-deposits.
  • If you have have more than one loan type and more than one payment processor:
    • You can associate a specific payment processor with a loan type.
    • If a borrower has one or more loans in status [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.
    • If a borrower has one or more loans in status [pending, originated, active, frozen, accelerated, chargedOff] of more than one loan type, the system will use the default=true processor to initiate micro-deposits.
Operations

Card Issuers

BETA

Allows clients to manage configurations for card issuers.

Operations

Funding Instruments

Operations

Employees

Operations

Teams

Operations

Users

Operations

Investors

This object represents institutional owners of loans. Investors must be created before they can be associated with loans.

Operations

Settlement Instruments

This object represents a bank account belonging to an investor. Peach will settle payment proceed into that account.

Operations

Loan Tape Types

Allows configuration for which fields should be included for loans or payments tapes.

Operations

Loan Tapes

Allows investors to get different loan tapes delivered to different SFTP servers.

Operations

Merchants

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

Operations

Events

This object represents an event. Events are sent from Peach to you. Events can be related to any object in this API.

Event NameOccurs whenRelated Object
advance.statuschangedan advance status changesAdvance
advance.updatedan advance amount is updatedAdvance
autopay.schedule.createdan autopay schedule is set upAutopay
autopay.schedule.cancelan autopay schedule is canceledAutopay
autopay.schedule.changedan autopay schedule is changedAutopay
autopay.payment.rescheduledan autopay payment is rescheduledAutopay
autopay.payment.canceledan autopay payment is canceledAutopay
card.createda card is createdCard
card.replacement.requesteda card replacement is requestedCard
card.status.changeda card's status is changedCard
case.changeda case is created, updated, or deleted, with precise change informationCase
case.created[DEPRECATED - use case.changed instead] a case is createdCase
case.deleted[DEPRECATED - use case.changed instead] a case is deletedCase
case.updated[DEPRECATED - use case.changed instead] a case is updatedCase
case.association.addedan association is added to a caseCase
case.association.removedan association is removed from a caseCase
case.donotinteract.changeda DoNotInteract object is created, updated, or deleted, with precise change informationCase
case.donotinteract.created[DEPRECATED - use case.donotinteract.changed instead] a DoNotInteract object is createdCase
case.donotinteract.deleted[DEPRECATED - use case.donotinteract.changed instead] a DoNotInteract object is deletedCase
case.donotinteract.updated[DEPRECATED - use case.donotinteract.changed instead] a DoNotInteract object is updatedCase
case.donotinteract.expireda DoNotInteract object has expiredCase
case.escalation.changeda case escalation is created, updated, or deleted, with precise change informationCase
case.escalation.created[DEPRECATED - use case.escalation.changed instead] a case escalation is createdCase
case.escalation.canceled[DEPRECATED - use case.escalation.changed instead] a case escalation is canceledCase
contact.createda contact is createdContact
contact.deleteda contact is deletedContact
contact.updateda contact is updatedContact
communication.sendcommunication is attemptedInteraction
indexrate.createdindex rate is createdLoan Type
indexrate.updatedindex rate is updatedLoan Type
interaction.blockedinteraction is blocked for a borrowerInteraction
loan.balance.changeda loan balance changedLoan
loan.closeda loan is closedLoan
loan.createda loan is createdLoan
loan.credit.limit.changeda loan credit limit was changedLoan
draw.credit.limit.changeda draw credit limit was changedDraw
loan.creditreporting.createda loan is scheduled to start credit reportingCredit Reporting Status
loan.creditreporting.stoppeda loan is scheduled to stop credit reportingCredit Reporting Status
loan.currenta loan is current or became currentLoan
loan.duedate.defera single loan due date is deferredLoan
loan.fee.bookeda dynamic fee is appliedLoan
loan.fee.canceleda dynamic fee is canceledLoan
loan.fee.changeda dynamic fee is changedLoan
loan.interest.capitalizedinterest capitalization is triggered after a due dateLoan
loan.interestaccrued.minminimum interest charge is triggered on a drawDraw
loan.latefee.bookeda late fee is appliedLoan
loan.modificationfee.bookeda modification fee is appliedLoan
loan.migration.succeededa loan migration succeedsLoan
loan.migration.faileda loan migration failsLoan
loan.obligation.statuschangeda change in a loan's obligation status is recordedLoan
loan.overduea loan is overdueLoan
loan.overdue.updatea loan is overdueLoan
loan.ownerchangeda loan changes ownersLoan
loan.paymentplan.setupa loan payment plan is set upLoan
loan.period.starteda loan period has startedLoan
loan.promiseplan.createda promise to pay plan is createdPromise to Pay Plan
loan.promiseplan.statuschangeda promise to pay plan status changesPromise to Pay Plan
loan.promiseplan.due.todaya promise to pay plan is due todayPromise to Pay Plan
loan.promiseplan.overduea promise to pay plan becomes "overdue"Promise to Pay Plan
loan.promiseplan.currenta promise to pay plan changes from "overdue" to "current"Promise to Pay Plan
loan.promoprogram.createda promo program is createdLoan
loan.promoprogram.updateda promo program is updatedLoan
loan.rate.createdrate is createdLoan
loan.rate.updatedrate is updatedLoan
loan.refundedpayments on a loan are refundedLoan
loan.reimbursement.initiateda borrower reimbursement is initiatedLoan
loan.reimbursement.processeda borrower reimbursement is processedLoan
loan.schedule.defera loan schedule is deferredLoan
loan.servicefee.bookeda service fee is bookedLoan
loan.statuschangeda loan changes statusLoan
person.consent.updateda borrower updates their consentsBorrower
person.createda borrower is createdBorrower
person.monitoring.bankruptcy.startedbankruptcy and deceased monitoring begins for a borrowerBorrower
person.monitoring.scra.startedSCRA monitoring begins for a borrowerBorrower
payment.instrument.createda payment instrument is createdPayment Instrument
payment.instrument.updateda payment instrument is updatedPayment Instrument
payment.instrument.deactivateda payment instrument is deactivatedPayment Instrument
payment.appliedDEPRECATED used in place of payment.initiated for internal ACH prior to deprecation.Transaction
payment.chargebacka payment is charged backTransaction
payment.chargeback.reverseda payment is chargeback is reversedTransaction
payment.faileda payment failsTransaction
payment.initiateda payment is initiatedTransaction
payment.pendinga payment is pendingTransaction
payment.reverseda payment is reversedTransaction
payment.succeededa payment is succeededTransaction
payment.scheduleda payment is scheduledTransaction
payment.rescheduleda payment is rescheduledTransaction
payment.due.todayperiodically for external transactions with a status of "scheduled"Transaction
payment.hold.days.expireda transaction's hold days expiredTransaction
paymentplan.createda payment plan is createdPayment Plan
paymentplan.statuschangeda payment plan changes statusPayment Plan
purchase.authorizeda purchase is authorizedPurchase
purchase.settleda purchase is settledPurchase
purchase.applieda purchase is applied.Purchase
purchase.createda purchase is createdPurchase
purchase.changeda purchase is updatedPurchase
purchase.dispute.createda purchase dispute is createdPurchase Dispute
purchase.dispute.updateda purchase dispute is updatedPurchase Dispute
statement.createda statement is createdLoan
reconciliation.payment.faileda reconciliation payment failsTransaction
Operations

Webhooks

Allows clients to manage webhooks.

The Peach webhook system will issue POST requests with the event data as JSON payload.

Operations

Loan Amortization

Operations

Routing Numbers

This utility function returns financial institution name that a routing number belongs to. This information is updated once or twice a month by the Federal Reserve Bank.

Operations

BIN Numbers

This utility function returns card details. The BIN information is provided by First Data and normally updated weekly.

Operations

Index Rates

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.

Operations

Operations

Operations

Credit Agencies

Operations

Collection Agencies

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.

Operations

Errors

Errors