- Print
- PDF
Promotion Codes allow you to offer discounts to consumers associated with payments and/or settlements. These can be configured manually or uploaded via ETL, and can be redeemed by an agent.
How Promotion Codes Work
Promotion codes are associated with a bundle.
Discounts can be either a fixed dollar amount or a percentage.
Promotion codes can be applied as a settlement and/or as an immediate discount.
A promotion code is available until its expiration date.
The expiration date for an unredeemed promotion code can be modified.
Agents redeem promotion codes when posting transactions or setting up payment plans.
Tracking and reporting of promotion code usage is available through SQL.
Setting Up Promotion Codes Manually
Before You Begin:
Ensure your user role includes the “Manage - Promotion Codes” permission.
Access Promotion Codes
From the Account Sidebar, click Promotion Codes, click New.
Option A: Creating Settlement Promotion Codes
The Settlement checkbox is checked by default.
Enter:
Code
Discount Percent or Discount Amount (only one)
Expiration Date
Save the promo code.

Image Displays Settlement Promotion Code Fields
Note: A Settlement promo code applies to the total owed balance.
Option B: Creating Non-Settlement Promotion Codes
Uncheck the Settlement checkbox.
Enter:
Code
Discount Percent or Discount Amount (only one)
Bucket (Principal, Fee, or Interest)
Expiration Date
Save the promo code.
.png?sv=2022-11-02&spr=https&st=2025-06-09T13%3A16%3A41Z&se=2025-06-09T13%3A26%3A41Z&sr=c&sp=r&sig=Yx6jQq6GsnVmeFpZeI9JqakB%2FiAN%2BymIhCHfKTR82Qw%3D)
Image Displays Non-Settlement Promotion Code Fields
Note: A Non-Settlement promo code applies only to the selected bucket.
Uploading Promotion Codes via ETL Profile
To upload promotion codes in ACE, you'll first need to prepare your import file, then create an ETL Profile using the “BUNDLE_PROMO_CODES load method to upload it. Refer to the Bundle Promo Codes ETL Layout document for details.
Step 1: Prepare Your File Using SQL Designer
Use the SQL Designer to export only the necessary column headers. This helps ensure your file includes the required fields based on how you're configuring your promo codes. Refer to the Example SQL Queries section of this article for more information.
Step 2: Load the File
Go to Accounts → ETL Import → Profiles → New.
Upload the file to configure the ETL Profile and map the fields.
Choose the following load method:
BUNDLE_PROMO_CODES
Test the profile with or without a job to verify it loads data as expected.
Save the profile for future use.
Viewing a Bundle’s Promotion Codes
Click Promotion Codes from the account sidebar.
View a list of promotion codes for the bundle.

Image Displays Viewing Example Promotion Codes at the Bundle Level
Redeeming Promotion Codes
Before You Begin:
Ensure your user’s permission roles include the “PAYMENT_SETTLE” permission.
Important:
Always redeem the promotion code before posting a payment or continuing to configure a payment plan to achieve the expected results.
1. Post a Payment
Option A: Redeem a Settlement Promotion Code
Use this method if the promotion code is set up as a Settlement (Settlement = True).
Open the account.
Click Post Transaction in the left sidebar.
Complete the Payment Information section:
Enter required credentials and contact details.
Select accounts to apply the payment to.
In the Promotion Code section:
Select the Settlement Promotion Code.
Click Redeem.
The payment amount adjusts for the discount.
Scroll down and verify transactions are spreading correctly.
Click Apply.
What Happens:
The Payment Amount automatically adjusts for the settlement discount.
The discount is applied at the time of posting, resulting in a $0 balance on the selected accounts.

Image Displays Redeem Button for Promotion Code
Option B: Redeem a Non-Settlement Promo Code
Use this method if the promotion code is set up as Non-Settlement (Settlement = False).
Open the account.
Click Post Transaction in the left sidebar.
In the Promotion Code section:
Select the Non-Settlement Promotion Code.
Click Redeem.
Enter the agreed upon payment amount that qualifies the consumer for the promotion.
Scroll down and verify transactions are spreading correctly.
Click Apply.
What Happens:
The discount is automatically posted to the account before the payment is entered and applied.

Image Displays Message for Non-Settlement Promotion Code Once Redeemed (Step 3b)
2. Set Up a Payment Plan
Option A: Redeem a Settlement Promotion Code
Use this method if the promotion code is set up as a Settlement (Settlement = True).
Open the account.
Click Setup Payment Plan in the left sidebar.
In the Promotion Code section:
Select the Settlement Promotion Code.
Click Redeem.
Complete the payment plan details.
Validate the payment plan total and schedule.
Click Apply.
What Happens:
The Payment Plan Total and Settle Amount auto-adjust to reflect the discount.
The discount is applied after the plan is completed.
Option B: Redeem a Non-Settlement Promotion Code
Use this method if the promotion code is set up as Non-Settlement (Settlement = False).
Open the account.
Click Setup Payment Plan in the left sidebar.
In the Promotion Code section:
Select the Non-Settlement Promotion Code.
Click Redeem.
Fill in the payment plan as agreed upon with the consumer.
Validate the payment plan total and schedule.
Click Apply.
What Happens:
The discount is automatically posted to the account when the plan plan is created.
The plan total is not adjusted; the agent must enter the agreed upon plan terms.
Example SQL Queries
The following eight example SQL queries are provided for reference only, to be used in order to quickly export the column headers you may choose to use before building your ETL file.
Example: Amount by Bucket via Debt ID

