Tabs
Customer tabs and running bills
Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidQuery Parameters
Payment amount in cents. 0 is a valid value: the storefront still hits this endpoint when the cart nets to 0 (voucher fully covers the order) and the handler short-circuits with an empty paymentMethodsResponse so the drawer can route to the complimentary settlement path without a PSP method selection.
0 <= valueISO 4217 currency code (e.g. SEK, EUR)
ISO 3166-1 alpha-2 country code (e.g. SE, NL)
Optional tab member UUID. When supplied, the handler resolves the paying user and includes a shopperReference so Adyen returns storedPaymentMethods (saved cards) for the shopper. Omit for guest checkouts.
uuidOptional client platform. Forwarded to Adyen /paymentMethods so it returns platform-native wallets — notably Google Pay (returned only for channel=Android). Omit for web (Adyen defaults to Web behaviour).
Value in
- "iOS"
- "Android"
- "Web"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tab/497f6eca-6276-4993-bfeb-53cbbbba6f08/payment-methods?amountCents=0¤cyCode=string"{ "status": "success", "data": { "paymentMethodsResponse": {}, "clientKey": "string", "environment": "test", "adyenIntegrationId": "4cdd3acb-5beb-44ce-a3ea-a62f1db97794", "freeOrder": true }, "meta": {}}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Purchase intent ID to cancel
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tab/cancel" \ -H "Content-Type: application/json" \ -d '{ "purchase_intent_id": "abf79337-36d4-4618-b765-52207318d737" }'{ "status": "success", "data": { "purchase_intent_id": "abf79337-36d4-4618-b765-52207318d737", "tab_settlement_id": "9d002bc6-2c1f-40fa-ba63-9cd0d01dfd8e", "tab_id": "7d6d1470-3aa0-4898-b980-676d9bf5a62e", "canceled": true }, "meta": {}}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Tab ID to cancel all payments for
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tab/cancel-all" \ -H "Content-Type: application/json" \ -d '{ "tab_id": "7d6d1470-3aa0-4898-b980-676d9bf5a62e" }'{ "status": "success", "data": { "tab_id": "7d6d1470-3aa0-4898-b980-676d9bf5a62e", "canceled_count": 0, "purchase_intent_ids": [ "df4cdde4-a797-45b0-a847-b37397c83ec1" ] }, "meta": {}}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
UUID of the tab to pay for
uuidID of the tab member making the payment (UUID). Optional - will be auto-resolved from JWT token if not provided.
Payment method to use
Value in
- "prepaid"
- "invoice"
- "swish"
- "terminal"
- "online"
- "gift_card"
Array of kitchen dispatch item IDs to pay for (ITEM mode)
Net amount to charge in cents. When pre_discount_amount_cents is omitted, legacy amount-mode voucher gross-up semantics apply.
0 <= valueOptional pre-discount tab value settled by this amount-payment leg. Enables an explicit zero net charge when a voucher fully covers a split.
0 <= valueTerminal ID (required for terminal payments)
uuidReturn URL after payment (required for online/swish payments)
uriTip amount in cents
0 <= value <= 21474836470Additional metadata for the payment
Voucher codes to apply to the payment
Invoice recipient UUID (for invoice payments)
uuidInvoice recipient reference UUID — draft invoices accumulate per (recipient, reference)
uuidGift card code for gift_card payment method (format: XXXX-XXXX-XXXX)
Issuing location when a code is shared by eligible locations
1 <= valueAdyen payment method data from Drop-in/Components (triggers Advanced flow when present)
User confirmed: cancel the in-progress Adyen CS payment and start a new one
When true, persist the card token after Adyen Authorised so the user can re-use it. Default false. Honored when location has the instant_pay_v2 feature flag enabled.
UUID of a previously saved payment method to charge. Forwarded to payment-service alongside the Adyen Advanced PSP payload.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tab/pay" \ -H "Content-Type: application/json" \ -d '{ "tab_id": "7d6d1470-3aa0-4898-b980-676d9bf5a62e", "payment_method": "prepaid" }'{ "status": "success", "data": { "purchase_intent_id": "abf79337-36d4-4618-b765-52207318d737", "tab_settlement_id": "9d002bc6-2c1f-40fa-ba63-9cd0d01dfd8e", "payment_method": "string", "payment_mode": "ITEM", "mode_switched": true, "terminal_id": "1950b55f-ca16-4e1b-b652-2d6bf2615c40", "amount_cents": 0, "complimentary": true, "psp_response": { "success": true, "message": "string", "psp": "string", "type": "string", "resultCode": "string", "action": {}, "pspReference": "string", "refusalReason": "string", "refusalReasonCode": "string", "checkoutUrl": "string", "checkoutUrlFallback": { "purchaseIntentId": "string", "qrCodeSvgBase64": "string" } } }, "meta": {}}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Purchase intent ID from the initial /tab/pay response
uuidAdyen payment details object: state.data.details from onAdditionalDetails, or { redirectResult } read from the return URL after a full-page redirect
Optional Adyen paymentData blob for redirect-style flows; the purchase engine falls back to the value it persisted
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tab/pay/details" \ -H "Content-Type: application/json" \ -d '{ "purchase_intent_id": "abf79337-36d4-4618-b765-52207318d737", "details": {} }'{ "status": "success", "data": { "resultCode": "string", "action": {}, "pspReference": "string", "refusalReason": "string", "refusalReasonCode": "string", "state": "string" }, "meta": {}}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Tab ID to recalculate balance for
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tab/recalculate" \ -H "Content-Type: application/json" \ -d '{ "tab_id": "7d6d1470-3aa0-4898-b980-676d9bf5a62e" }'{ "status": "success", "data": { "tab_id": "7d6d1470-3aa0-4898-b980-676d9bf5a62e", "total_amount_cents": 0, "paid_amount_cents": 0, "remaining_balance_cents": 0, "item_count": 0, "purchase_count": 0, "previous_total": 0, "previous_paid": 0, "total_changed": true, "paid_changed": true }, "meta": {}}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Query Parameters
Filter by location ID
Filter by tab state
Value in
- "initiated"
- "started"
- "instant"
- "closed"
- "settled"
- "aborted"
- "action_required"
Filter by table/QR code UUID
Page number
1 <= value1Items per page
1 <= value <= 10020Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs"{ "status": "success", "data": { "tabs": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "locationId": 0, "latestState": "initiated", "selectedPaymentFlow": "open_tab", "paymentMode": "ITEM", "paymentSplit": 2, "totalAmountCents": 0, "paidAmountCents": 0, "remainingBalanceCents": 0, "storefrontQrCodeId": "string", "bookingId": "9a471128-954e-4e64-bde9-e8147015df89", "bookingConfirmationCode": "string", "tabMembers": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "memberCount": 0, "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ], "kitchenDispatches": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "locationId": 0, "dailyOrderNumber": 0, "latestState": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ] } ], "vouchers": [ { "id": 0, "discountId": 0, "discountCode": "string", "appliedAt": "2019-08-24T14:15:22Z", "voucherName": "string", "voucherType": "string", "typeSpecification": {}, "maxDiscountAmountCents": 0, "maxUses": 0, "timesUsed": 0, "hasUsesLeft": true, "remainingBalanceCents": 0, "displayTitle": "string", "displayDescription": "string", "displayImageUrl": "string" } ], "notes": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "entityType": "string", "entityId": "string", "note": "string", "locationId": 0, "sortOrder": 0, "createdByRetailerUserId": 0, "createdByName": "string", "updatedByRetailerUserId": 0, "updatedByName": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "pagination": { "page": 1, "limit": 1, "total": 0, "totalPages": 0 } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "status": "success", "data": { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "locationId": 0, "latestState": "initiated", "selectedPaymentFlow": "open_tab", "paymentMode": "ITEM", "paymentSplit": 2, "totalAmountCents": 0, "paidAmountCents": 0, "remainingBalanceCents": 0, "storefrontQrCodeId": "string", "bookingId": "9a471128-954e-4e64-bde9-e8147015df89", "bookingConfirmationCode": "string", "tabMembers": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "memberCount": 0, "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ], "kitchenDispatches": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "locationId": 0, "dailyOrderNumber": 0, "latestState": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ] } ], "vouchers": [ { "id": 0, "discountId": 0, "discountCode": "string", "appliedAt": "2019-08-24T14:15:22Z", "voucherName": "string", "voucherType": "string", "typeSpecification": {}, "maxDiscountAmountCents": 0, "maxUses": 0, "timesUsed": 0, "hasUsesLeft": true, "remainingBalanceCents": 0, "displayTitle": "string", "displayDescription": "string", "displayImageUrl": "string" } ], "notes": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "entityType": "string", "entityId": "string", "note": "string", "locationId": 0, "sortOrder": 0, "createdByRetailerUserId": 0, "createdByName": "string", "updatedByRetailerUserId": 0, "updatedByName": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Optional custom field operations, saved atomically with this record. Omitted values are unchanged; null clears. Use fieldId or a stable key. expectedVersion is optional; supply it to reject conflicting edits.
items <= 100Response Body
application/json
curl -X PATCH "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{ "customFields": [ {} ] }'{ "status": "string", "data": { "id": "string", "locationId": 0, "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} } }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Optional comment explaining why the tab is being closed
If true, forces the tab to close (state becomes "aborted"). If false, normal close (state becomes "closed") and only works on non-closed tabs
falseResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/close" \ -H "Content-Type: application/json" \ -d '{}'{ "status": "success", "data": { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "locationId": 0, "latestState": "initiated", "selectedPaymentFlow": "open_tab", "paymentMode": "ITEM", "paymentSplit": 2, "totalAmountCents": 0, "paidAmountCents": 0, "remainingBalanceCents": 0, "storefrontQrCodeId": "string", "bookingId": "9a471128-954e-4e64-bde9-e8147015df89", "bookingConfirmationCode": "string", "tabMembers": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "memberCount": 0, "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ], "kitchenDispatches": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "locationId": 0, "dailyOrderNumber": 0, "latestState": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ] } ], "vouchers": [ { "id": 0, "discountId": 0, "discountCode": "string", "appliedAt": "2019-08-24T14:15:22Z", "voucherName": "string", "voucherType": "string", "typeSpecification": {}, "maxDiscountAmountCents": 0, "maxUses": 0, "timesUsed": 0, "hasUsesLeft": true, "remainingBalanceCents": 0, "displayTitle": "string", "displayDescription": "string", "displayImageUrl": "string" } ], "notes": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "entityType": "string", "entityId": "string", "note": "string", "locationId": 0, "sortOrder": 0, "createdByRetailerUserId": 0, "createdByName": "string", "updatedByRetailerUserId": 0, "updatedByName": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Optional comment explaining the correction (rättelse)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/correct" \ -H "Content-Type: application/json" \ -d '{}'{ "status": "success", "data": { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "locationId": 0, "latestState": "initiated", "selectedPaymentFlow": "open_tab", "paymentMode": "ITEM", "paymentSplit": 2, "totalAmountCents": 0, "paidAmountCents": 0, "remainingBalanceCents": 0, "storefrontQrCodeId": "string", "bookingId": "9a471128-954e-4e64-bde9-e8147015df89", "bookingConfirmationCode": "string", "tabMembers": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "memberCount": 0, "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ], "kitchenDispatches": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "locationId": 0, "dailyOrderNumber": 0, "latestState": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ] } ], "vouchers": [ { "id": 0, "discountId": 0, "discountCode": "string", "appliedAt": "2019-08-24T14:15:22Z", "voucherName": "string", "voucherType": "string", "typeSpecification": {}, "maxDiscountAmountCents": 0, "maxUses": 0, "timesUsed": 0, "hasUsesLeft": true, "remainingBalanceCents": 0, "displayTitle": "string", "displayDescription": "string", "displayImageUrl": "string" } ], "notes": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "entityType": "string", "entityId": "string", "note": "string", "locationId": 0, "sortOrder": 0, "createdByRetailerUserId": 0, "createdByName": "string", "updatedByRetailerUserId": 0, "updatedByName": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Specific coursing order to set. If omitted, advances to the next available coursing level.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/coursing" \ -H "Content-Type: application/json" \ -d '{}'{ "status": "success", "data": { "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "previousCoursingOrder": 0, "coursingOrder": 0, "coursingTitle": "string" }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/string/debug"{ "status": "success", "data": { "tab": {}, "balance": {}, "summary": {}, "verification": {}, "purchases": [ {} ], "items": [ {} ] }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
User identification using priority system
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/join" \ -H "Content-Type: application/json" \ -d '{ "tabMember": {} }'{ "status": "success", "data": { "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "isNewMember": true, "tabState": "string" }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidRequest Body
application/json
At least one of userId, email, or phone is required. Resolution priority: userId > email > phone
TypeScript Definitions
Use the request body type in TypeScript.
At least one of userId, email, or phone is required. Resolution priority: userId > email > phone
User ID (Priority 1 - direct lookup)
Email address (Priority 2 - lookup by email)
emailPhone number (Priority 3 - lookup by phone)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/members" \ -H "Content-Type: application/json" \ -d '{}'{ "status": "success", "data": { "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "isNewMember": true, "user": { "id": 0, "email": "string", "name": "string", "phone": "string" } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidTab member UUID to remove
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/members/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "status": "success", "data": { "removed": true, "memberUuid": "97e4090d-352f-4f2b-a94e-17624957abe1" }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidTab member UUID
uuidRequest Body
application/json
At least one of email, phone, or name is required. Non-empty fields are written to the tab member's user row; empty fields are ignored. Only applies to anonymous guest users (users.guest=true).
TypeScript Definitions
Use the request body type in TypeScript.
At least one of email, phone, or name is required. Non-empty fields are written to the tab member's user row; empty fields are ignored. Only applies to anonymous guest users (users.guest=true).
Guest email (overwrites existing non-empty value)
emailGuest phone (overwrites existing non-empty value)
Guest name (overwrites existing non-empty value)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/members/497f6eca-6276-4993-bfeb-53cbbbba6f08/contact" \ -H "Content-Type: application/json" \ -d '{}'{ "status": "success", "data": { "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "userId": 0 }, "user": { "id": 0, "email": "string", "phone": "string", "name": "string" } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidTab member UUID to identify
uuidRequest Body
application/json
At least one of userId, email, or phone is required. Resolution priority: userId > email > phone
TypeScript Definitions
Use the request body type in TypeScript.
At least one of userId, email, or phone is required. Resolution priority: userId > email > phone
User ID (Priority 1 - direct lookup)
Email address (Priority 2 - lookup by email)
emailPhone number (Priority 3 - lookup by phone)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/members/497f6eca-6276-4993-bfeb-53cbbbba6f08/identify" \ -H "Content-Type: application/json" \ -d '{}'{ "status": "success", "data": { "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "user": { "id": 0, "email": "string", "name": "string", "phone": "string" } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Top-level metadata patch to merge into tabs.metadata
Optional custom field operations, saved atomically with this record. Omitted values are unchanged; null clears. Use fieldId or a stable key. expectedVersion is optional; supply it to reject conflicting edits.
items <= 100Response Body
application/json
curl -X PATCH "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/metadata" \ -H "Content-Type: application/json" \ -d '{ "metadata": {} }'{ "success": true, "data": { "metadata": {} }, "meta": { "requestId": "string", "timestamp": "string", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/settle"{ "status": "success", "data": { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "locationId": 0, "latestState": "initiated", "selectedPaymentFlow": "open_tab", "paymentMode": "ITEM", "paymentSplit": 2, "totalAmountCents": 0, "paidAmountCents": 0, "remainingBalanceCents": 0, "storefrontQrCodeId": "string", "bookingId": "9a471128-954e-4e64-bde9-e8147015df89", "bookingConfirmationCode": "string", "tabMembers": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "memberCount": 0, "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ], "kitchenDispatches": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "locationId": 0, "dailyOrderNumber": 0, "latestState": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ] } ], "vouchers": [ { "id": 0, "discountId": 0, "discountCode": "string", "appliedAt": "2019-08-24T14:15:22Z", "voucherName": "string", "voucherType": "string", "typeSpecification": {}, "maxDiscountAmountCents": 0, "maxUses": 0, "timesUsed": 0, "hasUsesLeft": true, "remainingBalanceCents": 0, "displayTitle": "string", "displayDescription": "string", "displayImageUrl": "string" } ], "notes": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "entityType": "string", "entityId": "string", "note": "string", "locationId": 0, "sortOrder": 0, "createdByRetailerUserId": 0, "createdByName": "string", "updatedByRetailerUserId": 0, "updatedByName": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "amountPaymentsConverted": true, "amountPaymentsCount": 0, "newLineItemsCount": 0 }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/timeline"{ "status": "success", "data": { "events": [ { "uuid": "string", "source": "tab_event", "eventType": "string", "description": "string", "createdAt": "2019-08-24T14:15:22Z", "metadata": {} } ] }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Tab member identification. Provide at least one identifier. Priority: id > email > phone > identifier
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/checkout-summary" \ -H "Content-Type: application/json" \ -d '{ "tabMember": {} }'{ "status": "success", "data": { "paymentMode": "ITEM", "tabId": "string", "tabMemberId": "string", "clientId": "string", "items": [ { "measurement": { "amountMicros": 0, "unit": "string" }, "kitchenDispatchItemId": "string", "itemId": 0, "title": "string", "quantity": 0, "basePrice": 0, "variantsPrice": 0, "totalPrice": 0, "discount": 0, "vat": 0, "vatId": 0, "vatAmountCents": 0, "variants": [ { "id": 0, "name": "string", "quantity_cents": 0, "price_cents": 0, "comments": [ "string" ], "variants": [ {} ] } ], "comments": [ "string" ] } ], "totals": { "subtotal": 0, "discounts": 0, "totalAmountInCents": 0, "vatBreakdown": { "12 %": 1200, "25 %": 500 } }, "kitchenDispatchItems": [ "string" ], "paymentSplit": 0, "totalAmountCents": 0, "splitAmountCents": 0, "paidAmountCents": 0, "remainingBalanceCents": 0, "paidSplits": 0, "remainingSplits": 0, "vatBreakdown": { "property1": 0, "property2": 0 } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab
uuidQuery Parameters
Filter by type of price change
Value in
- "DISCOUNT_PERCENTAGE"
- "DISCOUNT_FIXED"
- "PRICE_SET"
- "DISCOUNT_REMOVED"
Filter by retailer user ID who applied the change
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/discounts"{ "status": "success", "data": { "events": [ { "id": 0, "kitchenDispatchItemId": "bd4e0699-db8c-4617-88c6-d7e731311ade", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "appliedBy": { "userId": 0, "name": "string", "email": "user@example.com" }, "previousPrice": 0, "newPrice": 0, "previousDiscount": 0, "newDiscount": 0, "basePrice": 0, "changeType": "DISCOUNT_PERCENTAGE", "discountPercentage": 0, "discountAmountCents": 0, "reasonCode": "PRICE_MATCH", "notes": "string", "createdAt": "2019-08-24T14:15:22Z" } ] }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items"{ "status": "success", "data": { "stateValidToEpoch": 0, "selectedItems": [ { "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "clientId": "5e505642-9024-474d-9434-e5a44f505cc5", "itemId": "f11b669d-7201-4c21-88af-d85092f0c005", "isLocked": true } ], "hasLockedMembers": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab containing the item
uuidUUID of the kitchen dispatch item to restore
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Reason code for removing the discount
Optional notes
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items/497f6eca-6276-4993-bfeb-53cbbbba6f08/discount" \ -H "Content-Type: application/json" \ -d '{ "reasonCode": "string" }'{ "status": "success", "data": { "priceEvent": { "id": 0, "kitchenDispatchItemId": "bd4e0699-db8c-4617-88c6-d7e731311ade", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "appliedBy": { "userId": 0, "name": "string", "email": "user@example.com" }, "previousPrice": 0, "newPrice": 0, "previousDiscount": 0, "newDiscount": 0, "basePrice": 0, "changeType": "DISCOUNT_PERCENTAGE", "discountPercentage": 0, "discountAmountCents": 0, "reasonCode": "PRICE_MATCH", "notes": "string", "createdAt": "2019-08-24T14:15:22Z" } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab containing the item
uuidUUID of the kitchen dispatch item to modify
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Type of action: "discount" for applying discounts, "set_price" for setting arbitrary price
Value in
- "discount"
- "set_price"
Required when action is "discount": type of discount to apply
Value in
- "percentage"
- "fixed"
Required when action is "discount": percentage (1-100) or cents for fixed discount
0 <= valueRequired when action is "set_price": new price in cents
0 <= valueRequired reason code explaining why the price is being adjusted
Optional notes providing additional context for the price adjustment
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items/497f6eca-6276-4993-bfeb-53cbbbba6f08/price" \ -H "Content-Type: application/json" \ -d '{ "action": "discount", "reasonCode": "PRICE_MATCH" }'{ "status": "success", "data": { "priceEvent": { "id": 0, "kitchenDispatchItemId": "bd4e0699-db8c-4617-88c6-d7e731311ade", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "appliedBy": { "userId": 0, "name": "string", "email": "user@example.com" }, "previousPrice": 0, "newPrice": 0, "previousDiscount": 0, "newDiscount": 0, "basePrice": 0, "changeType": "DISCOUNT_PERCENTAGE", "discountPercentage": 0, "discountAmountCents": 0, "reasonCode": "PRICE_MATCH", "notes": "string", "createdAt": "2019-08-24T14:15:22Z" } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab
uuidUUID of the kitchen dispatch item
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items/497f6eca-6276-4993-bfeb-53cbbbba6f08/price-history"{ "status": "success", "data": { "events": [ { "id": 0, "kitchenDispatchItemId": "bd4e0699-db8c-4617-88c6-d7e731311ade", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "appliedBy": { "userId": 0, "name": "string", "email": "user@example.com" }, "previousPrice": 0, "newPrice": 0, "previousDiscount": 0, "newDiscount": 0, "basePrice": 0, "changeType": "DISCOUNT_PERCENTAGE", "discountPercentage": 0, "discountAmountCents": 0, "reasonCode": "PRICE_MATCH", "notes": "string", "createdAt": "2019-08-24T14:15:22Z" } ] }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
UUID of the tab member performing the batch operation
uuidUUID of the client (from storefront sessions)
uuidItem IDs to claim (UUIDs in ITEM mode, virtual IDs like "split-index-N" in AMOUNT mode)
Item IDs to unclaim (UUIDs in ITEM mode, virtual IDs like "split-index-N" in AMOUNT mode)
Payment mode for the batch operation
Value in
- "ITEM"
- "AMOUNT"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items/batch" \ -H "Content-Type: application/json" \ -d '{ "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "clientId": "5e505642-9024-474d-9434-e5a44f505cc5" }'{ "status": "success", "data": { "success": true, "stateValidToEpoch": 0, "selectedItems": [ { "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "clientId": "5e505642-9024-474d-9434-e5a44f505cc5", "itemId": "f11b669d-7201-4c21-88af-d85092f0c005", "isLocked": true } ], "hasLockedMembers": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab containing the items
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Array of items to update. Each item should specify exactly one of: newPrice, discountPercent, or removeDiscount
1 <= itemsReason code explaining why the prices are being adjusted
Optional notes providing additional context for the price adjustments
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items/bulk-price" \ -H "Content-Type: application/json" \ -d '{ "items": [ { "kitchenDispatchItemId": "bd4e0699-db8c-4617-88c6-d7e731311ade" } ], "reasonCode": "PRICE_MATCH" }'{ "status": "success", "data": { "results": [ { "kitchenDispatchItemId": "bd4e0699-db8c-4617-88c6-d7e731311ade", "previousPrice": 0, "newPrice": 0, "changeType": "DISCOUNT_PERCENTAGE", "success": true, "error": "string" } ], "totalUpdated": 0 }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
UUID of the tab member claiming the items
uuidUUID of the client (from storefront sessions) for storage efficiency
uuidArray of item IDs to claim. In ITEM mode: inventory item UUIDs. In AMOUNT mode: virtual IDs like "split-index-0".
1 <= itemsPayment mode: ITEM for individual item claiming, AMOUNT for split claiming
Value in
- "ITEM"
- "AMOUNT"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items/claim" \ -H "Content-Type: application/json" \ -d '{ "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "clientId": "5e505642-9024-474d-9434-e5a44f505cc5", "items": [ "string" ] }'{ "status": "success", "data": { "success": true, "stateValidToEpoch": 0, "selectedItems": [ { "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "clientId": "5e505642-9024-474d-9434-e5a44f505cc5", "itemId": "f11b669d-7201-4c21-88af-d85092f0c005", "isLocked": true } ], "hasLockedMembers": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
UUID of the tab member to lock/unlock selections for (nullable)
UUID of the client (fallback identifier when tabMemberId is not available)
uuidForce-cancel another member's checkout. When true and the caller holds no locked items, the other member's in-flight payment is cancelled, their items are unlocked and re-claimed to the caller. Without it, an unlock from a caller with no locked items changes nothing.
When true, bypass the auto-cancel of any payment_in_progress settlements for the unlocked member. Use only for staff force-unlock flows. Default false.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items/lock" \ -H "Content-Type: application/json" \ -d '{}'{ "status": "success", "data": { "success": true, "stateValidToEpoch": 0, "selectedItems": [ { "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "clientId": "5e505642-9024-474d-9434-e5a44f505cc5", "itemId": "f11b669d-7201-4c21-88af-d85092f0c005", "isLocked": true } ], "hasLockedMembers": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Group-coordination split mode (advisory, distinct from authoritative paymentMode). Projected into the per-tab LiveObject so all clients/late-joiners land in the same screen.
Value in
- "NONE"
- "BY_ITEM"
- "BY_AMOUNT"
- "BY_AMOUNT_FREE"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items/split-mode" \ -H "Content-Type: application/json" \ -d '{ "split": "NONE" }'{ "status": "success", "data": { "split": "NONE" }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
UUID of the tab member unclaiming the items
uuidArray of item IDs to unclaim. In ITEM mode: inventory item UUIDs. In AMOUNT mode: virtual IDs like "split-index-0".
1 <= itemsPayment mode: ITEM for individual item unclaiming, AMOUNT for split unclaiming
Value in
- "ITEM"
- "AMOUNT"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items/unclaim" \ -H "Content-Type: application/json" \ -d '{ "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "items": [ "string" ] }'{ "status": "success", "data": { "success": true, "stateValidToEpoch": 0, "selectedItems": [ { "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "clientId": "5e505642-9024-474d-9434-e5a44f505cc5", "itemId": "f11b669d-7201-4c21-88af-d85092f0c005", "isLocked": true } ], "hasLockedMembers": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
UUID of the tab
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
UUID of the tab member to lock/unlock selections for (nullable)
UUID of the client (fallback identifier when tabMemberId is not available)
uuidForce-cancel another member's checkout. When true and the caller holds no locked items, the other member's in-flight payment is cancelled, their items are unlocked and re-claimed to the caller. Without it, an unlock from a caller with no locked items changes nothing.
When true, bypass the auto-cancel of any payment_in_progress settlements for the unlocked member. Use only for staff force-unlock flows. Default false.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/items/unlock" \ -H "Content-Type: application/json" \ -d '{}'{ "status": "success", "data": { "success": true, "stateValidToEpoch": 0, "selectedItems": [ { "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "clientId": "5e505642-9024-474d-9434-e5a44f505cc5", "itemId": "f11b669d-7201-4c21-88af-d85092f0c005", "isLocked": true } ], "hasLockedMembers": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Source tab UUID
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Kitchen dispatch UUID to move
uuidDestination table (storefront_qr_code) UUID
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/move/dispatch" \ -H "Content-Type: application/json" \ -d '{ "dispatchId": "a1a7028f-f483-4bbb-b8e5-fe878bddb1ae", "destinationTableId": "6f04e25a-638a-4d91-8794-22017d249884" }'{ "status": "success", "data": { "success": true, "message": "string", "sourceTabId": "d534b98c-34eb-499c-8f94-8a0fced403fc", "destinationTabId": "36d4982c-e2f5-4ae9-9d10-139882ebfa83", "movedItemCount": 0, "tabMerged": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Source tab UUID
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Array of kitchen_dispatch_item UUIDs to move
1 <= itemsDestination table (storefront_qr_code) UUID
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/move/items" \ -H "Content-Type: application/json" \ -d '{ "itemIds": [ "0e636f28-7bba-4a96-9d8b-f3b7350a8339" ], "destinationTableId": "6f04e25a-638a-4d91-8794-22017d249884" }'{ "status": "success", "data": { "success": true, "message": "string", "sourceTabId": "d534b98c-34eb-499c-8f94-8a0fced403fc", "destinationTabId": "36d4982c-e2f5-4ae9-9d10-139882ebfa83", "movedItemCount": 0, "tabMerged": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Source tab UUID
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Destination table (storefront_qr_code) UUID
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/move/tab" \ -H "Content-Type: application/json" \ -d '{ "destinationTableId": "6f04e25a-638a-4d91-8794-22017d249884" }'{ "status": "success", "data": { "success": true, "message": "string", "sourceTabId": "d534b98c-34eb-499c-8f94-8a0fced403fc", "destinationTabId": "36d4982c-e2f5-4ae9-9d10-139882ebfa83", "movedItemCount": 0, "tabMerged": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
The UUID of the tab
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Number of ways to split the tab (2-10)
2 <= value <= 10Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/payment-split" \ -H "Content-Type: application/json" \ -d '{ "payment_split": 2 }'{ "status": "success", "data": { "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "paymentMode": "AMOUNT", "paymentSplit": 0, "totalAmountCents": 0, "splitAmountCents": 0, "remainingBalanceCents": 0, "paidSplits": 0, "remainingSplits": 0 }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
The UUID of the tab
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/payment-split"{ "status": "success", "data": { "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "paymentMode": "ITEM", "previousPaymentSplit": 0, "clearedSelections": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidQuery Parameters
Location ID
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/497f6eca-6276-4993-bfeb-53cbbbba6f08/purchases?locationId=0"{ "status": "success", "data": { "purchases": [ { "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "id": 0, "intentId": "string", "purchasedAt": "2019-08-24T14:15:22Z", "state": "string", "currencyCode": "string", "payerUuid": "a45e524a-bc7b-4b01-8481-9567575634fd", "payerName": "string", "payerEmail": "string", "totalAmountCents": 0, "lineItemCount": 0 } ], "summary": { "totalPaidCents": 0, "purchaseCount": 0, "totalItemCount": 0 } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Restaurant location ID
QR code UUID for the table
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/check-exists" \ -H "Content-Type: application/json" \ -d '{ "locationId": 0, "qrCodeId": "8a619d64-dbe8-4c9d-9490-babe22a53a28" }'{ "status": "success", "data": { "hasActiveTab": true, "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "isNewMember": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Query Parameters
Filter by location ID (required)
ISO start of close-date range
ISO end of close-date range
Filter by close type: 'correction' (rättelse) or 'force' (regular force-close). Omit for both.
Value in
- "correction"
- "force"
Case-insensitive substring match on the close comment
Minimum tab total (cents)
Maximum tab total (cents)
Filter by the staff member who closed the tab
Comma-separated table names to filter by
Comma-separated tab types/channels (table, over_the_counter, takeaway)
Page number
1 <= value1Items per page
1 <= value <= 100050Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/closed"{ "status": "success", "data": { "tabs": [ { "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "locationId": 0, "totalAmountCents": 0, "paidAmountCents": 0, "tabType": "string", "storefrontQrCodeId": "string", "tableName": "string", "closedAt": "string", "closeType": "correction", "comment": "string", "closedByRetailerUserId": 0, "closedByName": "string", "closedByEmail": "string" } ], "summary": { "totalAmountCentsSum": 0 }, "pagination": { "page": 1, "limit": 1, "total": 0, "totalPages": 0 } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Tab UUIDs to correct (rättelse)
1 <= items <= 500Location the tabs belong to
Optional shared reason applied to all corrected tabs
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/correct-bulk" \ -H "Content-Type: application/json" \ -d '{ "tabIds": [ "67ae9b3f-425f-4a50-9796-2c2ea6b852df" ], "locationId": 0 }'{ "status": "success", "data": { "correctedCount": 0, "correctedTabIds": [ "string" ] }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Query Parameters
Number of recent tabs to return (max 20)
1 <= value <= 205Filter by location ID
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/debug/recent"{ "status": "success", "data": { "tabs": [ {} ], "query": {} }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Restaurant location ID
QR code UUID for the table
uuidUser identification using priority system
Specific tab UUID to join (when user selects from multiple joinable tabs). Omit to auto-join or get the list.
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/join-if-existing" \ -H "Content-Type: application/json" \ -d '{ "locationId": 0, "qrCodeId": "8a619d64-dbe8-4c9d-9490-babe22a53a28", "tabMember": {} }'{ "status": "success", "data": { "hasActiveTab": true, "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "isNewMember": true, "joinableTabs": [ { "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "selectedPaymentFlow": "string", "tableName": "string", "memberCount": 0, "totalAmountCents": 0, "createdAt": "2019-08-24T14:15:22Z", "members": [ { "userName": "string" } ] } ] }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/mine"{ "status": "success", "data": { "tabs": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "locationId": 0, "latestState": "initiated", "selectedPaymentFlow": "open_tab", "paymentMode": "ITEM", "paymentSplit": 2, "totalAmountCents": 0, "paidAmountCents": 0, "remainingBalanceCents": 0, "storefrontQrCodeId": "string", "bookingId": "9a471128-954e-4e64-bde9-e8147015df89", "bookingConfirmationCode": "string", "tabMembers": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "memberCount": 0, "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ], "kitchenDispatches": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "locationId": 0, "dailyOrderNumber": 0, "latestState": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ] } ], "vouchers": [ { "id": 0, "discountId": 0, "discountCode": "string", "appliedAt": "2019-08-24T14:15:22Z", "voucherName": "string", "voucherType": "string", "typeSpecification": {}, "maxDiscountAmountCents": 0, "maxUses": 0, "timesUsed": 0, "hasUsesLeft": true, "remainingBalanceCents": 0, "displayTitle": "string", "displayDescription": "string", "displayImageUrl": "string" } ], "notes": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "entityType": "string", "entityId": "string", "note": "string", "locationId": 0, "sortOrder": 0, "createdByRetailerUserId": 0, "createdByName": "string", "updatedByRetailerUserId": 0, "updatedByName": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "location": { "id": 0, "name": "string", "logoImageUrl": "string", "currency": "string", "timezone": "string" } } ] }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/mine/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "status": "success", "data": { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "locationId": 0, "latestState": "initiated", "selectedPaymentFlow": "open_tab", "paymentMode": "ITEM", "paymentSplit": 2, "totalAmountCents": 0, "paidAmountCents": 0, "remainingBalanceCents": 0, "storefrontQrCodeId": "string", "bookingId": "9a471128-954e-4e64-bde9-e8147015df89", "bookingConfirmationCode": "string", "tabMembers": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "memberCount": 0, "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ], "kitchenDispatches": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "locationId": 0, "dailyOrderNumber": 0, "latestState": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ] } ], "vouchers": [ { "id": 0, "discountId": 0, "discountCode": "string", "appliedAt": "2019-08-24T14:15:22Z", "voucherName": "string", "voucherType": "string", "typeSpecification": {}, "maxDiscountAmountCents": 0, "maxUses": 0, "timesUsed": 0, "hasUsesLeft": true, "remainingBalanceCents": 0, "displayTitle": "string", "displayDescription": "string", "displayImageUrl": "string" } ], "notes": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "entityType": "string", "entityId": "string", "note": "string", "locationId": 0, "sortOrder": 0, "createdByRetailerUserId": 0, "createdByName": "string", "updatedByRetailerUserId": 0, "updatedByName": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "location": { "id": 0, "name": "string", "logoImageUrl": "string", "currency": "string", "timezone": "string" } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Query Parameters
Filter by location ID (required)
ISO start of opened-date range
ISO end of opened-date range
Minimum tab total (cents)
Maximum tab total (cents)
Comma-separated table names to filter by
Comma-separated tab types/channels (table, over_the_counter, takeaway)
Page number
1 <= value1Items per page
1 <= value <= 100050Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v1/tabs/open"{ "status": "success", "data": { "tabs": [ { "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "locationId": 0, "totalAmountCents": 0, "paidAmountCents": 0, "remainingBalanceCents": 0, "tabType": "string", "storefrontQrCodeId": "string", "tableName": "string", "latestState": "string", "paymentFlow": "string", "openedByName": "string", "openedByType": "string", "openedAt": "string" } ], "summary": { "totalAmountCentsSum": 0 }, "pagination": { "page": 1, "limit": 1, "total": 0, "totalPages": 0 } }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
UUID of the tab to reconnect payment for
uuidAdyen PSP reference from the orphaned authorization
Terminal ID (optional, for audit trail)
uuidAmount in cents (optional). Defaults to the authorised amount for a purchase-service intent and must equal it; legacy payment-service reconnects default to the remaining balance.
1 <= valueResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/reconnect-payment" \ -H "Content-Type: application/json" \ -d '{ "tab_id": "7d6d1470-3aa0-4898-b980-676d9bf5a62e", "psp_reference": "string" }'{ "status": "success", "data": { "purchase_intent_id": "abf79337-36d4-4618-b765-52207318d737", "tab_settlement_id": "9d002bc6-2c1f-40fa-ba63-9cd0d01dfd8e", "tab_id": "7d6d1470-3aa0-4898-b980-676d9bf5a62e", "psp_reference": "string", "amount_cents": 0, "reconnected": true, "already_settled": true, "owner": "purchase-service", "rescued_from_state": "string" }, "meta": {}}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Location ID for the tab
QR code UUID (for table orders)
Type of tab to create
Value in
- "table"
- "takeaway"
- "over_the_counter"
Payment timing (open_tab = pay later, pay_upfront = pay now)
Value in
- "open_tab"
- "pay_upfront"
Order channel (ONLINE = web interface, QR = QR code scan, KIOSK = self-service, POS = point of sale)
Value in
- "ONLINE"
- "QR"
- "KIOSK"
- "POS"
User identification with priority-based resolution: id > email > phone > identifier
Optional custom field operations, saved atomically with this record. Omitted values are unchanged; null clears. Use fieldId or a stable key. expectedVersion is optional; supply it to reject conflicting edits.
items <= 100Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/resolve" \ -H "Content-Type: application/json" \ -d '{ "locationId": 0, "qrCodeId": "string", "tabType": "table", "paymentFlow": "open_tab", "orderChannel": "ONLINE", "tabMember": {} }'{ "status": "success", "data": { "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "isNewTab": true, "isNewTabMember": true, "tab": { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "locationId": 0, "latestState": "initiated", "selectedPaymentFlow": "open_tab", "paymentMode": "ITEM", "paymentSplit": 2, "totalAmountCents": 0, "paidAmountCents": 0, "remainingBalanceCents": 0, "storefrontQrCodeId": "string", "bookingId": "9a471128-954e-4e64-bde9-e8147015df89", "bookingConfirmationCode": "string", "tabMembers": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "memberCount": 0, "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ], "kitchenDispatches": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "currentVatBreakdown": [ { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true, "vatRateBasisPoints": 0 } ], "customFields": [ { "fieldId": "string", "key": "string", "label": "string", "group": "string", "type": "string", "displayValue": "string", "value": null, "version": 0, "status": "string" } ], "metadata": { "customFields": {} }, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "locationId": 0, "dailyOrderNumber": 0, "latestState": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "kitchenDispatchItems": [ { "amounts": { "grossAmountCents": 0, "vatAmountCents": 0, "netAmountCents": 0, "basis": "current", "vatComplete": true }, "vatRateBasisPoints": 0, "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "kitchenDispatchId": "1e12a9f2-ac1a-493a-ab73-6bcc45c0d9ba", "saleItemId": 0, "itemId": 0, "tabMemberId": "string", "parentKitchenDispatchItemId": "string", "price": 0, "basePrice": 0, "discount": 0, "quantity": 0, "measurement": { "unit": "string", "amountMicros": 0, "priceQuantityMicros": 0, "unitPriceCents": 0 }, "quantityCents": 0, "splitOfKdi": "e6bb2f00-c1a3-46a8-9d00-24d4d47009e5", "tabSettlementId": "string", "settlementState": "string", "status": "string", "itemState": "string", "zeroTicket": true, "voidedQuantityCents": 0, "paidAmount": 0, "coursingOrder": 0, "createdAt": "2019-08-24T14:15:22Z", "firedAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "itemTitle": "string", "itemTitlePrep": "string", "kitchenSortOrder": 0, "itemDescription": "string", "itemImageUrl": "string", "tabMember": { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "name": "string", "email": "string", "phone": "string", "imageUrl": "string", "memberType": "string", "userId": 0, "retailUserId": 0 }, "comments": [ { "comment": "string", "createdAt": "2019-08-24T14:15:22Z", "tabMemberUUID": "string", "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f" } ], "variants": [ { "id": 0, "name": "string", "price": 0, "quantityCents": 0, "priceCents": 0 } ] } ] } ], "vouchers": [ { "id": 0, "discountId": 0, "discountCode": "string", "appliedAt": "2019-08-24T14:15:22Z", "voucherName": "string", "voucherType": "string", "typeSpecification": {}, "maxDiscountAmountCents": 0, "maxUses": 0, "timesUsed": 0, "hasUsesLeft": true, "remainingBalanceCents": 0, "displayTitle": "string", "displayDescription": "string", "displayImageUrl": "string" } ], "notes": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "entityType": "string", "entityId": "string", "note": "string", "locationId": 0, "sortOrder": 0, "createdByRetailerUserId": 0, "createdByName": "string", "updatedByRetailerUserId": 0, "updatedByName": "string", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ], "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" }, "tabMembers": [ { "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f", "storefrontSessionId": "string", "initiator": true, "memberType": "string", "userId": 0, "retailUserId": 0, "clientId": "string", "userEmail": "string", "userName": "string", "isEnrolledInLoyalty": true, "hasCardOnFile": true, "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z" } ] }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Location ID for the tab
QR code UUID (for table orders)
Type of tab to create
Value in
- "table"
- "takeaway"
- "over_the_counter"
Payment timing (open_tab = pay later, pay_upfront = pay now)
Value in
- "open_tab"
- "pay_upfront"
Order channel (ONLINE = web interface, QR = QR code scan, KIOSK = self-service, POS = point of sale)
Value in
- "ONLINE"
- "QR"
- "KIOSK"
- "POS"
User identification with priority-based resolution: id > email > phone > identifier
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/v1/tabs/resolve-external" \ -H "Content-Type: application/json" \ -d '{ "locationId": 0, "qrCodeId": "string", "tabType": "table", "paymentFlow": "open_tab", "orderChannel": "ONLINE", "tabMember": {} }'{ "status": "string", "data": { "tabId": "f4c36190-e358-41c0-b3ad-58e9e89eba63", "tabMemberId": "eacdba71-5d30-4031-bb4d-d05e652a7917", "resolution": "external_ticket", "isNewTab": true }, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "executionTimeMs": 0 }}Authorization
ApiKeyAuth API key authentication. Format: karma_live_* or karma_dev_*
In: header
Path Parameters
Tab UUID
uuidQuery Parameters
Payment amount in cents. 0 is a valid value: the storefront still hits this endpoint when the cart nets to 0 (voucher fully covers the order) and the handler short-circuits with an empty paymentMethodsResponse so the drawer can route to the complimentary settlement path without a PSP method selection.
0 <= valueISO 4217 currency code (e.g. SEK, EUR)
ISO 3166-1 alpha-2 country code (e.g. SE, NL)
Optional tab member UUID. When supplied, the handler resolves the paying user and includes a shopperReference so Adyen returns storedPaymentMethods (saved cards) for the shopper. Omit for guest checkouts.
uuidOptional client platform. Forwarded to Adyen /paymentMethods so it returns platform-native wallets — notably Google Pay (returned only for channel=Android). Omit for web (Adyen defaults to Web behaviour).
Value in
- "iOS"
- "Android"
- "Web"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/api/v2/tab/497f6eca-6276-4993-bfeb-53cbbbba6f08/payment-methods?amountCents=0¤cyCode=string"{ "status": "success", "data": { "paymentMethodsResponse": {}, "clientKey": "string", "environment": "test", "adyenIntegrationId": "4cdd3acb-5beb-44ce-a3ea-a62f1db97794", "freeOrder": true }, "meta": {}}