How to process Taxes

Introduction

If a store operates in tax exclusive regions such as the United States/Canada, all menu prices will exclude tax. This requires your channel to process orders accordingly with a tax calculation made within a separate "taxes" array.

Format

Within the published menu content, you will see the tax rate to apply to each item according to the order type as in sample below.

This calculation then needs factored into the payment total with below formula

"deliveryTax": 6000,
"takeawayTax":6000,
"eatInTax": 6000,

Payment Total Formula

amount = Σ(item prices) + deliveryCost + serviceCharge + deliveryCostTax + serviceChargeTax + Σ(taxes)

Taxes Array

The below tables defines the attributes in the taxes array;

KeyValueFormat
taxClassIdthe ID corresponding to this tax class as used by DeliverectInteger
namethe display name for this category of taxes, which is how it should be printed on a receiptString
totalthe sum of all tax amounts for this categoryInteger

Tax Related Fields

You must ensure the following are set correctly when processing tax exclusive orders;

FieldRule
price (per item)Must be sent without tax included
amount (total payment)Must include calculated taxes
taxes (array)Must detail the tax amount applied, as an integer with 2 decimal digits. Breaking this down per tax class (e.g. GST, HST) is optional
deliveryCostMust be sent without tax included
serviceChargeMust be sent without tax included
deliveryCostTaxSent separately — must not appear in the taxes array
serviceChargeTaxSent separately — must not appear in the taxes array
discountTotal (if present)Item taxes must be calculated after the discount amount has been deducted

Example Order

{
    "items": [
        {
            "plu": "CHIC-02",
            "name": "Chicken",
            "price": 750,
            "quantity": 1,
            "subItems": []
        }
    ],
    "payment": {
        "amount": 1133,
        "type": 0
    },
    "deliveryCost": 200,
    "serviceCharge": 300,
    "discountTotal": -200,
    "taxes": [
        {
            "taxClassId": 0,
            "name": "taxes",
            "total": 33
        }
    ],
    "taxRemitted":33,
    "deliveryCostTax": 20,
    "serviceChargeTax": 30
}

Tax Class Ids
The taxClassId should be considered optional, it is not formally supported on any POS integration.

Tax Remitted

taxRemitted In regions where the channel has responsibility for charging tax e.g. where they are 'Marketplace Facilitator' this is the total tax remitted. This value should be sent outside the taxes array.

Testing with Tax Exclusive Accounts

You can check this by going to the Locations page and clicking on the Edit button for the location. Next, activate the Show More toggle. The Tax Exclusive option will be displayed.


Did this page help you?