Calculating net sales using the orders API

The reports in Toast Web include net sales values. You can also use amount values from the orders API to calculate the net sales. Toast recommends using check.amount as the starting point for your net sales calculation, as it already reflects discounts and service charges.

Orders API information to include in net sales

Note

The information in this section describes how your integration can calculate net sales using information that you get from the orders API. This section does not describe the behavior of the Toast POS or any reporting functions of the Toast platform.

A typical definition of net sales is the total price paid by guests for menu item selections and services.

Your integration can calculate net sales from orders API information by including:

  • Prices of the menu item selections.

  • Discounts that were deducted from menu item selections and checks.

  • Non-gratuity service charges that were added to checks, with the exception of fundraising campaign service charges.

A typical calculation of net sales using orders API information does not include:

  • Taxes or other amounts that are paid to other entities, such as gratuity service charges and credit card tips.

  • Voided menu item selections, checks, and orders.

  • Deleted checks and orders.

  • Orders where excessFood is true.

  • Purchases of gift cards or other items where deferred is true for the selection.

  • House account balance payments where selectionType is HOUSE_ACCOUNT_PAY_BALANCE.

  • Service charges where serviceChargeCategory is FUNDRAISING_CAMPAIGN, as these represent donations passed through to a third-party and is not restaurant revenue.

Include the orders API information for any orders and checks that are not excluded in the list above. For example, include open and unpaid orders in the net sales calculation for your integration.

Note

Note that check.amount does not reflect refunds. Your integration must reconcile refunds separately. For more information, see How to calculate net sales from orders API information.

How to calculate net sales from orders API information

Note

The information in this section describes how your integration can calculate net sales using information that you get from the orders API. This section does not describe the behavior of the Toast POS or any reporting functions of the Toast platform.

Here is an overview of the process to calculate net sales for a group of orders using information from the orders API:

  1. Use the Get multiple orders endpoint request to retrieve the orders for the period of time that you want to calculate. When using the /ordersBulk endpoint, Toast support recommends using the businessDate parameter to align with what is shown in Toast Web reports. This ensures orders are correctly mapped to the location's business day, as determined by the closeoutHour configured in the restaurants API. If you need to retrieve orders for a specific time period, such as 9:00 AM to 10:00 AM, use the startDate and endDate parameters instead, which filter by order modification time.

  2. Calculate the net sales values for each order.

  3. Add the order net sales values to get the total net sales.

During the calculation:

  • Exclude orders and checks where voided is true.

  • Exclude orders and checks where deleted is true.

  • Exclude orders where excessFood is true.

To calculate net sales for an order

  1. For each non-voided, non-deleted check, start with check.amount. This represents the total price of the check including discounts and service charges, excluding gratuity and taxes.

  2. As you review values in the check.selections, subtract the price of any selection where:

    • deferred is true: Gift cards and other deferred revenue items whose value is realized at a later date.

    • selectionType is HOUSE_ACCOUNT_PAY_BALANCE: House account balance payments represent a guest paying off an existing balance and are not new revenue.

  3. As you review values in the check.appliedServiceCharges, subtract the chargeAmount of any service charge where serviceChargeCategory is FUNDRAISING_CAMPAIGN. These charges go to a third-party and are not restaurant revenue. Note that these charges will have gratuity set to false, but should still be excluded.

  4. Reconcile refunds as you review values in the check.payments and subtract refund.refundAmount where a nested refund object exists. Do not subtract refund.tipRefundAmount as tips are not included in net sales. Alternatively, query the payments endpoint filtered by refundBusinessDate for the same business date to retrieve all refunded payments for reconciliation.

  5. Add the net sales values for all checks in the order.