Promo Programs

Create promo program

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

The promotional program type's unique identifier.

externalId
string

A lender's unique identifier for a specific promotional program.

status
required
string

The promotional program status.

pending - the promotion was created but was not activated yet.

active - the promotion is active.

For promo program creation, installment loans can be created in either pending or active status.

For line of credit / draws, a promo program can only be created in pending status and transitioned to active status via the promo program activate endpoint.

Promo programs for lines of credit / draws are associated with a feature that is currently under development. Please contact Peach team for more information on the release timeline.
Enum: "pending" "active"
promoStartDate
string <date> (PromoStartDate)

The promoStartDate date marks the start date from which a promotional program is valid and will be evaluated to be exercised. When a promo program is created with promoDurationDays specified, the promoStartDate is also used to calculate the promoEndDate

For installment loans:

  • The promoStartDate can be a date in the future but not after the loan's last due date. The promotion is valid and evaluated after it has been activated and the promoStartDate arrived.
  • The promoStartDate can be a date in the past but not before the loan's activation date.
  • The promoStartDate is optional. If the value is not passed, the system will set the promoStartDate to the loan activation date.
  • For Same as Cash promo programs, the waiving of interest benefit will be added from the loan activation date for the entire life of the loan for installment loans, regardless of the promoStartDate.

For Line of Credit draws:

  • The promoStartDate can be a date in the future. The promotion is valid and evaluated after it has been activated and the promoStartDate arrived.
  • The promoStartDate cannot be a date in the past.

If a value is not passed, the system will set the promoStartDate to be the date of the activation.

This date value should be in the product timezone.

promoEndDate
string <date> (PromoEndDate)

The promotional program end-date without a potential grace period. If promoEndDate is passed, the system will calculate the promoDurationDays. Pass only one of the attributes, promoEndDate or promoDurationDays.

This date field should be in the product timezone.

promoDurationDays
integer

The promotional program duration as a number of calendar days. If promoDurationDays is passed, the system will calculate the promoEndDate. Pass only one of the attributes, promoEndDate or promoDurationDays.

promoGracePeriodDays
integer (PromoGracePeriodDays)

The promotional program grace period as a number of calendar days. Grace period allows the borrower to exercise the promotional program for an additional number of days after it expires.

If you don't pass a value, the system will assume zero (aka no grace period).

disqualifyOverdueDays
integer

The number of loan overdue days that would disqualify the promotional program. Any occurrence of disqualifyOverdueDays or more of number days overdue during the promotional period would disqualify (aka cancel) the promotional program.

metaData
object or null

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

caseId
string

An identifier for an existing case.

Responses
200

Success

