Skip to main content

Example Requests

Introduction

Here are some examples of POS actions that the user can take, and the corresponding data in the APIs.

NOTE

These example requests to not include the fields returned when the optional SERVICE_CHARGE or ENRICHED_PAYLOAD parameters are enabled. For more details on the content of these payloads, see Service Charge Feature and Enriched Payload Feature.

Charge to Room

Lightspeed will send a POST request to the /charge endpoint with the receipt in the payload. In this request, the API key is passed in the request body along with the receipt information.

This POST request includes the reservationId as well the methodCode will always be IKPMS

POS Action

POS user charges a room charge

PMS API - Example POST request

{
"name": "Table 5",
"openDate": "2022-09-01T12:25:36.161Z",
"closeDate": "2022-09-01T12:27:33.266Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-09-01T12:27:33.243Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 1,
"amount": 11,
"methodName": "Room",
"reservationId": "001",
"methodCode":"IKPMS"
}
],
"receiptId": "R56397.3",
"receipt": null,
"uuid": "2tO3PMb6SVuEJj5v2eJc-Q==",
"id": null,
"initialAccountId": "A56397.3",
"fiscId": "A56397.3",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.3"
}

Financial API - Example GET response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

{
"accountReference": "2tO3PMb6SVuEJj5v2eJc-Q==",
"accountFiscId": "A56397.3",
"receiptId": "R56397.3",
"source":{
"initialAccountId":"A56397.3"
},
"salesLines":[
{
"id": "S56397.3",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T12:26:27.902Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
},
{
"id": "S56397.4",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T12:26:28.631Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "IKPMS",
"description": "Room",
"paymentMethodId": 962442041491639,
"netAmountWithTax": "11.00",
"currency": "CHF",
"tip": "1.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"externalReference": "1000",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T12:25:36.161Z",
"timeOfCloseAndPaid": "2022-09-01T12:27:33.266Z",
"tableNumber": "5",
"tableName": "Table 5",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Void a Room Charge - Current Day

If a transaction has to be voided from a room because the wrong guest was chosen or the wrong items have been charged to the room, the whole guest check-in gets voided in the POS which will send a negative posting to the PMS.

The logic of the POS action "Void Payment" generates a new account, with the same sales lines in it - and negative values - (with a new uuid/accountReference) which triggers a new POST request.

POS Action

POS user triggers the void payment option at the POS

PMS API - Example POST request

{
"name": "Table 5",
"openDate": "2022-09-01T12:34:30.462Z",
"closeDate": "2022-09-01T12:34:30.471Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 6,
"quantity": -1,
"amount": -6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": -1,
"amount": -5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-09-01T12:34:30.470Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": -1,
"amount": -11,
"methodName": "Room",
"reservationId": "001",
"methodCode":"IKPMS"
}
],
"receiptId": "R56397.4",
"receipt": null,
"uuid": "u61aKzKJREO2Ee0i8gg-1Q==",
"id": null,
"initialAccountId": "A56397.3",
"fiscId": "A56397.4",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier":"A56397.4"
}

Financial API - Example GET response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

The initialAccountId refers to the original account (the positive posting). The previousAccountId refers to the previous account that was created due to changes in the original account initialAccountId.

The object type, describes the type of transaction. In that example it’s “type”:”VOID”.

{
"accountReference": "u61aKzKJREO2Ee0i8gg-1Q==",
"accountFiscId": "A56397.4",
"receiptId": "R56397.4",
"source":{
"initialAccountId": "A56397.3",
"previousAccountId":"A56397.3"
},
"salesLines":[
{
"id": "S56397.5",
"totalNetAmountWithTax": "-6.00",
"totalNetAmountWithoutTax": "-5.57",
"menuListPrice": "-6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T12:34:30.465Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"voidReason": "Andere",
"accountProfileCode":""
},
{
"id": "S56397.6",
"totalNetAmountWithTax": "-5.00",
"totalNetAmountWithoutTax": "-4.64",
"menuListPrice": "-5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T12:34:30.468Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"voidReason": "Andere",
"accountProfileCode":""
}
],
"payments":[
{
"code": "IKPMS",
"description": "Room",
"paymentMethodId": 962442041491639,
"netAmountWithTax": "-11.00",
"currency": "CHF",
"tip": "-1.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"externalReference": "1000",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T12:34:30.462Z",
"timeOfCloseAndPaid": "2022-09-01T12:34:30.471Z",
"tableNumber": "5",
"tableName": "Table 5",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "VOID",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName": "iPad3",
"voidReason":"Andere"
}

Void a Room Charge - Following Day

If a transaction has to be refunded/voided from a room or company account because the wrong payment method or the wrong items have been charged to the room, the whole guest check-in must be voided on the POS.

Handling of VOIDS on a following day:

Check via room search if the guest/company account is still checked in Create a new transaction, with (-) refund items and post it to the same room/company account on which the transaction to be canceled is

A cancellation on the same day or on a following day is only possible and supported at the POS. A cancellation is equivalent to a (-) minus charge.

POS Action

POS user charges an account/a receipt with (-) negative items to a room

PMS API - Example POST request

{
"name": "Table 5",
"openDate": "2022-09-01T12:27:33.484Z",
"closeDate": "2022-09-01T12:40:01.677Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 6,
"quantity": -1,
"amount": -6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": -1,
"amount": -5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-09-01T12:40:01.651Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": -11,
"methodName": "Room",
"reservationId": "002",
"methodCode":"IKPMS"
}
],
"receiptId": "R56397.5",
"receipt": null,
"uuid": "7lgJIJkeTGaS_zzFEJ8e8A==",
"id": null,
"initialAccountId": "A56397.5",
"fiscId": "A56397.5",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.5"
}

Financial API - Example GET response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does not reference an existing transaction, so the initialAccountId is identical to the accountFiscId.

The object type, describes the type of transaction. In that example it’s “type”:”SALE”.

{
"accountReference": "7lgJIJkeTGaS_zzFEJ8e8A==",
"accountFiscId": "A56397.5",
"receiptId": "R56397.5",
"source":{
"initialAccountId":"A56397.5"
},
"salesLines":[
{
"id": "S56397.7",
"totalNetAmountWithTax": "-6.00",
"totalNetAmountWithoutTax": "-5.57",
"menuListPrice": "-6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T12:39:33.725Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
},
{
"id": "S56397.8",
"totalNetAmountWithTax": "-5.00",
"totalNetAmountWithoutTax": "-4.64",
"menuListPrice": "-5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T12:39:34.455Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "IKPMS",
"description": "Room",
"paymentMethodId": 962442041491639,
"netAmountWithTax": "-11.00",
"currency": "CHF",
"tip": "10.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"externalReference": "2000",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T12:27:33.484Z",
"timeOfCloseAndPaid": "2022-09-01T12:40:01.677Z",
"tableNumber": "5",
"tableName": "Table 5",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Non-Reservation Charges

These could be Cash, Credit Card or other Other payment methods. The difference between a non-reservation POST request and a room charge is identified through the PaymentMethod. The non-reservation POST request doesn’t include the reservationId which is part of the payment objects.

POS Action

POS user posts an account/a receipt with a non-room related payment method

PMS API - Example POST request

{
"name": "",
"openDate": "2022-09-01T12:43:16.858Z",
"closeDate": "2022-09-01T13:00:54.319Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
}
],
"payments":[
{
"paymentDate": "2022-09-01T13:00:54.304Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 1,
"amount": 11,
"methodName": "Mastercard",
"reservationId": "",
"methodCode":"MASTERCARD"
}
],
"receiptId": "R56397.6",
"receipt": null,
"uuid": "3MfoeUOYRkS1uLM9O1sItQ==",
"id": null,
"initialAccountId": "A56397.7",
"fiscId": "A56397.7",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.7"
}

Financial API - Example GET response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

{
"accountReference": "3MfoeUOYRkS1uLM9O1sItQ==",
"accountFiscId": "A56397.7",
"receiptId": "R56397.6",
"source":{
"initialAccountId":"A56397.7"
},
"salesLines":[
{
"id": "S56397.11",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T13:00:48.6Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
},
{
"id": "S56397.12",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T13:00:49.112Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "MASTERCARD",
"description": "Mastercard",
"paymentMethodId": 962442041491482,
"netAmountWithTax": "11.00",
"currency": "CHF",
"tip": "1.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T12:43:16.858Z",
"timeOfCloseAndPaid": "2022-09-01T13:00:54.319Z",
"tableName": "",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Void a Non-Reservation Charge - Current Day

If you need to void an account for a non-reservation related payment, just cancel the related account on the POS on the same day. The Void Receipt Action will trigger a new POST request, with a new UUID/accountReference.

The POST request will contain exactly the same values as for the original transaction, but as negative amounts.

POS Action

POS executes the “VOID RECEIPT ACTION”

PMS API - Example POST request

{
"name": "",
"openDate": "2022-09-01T13:06:43.292Z",
"closeDate": "2022-09-01T13:06:43.310Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 5,
"quantity": -1,
"amount": -5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": 6,
"quantity": -1,
"amount": -6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
}
],
"payments":[
{
"paymentDate": "2022-09-01T13:06:43.301Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": -1,
"amount": -11,
"methodName": "Mastercard",
"reservationId": "",
"methodCode":"MASTERCARD"
}
],
"receiptId": "R56397.7",
"receipt": null,
"uuid": "PPNm3dCNT9iMhUSDgfA8sw==",
"id": null,
"initialAccountId": "A56397.7",
"fiscId": "A56397.8",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.8"
}

Financial API - Example GET response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

The initialAccountId refers to the original account (the positive posting). The previousAccountId refers to the previous account that was created due to changes in the original account initialAccountId.

The object type, describes the type of transaction. In that example it’s “type”:”VOID”.

{
"accountReference": "PPNm3dCNT9iMhUSDgfA8sw==",
"accountFiscId": "A56397.8",
"receiptId": "R56397.7",
"source":{
"initialAccountId": "A56397.7",
"previousAccountId":"A56397.7"
},
"salesLines":[
{
"id": "S56397.13",
"totalNetAmountWithTax": "-5.00",
"totalNetAmountWithoutTax": "-4.64",
"menuListPrice": "-5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T13:06:43.294Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"voidReason": "Andere",
"accountProfileCode":""
},
{
"id": "S56397.14",
"totalNetAmountWithTax": "-6.00",
"totalNetAmountWithoutTax": "-5.57",
"menuListPrice": "-6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T13:06:43.297Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"voidReason": "Andere",
"accountProfileCode":""
}
],
"payments":[
{
"code": "MASTERCARD",
"description": "Mastercard",
"paymentMethodId": 962442041491482,
"netAmountWithTax": "-11.00",
"currency": "CHF",
"tip": "-1.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T13:06:43.292Z",
"timeOfCloseAndPaid": "2022-09-01T13:06:43.31Z",
"tableName": "",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "VOID",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName": "iPad3",
"voidReason":"Andere"
}

Void a Non-Reservation Charge - Following Day

If you need to void an account for a non-room related payment, on the following day, you need to create a new account with exactly the same values as the origin account.

The posting needs to contain exactly the same values as for the positive transaction, but also using related negative amounts.

POS Action

POS user posts an account/a receipt with a non-room related payment method and negative values

PMS API - Example POST request

{
"name": "Table 6",
"openDate": "2022-09-01T13:17:07.983Z",
"closeDate": "2022-09-01T13:17:26.317Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 5,
"quantity": -1,
"amount": -5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": 6,
"quantity": -1,
"amount": -6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
}
],
"payments":[
{
"paymentDate": "2022-09-01T13:17:26.302Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": -11,
"methodName": "Mastercard",
"reservationId": "",
"methodCode":"MASTERCARD"
}
],
"receiptId": "R56397.8",
"receipt": null,
"uuid": "D3Z5PLY1R1uqhp-xXg5R_A==",
"id": null,
"initialAccountId": "A56397.9",
"fiscId": "A56397.9",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.9"
}

Financial API - Example GET response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does not reference an existing transaction, so the initialAccountId is identical to the accountFiscId.

The object type, describes the type of transaction. In that example it’s “type”:”SALE”.

{
"accountReference": "D3Z5PLY1R1uqhp-xXg5R_A==",
"accountFiscId": "A56397.9",
"receiptId": "R56397.8",
"source":{
"initialAccountId":"A56397.9"
},
"salesLines":[
{
"id": "S56397.15",
"totalNetAmountWithTax": "-5.00",
"totalNetAmountWithoutTax": "-4.64",
"menuListPrice": "-5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T13:17:10.013Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
},
{
"id": "S56397.16",
"totalNetAmountWithTax": "-6.00",
"totalNetAmountWithoutTax": "-5.57",
"menuListPrice": "-6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T13:17:10.277Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "MASTERCARD",
"description": "Mastercard",
"paymentMethodId": 962442041491482,
"netAmountWithTax": "-11.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T13:17:07.983Z",
"timeOfCloseAndPaid": "2022-09-01T13:17:26.317Z",
"tableNumber": "6",
"tableName": "Table 6",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Reopen an Account/Receipt - Void Payment Action

If an account/receipt that has already been paid for has to be reopened because, for example, it contains the wrong items or items are missing, only the payment (not the account) can be canceled.

For fiscal reasons, this function is possible on the same business day only and is equivalent to a cancellation.

The account can then be edited (items added or removed) and posted again with the same or a different payment method. Which causes another POST request with a new ID.

POS Action

POS user triggers the action “Void Payment”

PMS API - Example POST request

Step 1

A POST request is triggered by the payment of the account at the POS.

{
"name": "Table 8",
"openDate": "2022-09-01T13:21:56.826Z",
"closeDate": "2022-09-01T13:22:02.348Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-09-01T13:22:02.337Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 11,
"methodName": "Cash",
"reservationId": "",
"methodCode":"CASH"
}
],
"receiptId": "R56397.11",
"receipt": null,
"uuid": "a82Z-p8TSK2M1aOzeWz4hw==",
"id": null,
"initialAccountId": "A56397.13",
"fiscId": "A56397.13",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.13"
}

Step 2

The POS action "Reopen an account" triggers a new POST request, which is a POST request with negative (-) variables (identical to the variables from step 1).

This POST request is identical to the "Void Action".

{
"name": "Table 8",
"openDate": "2022-09-01T13:22:43.692Z",
"closeDate": "2022-09-01T13:22:43.700Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 6,
"quantity": -1,
"amount": -6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": -1,
"amount": -5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-09-01T13:22:43.700Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": -11,
"methodName": "Cash",
"reservationId": "",
"methodCode":"CASH"
}
],
"receiptId": "R56397.12",
"receipt": null,
"uuid": "IRyIrkWyTuqSdhrH8WJ94Q==",
"id": null,
"initialAccountId": "A56397.13",
"fiscId": "A56397.14",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.14"
}

Step 3

The original account (Step 1) is now open again in the POS and can be edited by the POS user. Items can be added or removed, and/or a different payment method can be used to trigger a new POS request.

{
"name": "Table 8",
"openDate": "2022-09-01T13:22:43.917Z",
"closeDate": "2022-09-01T13:26:50.504Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-09-01T13:26:50.490Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 11,
"methodName": "Visa",
"reservationId": "",
"methodCode":"VISA"
}
],
"receiptId": "R56397.13",
"receipt": null,
"uuid": "2ziWIkZCRwWgZ90myTHe5Q==",
"id": null,
"initialAccountId": "A56397.13",
"fiscId": "A56397.15",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.15"
}

