Discount Item API
Create and manage discount items for applying discounts to sales transactions.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/discountItem | List discount items |
GET | /record/v1/discountItem/{id} | Get specific item |
POST | /record/v1/discountItem | Create item |
PATCH | /record/v1/discountItem/{id} | Update item |
DELETE | /record/v1/discountItem/{id} | Delete item |
Key Fields
| Field | Type | Description | Required |
|---|---|---|---|
itemId | string | Item name/number | Yes (if not auto) |
displayName | string | Display name | No |
description | string | Item description | No |
subsidiary | object | Subsidiary assignment | Yes (OneWorld) |
incomeAccount | object | Income/discount account | Yes |
rate | string | Discount rate/percentage | No |
nonPosting | boolean | Non-posting flag | No |
includeChildren | boolean | Include child subsidiaries | No |
isInactive | boolean | Inactive flag | No |
isTaxable | boolean | Taxable flag | No |
taxSchedule | object | Tax schedule | No |
department | object | Default department | No |
class | object | Default class | No |
location | object | Default location | No |
Example: Create Discount Item
POST /record/v1/discountItem
Content-Type: application/json
{
"itemId": "VOLUME-DISCOUNT",
"displayName": "Volume Discount - 10%",
"description": "10% discount for volume purchases",
"subsidiary": {
"id": "1"
},
"incomeAccount": {
"id": "410"
},
"rate": "-10%",
"isTaxable": false,
"department": {
"id": "10"
}
}
Response:
{
"id": "956",
"itemId": "VOLUME-DISCOUNT",
"displayName": "Volume Discount - 10%",
"description": "10% discount for volume purchases",
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"incomeAccount": {
"id": "410",
"refName": "Sales Discounts"
},
"rate": "-10%",
"isTaxable": false,
"department": {
"id": "10",
"refName": "Sales"
},
"isInactive": false,
"nonPosting": false,
"lastModifiedDate": "2025-12-25T10:30:00Z"
}
Example: Update Discount Item
PATCH /record/v1/discountItem/956
Content-Type: application/json
{
"rate": "-15%",
"displayName": "Volume Discount - 15%",
"description": "15% discount for volume purchases (updated)"
}
Response:
{
"id": "956",
"itemId": "VOLUME-DISCOUNT",
"displayName": "Volume Discount - 15%",
"description": "15% discount for volume purchases (updated)",
"rate": "-15%",
"lastModifiedDate": "2025-12-25T11:00:00Z"
}
Query Filters
Find Active Discount Items
GET /record/v1/discountItem?q=isInactive=false
Find by Item ID Pattern
GET /record/v1/discountItem?q=itemId LIKE 'DISCOUNT%'
Find by Discount Account
GET /record/v1/discountItem?q=incomeAccount.id=410
Find Non-Posting Discounts
GET /record/v1/discountItem?q=nonPosting=true
Important Notes
- Discount items are used to apply discounts to sales transactions
- Discounts reduce the total amount of sales transactions and typically post to a contra-revenue account
- The incomeAccount field should typically point to a sales discount or contra-revenue account (often in the 400s with negative balances)
- The rate field can be specified as:
- A percentage:
-10%(10% discount) - A fixed amount:
-50.00(negative value for discount) - Percentage format is most common
- A percentage:
- Discount items can be used on:
- Sales orders
- Invoices
- Cash sales
- Quotes and estimates
- Common discount types:
- Volume discounts
- Early payment discounts
- Promotional discounts
- Customer loyalty discounts
- Seasonal discounts
- Employee discounts
- The nonPosting flag can be set to true for discounts that should appear on transactions but not post to the general ledger
- Discounts are typically not taxable (isTaxable = false) as they reduce the taxable amount
- In OneWorld accounts, subsidiary assignment is mandatory
- Discount items can have default department, class, and location dimensions for financial reporting
- Best practice is to create separate discount items for different discount types to improve reporting and tracking
Common Discount Configurations
Percentage Discount
{
"itemId": "DISCOUNT-5PCT",
"displayName": "5% Discount",
"rate": "-5%",
"incomeAccount": {"id": "410"}
}
Fixed Amount Discount
{
"itemId": "DISCOUNT-50",
"displayName": "$50 Discount",
"rate": "-50.00",
"incomeAccount": {"id": "410"}
}
Non-Posting Discount
{
"itemId": "PROMO-DISPLAY",
"displayName": "Promotional Discount (Display Only)",
"rate": "-10%",
"incomeAccount": {"id": "410"},
"nonPosting": true
}
See Also
- Description Item - Non-billable text lines
- Item Group - Pre-defined groups of items