# Settlement Offers
Settlement offers allow customers to pay off their debt at a discount. You can accept the settlement offer of a Debt Account or a custom settlement offer for Customer. To let Customer accept a settlement offer in the Portal, use Create Settlement Offer Request.
Settlement offers for a child Debt Account are accepted for its Parent Debt Account. See Debt Account Nesting.
# Settlement Offer
If a settlement offer matches a Debt Account, it is returned as settlement_offer in Get Debt Account and Debt Account Lookup. It is not returned in List Debt Accounts.
{
"id": "58b3b585-ebf4-4b44-9c1d-591fd5cd9965",
"name": "Settlement Offer",
"status": "active",
"description": null,
"base_on": "current_balance",
"base_on_unit_type": "cents",
"matching_discount": {
"id": "a8c7766f-382a-4467-b0e8-c4ae1c676110",
"from_current_balance": null,
"to_current_balance": null,
"discount_percentage": "20.00",
"months_period": 2,
"periods": [
{
"id": "0c5854d0-d772-4dd3-95ba-e79d54efdb48",
"discount_percentage": "20.00",
"months_period": 1,
"created_at": "2026-11-09 17:59:56",
"updated_at": "2026-11-09 17:59:56"
},
{
"id": "dc335ceb-cb81-4178-9818-0906454e98f8",
"discount_percentage": "19.00",
"months_period": 2,
"created_at": "2026-11-09 17:59:56",
"updated_at": "2026-11-09 17:59:56"
}
],
"created_at": "2026-11-09 17:59:56",
"updated_at": "2026-11-09 17:59:56"
},
"settlement_offer_start_date": null,
"settlement_offer_end_date": null,
"created_at": "2026-11-09T17:59:56.000000Z",
"updated_at": "2026-11-09T17:59:56.000000Z"
}
matching_discount
Discount that matches the Debt Account. Each of its periods can be accepted with Accept Settlement Offer. A period with months_period 1 is paid in a single payment, a longer period in a Payment Plan. discount_percentage is the discount of the balance in base_on in percent.
base_on
Balance the discount is calculated from. base_on holds one of two things:
- The text
current_balance. The discount is calculated from Debt Account'scurrent_balance. - The name of a Debt Account metadata field. The discount is calculated from the value of that field, in
base_on_unit_type(centsordollars). If Debt Account does not have that field,current_balanceis used.
For example, a 20% discount based on a metadata field of 8000 cents settles a Debt Account with current_balance 10000 for 6400 cents. The accepted settlement offer then has discount_percentage 36.00, the discount of current_balance in percent.
settlement_offer is not returned if Debt Account status is not active or Debt Account already has an accepted settlement offer.
# Accept Settlement Offer
You can accept a period of the settlement offer that matches a Debt Account. If start_date is today, Customer is charged immediately. Otherwise a charge is scheduled, or a Payment Plan if months_period of the period is more than 1.
POST https://<org-uuid>.production.tratta.io/api/v1/debt-accounts/{id|external_id}/settlement-offers
curl https://<org-uuid>.production.tratta.io/api/v1/debt-accounts/{id|external_id}/settlement-offers \
-H "Authorization: Bearer eyJ0eXA3asdk..." \
-d settlement_offer_discount_period_id="dc335ceb-cb81-4178-9818-0906454e98f8" \
-d start_date="2026-12-01" \
-d frequency="monthly" \
-d email="example@example.com" \
-d card[card_holder]="Card Holder" \
-d card[card_number]="4242424242424242" \
-d card[card_expiration_month]="12" \
-d card[card_expiration_year]="27" \
-d card[card_security_code]="123"
# Parameters
settlement_offer_discount_period_id required|exists
Specifies the id of a period in matching_discount of the Settlement Offer.
start_date required|date
Date of the first payment. The value must be a date with Y-m-d format. A single payment can start today, a payment plan at least 1 day after today. It must be at least the number of days defined in the min_days_until_start_date rule after today. It must be within the number of days defined in the settlement_offer_max_days_until_start_date rule, or within the month if the settlement_offer_schedulable_by_end_of_month rule is enabled.
frequency required if months_period is more than 1|string
Specifies the periodicity of payments.
Supported frequencies:
weeklyevery_other_weekmonthlylast_of_month
email required if save_email is true|email
Email address where the confirmation of the payment is sent.
save_email optional|boolean
Specifies whether to save email as Customer's email. Default is false. If it is true, email is required.
payment_method_id required without card/ach|exists
Specifies the UUID of the existing payment method.
card json object with parameters
- card_holder
required without payment_method_id/ach - card_number
required without payment_method_id/ach|valid card number - card_expiration_month
required without payment_method_id/ach|numeric|between:1,12 - card_expiration_year
required without payment_method_id/ach|last 2 digits of a year - card_security_code
optional - card_postal_code
optional|5 digits
ach json object with parameters
account_holder
required without payment_method_id/cardaccount_type
required without payment_method_id/card|in:checking, savingsChecking or Savings account type.
ownership_type
required without payment_method_id/card|in:personal, businessSpecifies the ownership type of the account.
If
businessis selected, the SEC code will be set toCCD. Otherwise,WEBwill be used.routing_number
required without payment_method_id/card|valid routing numberaccount_number
required without payment_method_id/card|min:4|max:17account_zip
required without payment_method_id/card|5 digitsSpecifies the Postal code of the account.
account_state
required without payment_method_id/card
remember_payment_method optional|boolean
Specifies whether to save card or ach as Customer's payment method. Default is false.
billing_address_id optional|exists
Specifies the UUID of the billing address.
billing_address json object with parameters
- name
optional|string - city
optional|string - state
optional|string - postal_code
required with billing address object|5 digits - country
optional|string - line1
optional|string - line2
optional|string - is_primary
optional|boolean
# Other validations
- The period must belong to the settlement offer that matches Debt Account.
- Debt Account
statusmust be active. - Debt Account cannot have an accepted settlement offer.
- Debt Account must have a payment gateway.
- Debt Account cannot have Payment Plan with
statusactive, unless Organization allows to replace it with a settlement offer. The Payment Plan is then canceled. - Card network and card type must be allowed by Organization's Rules.
- Bank account cannot be blocked, and Customer cannot be blocked from ACH payments.
- If a matched fee applies,
billing_address_idorbilling_addresswithstateandpostal_codeis required.
# Returns
A json with data property that contains created accepted settlement offer object.
If the payment fails, an error is returned and the settlement offer is not accepted.
immediate charge
When start_date is today. charges contains the Charge.
{
"settlement_offer": {
"id": "58b3b585-ebf4-4b44-9c1d-591fd5cd9965",
"name": "Settlement Offer",
"status": "active",
"description": null,
"base_on": "current_balance",
"base_on_unit_type": "cents",
"created_at": "2026-11-09T17:59:56.000000Z",
"updated_at": "2026-11-09T17:59:56.000000Z"
},
"charges": [
{
"id": "437bd92a-4a82-457e-95ae-58b4540dce2c",
"reference_number": 123456,
"payment_method_type": "card",
"amount": 80000,
"total_amount": 80000,
"payment_date": "11/09/2026",
"success": true,
"source": "API",
"source_name": "1",
"created_at": "2026-11-09 17:59:56",
"updated_at": "2026-11-09 17:59:56"
}
],
"scheduled_charge": null,
"payment_plan": null,
"has_payment_plan": false,
"name": "Settlement Offer",
"discount_percentage": "20.00",
"discount": 20000,
"months_period": 1,
"amount": 100000,
"discounted_amount": 80000,
"total_amount": 80000,
"status": "completed",
"created_at": "2026-11-09 17:59:56",
"updated_at": "2026-11-09 17:59:56"
}
payment plan
When months_period is more than 1. payment_plan contains the created Payment Plan.
{
"settlement_offer": {
"id": "58b3b585-ebf4-4b44-9c1d-591fd5cd9965",
"name": "Settlement Offer",
"status": "active",
"description": null,
"base_on": "current_balance",
"base_on_unit_type": "cents",
"created_at": "2026-11-09T17:59:56.000000Z",
"updated_at": "2026-11-09T17:59:56.000000Z"
},
"charges": [],
"scheduled_charge": null,
"payment_plan": {
"id": "41429b3b-2ad7-46f0-9248-358187ceab78",
"plan_type": "standard",
"checkout_type": "Settlement Payment Plan",
"frequency": "monthly",
"start_date": "2026-11-12",
"end_date": "2026-12-12",
"amount": 40500,
"status": "active",
"charges": [
{
"id": "7c123d9b-ef1d-4e79-8c41-48b70dc8ecbd",
"charge_date": "2026-11-12",
"amount": 40500,
"status": "pending",
"scheduled": true
},
{
"id": "122bea92-fecc-4928-a402-296a4885f428",
"charge_date": "2026-12-12",
"amount": 40500,
"status": "pending",
"scheduled": true
}
]
},
"has_payment_plan": true,
"name": "Settlement Offer",
"discount_percentage": "19.00",
"discount": 19000,
"months_period": 2,
"amount": 100000,
"discounted_amount": 81000,
"total_amount": 81000,
"status": "active",
"created_at": "2026-11-09 17:59:56",
"updated_at": "2026-11-09 17:59:56"
}
# Accept Custom Settlement Offer
You can accept a custom settlement offer for a Debt Account. The custom settlement offer is created for this Debt Account only. If start_date is today, Customer is charged immediately. Otherwise a charge is scheduled, or a Payment Plan if is_payment_plan is true.
POST https://<org-uuid>.production.tratta.io/api/v1/debt-accounts/{id|external_id}/settlement-offers/custom
curl https://<org-uuid>.production.tratta.io/api/v1/debt-accounts/{id|external_id}/settlement-offers/custom \
-H "Authorization: Bearer eyJ0eXA3asdk..." \
-d discounted_amount=75000 \
-d start_date="2026-12-01" \
-d email="example@example.com" \
-d payment_method_id="83099bb0-e4e0-42f8-989b-3e2711ab2dcd"
# Parameters
discount_percentage required without discounted_amount|numeric
Discount of Debt Account's current_balance in percent. It must be between Organization's custom_settlement_min_discount_percentage and custom_settlement_max_discount_percentage Rules. It cannot be sent together with discounted_amount.
discounted_amount required without discount_percentage|number:cents
Amount the Customer pays to settle the Debt Account. The discount must be between Organization's custom_settlement_min_discount_percentage and custom_settlement_max_discount_percentage Rules. It cannot be sent together with discount_percentage.
start_date required|date|after_or_equal:today
Date of the first payment. The value must be a date with Y-m-d format. A single payment can start today, a payment plan at least 1 day after today. It must be at least the number of days defined in the min_days_until_start_date rule after today.
is_payment_plan optional|boolean
Specifies whether the Customer pays the custom settlement offer in a payment plan. Default is false.
frequency required if is_payment_plan is true|string
Specifies the periodicity of payments.
Supported frequencies:
weeklyevery_other_weekmonthlylast_of_month
amount required if is_payment_plan is true|number:cents
The amount of single payment plan payment.
email required if save_email is true|email
Email address where the confirmation of the payment is sent.
save_email optional|boolean
Specifies whether to save email as Customer's email. Default is false. If it is true, email is required.
payment_method_id required without card/ach|exists
Specifies the UUID of the existing payment method.
card json object with parameters
- card_holder
required without payment_method_id/ach - card_number
required without payment_method_id/ach|valid card number - card_expiration_month
required without payment_method_id/ach|numeric|between:1,12 - card_expiration_year
required without payment_method_id/ach|last 2 digits of a year - card_security_code
optional - card_postal_code
optional|5 digits
ach json object with parameters
account_holder
required without payment_method_id/cardaccount_type
required without payment_method_id/card|in:checking, savingsChecking or Savings account type.
ownership_type
required without payment_method_id/card|in:personal, businessSpecifies the ownership type of the account.
If
businessis selected, the SEC code will be set toCCD. Otherwise,WEBwill be used.routing_number
required without payment_method_id/card|valid routing numberaccount_number
required without payment_method_id/card|min:4|max:17account_zip
required without payment_method_id/card|5 digitsSpecifies the Postal code of the account.
account_state
required without payment_method_id/card
remember_payment_method optional|boolean
Specifies whether to save card or ach as Customer's payment method. Default is false.
billing_address_id optional|exists
Specifies the UUID of the billing address.
billing_address json object with parameters
- name
optional|string - city
optional|string - state
optional|string - postal_code
required with billing address object|5 digits - country
optional|string - line1
optional|string - line2
optional|string - is_primary
optional|boolean
# Other validations
- Organization's
custom_settlement_enabledRule must be on. - If
is_payment_planistrue, the payment plan must have more than one payment, and its duration cannot be longer than Organization'scustom_settlement_max_length_in_monthsRule.
- Debt Account
statusmust be active. - Debt Account cannot have an accepted settlement offer.
- Debt Account must have a payment gateway.
- Debt Account cannot have Payment Plan with
statusactive, unless Organization allows to replace it with a settlement offer. The Payment Plan is then canceled. - Card network and card type must be allowed by Organization's Rules.
- Bank account cannot be blocked, and Customer cannot be blocked from ACH payments.
- If a matched fee applies,
billing_address_idorbilling_addresswithstateandpostal_codeis required.
# Returns
A json with data property that contains created accepted settlement offer object.
If the payment fails, an error is returned and the settlement offer is not accepted.
scheduled charge
When start_date is after today. scheduled_charge contains the scheduled charge.
{
"settlement_offer": {
"id": "1ed45d26-04ab-456e-9865-d7f98ab6e418",
"name": "Custom settlement offer for debt account: 123456",
"status": "disabled",
"description": null,
"base_on": "current_balance",
"base_on_unit_type": "cents",
"created_at": "2026-11-09T17:59:56.000000Z",
"updated_at": "2026-11-09T17:59:56.000000Z"
},
"charges": [],
"scheduled_charge": {
"id": "cdea338f-e353-435e-b1ea-64fd71bc3c6a",
"payment_method_type": "card",
"payment_method": {
"id": "83099bb0-e4e0-42f8-989b-3e2711ab2dcd",
"type": "card",
"card_token": {
"card_holder": "Card Holder",
"card_number": "4242",
"expiration_month": "12",
"expiration_year": "27",
"card_type": "Visa",
"card_zip": null
},
"is_primary": true,
"created_at": "2026-11-09 17:59:56"
},
"scheduled_at": "2026-11-12",
"successfully_charged_at": null,
"amount": 75000,
"source": "API",
"source_name": "1",
"created_at": "2026-11-09 17:59:56",
"updated_at": "2026-11-09 17:59:56"
},
"payment_plan": null,
"has_payment_plan": false,
"name": "Custom settlement offer for debt account: 123456",
"discount_percentage": "25.00",
"discount": 25000,
"months_period": 1,
"amount": 100000,
"discounted_amount": 75000,
"total_amount": 75000,
"status": "active",
"created_at": "2026-11-09 17:59:56",
"updated_at": "2026-11-09 17:59:56"
}