Financial API - Example GET response

Step 1

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

{
"accountReference": "a82Z-p8TSK2M1aOzeWz4hw==",
"accountFiscId": "A56397.13",
"receiptId": "R56397.11",
"source":{
"initialAccountId":"A56397.13"
},
"salesLines":[
{
"id": "S56397.23",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T13:21:59.224Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
},
{
"id": "S56397.24",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T13:21:59.654Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "CASH",
"description": "Cash",
"paymentMethodId": 962442041491481,
"netAmountWithTax": "11.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T13:21:56.826Z",
"timeOfCloseAndPaid": "2022-09-01T13:22:02.348Z",
"tableNumber": "8",
"tableName": "Table 8",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Step 2

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does reference an existing transaction, so the initialAccountId is a reference to the account from “Step 1”.

The object type, describes the type of transaction. In this example it’s “type”:”VOID”.

{
"accountReference": "IRyIrkWyTuqSdhrH8WJ94Q==",
"accountFiscId": "A56397.14",
"receiptId": "R56397.12",
"source":{
"initialAccountId": "A56397.13",
"previousAccountId":"A56397.13"
},
"salesLines":[
{
"id": "S56397.25",
"totalNetAmountWithTax": "-6.00",
"totalNetAmountWithoutTax": "-5.57",
"menuListPrice": "-6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T13:22:43.694Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"voidReason": "Andere",
"accountProfileCode":""
},
{
"id": "S56397.26",
"totalNetAmountWithTax": "-5.00",
"totalNetAmountWithoutTax": "-4.64",
"menuListPrice": "-5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T13:22:43.697Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"voidReason": "Andere",
"accountProfileCode":""
}
],
"payments":[
{
"code": "CASH",
"description": "Cash",
"paymentMethodId": 962442041491481,
"netAmountWithTax": "-11.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T13:22:43.692Z",
"timeOfCloseAndPaid": "2022-09-01T13:22:43.7Z",
"tableNumber": "8",
"tableName": "Table 8",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "VOID",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName": "iPad3",
"voidReason":"Andere"
}

Step 3

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

This example does reference an existing transaction, so the "initialAccountId" is a reference to the original account from “Step 1” the object "previousAccountId" is a reference to the voided payment from “Step 2”.

The object type, describes the type of transaction. In this example it’s “type”:”RECALL”.

{
"accountReference": "2ziWIkZCRwWgZ90myTHe5Q==",
"accountFiscId": "A56397.15",
"receiptId": "R56397.13",
"source":{
"initialAccountId": "A56397.13",
"previousAccountId":"A56397.14"
},
"salesLines":[
{
"id": "S56397.27",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T13:22:43.919Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
},
{
"id": "S56397.28",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T13:22:43.923Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "VISA",
"description": "Visa",
"paymentMethodId": 962442041491484,
"netAmountWithTax": "11.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T13:22:43.917Z",
"timeOfCloseAndPaid": "2022-09-01T13:26:50.504Z",
"tableNumber": "8",
"tableName": "Table 8",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "RECALL",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Corrections of Tips on a Closed Account/Receipt

If the amount of the tip needs to be corrected for an account that has already been closed, this can be done without canceling the account (from the point of view of the POS: fiscal reasons).

No correction/void is recorded in the POS, only a correction of the tip amount is recorded.

A correction charge of the items and the tip is sent to the PMS as a (-) transaction, as well as the identical items as a (+) charge with the correct tip amount. (Step 2)

POS Action

POS user posts a room charge

PMS API - Example POST request

Step 1

The original posting, which contains the object "gratuity": 1.

{
"name": "Table 55",
"openDate": "2022-09-01T13:21:43.824Z",
"closeDate": "2022-09-01T13:39:41.426Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-09-01T13:39:41.414Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 1,
"amount": 11,
"methodName": "Visa",
"reservationId": "",
"methodCode":"VISA"
}
],
"receiptId": "R56397.14",
"receipt": null,
"uuid": "rH7J05HjQoyhvQ3nUmxTWg==",
"id": null,
"initialAccountId": "A56397.12",
"fiscId": "A56397.12",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.12"
}

Step 2

Correcting the tip triggers a new POST request, the payment method remains unaffected. The object "gratuity":11" contains the corrected amount. This POST request doesn’t contain any transaction lines.

POS Action

POS user changes the amount of TIP on a closed account
{
"name": "Table 55",
"openDate": "2022-09-01T13:40:49.260Z",
"closeDate": "2022-09-01T13:40:49.266Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[

],
"payments":[
{
"paymentDate": "2022-09-01T13:40:49.264Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": -1,
"amount": -11,
"methodName": "Visa",
"reservationId": "",
"methodCode":"VISA"
},
{
"paymentDate": "2022-09-01T13:40:49.265Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 11,
"amount": 11,
"methodName": "Visa",
"reservationId": "",
"methodCode":"VISA"
}
],
"receiptId": "R56397.15",
"receipt": null,
"uuid": "O0VLismgTyuVuNkBCBS7rA==",
"id": null,
"initialAccountId": "A56397.12",
"fiscId": "A56397.16",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.16"
}

Financial API - Example GET response

Step 1

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

{
"accountReference": "rH7J05HjQoyhvQ3nUmxTWg==",
"accountFiscId": "A56397.12",
"receiptId": "R56397.14",
"source":{
"initialAccountId": "A56397.12",
},
"salesLines":[
{
"id": "S56397.21",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T13:21:43.827Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
},
{
"id": "S56397.22",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T13:21:43.831Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "VISA",
"description": "Visa",
"paymentMethodId": 962442041491484,
"netAmountWithTax": "11.00",
"currency": "CHF",
"tip": "1.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T13:21:43.824Z",
"timeOfCloseAndPaid": "2022-09-01T13:39:41.426Z",
"tableNumber": "55",
"tableName": "Table 55",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Step 2

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does reference an existing transaction, so the "initialAccountId" is a reference to the account from “Step 1”.

The object type, describes the type of transaction. In this example it’s “type”:”UPDATE”.

{
"accountReference": "O0VLismgTyuVuNkBCBS7rA==",
"accountFiscId": "A56397.16",
"receiptId": "R56397.15",
"source":{
"initialAccountId": "A56397.12",
"previousAccountId":"A56397.12"
},
"salesLines":[

],
"payments":[
{
"code": "VISA",
"description": "Visa",
"paymentMethodId": 962442041491484,
"netAmountWithTax": "-11.00",
"currency": "CHF",
"tip": "-1.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
},
{
"code": "VISA",
"description": "Visa",
"paymentMethodId": 962442041491484,
"netAmountWithTax": "11.00",
"currency": "CHF",
"tip": "11.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T13:40:49.26Z",
"timeOfCloseAndPaid": "2022-09-01T13:40:49.266Z",
"tableNumber": "55",
"tableName": "Table 55",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "UPDATE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Charge Tips Without Revenue Items

If a tip is to be added to a transaction, room posting or cash/credit card payment, without the transaction containing revenue-relevant items (in a dedicated accounting group), this can be done via a dummy item which is managed as a zero-price item in the POS.

In this way, the zero-price item is charged and the tip amount is added during the payment process.

POS Action

POS user posts an account/a receipt

PMS API - Example request

{
"name": "Table 8",
"openDate": "2022-09-01T13:39:41.609Z",
"closeDate": "2022-09-01T14:10:43.339Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 0,
"quantity": 1,
"amount": 0,
"description": "Tip",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491649,
"groupName": "Tip",
"taxId": 962442041491465,
"taxName": "MwSt. 0%",
"taxRate": 1,
"taxIncluded": true,
"sku":"10"
}
],
"payments":[
{
"paymentDate": "2022-09-01T14:10:43.313Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 10,
"amount": 0,
"methodName": "Room",
"reservationId": "001",
"methodCode":"IKPMS"
}
],
"receiptId": "R56397.16",
"receipt": null,
"uuid": "olnhPhUiSp-UXNojz-pi5g==",
"id": null,
"initialAccountId": "A56397.17",
"fiscId": "A56397.17",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.17"
}

Financial API - Example GET response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does not reference an existing transaction, so the "initialAccountId" is identical to the "accountFiscId".

The object type, describes the type of transaction. In this example it’s “type”:”SALE”.

{
"accountReference": "olnhPhUiSp-UXNojz-pi5g==",
"accountFiscId": "A56397.17",
"receiptId": "R56397.16",
"source":{
"initialAccountId":"A56397.17"
},
"salesLines":[
{
"id": "S56397.29",
"totalNetAmountWithTax": "0.00",
"totalNetAmountWithoutTax": "0.00",
"menuListPrice": "0.00",
"unitCostPrice": "0.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "10",
"name": "Tip",
"statisticGroup": "Tip",
"quantity": "1.000",
"taxRatePercentage": "0.00",
"accountingGroup":{
"accountingGroupId": 962442041491649,
"name": "Tip",
"code":"123"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Tip"
}
],
"timeOfSale": "2022-09-01T14:04:59.436Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "IKPMS",
"description": "Room",
"paymentMethodId": 962442041491639,
"netAmountWithTax": "0.00",
"currency": "CHF",
"tip": "10.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"externalReference": "1000",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T13:39:41.609Z",
"timeOfCloseAndPaid": "2022-09-01T14:10:43.339Z",
"tableNumber": "8",
"tableName": "Table 8",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Split an Account/Receipt by Number of Covers, Items or Seats

If an account has to be split, it can be divided by the number of covers, items or seats (the logic is for that kind of split the same):

Account A56397.6: 1 x Alcohol = 5,00 CHF 1 x Kitchen = 6,00 CHF

In this case, the total amount of 11,00 CHF is divided by 2 covers:

Account: A58534.1 = 11,00 CHF/2 covers:

A58534.1 = 5,50 CHF (The account remains) 0,5 Alcohol = 2,50 CHF 0,5 Kitchen = 3,00 CHF

The split creates a new account, with his own reference:

A58534.2 = 5,50 CHF (The account remains) 0,5 Alcohol = 2,50 CHF 0,5 Kitchen = 3,00 CHF

POS Action

POS user charges an account/a receipt with (-) negative items to a room

PMS API - Example request

Step 1

The objects "quantity": 0.50000, & "amount":2.5000, specify the amount & quantity of the item.

{
"name": "Table 5.1",
"openDate": "2022-10-18T13:46:45.735Z",
"closeDate": "2022-10-18T13:46:48.632Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 58534,
"transactions":[
{
"unitAmount": 6,
"quantity": 0.50000,
"amount": 3,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": 0.50000,
"amount": 2.5000,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-10-18T13:46:48.620Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 5.5000,
"methodName": "Cash",
"reservationId": "",
"methodCode":"CASH"
}
],
"receiptId": "R58534.1",
"receipt": null,
"uuid": "IDzTA4uqQTiV48WdNncpyA==",
"id": null,
"initialAccountId": "A58534.1",
"fiscId": "A58534.2",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A58534.2"
}

Step 2

The split created a new account/receipt in the POS (A56397.18), when the new account/receipt is paid, a new POST request is executed.

The objects "quantity": 0.50000, & "amount":2.5000, specify the amount & quantity of the item.

{
"name": "Table 5",
"openDate": "2022-10-18T13:46:17.677Z",
"closeDate": "2022-10-18T13:46:53.684Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 58534,
"transactions":[
{
"unitAmount": 6,
"quantity": 0.50000,
"amount": 3,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": 0.50000,
"amount": 2.5000,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-10-18T13:46:53.672Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 5.5000,
"methodName": "Mastercard",
"reservationId": "",
"methodCode":"MASTERCARD"
}
],
"receiptId": "R58534.2",
"receipt": null,
"uuid": "0ysaW25mSB6emGpfCE16Hg==",
"id": null,
"initialAccountId": "A58534.1",
"fiscId": "A58534.1",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A58534.1"
}

Financial API - Example GET response

Step 1

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does reference an existing transaction, so the "initialAccountId" is a reference to the account from “Step 2”.

The object type, describes the type of transaction. In this example it’s “type”:”SALE”.

{
"accountReference": "IDzTA4uqQTiV48WdNncpyA==",
"accountFiscId": "A58534.2",
"receiptId": "R58534.1",
"source":{
"initialAccountId": "A58534.1",
"previousAccountId":"A58534.1"
},
"salesLines":[
{
"id": "S58534.3",
"totalNetAmountWithTax": "3.00",
"totalNetAmountWithoutTax": "2.79",
"menuListPrice": "3.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.2145",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "0.500",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-10-18T13:46:45.739Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58534,
"deviceName": "iPad13",
"accountProfileCode":""
},
{
"id": "S58534.4",
"totalNetAmountWithTax": "2.50",
"totalNetAmountWithoutTax": "2.32",
"menuListPrice": "2.50",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.1787",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "0.500",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-10-18T13:46:45.747Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58534,
"deviceName": "iPad13",
"accountProfileCode":""
}
],
"payments":[
{
"code": "CASH",
"description": "Cash",
"paymentMethodId": 962442041491481,
"netAmountWithTax": "5.50",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 58534,
"deviceName": "iPad13",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-10-18T13:46:45.735Z",
"timeOfCloseAndPaid": "2022-10-18T13:46:48.632Z",
"tableNumber": "5.1",
"tableName": "Table 5.1",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SPLIT",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 58534,
"deviceName":"iPad13"
}

Step 2

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does reference an existing transaction, so the "initialAccountId" is a reference to the account from “Step 1”.

The object type, describes the type of transaction. In this example it’s “type”:”Sales”.

{
"accountReference": "0ysaW25mSB6emGpfCE16Hg==",
"accountFiscId": "A58534.1",
"receiptId": "R58534.2",
"source":{
"initialAccountId":"A58534.1"
},
"salesLines":[
{
"id": "S58534.1",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-10-18T13:46:24.972Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58534,
"deviceName": "iPad13",
"accountProfileCode":""
},
{
"id": "S58534.2",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-10-18T13:46:25.52Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58534,
"deviceName": "iPad13",
"accountProfileCode":""
},
{
"id": "S58534.5",
"totalNetAmountWithTax": "-3.00",
"totalNetAmountWithoutTax": "-2.79",
"menuListPrice": "-3.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.2145",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "-0.500",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-10-18T13:46:45.744Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58534,
"deviceName": "iPad13",
"accountProfileCode":""
},
{
"id": "S58534.6",
"totalNetAmountWithTax": "-2.50",
"totalNetAmountWithoutTax": "-2.32",
"menuListPrice": "-2.50",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.1787",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "-0.500",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-10-18T13:46:45.75Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58534,
"deviceName": "iPad13",
"accountProfileCode":""
}
],
"payments":[
{
"code": "MASTERCARD",
"description": "Mastercard",
"paymentMethodId": 962442041491482,
"netAmountWithTax": "5.50",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 58534,
"deviceName": "iPad13",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-10-18T13:46:17.677Z",
"timeOfCloseAndPaid": "2022-10-18T13:46:53.684Z",
"tableNumber": "5",
"tableName": "Table 5",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 58534,
"deviceName":"iPad13"
}

Split an Account/Receipt by Amount

In the case that an account is not to be split by covers, items or seats, it can be split by amounts.

The account with its UUID remains unchanged, a payment method is selected for each amount.

Example:

Account A123.45:

1,0 x Alcohol = 5,00 CHF = 100 %
1,0 x Kitchen = 6,00 CHF = 100 %

Total = 11,00 CHF = 200 %

Payment methods:

Cash = 3,50 CHF = 63,66 % from 11,00 CHF
Visa = 2,50 CHF = 45,44 % from 11,00 CHF
Room = 5,00 CHF = 90,90 % from 11,00 CHF

Proposed calculation:

Cash = 3,50 CHF

31,83 % from 1,0 x Alcohol 5,00 CHF = 0,32 x Alcohol = 1,59 CHF 31,83 % from 1,0 x Kitchen 6,00 CHF = 0,32 x Kitchen = 1,91 CHF

Visa = 2,50 CHF

22,72 % from 1,0 x Alcohol 5,00 CHF = 0,23 x Alcohol = 1,14 CHF
22,72 % from 1,0 x Kitchen 6,00 CHF = 0,23 x Kitchen = 1,36 CHF

Room = 5,00 CHF

45,45 % from 1,0 x Alcohol 5,00 CHF = 0,45 x Alcohol = 2,27 CHF
45,45 % from 1,0 x Kitchen 5,00 CHF = 0,45 x Kitchen = 2,73 CHF

POS Action

POS user posts an account/a receipt with several payment methods

PMS API - Example request

The payment array contains several payment objects, with the payment methods applied.

The calculation logic for the amount split is managed by the integrator.

{
"name": "Table 8",
"openDate": "2022-09-01T14:32:22.316Z",
"closeDate": "2022-09-01T14:33:22.728Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
}
],
"payments":[
{
"paymentDate": "2022-09-01T14:32:35.981Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 3.5000,
"methodName": "Cash",
"reservationId": "",
"methodCode":"CASH"
},
{
"paymentDate": "2022-09-01T14:33:09.680Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 1,
"amount": 2.5000,
"methodName": "Visa",
"reservationId": "",
"methodCode":"VISA"
},
{
"paymentDate": "2022-09-01T14:33:22.706Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 5,
"methodName": "Room",
"reservationId": "001",
"methodCode":"IKPMS"
}
],
"receiptId": "R56397.23",
"receipt": null,
"uuid": "5RoePogCR7ifS63GQdLbiw==",
"id": null,
"initialAccountId": "A56397.23",
"fiscId": "A56397.23",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.23"
}

Financial API - Example GET response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

The payment array contains several payment objects, with the payment methods applied.

The calculation logic for the amount split is managed by the integrator.

{
"accountReference": "5RoePogCR7ifS63GQdLbiw==",
"accountFiscId": "A56397.23",
"receiptId": "R56397.23",
"source":{
"initialAccountId": "A56397.23",
},
"salesLines":[
{
"id": "S56397.46",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T14:32:22.319Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
},
{
"id": "S56397.47",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T14:32:22.323Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "VISA",
"description": "Visa",
"paymentMethodId": 962442041491484,
"netAmountWithTax": "2.50",
"currency": "CHF",
"tip": "1.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
},
{
"code": "CASH",
"description": "Cash",
"paymentMethodId": 962442041491481,
"netAmountWithTax": "3.50",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
},
{
"code": "IKPMS",
"description": "Room",
"paymentMethodId": 962442041491639,
"netAmountWithTax": "5.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"externalReference": "1000",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T14:32:22.316Z",
"timeOfCloseAndPaid": "2022-09-01T14:33:22.728Z",
"tableNumber": "8",
"tableName": "Table 8",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "RECALL",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Change the Payment Method of a Closed Account/Receipt

If an account was closed at the POS with an incorrect payment method, a correction of the payment method can be made at the POS, which does not generate a cancellation at the POS.

By changing the payment method, the original posting is not changed, a new POST request is sent to the PMS which sends the originally wrongly selected payment method as a (-) posting and the new payment method as a (+) posting.

POS Action

POS user triggers the action “Change Payment”

PMS API - Example request

{
"name": "Table 6",
"openDate": "2022-09-01T14:37:51.787Z",
"closeDate": "2022-09-01T14:37:51.792Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[

],
"payments":[
{
"paymentDate": "2022-09-01T14:37:51.789Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": -1,
"amount": -11,
"methodName": "Visa",
"reservationId": "",
"methodCode":"VISA"
},
{
"paymentDate": "2022-09-01T14:37:51.791Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 1,
"amount": 11,
"methodName": "Mastercard",
"reservationId": "",
"methodCode":"MASTERCARD"
}
],
"receiptId": "R56397.25",
"receipt": null,
"uuid": "2X2PA1d2TQOk2V1W9RWwYw==",
"id": null,
"initialAccountId": "A56397.24",
"fiscId": "A56397.25",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.25"
}

Financial API - Example GET response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does reference an existing transaction, so the "initialAccountId" is a reference to the account from the original POST request.

{
"accountReference": "2X2PA1d2TQOk2V1W9RWwYw==",
"accountFiscId": "A56397.25",
"receiptId": "R56397.25",
"source":{
"initialAccountId": "A56397.24",
"previousAccountId":"A56397.24"
},
"salesLines":[

],
"payments":[
{
"code": "VISA",
"description": "Visa",
"paymentMethodId": 962442041491484,
"netAmountWithTax": "-11.00",
"currency": "CHF",
"tip": "-1.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName":"iPad3"
},
{
"code": "MASTERCARD",
"description": "Mastercard",
"paymentMethodId": 962442041491482,
"netAmountWithTax": "11.00",
"currency": "CHF",
"tip": "1.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName":"iPad3"
}
],
"timeOfOpening": "2022-09-01T14:37:51.787Z",
"timeOfCloseAndPaid": "2022-09-01T14:37:51.792Z",
"tableName": "Table 6",
"type": "UPDATE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

POS Action

POS user sends a room charge

PMS API - Example request

{
"name": "Table 9",
"openDate": "2022-09-01T14:40:52.775Z",
"closeDate": "2022-09-01T14:41:09.542Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 0.7500,
"quantity": 1,
"amount": 0.7500,
"description": "Servicecharge",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": 0.65,
"quantity": 1,
"amount": 0.65,
"description": "Servicecharge",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-09-01T14:41:09.531Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 12.40,
"methodName": "Cash",
"reservationId": "",
"methodCode":"CASH"
}
],
"receiptId": "R56397.26",
"receipt": null,
"uuid": "ci2FovCESLuOqtQPaLN3iQ==",
"id": null,
"initialAccountId": "A56397.26",
"fiscId": "A56397.26",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.26"
}

Financial API - Example GET response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

{
"accountReference": "ci2FovCESLuOqtQPaLN3iQ==",
"accountFiscId": "A56397.26",
"receiptId": "R56397.26",
"source":{
"initialAccountId":"A56397.26"
},
"salesLines":[
{
"id": "S56397.50",
"totalNetAmountWithTax": "6.75",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.75",
"serviceChargeRate": "12.50",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-01T14:40:57.968Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
},
{
"id": "S56397.51",
"totalNetAmountWithTax": "5.65",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.65",
"serviceChargeRate": "12.50",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T14:40:58.495Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "CASH",
"description": "Cash",
"paymentMethodId": 962442041491481,
"netAmountWithTax": "12.40",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T14:40:52.775Z",
"timeOfCloseAndPaid": "2022-09-01T14:41:09.542Z",
"tableNumber": "9",
"tableName": "Table 9",
"accountProfileCode": "SC",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Refund

The POS action "Refund Receipt" will create a duplicated account (with a new UUID) with negative balance for completing the refund.

POS Action

POS user charges an account/a receipt to the PMS

PMS API - Example POST request

Step 1

Original POST request, which is executed when the account/table is closed.

{
"name": "Table 7",
"openDate": "2022-10-13T12:54:29.258Z",
"closeDate": "2022-10-13T13:17:03.929Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 58395,
"transactions":[
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-10-13T13:17:03.896Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 11,
"methodName": "Cash",
"reservationId": "",
"methodCode":"CASH"
}
],
"receiptId": "R58395.8",
"receipt": null,
"uuid": "XOxaRrxLTGeyDrqI8mkDwQ==",
"id": null,
"initialAccountId": "A58395.8",
"fiscId": "A58395.8",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A58395.8"
}

Step 2

New POST request, with negative values, this POST request can contain further items or another payment method.

{
"name": "Table 7",
"openDate": "2022-10-13T13:17:21.974Z",
"closeDate": "2022-10-13T13:17:27.078Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 58395,
"transactions":[
{
"unitAmount": 6,
"quantity": -1,
"amount": -6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": -1,
"amount": -5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-10-13T13:17:27.055Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": -11,
"methodName": "Cash",
"reservationId": "",
"methodCode":"CASH"
}
],
"receiptId": "R58395.9",
"receipt": null,
"uuid": "zScsho5rRXy7qrFpOU9jIw==",
"id": null,
"initialAccountId": "A58395.8",
"fiscId": "A58395.9",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A58395.9"
}

Financial API - Example GET response

Step 1

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

The object type, describes the type of transaction. In this example it’s “type”:”SALE”.

{
"accountReference": "XOxaRrxLTGeyDrqI8mkDwQ==",
"accountFiscId": "A58395.8",
"receiptId": "R58395.8",
"source":{
"initialAccountId": "A58395.8"
},
"salesLines":[
{
"id": "S58395.11",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-10-13T13:17:02.247Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58395,
"deviceName": "iPad10",
"accountProfileCode":""
},
{
"id": "S58395.12",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-10-13T13:17:02.503Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58395,
"deviceName": "iPad10",
"accountProfileCode":""
}
],
"payments":[
{
"code": "CASH",
"description": "Cash",
"paymentMethodId": 962442041491481,
"netAmountWithTax": "11.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 58395,
"deviceName": "iPad10",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-10-13T12:54:29.258Z",
"timeOfCloseAndPaid": "2022-10-13T13:17:03.929Z",
"tableNumber": "7",
"tableName": "Table 7",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 58395,
"deviceName":"iPad10"
}

Step 2

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does reference an existing transaction, so the "initialAccountId" is a reference to the account from “Step 1”.

The object type, describes the type of transaction. In this example it’s “type”:”REFUND”.

{
"accountReference": "zScsho5rRXy7qrFpOU9jIw==",
"accountFiscId": "A58395.9",
"receiptId": "R58395.9",
"source":{
"initialAccountId": "A58395.8",
"previousAccountId":"A58395.8"
},
"salesLines":[
{
"id": "S58395.13",
"totalNetAmountWithTax": "-6.00",
"totalNetAmountWithoutTax": "-5.57",
"menuListPrice": "-6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-10-13T13:17:21.978Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58395,
"deviceName": "iPad10",
"accountProfileCode":""
},
{
"id": "S58395.14",
"totalNetAmountWithTax": "-5.00",
"totalNetAmountWithoutTax": "-4.64",
"menuListPrice": "-5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-10-13T13:17:21.982Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58395,
"deviceName": "iPad10",
"accountProfileCode":""
}
],
"payments":[
{
"code": "CASH",
"description": "Cash",
"paymentMethodId": 962442041491481,
"netAmountWithTax": "-11.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 58395,
"deviceName": "iPad10",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-10-13T13:17:21.974Z",
"timeOfCloseAndPaid": "2022-10-13T13:17:27.078Z",
"tableNumber": "7",
"tableName": "Table 7",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "REFUND",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 58395,
"deviceName":"iPad10"
}

Cross - Business - Location Transfer

To ensure that the revenue remains in the location in which the item was consumed/ordered, a charge with a payment method is executed in the source location.

In the target location the transferred account arrives with a negative balance, so that when the account is closed there are no item duplicates. ( (-) + (+) = 0 )

POS Action

POS user executes a Cross - Business - Location - Transfer

PMS API - Example POST request

Step 1 Source Location

Transfer is executed.

{
"name": "Table 5",
"openDate": "2022-09-05T14:20:27.706Z",
"closeDate": "2022-09-05T14:22:28.042Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56619,
"transactions":[
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
}
],
"payments":[
{
"paymentDate": "2022-09-05T14:22:28.041Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 11,
"methodName": "Outlet Transfer",
"reservationId": "",
"methodCode":"OUT"
}
],
"receiptId": "R56619.1",
"receipt": null,
"uuid": "6h_6BtpiS3ekGo54ynzfew==",
"id": null,
"initialAccountId": "A56619.1",
"fiscId": "A56619.1",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56619.1"
}

Step 2 Target Location

New account in the target location triggers a new POST request with negative items, the items will be the same as in the POST request from the source location.

{
"name": "Trx Mock PMS - EMEA",
"openDate": "2022-09-05T14:22:26.015Z",
"closeDate": "2022-09-05T14:22:26.047Z",
"covers": 0,
"ownerId": 172625,
"ownerName": "OutTransfer",
"deviceId": 56616,
"transactions":[
{
"unitAmount": 5,
"quantity": -1,
"amount": -5,
"description": "Alcohol",
"staffId": 172625,
"staffName": "OutTransfer",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": 6,
"quantity": -1,
"amount": -6,
"description": "Kitchen",
"staffId": 172625,
"staffName": "OutTransfer",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
}
],
"payments":[
{
"paymentDate": "2022-09-05T14:22:26.047Z",
"staffId": 172625,
"staffName": "OutTransfer",
"gratuity": 0,
"amount": -11,
"methodName": "Outlet Transfer",
"reservationId": "",
"methodCode":"OUT"
}
],
"receiptId": ,
"receipt": null,
"uuid": "qAON9A3WTU-DHumvhHxL8Q==",
"id": null,
"initialAccountId": "A56616.1",
"fiscId": "A56616.1",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56616.1"
}

Step 3 Target Location

As soon as the transferred account is paid in the target location, a new POST request with positive values is executed.

It is quite possible that additional items will be added to the existing items.

{
"name": "Trx Mock PMS - EMEA",
"openDate": "2022-09-05T14:22:26.278Z",
"closeDate": "2022-09-05T14:33:15.557Z",
"covers": 0,
"ownerId": 172625,
"ownerName": "OutTransfer",
"deviceId": 56616,
"transactions":[
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 172625,
"staffName": "OutTransfer",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 172625,
"staffName": "OutTransfer",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
}
],
"payments":[
{
"paymentDate": "2022-09-05T14:33:15.539Z",
"staffId": 172625,
"staffName": "OutTransfer",
"gratuity": 1,
"amount": 11,
"methodName": "Mastercard",
"reservationId": "",
"methodCode":"MASTERCARD"
}
],
"receiptId": "R56616.1",
"receipt": null,
"uuid": "jtqmbhRKRwG7uuepqGqLqQ==",
"id": null,
"initialAccountId": "A56619.1",
"fiscId": "A56616.2",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56616.2"
}

Financial API - Example GET response

Step 1 Source Location

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

The object type, describes the type of transaction. In this example it’s “type”:”SALE”.

{
"accountReference": "6h_6BtpiS3ekGo54ynzfew==",
"accountFiscId": "A56619.1",
"receiptId": "R56619.1",
"source":{
"initialAccountId":"A56619.1"
},
"salesLines":[
{
"id": "S56619.1",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-05T14:22:08.818Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56619,
"deviceName": "iPad6",
"accountProfileCode":""
},
{
"id": "S56619.2",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-05T14:22:09.957Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56619,
"deviceName": "iPad6",
"accountProfileCode":""
}
],
"payments":[
{
"code": "OUT",
"description": "Outlet Transfer",
"paymentMethodId": 962442041491637,
"netAmountWithTax": "11.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56619,
"deviceName": "iPad6",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-05T14:20:27.706Z",
"timeOfCloseAndPaid": "2022-09-05T14:22:28.042Z",
"tableNumber": "5",
"tableName": "Table 5",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56619,
"deviceName":"iPad6"
}

Step 2 Target Location

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does reference an existing transaction, so the "initialAccountId" is a reference to the account from “Step 1” from the source location.

The object type, describes the type of transaction. In this example it’s “type”:”CROSS_BL”.

{
"accountReference": "qAON9A3WTU-DHumvhHxL8Q==",
"accountFiscId": "A56616.1",
"source":{
"initialAccountId": "A56619.1",
"previousAccountId":"A56619.1"
},
"salesLines":[
{
"id": "S56616.1",
"totalNetAmountWithTax": "-5.00",
"totalNetAmountWithoutTax": "-4.64",
"menuListPrice": "-5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491705,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-05T14:22:26.029Z",
"staffId": 172625,
"staffName": "OutTransfer",
"deviceId": 56616,
"deviceName": "iPad5",
"accountProfileCode":""
},
{
"id": "S56616.2",
"totalNetAmountWithTax": "-6.00",
"totalNetAmountWithoutTax": "-5.57",
"menuListPrice": "-6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491705,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-05T14:22:26.041Z",
"staffId": 172625,
"staffName": "OutTransfer",
"deviceId": 56616,
"deviceName": "iPad5",
"accountProfileCode":""
}
],
"payments":[
{
"code": "OUT",
"description": "Outlet Transfer",
"paymentMethodId": 962442041491637,
"netAmountWithTax": "-11.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56616,
"deviceName": "iPad5",
"staffId": 172625,
"staffName": "OutTransfer",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491705
}
],
"timeOfOpening": "2022-09-05T14:22:26.015Z",
"timeOfCloseAndPaid": "2022-09-05T14:22:26.047Z",
"tableName": "Trx Mock PMS - EMEA",
"accountProfileCode": "",
"ownerName": "OutTransfer",
"ownerId": 172625,
"type": "CROSS_BL",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56616,
"deviceName":"iPad5"
}

Step 3 Target Location

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does reference an existing transaction, so the "initialAccountId" is a reference to the account from “Step 1”.

The object type, describes the type of transaction. In this example it’s “type”:”SALE”.

{
"accountReference": "jtqmbhRKRwG7uuepqGqLqQ==",
"accountFiscId": "A56616.2",
"receiptId": "R56616.1",
"source":{
"initialAccountId": "A56619.1",
"previousAccountId":"A56616.1"
},
"salesLines":[
{
"id": "S56616.3",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491705,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-05T14:22:26.281Z",
"staffId": 172625,
"staffName": "OutTransfer",
"deviceId": 56616,
"deviceName": "iPad5",
"accountProfileCode":""
},
{
"id": "S56616.4",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491705,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-09-05T14:22:26.284Z",
"staffId": 172625,
"staffName": "OutTransfer",
"deviceId": 56616,
"deviceName": "iPad5",
"accountProfileCode":""
}
],
"payments":[
{
"code": "MASTERCARD",
"description": "Mastercard",
"paymentMethodId": 962442041491482,
"netAmountWithTax": "11.00",
"currency": "CHF",
"tip": "1.00",
"type": "NORMAL",
"deviceId": 56616,
"deviceName": "iPad5",
"staffId": 172625,
"staffName": "OutTransfer",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491705
}
],
"timeOfOpening": "2022-09-05T14:22:26.278Z",
"timeOfCloseAndPaid": "2022-09-05T14:33:15.557Z",
"tableName": "Trx Mock PMS - EMEA",
"accountProfileCode": "",
"ownerName": "OutTransfer",
"ownerId": 172625,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56616,
"deviceName":"iPad5"
}

Gift Cards

In the Lightspeed Restaurant K-Series POS, gift cards (vouchers) can be managed.

When a gift card is filled with a value, the payment method used is stored with a (+) value in the POST request. The payment method of the gift card is stored with a (-) value. This makes it possible to track the total current assets of the gift cards.

No items are used that generate revenue, as they are pure value vouchers.

POS Action

POS user refills a Lightspeed gift card

PMS API - Example POST request

Step 1 Fill the gift card

{
"name": "",
"openDate": "2022-09-01T15:12:32.451Z",
"closeDate": "2022-09-01T15:12:32.464Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[

],
"payments":[
{
"paymentDate": "2022-09-01T15:12:32.457Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": -5,
"methodName": "Giftcard",
"reservationId": "",
"methodCode":"IKGIFT"
},
{
"paymentDate": "2022-09-01T15:12:32.461Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 5,
"methodName": "Cash",
"reservationId": "",
"methodCode":"CASH"
}
],
"receiptId": "R56397.29",
"receipt": null,
"uuid": "FtXa2k-sTvuO1jB-IHfG3w==",
"id": null,
"initialAccountId": "A56397.29",
"fiscId": "A56397.29",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.29"
}

Step 2 Redeem

When a gift card is redeemed, a POST request is sent containing items and payments.

The payment method is always IKGIFT, and the current assets are thereby reduced.

{
"name": "",
"openDate": "2022-09-01T14:47:44.298Z",
"closeDate": "2022-09-01T15:13:59.333Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-09-01T15:13:59.303Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 5,
"methodName": "Giftcard",
"reservationId": "",
"methodCode":"IKGIFT"
}
],
"receiptId": "R56397.30",
"receipt": null,
"uuid": "ZmFrZQo=",
"id": null,
"initialAccountId": "A56397.30",
"fiscId": "A56397.30",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.30"
}

Financial API - Example POST request:

#### Step 1 Fill the gift card

To match the POST from the PMS API with the response from the Financial API, please use the `uuid` from the PMS API, this references to the `accountReference` in the Financial API.

The object `type`, describes the type of transaction. In this example it’s `“type”:”TRANSFER”`.
```json
{
"accountReference": "FtXa2k-sTvuO1jB-IHfG3w==",
"accountFiscId": "A56397.29",
"receiptId": "R56397.29",
"source":{
"initialAccountId":"A56397.29"
},
"salesLines":[

],
"payments":[
{
"code": "IKGIFT",
"description": "Giftcard",
"paymentMethodId": 962442041491487,
"netAmountWithTax": "-5.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"externalReference": "44851",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
},
{
"code": "CASH",
"description": "Cash",
"paymentMethodId": 962442041491481,
"netAmountWithTax": "5.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T15:12:32.451Z",
"timeOfCloseAndPaid": "2022-09-01T15:12:32.464Z",
"tableName": "",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "TRANSFER",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Step 2 Redeem

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

The object type, describes the type of transaction. In this example it’s “type”:”SALE”.

{
"accountReference": "ZmFrZQo=",
"accountFiscId": "A56397.30",
"receiptId": "R56397.30",
"source":{
"initialAccountId":"A56397.30"
},
"salesLines":[
{
"id": "S56397.56",
"totalNetAmountWithTax": "5.00",
"totalNetAmountWithoutTax": "4.64",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.3575",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-09-01T15:13:50.145Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 56397,
"deviceName": "iPad3",
"accountProfileCode":""
}
],
"payments":[
{
"code": "IKGIFT",
"description": "Geschenkkarte",
"paymentMethodId": 962442041491487,
"netAmountWithTax": "5.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"externalReference": "44851",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T14:47:44.298Z",
"timeOfCloseAndPaid": "2022-09-01T15:13:59.333Z",
"tableName": "",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Transfer Operation

This POS action is similar to the POS action "Change Payment". (Point 2.12) The difference is that the Transfer Operation is not linked to a specific account/receipt. Amounts can be changed freely.

POS Action

POS user executes a transfer operation

PMS API - Example POST request

{
"name": "TransferOperation",
"openDate": "2022-09-01T15:15:45.262Z",
"closeDate": "2022-09-01T15:15:45.276Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 56397,
"transactions":[

],
"payments":[
{
"paymentDate": "2022-09-01T15:15:45.270Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": -10,
"methodName": "Maestro",
"reservationId": "",
"methodCode":"MAESTRO"
},
{
"paymentDate": "2022-09-01T15:15:45.274Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 10,
"methodName": "Visa",
"reservationId": "",
"methodCode":"VISA"
}
],
"receiptId": "R56397.31",
"receipt": null,
"uuid": "WaDC0CDbRdag8lUTSYkEbw==",
"id": null,
"initialAccountId": "A56397.31",
"fiscId": "A56397.31",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier": "A56397.31"
}

Financial API - Example POST request

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

The object type, describes the type of transaction. In this example it’s “type”:”TRANSFER”.

{
"accountReference": "WaDC0CDbRdag8lUTSYkEbw==",
"accountFiscId": "A56397.31",
"receiptId": "R56397.31",
"source":{
"initialAccountId":"A56397.31"
},
"salesLines":[

],
"payments":[
{
"code": "MAESTRO",
"description": "Maestro",
"paymentMethodId": 962442041491483,
"netAmountWithTax": "-10.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
},
{
"code": "VISA",
"description": "Visa",
"paymentMethodId": 962442041491484,
"netAmountWithTax": "10.00",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 56397,
"deviceName": "iPad3",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-09-01T15:15:45.262Z",
"timeOfCloseAndPaid": "2022-09-01T15:15:45.276Z",
"tableName": "TransferOperation",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "TRANSFER",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 56397,
"deviceName":"iPad3"
}

Handling of Discounts - Item Level

Discounts do not change the quantity of an item in the payload, but reduce the unitAmount and the amount of the item.

POS Action

POS user applies an a 50% and a 10% discount for different items

PMS API - Example POST request

{
"name": "Table 5",
"openDate": "2022-10-13T12:30:36.673Z",
"closeDate": "2022-10-13T12:38:37.917Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 58395,
"transactions":[
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": -2.5000,
"quantity": 1,
"amount": -2.5000,
"description": "50% Discount",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": -0.6000,
"quantity": 1,
"amount": -0.6000,
"description": "10% Discount",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
}
],
"payments":[
{
"paymentDate": "2022-10-13T12:38:37.854Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 7.9000,
"methodName": "Cash",
"reservationId": "",
"methodCode":"CASH"
}
],
"receiptId": "R58395.6",
"receipt": null,
"uuid": "amExe8_fRWmht6uaQpdf6Q==",
"id": null,
"initialAccountId": "A58395.6",
"fiscId": "A58395.6",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier":"A58395.6"
}

Financial API - Example POST request

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does reference an existing transaction, so the "initialAccountId" is a reference to the account from the original POST request.

{
"accountReference": "amExe8_fRWmht6uaQpdf6Q==",
"accountFiscId": "A58395.6",
"receiptId": "R58395.6",
"source":{
"initialAccountId":"A58395.6"
},
"salesLines":[
{
"id": "S58395.6",
"totalNetAmountWithTax": "2.50",
"totalNetAmountWithoutTax": "2.32",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "2.50",
"taxAmount": "0.1787",
"discountType": "DISCOUNT",
"discountCode": "50PZT",
"discountName": "50% Discount",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "2.50",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-10-13T12:38:27.39Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58395,
"deviceName": "iPad10",
"accountProfileCode":""
},
{
"id": "S58395.7",
"totalNetAmountWithTax": "-6.00",
"totalNetAmountWithoutTax": "-5.57",
"menuListPrice": "-6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "-0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "-1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-10-13T12:38:37.472Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58395,
"deviceName": "iPad10",
"accountProfileCode":""
},
{
"id": "S58395.8",
"totalNetAmountWithTax": "5.40",
"totalNetAmountWithoutTax": "5.01",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.60",
"taxAmount": "0.3861",
"discountType": "DISCOUNT",
"discountCode": "10PZT",
"discountName": "10% Discount",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.60",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-10-13T12:38:37.484Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58395,
"deviceName": "iPad10",
"accountProfileCode":""
},
{
"id": "S58395.5",
"totalNetAmountWithTax": "6.00",
"totalNetAmountWithoutTax": "5.57",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.4290",
"accountDiscountAmount": "0.00",
"totalDiscountAmount": "0.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-10-13T12:30:41.354Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58395,
"deviceName": "iPad10",
"accountProfileCode":""
}
],
"payments":[
{
"code": "CASH",
"description": "Cash",
"paymentMethodId": 962442041491481,
"netAmountWithTax": "7.90",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 58395,
"deviceName": "iPad10",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-10-13T12:30:36.673Z",
"timeOfCloseAndPaid": "2022-10-13T12:38:37.917Z",
"tableNumber": "5",
"tableName": "Table 5",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 58395,
"deviceName":"iPad10"
}

Handling of Discounts - Account/Receipt Level

Discounts do not change the quantity of an item in the payload, but reduce the unitAmount and the amount of the item.

POS Action

POS user applies an a 50% for the entire receipt

PMS API - Example POST request

{
"name": "Table 6",
"openDate": "2022-10-13T12:41:45.633Z",
"closeDate": "2022-10-13T12:42:03.687Z",
"covers": 0,
"ownerId": 171861,
"ownerName": "Manager",
"deviceId": 58395,
"transactions":[
{
"unitAmount": 6,
"quantity": 1,
"amount": 6,
"description": "Kitchen",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": -3,
"quantity": 1,
"amount": -3,
"description": "50% discount",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491505,
"groupName": "Kitchen",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI3"
},
{
"unitAmount": 5,
"quantity": 1,
"amount": 5,
"description": "Alcohol",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
},
{
"unitAmount": -2.5000,
"quantity": 1,
"amount": -2.5000,
"description": "50% discount",
"staffId": 171861,
"staffName": "Manager",
"groupId": 962442041491504,
"groupName": "Alcohol",
"taxId": 962442041491464,
"taxName": "MwSt. 7.7%",
"taxRate": 1.0770,
"taxIncluded": true,
"sku":"OI2"
}
],
"payments":[
{
"paymentDate": "2022-10-13T12:42:03.675Z",
"staffId": 171861,
"staffName": "Manager",
"gratuity": 0,
"amount": 5.5000,
"methodName": "Cash",
"reservationId": "",
"methodCode":"CASH"
}
],
"receiptId": "R58395.7",
"receipt": null,
"uuid": "H3jO60bmQReuJhgPH72fkw==",
"id": null,
"initialAccountId": "A58395.7",
"fiscId": "A58395.7",
"businessExternalReference": "fake-business-external-reference",
"apiKey": "fake-api-key",
"identifier":"A58395.7"
}

Financial API - Example POST response

To match the POST from the PMS API with the response from the Financial API, please use the uuid from the PMS API, this references to the accountReference in the Financial API.

In this case, this example does reference an existing transaction, so the "initialAccountId" is a reference to the account from the original POST request.

{
"accountReference": "H3jO60bmQReuJhgPH72fkw==",
"accountFiscId": "A58395.7",
"receiptId": "R58395.7",
"source":{
"initialAccountId":"A58395.7"
},
"salesLines":[
{
"id": "S58395.9",
"totalNetAmountWithTax": "3.00",
"totalNetAmountWithoutTax": "2.79",
"menuListPrice": "6.00",
"unitCostPrice": "1.50",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.2145",
"accountDiscountAmount": "3.00",
"accountDiscountType": "DISCOUNT",
"accountDiscountCode": "50PZT",
"accountDiscountName": "50% discount",
"totalDiscountAmount": "3.00",
"sku": "OI3",
"name": "Kitchen",
"statisticGroup": "Kitchen",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491505,
"name": "Kitchen",
"code":"222"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Kitchen"
}
],
"timeOfSale": "2022-10-13T12:41:55.78Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58395,
"deviceName": "iPad10",
"accountProfileCode":""
},
{
"id": "S58395.10",
"totalNetAmountWithTax": "2.50",
"totalNetAmountWithoutTax": "2.32",
"menuListPrice": "5.00",
"unitCostPrice": "1.00",
"serviceCharge": "0.00",
"discountAmount": "0.00",
"taxAmount": "0.1787",
"accountDiscountAmount": "2.50",
"accountDiscountType": "DISCOUNT",
"accountDiscountCode": "50PZT",
"accountDiscountName": "50% discount",
"totalDiscountAmount": "2.50",
"sku": "OI2",
"name": "Alcohol",
"statisticGroup": "Alcohol",
"quantity": "1.000",
"taxRatePercentage": "7.70",
"accountingGroup":{
"accountingGroupId": 962442041491504,
"name": "Alcohol",
"code":"111"
},
"currency": "CHF",
"tags":[

],
"revenueCenter": "POS 1",
"revenueCenterId": 962442041491478,
"categories":[
{
"category": "default",
"value":"Alcohol"
}
],
"timeOfSale": "2022-10-13T12:41:56.087Z",
"staffId": 171861,
"staffName": "Manager",
"deviceId": 58395,
"deviceName": "iPad10",
"accountProfileCode":""
}
],
"payments":[
{
"code": "CASH",
"description": "Cash",
"paymentMethodId": 962442041491481,
"netAmountWithTax": "5.50",
"currency": "CHF",
"tip": "0.00",
"type": "NORMAL",
"deviceId": 58395,
"deviceName": "iPad10",
"staffId": 171861,
"staffName": "Manager",
"revenueCenter": "POS 1",
"revenueCenterId":962442041491478
}
],
"timeOfOpening": "2022-10-13T12:41:45.633Z",
"timeOfCloseAndPaid": "2022-10-13T12:42:03.687Z",
"tableNumber": "6",
"tableName": "Table 6",
"accountProfileCode": "",
"ownerName": "Manager",
"ownerId": 171861,
"type": "SALE",
"nbCovers": 0.0,
"dineIn": true,
"deviceId": 58395,
"deviceName":"iPad10"
}