post/people/{personId}/loans/{loanId}/promo-programs
Request samples
application/json
{
  • "promoTypeId": "string",
  • "externalId": "string",
  • "status": "pending",
  • "promoStartDate": "2019-08-24",
  • "promoEndDate": "2019-08-24",
  • "promoDurationDays": 0,
  • "promoGracePeriodDays": 0,
  • "disqualifyOverdueDays": 0,
  • "metaData": { },
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Get promo programs

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

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

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

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

Responses
200

Success

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

Get promo program 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.

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

The promotional program identifier.

Responses
200

Success

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

Update promo program

There a few restrictions on what can be updated. promoTypeId cannot be updated. If status=pending - any attribute except for status can be updated. To activate use the Activate promo program endpoint. If status=active - promoType, status, promoDurationDays and promoStartDate cannot be updated. If status=canceled - promoType, promoDurationDays and promoStartDate cannot be updated. If status=exercised - no attributes can be updated.

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.

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

The promotional program identifier.

Request Body schema: application/json
required
externalId
string

A lender's unique identifier for a specific promotional program.

promoStartDate
string <date> (PromoStartDate)

The promoStartDate date marks the start date from which a promotional program is valid and will be evaluated to be exercised. When a promo program is created with promoDurationDays specified, the promoStartDate is also used to calculate the promoEndDate

For installment loans:

  • The promoStartDate can be a date in the future but not after the loan's last due date. The promotion is valid and evaluated after it has been activated and the promoStartDate arrived.
  • The promoStartDate can be a date in the past but not before the loan's activation date.
  • The promoStartDate is optional. If the value is not passed, the system will set the promoStartDate to the loan activation date.
  • For Same as Cash promo programs, the waiving of interest benefit will be added from the loan activation date for the entire life of the loan for installment loans, regardless of the promoStartDate.

For Line of Credit draws:

  • The promoStartDate can be a date in the future. The promotion is valid and evaluated after it has been activated and the promoStartDate arrived.
  • The promoStartDate cannot be a date in the past.

If a value is not passed, the system will set the promoStartDate to be the date of the activation.

This date value should be in the product timezone.

promoEndDate
string <date> (PromoEndDate)

The promotional program end-date without a potential grace period. If promoEndDate is passed, the system will calculate the promoDurationDays. Pass only one of the attributes, promoEndDate or promoDurationDays.

This date field should be in the product timezone.

promoDurationDays
integer

The promotional program duration as a number of calendar days. If promoDurationDays is passed, the system will calculate the promoEndDate. Pass only one of the attributes, promoEndDate or promoDurationDays.

promoGracePeriodDays
integer (PromoGracePeriodDays)

The promotional program grace period as a number of calendar days. Grace period allows the borrower to exercise the promotional program for an additional number of days after it expires.

If you don't pass a value, the system will assume zero (aka no grace period).

disqualifyOverdueDays
integer

The number of loan overdue days that would disqualify the promotional program. Any occurrence of disqualifyOverdueDays or more during the promotional period would disqualify (aka cancel) the promotional program.

metaData
object or null

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

caseId
string

An identifier for an existing case.

status
string

The promotional program status on a specific loan.

pending - the promotion was created but was not activated yet.

active - the promotion is active.

canceled - the promotion has been canceled for a reason. The reason provided in the promoCancelReason attribute.

exercised - the promotion was successfully exercised.

Enum: "pending" "active" "canceled" "exercised"
Responses
200

Success

put/people/{personId}/loans/{loanId}/promo-programs/{promoProgramId}
Request samples
application/json
{
  • "externalId": "string",
  • "promoStartDate": "2019-08-24",
  • "promoEndDate": "2019-08-24",
  • "promoDurationDays": 0,
  • "promoGracePeriodDays": 0,
  • "disqualifyOverdueDays": 0,
  • "metaData": { },
  • "caseId": "string",
  • "status": "pending"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Cancel promo program

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.

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

The promotional program identifier.

query Parameters
promoCancelReason
string (PromoCancelReason)

The cancellation reason.

expired - the promo expired.

disqualified - the promo was disqualified for various reasons.

borrowerOptedOut - the borrower decided to opt out from the promotional program.

adminError - the promo program was added by mistake.

Enum: "adminError" "expired" "disqualified" "borrowerOptedOut"
sendNotice
boolean
Default: true

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

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

The case object unique identifier.

Responses
200

Success

delete/people/{personId}/loans/{loanId}/promo-programs/{promoProgramId}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Create promo program for 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.

Request Body schema: application/json
required
promoTypeId
required
string

The promotional program type's unique identifier.

externalId
string

A lender's unique identifier for a specific promotional program.

status
required
string

The promotional program status.

pending - the promotion was created but was not activated yet.

active - the promotion is active.

For promo program creation, installment loans can be created in either pending or active status.

For line of credit / draws, a promo program can only be created in pending status and transitioned to active status via the promo program activate endpoint.

Promo programs for lines of credit / draws are associated with a feature that is currently under development. Please contact Peach team for more information on the release timeline.
Enum: "pending" "active"
promoStartDate
string <date> (PromoStartDate)

The promoStartDate date marks the start date from which a promotional program is valid and will be evaluated to be exercised. When a promo program is created with promoDurationDays specified, the promoStartDate is also used to calculate the promoEndDate

For installment loans:

  • The promoStartDate can be a date in the future but not after the loan's last due date. The promotion is valid and evaluated after it has been activated and the promoStartDate arrived.
  • The promoStartDate can be a date in the past but not before the loan's activation date.
  • The promoStartDate is optional. If the value is not passed, the system will set the promoStartDate to the loan activation date.
  • For Same as Cash promo programs, the waiving of interest benefit will be added from the loan activation date for the entire life of the loan for installment loans, regardless of the promoStartDate.

For Line of Credit draws:

  • The promoStartDate can be a date in the future. The promotion is valid and evaluated after it has been activated and the promoStartDate arrived.
  • The promoStartDate cannot be a date in the past.

If a value is not passed, the system will set the promoStartDate to be the date of the activation.

This date value should be in the product timezone.

promoEndDate
string <date> (PromoEndDate)

The promotional program end-date without a potential grace period. If promoEndDate is passed, the system will calculate the promoDurationDays. Pass only one of the attributes, promoEndDate or promoDurationDays.

This date field should be in the product timezone.

promoDurationDays
integer

The promotional program duration as a number of calendar days. If promoDurationDays is passed, the system will calculate the promoEndDate. Pass only one of the attributes, promoEndDate or promoDurationDays.

promoGracePeriodDays
integer (PromoGracePeriodDays)

The promotional program grace period as a number of calendar days. Grace period allows the borrower to exercise the promotional program for an additional number of days after it expires.

If you don't pass a value, the system will assume zero (aka no grace period).

disqualifyOverdueDays
integer

The number of loan overdue days that would disqualify the promotional program. Any occurrence of disqualifyOverdueDays or more of number days overdue during the promotional period would disqualify (aka cancel) the promotional program.

metaData
object or null

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

caseId
string

An identifier for an existing case.

Responses
200

Success

post/people/{personId}/loans/{loanId}/draws/{drawId}/promo-programs
Request samples
application/json
{
  • "promoTypeId": "string",
  • "externalId": "string",
  • "status": "pending",
  • "promoStartDate": "2019-08-24",
  • "promoEndDate": "2019-08-24",
  • "promoDurationDays": 0,
  • "promoGracePeriodDays": 0,
  • "disqualifyOverdueDays": 0,
  • "metaData": { },
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Get promo program for 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.

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

The promotional program identifier.

Responses
200

Success

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

Update promo program for draw

There a few restrictions on what can be updated. promoTypeId cannot be updated. If status=pending - any attribute except for status can be updated. To activate use the Activate promo program endpoint. If status=active - promoType, status, promoDurationDays and promoStartDate cannot be updated. If status=canceled - promoType, promoDurationDays and promoStartDate cannot be updated. If status=exercised - no attributes can be updated.

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.

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

The promotional program identifier.

Request Body schema: application/json
required
externalId
string

A lender's unique identifier for a specific promotional program.

promoStartDate
string <date> (PromoStartDate)

The promoStartDate date marks the start date from which a promotional program is valid and will be evaluated to be exercised. When a promo program is created with promoDurationDays specified, the promoStartDate is also used to calculate the promoEndDate

For installment loans:

  • The promoStartDate can be a date in the future but not after the loan's last due date. The promotion is valid and evaluated after it has been activated and the promoStartDate arrived.
  • The promoStartDate can be a date in the past but not before the loan's activation date.
  • The promoStartDate is optional. If the value is not passed, the system will set the promoStartDate to the loan activation date.
  • For Same as Cash promo programs, the waiving of interest benefit will be added from the loan activation date for the entire life of the loan for installment loans, regardless of the promoStartDate.

For Line of Credit draws:

  • The promoStartDate can be a date in the future. The promotion is valid and evaluated after it has been activated and the promoStartDate arrived.
  • The promoStartDate cannot be a date in the past.

If a value is not passed, the system will set the promoStartDate to be the date of the activation.

This date value should be in the product timezone.

promoEndDate
string <date> (PromoEndDate)

The promotional program end-date without a potential grace period. If promoEndDate is passed, the system will calculate the promoDurationDays. Pass only one of the attributes, promoEndDate or promoDurationDays.

This date field should be in the product timezone.

promoDurationDays
integer

The promotional program duration as a number of calendar days. If promoDurationDays is passed, the system will calculate the promoEndDate. Pass only one of the attributes, promoEndDate or promoDurationDays.

promoGracePeriodDays
integer (PromoGracePeriodDays)

The promotional program grace period as a number of calendar days. Grace period allows the borrower to exercise the promotional program for an additional number of days after it expires.

If you don't pass a value, the system will assume zero (aka no grace period).

disqualifyOverdueDays
integer

The number of loan overdue days that would disqualify the promotional program. Any occurrence of disqualifyOverdueDays or more during the promotional period would disqualify (aka cancel) the promotional program.

metaData
object or null

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

caseId
string

An identifier for an existing case.

Responses
200

Success

put/people/{personId}/loans/{loanId}/draws/{drawId}/promo-programs/{promoProgramId}
Request samples
application/json
{
  • "externalId": "string",
  • "promoStartDate": "2019-08-24",
  • "promoEndDate": "2019-08-24",
  • "promoDurationDays": 0,
  • "promoGracePeriodDays": 0,
  • "disqualifyOverdueDays": 0,
  • "metaData": { },
  • "caseId": "string"
}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Cancel promo program for 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.

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

The promotional program identifier.

query Parameters
promoCancelReason
string (PromoCancelReason)

The cancellation reason.

expired - the promo expired.

disqualified - the promo was disqualified for various reasons.

borrowerOptedOut - the borrower decided to opt out from the promotional program.

adminError - the promo program was added by mistake.

Enum: "adminError" "expired" "disqualified" "borrowerOptedOut"
sendNotice
boolean
Default: true

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

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

The case object unique identifier.

Responses
200

Success

delete/people/{personId}/loans/{loanId}/draws/{drawId}/promo-programs/{promoProgramId}
Response samples
application/json
{
  • "status": 0,
  • "message": "string",
  • "data": {
    }
}

Activate promo program

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.

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

The promotional program identifier.

Responses
204

Success

post/people/{personId}/loans/{loanId}/promo-programs/{promoProgramId}/activate

Activate promo program for 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.

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

The promotional program identifier.

Responses
204

Success

post/people/{personId}/loans/{loanId}/draws/{drawId}/promo-programs/{promoProgramId}/activate

Request sandbox access