# About Fees

# Overview

Peach supports the following fee types:

**Origination Fees**

Origination fees are amount-only fees assessed at the time of loan approval. These fees can follow one of three charging logics: summed with the first payment, amortized equally across payment periods, or charged and paid separately at time of loan origination without regard to payment schedules.

**Draw Fees**

For lines of credit, draw fees are amount-only fees assessed each time a draw is approved. Like origination fees, draw fees can follow one of three charging logics: summed with the first payment of the draw, amortized equally across the draw's payment periods, or charged and paid separately at time of draw origination without regard to payment schedules.

**Dynamic Fees:**

Dynamic Fees include late fees, Non-Sufficient Funds (NSF) fees, foreign transaction fees, service fees, modification fees and more. Charged throughout the loan lifecycle, these fees are assessed based on account status or triggers. Late fees, for example, trigger based on a loan becoming overdue, whereas modification fees can be programmatically linked to execution of changes to a borrower's payment plan structure such as due date deferral or loan term changes. Every dynamic fee type is associated with a loan type ID, and any loan associated with that loan type can utilize those dynamic fees.

## About Origination and Draw Fees

Origination and Draw fees are set at the loanType level and configured during the onboarding process by the Peach implementation team. These fees are typically charged when a loan is originated or a draw is created.

For origination fees, there are three charging options:

1. **On top of the first payment**: The fee is added to the borrower's first scheduled payment.
2. **Applied equally to each period**: The fee is divided equally and added to each scheduled payment for the duration of the loan.
3. **Charged at origination**: The fee is charged upfront and is not included in any future amortized payments.


## Dynamic Fee Types

Peach supports various dynamic fee types, including:

* Foreign transaction fees
* Late fees
* Loan modification fees
* Purchase fees
* NSF (Non-Sufficient Funds) fees
* Service fees


## Configuring Dynamic Fees

Dynamic fees are configured during the onboarding process by the Peach implementation team. These fees are referenced by their `apiName` when creating each loan. If fee amounts or amount caps are to be set at origination (instead of being calculated automatically), they can be specified during the loan creation call.

During the life of a loan, fees are charged based on the behavior defined in the matching dynamic fee type configuration. This configuration is created using a specific endpoint provided by Peach.

Dynamic fees use three main components to determine their behavior:

1. **chargeLogic**: Determines when a fee should be assessed
2. **amountLogic**: Calculates the amount of the fee
3. **capLogic**: Checks that the fee amount does not exceed annual or lifetime caps


Importantly, caps and amounts can be set on a state-by-state basis to ensure compliance with local regulations.

When creating a dynamic fee, you'll need to specify several parameters:

### Basic Information

* **Display Name**: How the fee appears in the borrower portal's activity feed.
* **API Name**: The camelCase name used to reference the fee in API calls.


### Fee Application

* **Apply to Draw**: For lines of credit, determines if the fee is applied at the draw level, or the line of credit level.
* **Draw Logic**: The draw fee application logic determines how fees are applied across multiple draws in a line of credit. The behavior varies based on the fee type:
  * **Standard Dynamic Fees**: Can be applied to multiple draws and must be configured in `draw.atOrigination.fees.dynamicFees` at draw creation. Applies only to draws with matching `apiName` in their configuration.
  * **NSF Fees**: Assessed on any returned payment regardless of draw association, but can only be charged to a single designated draw specified by `apiName` in `draw.atOrigination.fees.dynamicFees`.
  * **Late Fees**: Assessed based on overall line of credit status but charged to a single designated draw. Will be charged even if the designated draw is current but the line of credit is overdue.


### Charge Logic

* **Charge Frequency**: Determines when the fee is charged (e.g., every loan period, calendar period, or ad hoc).
* **Buffer Days**: Number of days after the `start_date` before the fee is charged.
* **Day Type**: Business or calendar days.
* **Charge When No Outstanding Principal**: Whether to charge the fee if there's no outstanding principal.
* **Charge When Closed**: Specifies whether fees continue to be charged when a Line of Credit (LOC) or Draw is closed.
* **Failure Reasons**: Specific reasons for charging the fee (primarily used for NSF fees).


### Amount Logic

The amount of the fee can be calculated in various ways. Here are the different Amount Logic Types:

table
tr
td
strong
Type
td
strong
Description
td
strong
Example
tr
td
fixed
   
td
The system will charge a fixed amount
   
td
fixedAmount = 2.5

p

$2.50 fee is charged
   
tr
td
percentageOfPrincipal
   
td
The system will charge a percentage of the outstanding principal amount on the effective date of the fee
   
td
percentage = 0.05

p

outstandingPrincipalBalance = 100