Image Displays Column Header for Amount by Bucket Debt ID
SELECT
debt.debt_id,
bundle_promo_code.code,
bundle_promo_code.discount_amount,
bundle_promo_code.expiration,
bundle_promo_code.bucket
FROM debt
LEFT OUTER JOIN bundle_promo_code ON bundle_promo_code.bundle_id = debt.bundle_id
WHERE bundle_promo_code.discount_amount <> 0
ORDER BY debt.last_update DESC
LIMIT 1;
Example: Amount by Bucket via Bundle ID

Image Displays Amount by Bucket via Bundle ID
SELECT
debt.bundle_id,
bundle_promo_code.code,
bundle_promo_code.discount_amount,
bundle_promo_code.expiration,
bundle_promo_code.bucket
FROM debt
LEFT OUTER JOIN bundle_promo_code ON bundle_promo_code.bundle_id = debt.bundle_id
WHERE bundle_promo_code.discount_amount <> 0
ORDER BY debt.last_update DESC
LIMIT 1;
Example: Amount for Settlement via Bundle ID

Image Displays Amount for Settlement via Bundle ID
SELECT
debt.bundle_id,
bundle_promo_code.code,
bundle_promo_code.discount_amount,
bundle_promo_code.expiration,
bundle_promo_code.settlement
FROM debt
LEFT OUTER JOIN bundle_promo_code ON bundle_promo_code.bundle_id = debt.bundle_id
WHERE bundle_promo_code.discount_amount <> 0
AND bundle_promo_code.settlement = 't'
ORDER BY debt.last_update DESC
LIMIT 1;
Example: Amount for Settlement via Debt ID

Image Displays Amount for Settlement via Debt ID
SELECT
debt.debt_id,
bundle_promo_code.code,
bundle_promo_code.discount_amount,
bundle_promo_code.expiration,
bundle_promo_code.settlement
FROM debt
LEFT OUTER JOIN bundle_promo_code ON bundle_promo_code.bundle_id = debt.bundle_id
WHERE bundle_promo_code.discount_amount <> 0
AND bundle_promo_code.settlement = 't'
ORDER BY debt.last_update DESC
LIMIT 1;
Example: Percent by Bucket via Debt ID

Image Displays Percent by Bucket via Debt ID
SELECT
debt.debt_id,
bundle_promo_code.code,
bundle_promo_code.discount_percent,
bundle_promo_code.expiration,
bundle_promo_code.bucket
FROM debt
LEFT OUTER JOIN bundle_promo_code ON bundle_promo_code.bundle_id = debt.bundle_id
WHERE bundle_promo_code.discount_percent <> 0
ORDER BY debt.last_update DESC
LIMIT 1;
Example: Percent by Bucket via Bundle ID

Image Displays Percent by Bucket via Bundle ID
SELECT
debt.bundle_id,
bundle_promo_code.code,
bundle_promo_code.discount_percent,
bundle_promo_code.expiration,
bundle_promo_code.bucket
FROM debt
LEFT OUTER JOIN bundle_promo_code ON bundle_promo_code.bundle_id = debt.bundle_id
WHERE bundle_promo_code.discount_percent <> 0
ORDER BY debt.last_update DESC
LIMIT 1;
Example: Percent for Settlement via Debt ID

Image Displays Percent for Settlement via Debt ID
SELECT
debt.debt_id,
bundle_promo_code.code,
bundle_promo_code.discount_percent,
bundle_promo_code.expiration,
bundle_promo_code.settlement
FROM debt
LEFT OUTER JOIN bundle_promo_code ON bundle_promo_code.bundle_id = debt.bundle_id
WHERE bundle_promo_code.discount_percent <> 0
AND bundle_promo_code.settlement = 't'
ORDER BY debt.last_update DESC
LIMIT 1;
Example: Percent for Settlement via Bundle ID

Image Displays Percent for Settlement via Bundle ID
SELECT
debt.bundle_id,
bundle_promo_code.code,
bundle_promo_code.discount_percent,
bundle_promo_code.expiration,
bundle_promo_code.settlement
FROM debt
LEFT OUTER JOIN bundle_promo_code ON bundle_promo_code.bundle_id = debt.bundle_id
WHERE bundle_promo_code.discount_percent <> 0
AND bundle_promo_code.settlement = 't'
ORDER BY debt.last_update DESC
LIMIT 1;
Reporting Promotion Code
Here is a basic SQL example that may be used to report some account and promotion code fields.
Please note: this example limits the number of rows returned.
SELECT
debt.debt_id,
debt.customer_client_code,
debt.principal_owing,
debt.fee_owing,
debt.interest_owing,
debt.bundle_id,
bundle_promo_code.*
FROM debt
LEFT OUTER JOIN bundle_promo_code ON bundle_promo_code.bundle_id = debt.bundle_id
ORDER BY debt.last_update DESC
LIMIT 1000;