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.

Create draw

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

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

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

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

Request Body schema: application/json
required
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 (MetaData)

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

Array of objects or null
Array of objects (LoanLabel)
nickname
string
Default: "Draw"

The draw's nickname as displayed in the UI.

status
required
string (LoanStatus)

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 Draw is closed. If true, new Purchases cannot be created.

object (DrawAtOriginationCreate)

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

drawType
string or null

Describes the type of line of credit purchases associated with the draw. Typically used in credit card use cases in which lenders set up draws specifically to be used for cash advances, balance transfers, etc.

cashAdvance - must be set in order for Peach's system to automatically associate ATM withdrawal and other cash-specific transactions with a specific draw. See Create card issuer endpoint and drawMapping attribute for additional configuration details.

balanceTransfer - enables lenders to create a draw that will house balance transfer transactions.

regularPurchase - enables lenders to create a draw used for day-to-day purchases. If this attribute is set, Peach's system will automatically associate purchases with this draw based on the card issuer drawMapping logic.

Enum: "balanceTransfer" "cashAdvance" "regularPurchase"
Responses
200

Success

post/people/{personId}/loans/{loanId}/draws
Request samples
application/json
{
  • "externalId": "string",
  • "declineReason": {
    },
  • "timestamps": {
    },
  • "metaData": { },
  • "additionalBorrowers": [
    ],
  • "labels": [
    ],
  • "nickname": "Draw",
  • "status": "pending",
  • "isClosed": true,
  • "atOrigination": {
    },
  • "drawType": "balanceTransfer"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Get draws

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

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

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

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

query Parameters
statuses
Array of strings

A comma separated list of loan statuses to filter by

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

Filter for draws with isClosed value

isAmortized
boolean

Filter for amortized or non-amortized draws

startedBefore
string <date>

Filter for draws started before a date

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.

Responses
200

Success

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

Get draw by ID

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

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

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

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

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

The draw identifier.

Responses
200

Success

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

Update draw

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

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

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

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

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

The draw identifier.

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
required
nickname
string

A nickname the borrower gave the draw.

status
string (LoanStatus)

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"
object (DrawAtOriginationUpdate)

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

drawType
string or null

Describes the type of line of credit purchases associated with the draw. Typically used in credit card use cases in which lenders set up draws specifically to be used for cash advances, balance transfers, etc.

cashAdvance - must be set in order for Peach's system to automatically associate ATM withdrawal and other cash-specific transactions with a specific draw. See Create card issuer endpoint and drawMapping attribute for additional configuration details.

balanceTransfer - enables lenders to create a draw that will house balance transfer transactions.

regularPurchase - enables lenders to create a draw used for day-to-day purchases. If this attribute is set, Peach's system will automatically associate purchases with this draw based on the card issuer drawMapping logic.

Enum: "balanceTransfer" "cashAdvance" "regularPurchase"
Responses
200

Success

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

Activate draw

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

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

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

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

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

The draw identifier.

query Parameters
sync
boolean
Default: false

Make the process synchronous.

Responses
200

Success

408

Request Timeout

post/people/{personId}/loans/{loanId}/draws/{drawId}/activate
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Get draw credit limit

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

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

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

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

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

The draw identifier.

query Parameters
effectiveDate
string <date>
Responses
200

Success

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

Update draw credit limit

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

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

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

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

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

The draw identifier.

Request Body schema: application/json
required
creditLimitAmount
number <float>

The credit limit amount.

creditLimitPercentage
number <float> (CreditLimitPercentage)

The draw's credit limit as a percentage of the loan's credit limit. Lenders can set and update creditLimitAmount, creditLimitPercentage, or both. If both values are set, the system will use the lower value. The format is decimal. For example, 0.01 is a 1%, 0.2 is a 20%.

caseId
string

An identifier for an existing case.

Responses
200

Success

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

Preview draw amortization

This endpoint is used for previewing draw amortization. The draw must have non-due principal to be amortized.

Note:

  • If the loan type is configured to accrue interest as accrualMethod=compoundWithFees, there is a known limitation to the draw amortization calculation logic.
  • The draw amortization calculation will be done using the compound method and not compoundWithFees. To ensure that the system calculates interest accurately, amortized draws should NOT include any fees.
Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

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

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

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

Request Body schema: application/json
purchaseAmount
required
number <float>

The total amount of the purchases for preview.

duration
integer <int32>

The new duration of the draw as a number of paymentFrequency of the line of credit.

If this endpoint is called when the draw has already been active for some number of periods, the duration parameter will generate duration additional periods from the time at which the endpoint is called. For example, if a draw has duration 10, and it is amortized again in period 5 with duration=10, the result will be a draw with a total duration of 15.

The caller needs to pass one of the values only, duration or recurringPaymentAmount.

recurringAmount
number <float>

The recurring payment amount. The system will calculate the needed duration. Pass one of the values only, duration or recurringPaymentAmount.

startDate
string <date>

The start date of the draw. The system will assume today if not specified.

drawFee
number <float>

The draw fee.

serviceFeeAmount
number <float>

The service fee amount that will be charged recurrently. Only required if the service fee chargeLogic is [loanPeriod, everyOtherLoanPeriod, calendarPeriod] and amountLogic is configured as type=passedAtOrigination. In all other cases, the system will calculate the fee based on pre-configured logic.

serviceFeeCapAmount
number <float>

The maximum amount of the service fee that can be charged over the life of the loan or draw. Only required if the service fee chargeLogic is [loanPeriod, everyOtherLoanPeriod, calendarPeriod] and capLogic is configured as type=capPassedAtOrigination. In all other cases, the system will calculate the fee based on pre-configured logic.

Responses
200

Success

408

Request Timeout

post/people/{personId}/loans/{loanId}/amortize-preview
Request samples
application/json
{
  • "purchaseAmount": 0,
  • "duration": 0,
  • "recurringAmount": 0,
  • "startDate": "2019-08-24",
  • "drawFee": 0,
  • "serviceFeeAmount": 0,
  • "serviceFeeCapAmount": 0
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Amortize draw

This endpoint is used for draw amortization. The draw must have non-due principal to be reamortized.

Note:

  • If the loan type is configured to accrue interest as accrualMethod=compoundWithFees, there is a known limitation to the draw amortization calculation logic.
  • The draw amortization calculation will be done using the compound method and not compoundWithFees. To ensure that the system calculates interest accurately, amortized draws should NOT include any fees.
Securityoauth2 or bearerAuth or apiKeyHeader
Request
path Parameters
personId
required
string (AnyId) ^ext-|^[A-Z][A-Z0-9]-[A-Z0-9]+-[A-Z0-9]+|^\d+...

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

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

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

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

The draw identifier.

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

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

duration
integer <int32>

The new duration of the draw as a number of paymentFrequency of the line of credit. Only applicable if the draw needs to be amortized. The caller needs to pass one of the values only, duration or recurringPaymentAmount.

If this endpoint is called when the draw has already been active for some number of periods, the duration parameter will generate duration additional periods from the time at which the endpoint is called. For example, if a draw has duration 10, and it is amortized again in period 5 with duration=10, the result will be a draw with a total duration of 15.

recurringAmount
number <float>

The recurring payment amount. The system will calculate the needed duration. Pass one of the values only, duration or recurringPaymentAmount. This field is only valid when the amortizationMethod on the loan type is equalPayments.

Responses
200

Success

post/people/{personId}/loans/{loanId}/draws/{drawId}/amortize
Request samples
application/json
{
  • "previewMode": false,
  • "duration": 0,
  • "recurringAmount": 0
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Close draw

Closing a draw means that the draw can no longer accept new purchases. Once all of its purchases are settled, its balance is depleted and all payments are processed, the draw will transition to paidOff status.

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

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

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

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

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

The draw identifier.

Request Body schema: application/json
required
caseId
string

An identifier for an existing case.

closeRequestedByBorrower
boolean
Default: false

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

Responses
204

Success no content

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

Reopen draw

Reopen a closed draw. This will allow new purchases to be added to the draw. Draws in paidOff status cannot be reopened.

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

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

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

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

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

The draw identifier.

Request Body schema: application/json
required
caseId
string

An identifier for an existing case.

reopenReason
string

The reason the loan is being reopened.

Responses
204

Success no content

post/people/{personId}/loans/{loanId}/draws/{drawId}/reopen
Request samples
application/json
{
  • "caseId": "string",
  • "reopenReason": "string"
}

Cancel draw

The cancel loan endpoint will change the status of a draw to canceled, and trigger any cancellation-related logic.

An active draw can be canceled if it has no active purchases.

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

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

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

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

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

The draw identifier.

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
required
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"
Responses
204

Success no content

post/people/{personId}/loans/{loanId}/draws/{drawId}/cancel
Request samples
application/json
{
  • "cancellationReason": "technicalIssue"
}

Update draw fees

Allows lenders to add or remove dynamic fees from a draw going forward. This does not affect balances or fees in the past.

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

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

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

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

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

The draw identifier.

Request Body schema: application/json
required
Array
apiName
string

The API name of the dynamic fee. For example: lateFee or breatherFee. If applicable, purchaseFee or foreignTransactionFee apiName must be included, so it is applied to a specific draw. Please confirm configs with the Peach team to ensure purchase fees are correctly configured.

feeAmount
number or null <float>

The fee amount that will be charged recurrently. Only required if the dynamic fee amountLogic is configured as type=passedAtOrigination. In all other cases, the system will calculate the fee based on pre-configured logic.

feeCapAmount
number or null <float>

The maximum amount of the dynamic fee that can be charged over the life of the loan or draw. Only required if the dynamic fee capLogic is configured as type=capPassedAtOrigination. In all other cases, the system will calculate the fee based on pre-configured logic.

Responses
200

Success

put/people/{personId}/loans/{loanId}/draws/{drawId}/dynamic-fees
Request samples
application/json
[
  • {
    }
]
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": [
    ]
}

Request sandbox access