p

$5.00 fee is charged
   
tr
td
percentageOfAmountFinanced
   
td
The system will charge a percentage of the amountFinanced
   
td
percentage = 0.1

p

amountFinanced = 100

p

$10.00 fee is charged
   
tr
td
percentageOfTotalOverdueBalance
   
td
The system will charge a percentage of the totalOverdueAmount
   
td
percentage = 0.05

p

totalOverdueAmount = 100

p

$5.00 fee is charged
   
tr
td
percentageOfOverdueBalanceInPeriod
   
td
The system will charge a percentage of the overdue balance from the previous period. The amount used is the remainingAmount from the most recent overdue obligation
   
td
percentage = 0.05

p

totalOverdueAmount = 100

p

obligation.remainingAmount = 50

p

Obligation.isOverdue = true

p

$2.50 fee is charged
   
tr
td
percentageOfOverdueBalanceInPeriodCapped
   
td
The system will charge a percentage of the overdue balance from the previous period like the example above, except with a cap amount for each event
   
td
percentage = 0.20

p

amount = 10

p

obligation.remainingAmount = 100

p

$10 fee is charged as minimum of $10 or 20% of $100 ($20)
   
tr
td
percentageOfOverduePrincipalBalanceCapped
   
td
The system will charge a percentage of the overdue principal balance on the effective date of the fee with a cap amount for each event
   
td
percentage = 0.10

p

amount = 5

p

outstandingPrincipalBalance = 100

p

$5.00 fee is charged
   
tr
td
passedAtOrigination
   
td
The system will charge an amount based on the chargeLogic frequency
   
td
atOrigination.feeAmount = 10

p

$10.00 fee is charged
   
For line of credit products, dynamic fees tied to purchases can use the following Purchase Fee Amount Logic Types:

table
tr
td
strong
Type
td
strong
Description
td
strong
Example
tr
td
percentageOfPurchase
   
td
The system will charge a percentage of the purchase amount
   
td
percentage = 0.10

p

purchaseAmount = 100

p

$10.00 fee is charged
   
tr
td
percentageOfPurchaseAmountCapped
   
td
The system will charge the minimum of a percentage of the purchase amount or a fixedAmount
   
td
percentage = 0.10

p

fixedAmount = 5

p

purchaseAmount = 100

p

$5.00 fee is charged
   
tr
td
percentageOfPurchaseAmountAtLeast
   
td
The system will charge the maximum of a percentage of the purchase amount or a fixedAmount
   
td
percentage = 0.10

p

fixedAmount = 5

p

purchaseAmount = 100

p

$10.00 fee is charged
   
Amounts can also be configured by state or country to comply with local regulations.

### Cap Logic

Caps can be set to limit the total amount of fees charged. Here are the different Cap Logic Types:

table
tr
td
strong
Type
td
strong
Description
tr
td
unlimited
   
td
The system will not cap fees
   
tr
td
annualAmountCap
   
td
The system will cap the amount of annual fees
   
tr
td
annualNumberCap
   
td
The system will cap the number of annual fees. yearStart and yearEnd can repeat the cap annually or limit to a specified number of years
   
tr
td
totalAmountCap
   
td
The system will cap the amount of fees over the lifetime of the loan
   
tr
td
totalAmountCapPassedAtOrigination
   
td
The system will use the feeCapAmount set during the create loan call atOrigination
   
tr
td
totalPercentageOfAmountFinancedCap
   
td
The system will use the percentage from totalAmountCaps and amountFinanced during the create loan call atOrigination to cap total fees over the lifetime of the loan
   
For Line of Credit products, there are additional Cap Logic Types:

table
tr
td
strong
Type
td
strong
Description
tr
td
totalPercentageOfCreditLimitCap
   
td
The system will cap the total fees as a percentage of the credit limit
   
tr
td
annualPercentageOfCreditLimitCap
   
td
The system will cap the annual fees as a percentage of the credit limit
   
Caps can also be configured by state or country to ensure compliance with local regulations.

## Other Considerations

* **NSF Fees**: Can be configured with specific failure reasons to determine when they're charged.
* **Foreign Transaction Fees**: Applied based on the country code of the purchase.
* **Custom Functions**: For complex fee calculations, custom functions can be created and referenced in the fee configuration.
* **State-Specific Configurations**: Fees and caps can be configured differently for each state to comply with local regulations.


## See also

- **[Configuring Fees](/loan-lifecycle/fees/configuring-fees)** — Step-by-step guide to setting up fee structures via the API.
- **[Loan Lifecycle overview](/loan-lifecycle)** — Index of the full loan lifecycle from origination through closeout.