Discounts
Discounts are reductions that are applied to a transaction. You use the Discounts object to model these reductions in your requests. For more information about the fields in the Discount object, see Discount Object Fields.
The service calculates discounts for both inclusive and exclusive prices. The logic used for discounts mirrors how you can provide either type of amount for the transaction (using the total_amount
and amount
fields). For more information about how to configure amounts, see Configuring Payment Amounts.
You specify tax inclusive or exclusive values. The API returns discount amounts for both types of pricing and the total discount applied.
You can apply discounts to a single transaction line or to an entire transaction.
Tax Inclusive Discounts
Tax inclusive prices include the VAT in the displayed price. To specify a tax inclusive amount for a discount, you use the discount_total_amount
field:
"discounts": [{
"discount_total_amount": 12
"discount_code": line_discount_1
Tax Exclusive Discounts
Tax exclusive prices exclude VAT from the displayed price. To specify a tax exclusive amount for a discount, you use the discount_amount
field. For example:
"discounts": [{
"discount_amount": 10
"discount_code": line_discount_2
Transaction Line-Level Discounts
You can apply discounts individually to transaction lines. For example:
"transaction": {
"currency_code": "GBP"
"ship_to_address: {
"country_code": "UK"
},
"transaction_lines": [
{
"total_amount": 123,
"discounts": [{
"discount_total_amount": 10
"discount_code": line_discount_1
}],
"custom_id": "line_1"
"product_class": "p"
"ship_from_address": {
"country_code": "UK"
}
}
}
}
{
"total_amount":50,
"custom_id": "line_2"
"product_class": "p"
"ship_from_address": {
"country_code": "UK"
}
}
}
}
This returns the following discount information. Note the following:
- The
discounts.discount_amount
field shows the tax exclusive discount amount for the transaction line. - The
discounts.discount_total_amount
field shows the tax inclusive total amount for the transaction line. - The
discounts.discounted_total_amount
field shows the total discount for that transaction.
"discounts": [
{
"discount_code": line_discount_1
"discount_total_amount": 10
"discount_amount": 8.13
}
],
"custom_id": "line-1"
"discounted_total_amount": "10.00"
Transaction-Level Discounts
You can also apply the discount at a transaction level. The discount is proportionally distributed across the transaction lines for that transaction. This means that a greater percentage of the discount is applied to the lines with relatively larger amounts.
For example, the following applies a 20 GBP discount across 2 transaction lines:
"transaction": {
"currency_code": "GBP"
"ship_to_address: {
"country_code": "UK"
},
"discounts": [{
"discount_total_amount": 20
"discount_code": transaction_discount_1
}]
"transaction_lines": [
{
"total_amount": 123,
"custom_id": "line_1"
"product_class": "p"
"ship_from_address": {
"country_code": "UK"
}
}
}
}
{
"total_amount":50,
"custom_id": "line_2"
"product_class": "p"
"ship_from_address": {
"country_code": "UK"
}
}
}
}
This returns the following for line-1:
"discounts": [
{
"discount_code": transaction_discount_1
"discount_total_amount": 13.87
"seller_code": seller_test_1
"discount_amount": 11.28
}
],
"custom_id": "line-1"
The following discount information is returned for line-2:
"discounts": [
{
"discount_code": transaction_discount_1
"discount_total_amount": 6.13
"seller_code": seller_test_1
"discount_amount": 4.98
}
],
"custom_id": "line-2"
The total discount amount that is applied is returned in the discounts.discounted_total_amount
field:
"discounted_total_amount": "20.00"
Updated over 1 year ago