This guide will be removed on April 29, 2022. Please use our new, easier-to-use Toast technical documentation site. All updated content is on the new site.

Retrieve discounts

After an employee selects a guest from the search results on the Toast POS device, the Toast platform retrieves discounts from the PMS provider.

Retrieve discounts workflow

  1. The Toast platform sends a TENDER_RETRIEVE_DISCOUNTS request to the PMS provider. The request includes a TenderTransaction object that holds the guest identifier (tenderIdentifier) and check (Check) in a discountsTransactionInformation object.

  2. Your PMS integration determines the discounts to be applied to the check and responds to the Toast platform with a discountsResponse value in the TenderTransactionResponse object. Discount information is contained in this object. Note that the number of discounts can be zero.

  3. The Toast platform applies the discounts and adds or updates the appliedDiscounts value of the Check object.

    Note

    As a provider, you might not support discounts for your restaurant. In this case, you can return an empty array in your response to the TENDER_RETRIEVE_DISCOUNTS request.

Retrieve discounts request body

{
	discountsTransactionInformation: {
	tenderIdentifier: '5',
	orderGuid: '397e4458-8443-4153-8054-f72a3a95e57d',
	check: {
	guid: '8b838419-c262-4b90-b27d-63b94b2b3034',
	entityType: null,
	externalId: null,
	displayNumber: '2',
	payments: [],
	appliedDiscounts: [],
	shift: null,
	lastModifiedDevice: null,
	voidDate: null,
	appliedPreauthInfo: null,
	paidDate: null,
	appliedLoyaltyInfo: null,
	voided: null,
	paymentStatus: null,
	amount: 32.13,
	tabName: null,
	taxExempt: null,
	netAmount: null,
	tipAmount: null,
	totalDiscountAmount: null,
	pickedUpDate: null,
	openedDate: null,
	totalAmount: null,
	selections: [
{
	guid: '8de6e601-feb2-400b-900b-2b298d88dc4e',
	entityType: null,
	externalId: null,
	deferred: null,
	preDiscountPrice: 28,
	voidReason: null,
	optionGroup: null,
	displayName: null,
	appliedDiscounts: [],
	externalPriceAmount: null,
	modifiers: [],
	seatNumber: null,
	voidDate: null,
	fulfillmentStatus: null,
	optionGroupPricingMode: null,
	salesCategory: null,
	selectionType: null,
	price: null,
	voided: false,
	appliedTaxes: [],
	storedValueTransactionId: null,
	itemGroup: null,
	item: {
		guid: '5045a930-f4d6-4e07-89eb-38f7340769be',
		entityType: null,
		externalId: null,
		multiLocationId: null
	},
	taxInclusion: null,
	quantity: null,
	receiptLinePrice: null,
	unitOfMeasure: null,
	refundDetails: null,
	toastGiftCard: null,
	tax: null,
	diningOption: null,
	openPriceAmount: null,
	voidBusinessDate: null,
	createdDate: null,
	preModifier: null,
	modifiedDate: null
}
],
	voidBusinessDate: null,
	createdDate: null,
	deleted: null,
	createdDevice: null,
	closedDate: null,
	deletedDate: null,
	modifiedDate: null,
	taxAmount: null,
	driverShift: null,
	appliedServiceCharges: [],
	customer: null
},
	totalDiscountable: 28
},
	paymentsTransactionInformation: null,
	redeemTransactionInformation: null,
	gratuityTransactionInformation: null,
	reverseTransactionInformation: null,
	searchTransactionInformation: null
}

Successful retrieve discounts response

tenderDiscountsApplied: [
      {
        name: 'Tender Discount',
        identifier: '7509f8f8-2d15-4c79-bb76-eb1d3b73351a',
        amount: 10,
        selectionGuid: null,
        appliedDiscountGuid: '8dffb8b7-96e8-4d9c-8b5a-4e0a1057e482'
      }
    ]
  },
  gratuityTransactionInformation: null,
  reverseTransactionInformation: null,
  searchTransactionInformation: null
}
Successful response: 
{ transactionStatus: 'ACCEPT' }

The retrieved discounts tenderDiscounts can be check-level or item-level discounts.