Payments and Additional Charges

Payments

Depending on the method of payment, the relevant payment types should be sent with one of two following values (as an integer)

Further details on processing additional payment parameters below;

Payment TypeInteger Value
credit card online0
cash1
  "payment": {
    "amount": 1455,
    "type": 0,
    "due": 0,
    "rebate": 0,
    "commissionType": ""
  },

Tax Exclusive Orders

For customers in tax exclusive regions, you should ensure you handle tax accordingly, see details below;

▶ Processing Tax Exclusive Orders

Paid/Unpaid Orders

In some ordering platforms, users can checkout without processing a payment. A typical scenario would be for pickup orders where cash will be paid on collection. If allowing for this option at checkout, it is important to set the flag "orderIsAlreadyPaid": false,

Where payment is processed online during checkout, then set this as "orderIsAlreadyPaid": true,

📘

Payment amount

Note, you should always pass the payment amount, whether the order is already paid or not.

📘

Payment format

Payment amounts should be sent as an integer with 2 decimal digits, for example, 5 euros would be sent as 500.

Discounts

Ordering platforms may offer multiple forms of discount e.g. special offers on selected items, % discounts etc

We can support one single overall order discount only and it should be specified as a minus value e.g. "discountTotal": -100

This should only be applied where the restaurant is absorbing the cost of the discount.

The paid 'amount' should factor in any discount deducted from the total payment.

Additionally, you can further specify information regarding the discount applied, as an array within the order payload.

"discounts": [
      {
        "type": "order_flat_off",
        "provider": "restaurant",
        "name": "FLATOFF",
        "channelDiscountCode": "",
        "referenceId": 1,
        "value": 800,
        "amount": 800,
        "amountRestaurant": 400,
        "amountChannel": 400
      }
    ],

You can learn more about what is the meaning of each parameter in the table below:

ParameterMeaningData Tye
typeMapped channel discount type from the list of Discount Types in Deliverect.string
providerThe issuer of the discount i.e. the one who bears the discounted amount.Enum
nameThe name was given to the discount.string
channelDiscountCodeThe unique discount code used by the channelstring
referenceIdA unique number assigned to the discount and used to reference the discount on individual items on the order.integer
valueIt is the flat amount of money or percentage covered by the discount which is stored with precision 2, so $1.50 -> 150,# 25.1% -> 2510integer
amountActual amount discounted e.g. For 10% off on $50 bill, the value will be 1000 and amount will be 500.integer
amountRestaurantThe amount of the restaurant's contribution to the discountinteger
amountChannelThe amount of the channel's contribution to the discountinteger

Rebate

A rebate represents any discount where the cost is absorbed by the channel, not the restaurant. The restaurant may want to distinguish these type of discounts clearly in their POS from ones which they absorb the cost of.

Where a rebate applies, it is important that the full payment amount without the deduction of the rebate is specified, as it will be the amount which the restaurant receive.

  "payment": {
    "amount": 400,
    "type": 3,
    "due": 0,
    "rebate": 100,
    "commissionType": ""
  },

Commission Type

This relates to the type of commission charged by the channel for its services.

Each type will correspond to an agreed percentage of the order value taken as commission but is information provided by some channels only.

Tips

To send a tip through with an order, there are two possible parameters allowing a channel to distinguish between the intended recipient of tips. i.e

If a tip is intended for the restaurant;

"tip": 500,.

If intended for the driver;

"driverTip": 500,.

Please be aware that not all POS partners will handle this addition to an order, in which case we have a toggle setting to not include these.

Bag Fee

In certain regions it is mandatory to apply a charge against the packaging used. For this, we have the attribute "bagFee"

When included within an order it will be processed accordingly and will appear as a line item on the integrated POS.

A bag fee of $1.20 would then be sent as the below example;

"bagFee": 120,