Majorميجور User Guide

Messages

Every message the app shows when it refuses something, with its code.

Who can do this
Owner Manager

When Major refuses something, it says why in a sentence. This page lists every such sentence by area, each with its code — the code is what you quote to support. «…» stands for a number or a name filled in at the time.

Licence

Code Message
SALES_TRIAL_EXPIRED Your Major trial has ended — you can't start a new ticket. Renew from the License screen to continue. Open tickets, refunds, shift close and reports still work.
SALES_PROVISIONAL_EXPIRED The trial has ended. Renew from the License screen to start new tickets.
TIME_VERIFICATION_REQUIRED There's a problem with this device's time. Fix the system clock or import a new license file to resume selling.
TERMINAL_CAP_EXCEEDED You've reached your plan's till limit. Revoke a till or upgrade your plan to pair more.
LICENSE_EMPTY Paste the licence file's contents first.
LICENSE_UNREADABLE The licence file couldn't be read on this machine. Try again.
LICENSE_MALFORMED That isn't a valid licence file. Copy the whole of license.dat exactly as it is and try again.
LICENSE_UNVERIFIABLE This version of the app can't verify licences. Update it and contact support.
LICENSE_SIGNATURE_INVALID The licence file's signature doesn't check out: it was edited or wasn't issued by us. Ask support for a fresh copy.
LICENSE_WRONG_MACHINE This licence was issued for a different machine. Send this machine's fingerprint to support to get one for it.
LICENSE_INVALID This licence file isn't valid for this machine. Contact support.
LICENCE_REQUIRED This release needs a licence

Shifts and the drawer

Code Message
SHIFT_REQUIRED Open a shift before starting a ticket.
SHIFT_ALREADY_OPEN A shift is already open on this branch.
SHIFT_CLOSED This shift is closed and can't be changed.
SHIFT_CLOSED_CONCURRENTLY The shift was closed while this was being recorded, so nothing was saved. Open a shift and try again.
SHIFT_INVALID_AMOUNT The amount has to be more than zero.
SHIFT_INVALID_MOVEMENT_TYPE Choose cash in or cash out.
SHIFT_NEGATIVE_BALANCE The opening balance can't be negative.
SHIFT_CLOSE_FROM_OTHER_TERMINAL This shift was opened on …. Close it from here anyway?
SHIFT_OPEN_FOR_OTHER_TERMINAL This opens the drawer of … from another device. Open it from here anyway?
SHIFT_SCOPE_INVALID Choose how the branch runs its shifts.
DRAWER_REQUIRED Shifts in this branch run per till. Choose the drawer.
DRAWER_NOT_THIS_TILL This till's cash goes into the drawer of …. It can't take money into another till's drawer.
DRAWER_NOT_OPEN The drawer of … has no open shift. Choose an open drawer.
CASH_REQUIRES_OPEN_DRAWER This till's drawer has no open shift, so it can't take cash. Open the shift, or use another payment method.
COLLECTION_CASH_REQUIRES_SHIFT A cash collection goes into the drawer, so open a shift first.

Returns and refunds

Code Message
REFUND_AMOUNT_INVALID The refund amount has to be more than zero.
REFUND_EXCEEDS_PAID A refund of … is more than the … that can still be refunded.
REFUND_REASON_REQUIRED Enter a reason for the refund.
REFUND_TENDER_NOT_ON_TICKET That payment method did not pay for this ticket, so nothing can be refunded to it.
RETURN_CASH_REFUND_EXCEEDS_CASH_PAID This sale can refund only … in cash, and the refund is …. Choose the method the customer paid with.
RETURN_REFUND_EXCEEDS_TENDER This sale can refund only … to that payment method, and the refund is ….
RETURN_REFUND_REQUIRES_SHIFT A refund is recorded in the open shift, so open a shift first.
RETURN_CASH_REFUND_REQUIRES_SHIFT A cash refund comes out of the drawer, so open a shift first.
RETURN_NOT_APPROVED Only an approved return can be processed.
RETURN_NOT_PENDING Only a pending return can be approved.
RETURN_NO_INVENTORY_LINK That product isn't linked to a stock item, so it can't be returned to stock.
RETURN_QUANTITY_EXCEEDS_ORDERED The return is more than what's left on the order line.
RETURN_REFUND_EXCEEDS_PAID A refund of … is more than the … the customer paid for the returned units.
RETURN_QUANTITY_INVALID The return quantity has to be more than zero.
RETURN_REASON_REQUIRED Enter a reason for the return.
REVERSE_QUANTITY_INVALID The reversal quantity has to be more than zero.
RMA_CANNOT_SCRAP This RMA can't be scrapped in its current status.
RMA_DEFECT_REQUIRED Describe the defect.
RMA_NOT_APPROVED Repair can't start until the RMA is approved.
RMA_NOT_COMPLETABLE This RMA can't be closed in its current status.
RMA_STORE_ONLY_ON_REPAIRED_CLOSE A store can only be chosen when closing a repaired RMA — that's the only step that puts the unit back in stock.
RMA_NOT_FOUND That RMA no longer exists.
RMA_NOT_IN_REPAIR Only an RMA in repair can be marked repaired.
RMA_NOT_PENDING Only a pending RMA can be approved.
RMA_NUMBER_REQUIRED Enter the RMA number.
RMA_UNKNOWN_ACTION That RMA action isn't recognised.

Customers and accounts

Code Message
ON_ACCOUNT_EXCEEDS_BALANCE An on-account payment can't be more than the ticket still owes (…). Enter the amount owed.
ON_ACCOUNT_REQUIRES_CUSTOMER An on-account payment needs a customer on the ticket.
ADJUSTMENT_AMOUNT_ZERO The adjustment amount can't be zero.
ADJUSTMENT_NOTES_REQUIRED Enter a note for the adjustment.
CHARGE_AMOUNT_INVALID The charge amount has to be more than zero.
COLLECTION_ON_ACCOUNT_NOT_ALLOWED A debt can't be collected on account. Choose a method that takes money.
CUSTOMER_NAME_REQUIRED Enter the customer's name.
CUSTOMER_PHONE_DUPLICATE A customer with the phone number … already exists.
CUSTOMER_PHONE_REQUIRED Enter the customer's phone number.
ADDRESS_REQUIRES_CUSTOMER A ticket type that needs a delivery address has to need a customer too.
CUSTOMERS_MODE_REQUIRES_CUSTOMER_TYPE A department that opens on customer search needs a customer entity type configured first.
PHONE_EMPTY Enter a phone number.
PHONE_TOO_SHORT The phone number has to be at least 8 digits.

Selling

Code Message
IDEMPOTENCY_KEY_REUSED This request was already recorded as … — open it and check it before entering it again.
POS_NOT_READY The till isn't set up yet. Finish the setup checklist first.
TICKET_REQUIRES_FIELDS This ticket is missing required details.
AMOUNT_EXCEEDS_LINE_TOTAL The discount can't be more than the line total.
AMOUNT_EXCEEDS_SUBTOTAL The discount can't be more than the subtotal.
SURCHARGE_TICKET_ONLY That charge applies to the whole ticket, not to one item.
SURCHARGE_ALREADY_APPLIED That charge is already on this ticket.
CANNOT_MANUALLY_APPLY_TAX Tax is applied automatically and can't be added as a discount.
CANNOT_REMOVE_AUTO_TAX Automatic tax can't be removed by hand.
CANNOT_SPLIT_ALL At least one item has to stay on the original ticket.
DISCOUNT_EXCEEDS_TOTAL The total discount can't be more than the ticket subtotal.
ENTRY_ENTITY_LINK_ALREADY_SET This ticket already records where it was opened.
ENTRY_ENTITY_LINK_INVALID The ticket needs to know where it was opened.
GIFT_REASON_REQUIRED Enter a reason to gift an item.
INVALID_AMOUNT The discount amount has to be more than zero.
INVALID_PERCENTAGE The discount percentage has to be between 0 and 100.
INVALID_PRICE The unit price can't be negative.
INVALID_QUANTITY The quantity has to be more than zero.
INVALID_RECIPE_CUSTOMIZATION_PAYLOAD Pick a substitute ingredient.
INVALID_TICKET_STATE Only an open or paid ticket can be closed.
LINE_DISCOUNT_NOT_FOUND This item has no discount to remove.
NO_ACTIVE_ORDERS A ticket with no items can't be closed.
NO_DEFAULT_TICKET_TYPE No default ticket type is set. Set one in Settings.
NO_DISCOUNT_SPECIFIED Choose a discount type, a percentage or an amount.
NO_LINES_TO_SPLIT Select at least one item to split.
RECEIPT_TICKET_VOIDED This ticket was voided — there's no receipt to reprint.
RECEIPT_TICKET_NOT_SETTLED This ticket isn't paid yet — only a paid or closed ticket has a receipt to reprint.
PAYMENT_METHOD_NOT_FOUND This payment method no longer exists. Reopen the payment screen and pick another.
PAYMENT_METHOD_TENDER_INVALID Choose a payment type: cash, electronic or on account.
ORDER_ALREADY_GIFTED A gifted item can't be voided.
ORDER_ALREADY_SENT Can't change an item already sent to the kitchen
ORDER_ALREADY_VOIDED This item is already voided.
ORDER_CANCELLED A cancelled item can't be voided.
ORDER_NOT_ACTIVE This item is voided, cancelled or gifted and can't be changed.
ORDER_NOT_FOUND That item is no longer on this ticket.
ORDER_NOT_NEW Only an item that hasn't been sent yet can be removed.
PAYMENT_AMOUNT_INVALID The payment amount has to be more than zero.
REMOVAL_NOT_ALLOWED … can't be removed from this item.
REOPEN_REASON_REQUIRED Enter a reason to reopen the ticket.
REQUIRED_MODIFIER_MISSING … needs at least … selection(s).
SUBSTITUTE_NOT_ALLOWED That substitute isn't allowed for ….
SUBSTITUTE_NOT_FOUND The substitute ingredient couldn't be loaded.
SUBSTITUTE_UOM_INCOMPATIBLE The substitute's unit doesn't match the original ingredient's unit.
TARGET_ENTITY_INACTIVE The selected target isn't active.
TARGET_ENTITY_OCCUPIED The selected target already has an open ticket.
TICKET_ALREADY_IN_DEPARTMENT This ticket is already in that department.
TICKET_ALREADY_PAID This ticket is fully paid. Reopen or refund it before adding items or discounts.
TICKET_ALREADY_VOIDED This ticket is already voided.
TICKET_CLOSED This ticket is closed.
TICKET_DEPARTMENT_ALREADY_ASSIGNED This ticket already has a department. Use Move to change it.
TICKET_DEPARTMENT_LOCKED A ticket's department can only change while it's new or open and not yet paid in full.
TICKET_DEPARTMENT_REQUIRED Choose a department to move to.
TICKET_FULLY_PAID This ticket is already fully paid.
TICKET_HAS_PAYMENTS This ticket has already taken a payment. Refund it first, or split before taking payment.
TICKET_HAS_PROCESSED_RETURNS This ticket has processed returns that put stock back on the shelf, so it can't be reopened.
TICKET_NOT_CLOSED Only a closed ticket can be reopened.
TICKET_NOT_EMPTY This ticket already has items or payments on it, so it was kept.
TICKET_PAID This ticket is already paid. Split before taking payment.
TICKET_REQUIRES_ADDRESS This ticket type needs a delivery address.
TICKET_REQUIRES_CUSTOMER This ticket type needs a customer, so the customer can't be removed.
TICKET_REQUIRES_SCHEDULED_AT This ticket type needs a scheduled time, so it can't be cleared.
TICKET_STATUS_CHANGED This ticket's status changed in the meantime. Refresh and try again.
TICKET_STATUS_GROUP_IN_USE Tickets have used this group. Hide it instead of deleting it.
TICKET_STATUS_GROUP_NOT_APPLICABLE This status group does not apply here: it is hidden, or not used for this ticket's type.
TICKET_STATUS_NOT_IN_GROUP That status is not available in this group.
TICKET_STATUS_STATE_IN_USE Tickets have used the status "…". Hide it instead of deleting it.
TICKET_STATUS_SYSTEM_GROUP The payment statuses cannot be changed here.
TICKET_STATUS_TICKET_VOIDED This ticket is voided, so its status cannot change.
TICKET_STATUS_TRANSITION_FORBIDDEN You do not have permission for this ticket status change.
TICKET_STATUS_TRANSITION_NOT_ALLOWED This status cannot follow the current one.
TICKET_TYPE_ALREADY_ASSIGNED This ticket already has a type.
TICKET_TYPE_DEPARTMENT_CONFLICT The department decides the ticket type.
TICKET_TYPE_LOCKED A ticket's type can only change while it's new or open.
TICKET_TYPE_NOT_FOUND That ticket type is no longer available.
TICKET_VOIDED This ticket is voided.
TOTAL_BELOW_PAID This would drop the ticket total below the amount already paid (…). Refund … EGP first.
TOTAL_NEGATIVE This would make the ticket total negative. Reduce or remove the ticket discount first.
UNPAID_BALANCE This ticket still has … unpaid.
VOID_REASON_REQUIRED Enter a reason to void the item.
CURRENCY_MISMATCH Amounts in different currencies can't be added together.
CANNOT_DEACTIVATE_DEFAULT The default ticket type can't be deactivated. Make another type the default first.
CANNOT_DEACTIVATE_DEFAULT_DEPARTMENT This is the default department. Make another one the default first.
CANNOT_DEACTIVATE_LAST_DEPARTMENT This is the only active department. The POS needs at least one to sell.
CANNOT_DEFAULT_INACTIVE_DEPARTMENT An inactive department cannot be the default. Activate it first.
TICKET_TYPE_CODE_TAKEN Another ticket type already uses this code.
TICKET_TYPE_IN_USE_BY_DEPARTMENT This ticket type is still used by a department. Change the department first.
ALREADY_VOIDED This kitchen ticket is already voided.
CANNOT_DEACTIVATE_SELF You can't deactivate your own account.
DUPLICATE_SUBSTITUTE This item is already an allowed substitute for that ingredient.
MOVEMENT_ITEM_REQUIRED Choose a stock item.
MOVEMENT_QUANTITY_INVALID The quantity has to be more than zero.
MOVEMENT_UOM_REQUIRED Choose a unit of measurement.
QUANTITY_PRECISION … is not exact to 4 decimals, in this unit or in the base unit. Enter fewer decimals or use the base unit.
STATE_MISMATCH This item isn't in the state the change expects. Refresh and try again.
SUBSTITUTE_SAME_AS_ORIGINAL A substitute has to differ from the original ingredient.

Products

Code Message
CALCULATION_NOT_FOUND That discount is no longer on this ticket.
CALC_TYPE_NOT_FOUND That discount type no longer exists.
CALC_TYPE_INACTIVE That type has been deactivated and can no longer be applied.
RECIPE_INGREDIENT_NOT_FOUND That ingredient isn't part of this product's recipe.
VARIANT_REQUIRED Pick a variant for this product.
BARCODE_TAKEN Another active product already uses this barcode.
PRODUCT_TILE_COLOR_INVALID The button colour is not one of the available colours.
CALCULATION_TYPE_IN_USE This calculation type is used on existing tickets and can't be deleted.
CALC_NAME_AR_EMPTY Enter the Arabic name of the calculation type.
CALC_PERCENTAGE_RATE_INVALID A percentage rate can't be more than 100.
CALC_RATE_NEGATIVE The rate can't be negative.
CATEGORY_ALREADY_ACTIVE This category is already active.
CATEGORY_ALREADY_INACTIVE This category is already inactive.
CATEGORY_HAS_PRODUCTS This category still has active products. Move them first.
CATEGORY_HAS_SUBCATEGORIES This category still has sub-categories. Remove them first.
CATEGORY_NAME_AR_EMPTY Enter the Arabic name of the category.
CATEGORY_SELF_PARENT A category can't be its own parent.
COST_PRICE_NEGATIVE The cost price can't be negative.
DUPLICATE_BARCODE Another stock item already uses the barcode ….
NOT_VARIANT_PRODUCT Only a variant product can have variants.
PRODUCT_ALREADY_ACTIVE This product is already active.
PRODUCT_ALREADY_INACTIVE This product is already inactive.
PRODUCT_IMAGE_EMPTY The image is empty.
PRODUCT_IMAGE_INVALID The image data isn't in a supported form.
PRODUCT_IMAGE_TOO_LARGE The image has to be … KB or smaller.
PRODUCT_IMAGE_TYPE_UNSUPPORTED Product images have to be WebP, JPEG or PNG.
PRODUCT_NAME_AR_EMPTY Enter the Arabic name of the product.
PRODUCT_PRICE_NEGATIVE The price can't be negative.
RECIPE_AND_DIRECT_CONFLICT A product can't have both a recipe and a direct stock link. Clear one first.
UNKNOWN_CALC_METHOD That calculation method isn't recognised.
VARIANT_NAME_AR_EMPTY Enter the Arabic name of the variant.
VARIANT_PRICE_NEGATIVE The variant price can't be negative.

Purchasing and suppliers

Code Message
PO_CANNOT_CANCEL A closed or cancelled purchase order can't be cancelled.
PO_CANNOT_CLOSE Only a received or partially received purchase order can be closed.
PO_CLOSED_OR_CANCELLED This purchase order is closed or cancelled, so nothing can be received against it.
PO_CREATED_BY_REQUIRED The purchase order needs a creator.
PO_LINE_ALREADY_RECEIVED A fully received line can't be cancelled.
PO_LINE_CANCELLED Nothing can be received against a cancelled line.
PO_LINE_COST_NEGATIVE The unit cost can't be negative.
PO_LINE_ITEM_REQUIRED Choose a stock item for the line.
PO_LINE_OVER_RECEIVE Receiving … would exceed the … ordered (… already received).
PO_LINE_QUANTITY_INVALID The ordered quantity has to be more than zero.
PO_LINE_RECEIVE_INVALID The received quantity has to be more than zero.
PO_LINE_UOM_REQUIRED Choose a unit of measurement for the line.
PO_NOT_APPROVED Approve the purchase order before receiving against it.
PO_NOT_DRAFT Lines can only be added to a draft purchase order.
PO_NO_LINES Add at least one line before approving.
PO_NUMBER_DUPLICATE Purchase order number … already exists.
PO_NUMBER_REQUIRED Enter the purchase order number.
PO_SUPPLIER_REQUIRED Choose a supplier.
PURCHASE_INVOICE_DISCOUNT_INVALID The invoice discount must be between 0 and the lines' total (…).
PURCHASE_INVOICE_LINE_BONUS_INVALID A bonus quantity cannot be negative.
PURCHASE_INVOICE_LINE_DISCOUNT_INVALID A line discount must be between 0 and the line's total (…).
PURCHASE_INVOICE_LINE_ITEM_REQUIRED Each line needs an item.
PURCHASE_INVOICE_LINE_PRICE_INVALID A unit price cannot be negative.
PURCHASE_INVOICE_LINE_QUANTITY_INVALID A line's quantity must be more than zero.
PURCHASE_INVOICE_LINE_UOM_REQUIRED Each line needs a unit.
PURCHASE_INVOICE_NO_LINES Add at least one line.
PURCHASE_INVOICE_NUMBER_REQUIRED The invoice needs a number. Try again.
PURCHASE_INVOICE_PAID_INVALID The amount paid now cannot be negative.
PURCHASE_INVOICE_PO_LINE_MISMATCH This line is not on the purchase order, or its item or unit differs from the order's line.
PURCHASE_INVOICE_PO_MISMATCH This purchase order belongs to another supplier or branch.
PURCHASE_INVOICE_SUPPLIER_NUMBER_DUPLICATE Supplier invoice … is already booked (…).
PURCHASE_INVOICE_SUPPLIER_REQUIRED Choose the supplier.
PURCHASE_INVOICE_VAT_INVALID VAT cannot be negative.
SUPPLIER_INACTIVE This supplier is deactivated. Reactivate it to book an invoice.
SUPPLIER_LEDGER_SIGN_INVALID That amount is not allowed for this kind of entry.
SUPPLIER_OPENING_BALANCE_FUTURE The cut-over date cannot be in the future.
SUPPLIER_OPENING_BALANCE_LOCKED The opening balance is set before anything else is booked for the supplier. Use a balance adjustment.
SUPPLIER_PAYMENT_AMOUNT_INVALID The amount must be at least one piaster.
SUPPLIER_PAYMENT_METHOD_ON_ACCOUNT On account is not a way to pay a supplier. Choose how they were actually paid.
SUPPLIER_PAYMENT_METHOD_REQUIRED Choose how it was paid (transfer, InstaPay, cheque…).
SUPPLIER_PAYMENT_REQUIRES_SHIFT Paying from the drawer needs an open shift on this branch.
SUPPLIER_REFUND_AMOUNT_INVALID The amount must be at least one piaster.
SUPPLIER_REFUND_EXCEEDS_CREDIT The supplier does not owe us that much. They owe us only ….
SUPPLIER_REFUND_EXCEEDS_RETURN The refund cannot be more than the return's value (…).
SUPPLIER_REFUND_INVALID The refund cannot be negative.
SUPPLIER_REFUND_REQUIRES_SHIFT Taking money into the drawer needs an open shift on this branch.
SUPPLIER_RETURN_CREDIT_INVALID The credit note's amount cannot be negative.
SUPPLIER_RETURN_DISCOUNT_INVALID The discount must be between 0 and the lines' total (…).
SUPPLIER_RETURN_EXCEEDS_INVOICE Invoice line … has only … left to return.
SUPPLIER_RETURN_INVOICE_MISMATCH This invoice belongs to another supplier or branch.
SUPPLIER_RETURN_LINE_ITEM_REQUIRED Each line needs an item.
SUPPLIER_RETURN_LINE_MISMATCH This line is not on the invoice, or its item differs from the invoice line's.
SUPPLIER_RETURN_LINE_PRICE_INVALID A line's price cannot be negative.
SUPPLIER_RETURN_LINE_QUANTITY_INVALID A line's quantity must be more than zero.
SUPPLIER_RETURN_LINE_UOM_REQUIRED Each line needs a unit.
SUPPLIER_RETURN_LOT_INSUFFICIENT Lot … holds only ….
SUPPLIER_RETURN_LOT_MISMATCH This lot is not this item's in this store.
SUPPLIER_RETURN_LOT_REQUIRED Choose the lot that goes back to the supplier.
SUPPLIER_RETURN_NO_LINES Add at least one line.
SUPPLIER_RETURN_NUMBER_REQUIRED The return needs a number. Try again.
SUPPLIER_RETURN_PRICE_PRESET_INVALID Choose the invoice price, the price after bonus, or type a price.
SUPPLIER_RETURN_REASON_INVALID Choose why the goods go back.
SUPPLIER_RETURN_SERIAL_NOT_ON_INVOICE Serial … was not delivered on this invoice line.
SUPPLIER_RETURN_SUPPLIER_REQUIRED Choose the supplier.
SUPPLIER_RETURN_VAT_INVALID VAT cannot be negative.
SUPPLIER_NAME_REQUIRED Enter the supplier's Arabic name.
PURCHASE_INVOICE_STORE_MISMATCH This purchase order is received into store "…".
PO_STORE_LOCKED Goods were already received against this purchase order, so its store can no longer change.

Stock and branches

Code Message
INVALID_BATCH The batch number can't be empty.
INVALID_COST The unit cost can't be negative.
INVALID_LINES Some of the selected items are no longer active on this ticket.
INVENTORY_UNIT_FACTOR_INVALID The stock drawn per unit sold must be more than zero.
INVALID_SERIAL The serial number can't be empty.
NOT_SERIAL_TRACKED This product isn't serial-tracked.
NO_INVENTORY_LINK This product isn't linked to a stock item, so it can't be serial-tracked.
SERIAL_ALREADY_IN_USE Serial number … is already on another open ticket.
SERIAL_NOT_AVAILABLE Serial number … isn't available at this branch.
SERIAL_QUANTITY_FIXED A serial-tracked item is always quantity 1.
SERIAL_REQUIRED This product is serial-tracked. Pick a serial number.
BATCH_RECALLED_STOCK_ONLY All remaining stock of … at this branch is under recall (…) and cannot be sold.
BATCH_SELLABLE_STOCK_SHORT Only … of … can be sold at this branch; the rest of its stock is expired or under recall. Remove the extra quantity, or deal with the expired or recalled stock first.
BATCH_COST_NEGATIVE The cost per unit can't be negative.
BATCH_INSUFFICIENT_STOCK Batch … only has … left; … can't be taken from it.
BATCH_EXPIRY_MISMATCH Batch … is already in stock with expiry …, but this delivery says …. Check the batch number or the expiry date.
BATCH_MOVEMENT_REQUIRED The receiving movement is missing.
BATCH_NOT_ALLOWED A batch number doesn't apply to a basic-tracked item with weighted-average costing.
BATCH_NUMBER_REQUIRED Enter a batch number for this batch-tracked item.
BATCH_QUANTITY_INVALID The batch's initial quantity has to be more than zero.
BATCH_REVERSE_EXCEEDS_INITIAL This reversal would exceed the batch's initial quantity of ….
BRANCH_HAS_STOCK This branch still has a balance on … item(s) (a negative balance counts too) — transfer or adjust them first.
BRANCH_IS_DEFAULT The default branch can't be deleted.
BRANCH_NAME_EMPTY Enter the branch name.
BRANCH_REQUIRED Choose a branch.
COSTING_METHOD_CHANGE_WITH_STOCK The costing method can't change while stock exists. Reconcile the stock to zero first.
COSTING_METHOD_REQUIRED Choose a costing method.
COUNT_ALREADY_APPROVED An approved count can't be cancelled.
COUNT_NOT_IN_PROGRESS Lines can only be added to a count that's in progress.
COUNT_NOT_SUBMITTED Only a submitted count can be approved.
COUNT_NO_LINES A count with no lines can't be submitted.
COUNT_NUMBER_REQUIRED Enter the count number.
COUNT_TYPE_INVALID That count type isn't recognised.
DEDUCT_QUANTITY_INVALID The quantity to deduct has to be more than zero.
DEFAULT_BRANCH_EXISTS There is already a default branch.
DESTRUCTION_EXCEEDS_REMAINING You can't destroy …; only … is left.
DESTRUCTION_METHOD_REQUIRED Choose a destruction method.
DESTRUCTION_QUANTITY_INVALID The quantity has to be more than zero.
DESTRUCTION_REASON_REQUIRED Enter a reason for the destruction.
DUPLICATE_SERIAL Some of these serial numbers already exist: …
INSUFFICIENT_STOCK Not enough stock: … available, … needed.
INVALID_INVENTORY_ITEM Choose a stock item.
INVENTORY_ALREADY_ACTIVE This stock item is already active.
INVENTORY_ALREADY_INACTIVE This stock item is already inactive.
INVENTORY_ITEM_REQUIRED Choose a stock item.
INVENTORY_ITEM_TYPE_REQUIRED Choose the item type.
INVENTORY_NAME_AR_REQUIRED Enter the Arabic name.
INVENTORY_NAME_EN_REQUIRED Enter the English name.
INVENTORY_TRACKING_MODE_REQUIRED Choose a tracking mode.
INVENTORY_UOM_REQUIRED Choose the base unit of measurement.
SERIAL_CANNOT_REENTER Serial … cannot be received here.
SERIAL_ITEM_REQUIRES_BASE_UNIT This item is serial-tracked: one serial is one piece, so use the piece unit.
RECALL_LOT_REQUIRED Enter the lot number to recall.
RECALL_NOT_ACTIVE Only an active recall can be resolved.
RECALL_REASON_REQUIRED Enter a reason for the recall.
SERIAL_ISSUED_MOVEMENT_REQUIRED The issuing movement is missing.
SERIAL_MOVEMENT_REQUIRED The receiving movement is missing.
SERIAL_NOT_FOUND That serial number isn't on record.
SERIAL_NOT_SOLD Serial number … hasn't been sold.
SERIAL_NOT_WRITTEN_OFF Serial number … isn't a written-off unit of this item at this branch, so it can't be added back.
SERIAL_NUMBERS_REQUIRED Enter the serial numbers for this serial-tracked item.
SERIAL_NUMBER_REQUIRED Enter the serial number.
TRACKING_MODE_CHANGE_BLOCKED The tracking mode can't change while stock exists. Reconcile the stock to zero first.
TRANSFER_SERIAL_COUNT_MISMATCH Transferring … units needs exactly … serial numbers; … were picked.
SERIAL_COUNT_INCREASE_NOT_ALLOWED A count can't add units of a serial-tracked item. Receive the found units through "Receive Stock" with their serial numbers, then count again.
SERIAL_COUNT_MISMATCH Removing … units needs exactly … serial numbers; … were picked.
RECEIVE_SERIAL_COUNT_MISMATCH Receiving … units (bonus included) needs exactly … serial numbers; … were entered.
SERIAL_ADJUST_INCREASE_NOT_ALLOWED A serial-tracked item cannot be adjusted up. Receive the units through "Receive Stock" with their serial numbers instead.
SERIALS_DUPLICATE The same serial number was picked twice.
UOM_BASE_FACTOR_ZERO The conversion factor can't be zero.
UOM_DUPLICATE_NAME A unit called … already exists in the … group.
UOM_GROUP_MISMATCH That unit doesn't belong to the item's unit group.
UOM_IN_USE This unit is in use and can't be deleted.
STORE_REQUIRED Choose a store.
STORE_NAME_REQUIRED Enter the store's name.
STORE_NAME_TOO_LONG A store name is at most … characters.
STORE_NAME_DUPLICATE This branch already has a store named "…".
STORE_NOT_FOUND This store does not exist.
STORE_NOT_IN_BRANCH This store belongs to another branch.
STORE_INACTIVE Store "…" is deactivated.
STORE_SELLING_CHANGED The branch's selling store just changed. Try again.
STORE_IS_SELLING This is the selling store — make another store the selling store first.
STORE_HAS_STOCK Store "…" still holds … item(s) — transfer or adjust them first.
STORE_HAS_OPEN_COUNT Store "…" has an open count — approve or cancel it first.
STORE_SELLING_SWITCH_NEEDS_CONFIRM … item(s) are only in the current selling store — transfer them to the new store before selling them.
BRANCH_INACTIVE Branch "…" is deactivated.
BRANCH_HAS_OPEN_TICKETS This branch still has open tickets — close or void them first.
BRANCH_HAS_OPEN_SHIFT This branch still has an open shift — close it first.
SERIAL_NOT_IN_SELLING_STORE Serial … is not in the selling store "…" — transfer it first or ring another unit.
TRANSFER_SAME_STORE Choose a different store to receive the goods.
TRANSFER_NUMBER_REQUIRED A transfer needs a number.
TRANSFER_LINE_ITEM_REQUIRED Each transfer line needs an item.
TRANSFER_LINE_UOM_REQUIRED Each transfer line needs a unit.
TRANSFER_LINE_QUANTITY_INVALID A line's quantity must be above zero.
TRANSFER_LOTS_DO_NOT_COVER_STOCK The lots of "…" in store "…" cover only … of the … in stock — count or reconcile it first.
TRANSFER_LOT_INSUFFICIENT Lot … holds only ….
TRANSFER_LOT_MISMATCH This lot is not this item's in the store you are transferring from, or the item keeps no lots.
TRANSFER_SERIALS_NOT_SERIAL_ITEM "…" keeps no serial numbers — send the line without them.

Printing, tills and the kitchen display

Code Message
PRINTER_CAP_EXCEEDED You've reached your plan's printer limit. Deactivate a printer or upgrade your plan to add more.
NO_ACTIVE_RECEIPT_PRINTER There's no active receipt printer for this branch. Add or enable one in Settings → Printers, or use browser print.
NO_RECEIPT_TEMPLATE There's no active receipt template. Set one as default in Settings → Templates.
HOST_UNREACHABLE The print program didn't answer. Check that the till app is open and connected on the PC with the printer, then try again.
PRINTING_DISABLED Printing isn't turned on for this business, so the receipt can't be sent to a printer.
DUPLICATE_ROUTING The same printer and category appear more than once.
INVALID_KDS_RECALL This kitchen ticket can't be recalled from its current state.
INVALID_KDS_RUSH This kitchen ticket can't be rushed in its current state.
INVALID_KDS_TRANSITION This kitchen ticket can't advance from its current state.
INVALID_PAIRING_PIN The pairing PIN is missing, expired or wrong.
PAIR_LOCAL_NOT_LOOPBACK Only the till app on the server computer itself pairs automatically. Pair this till with the PIN.
PAIR_LOCAL_ALREADY_PAIRED This computer's till is already paired as “…”. Ask an admin to revoke it in Settings → Tills; it then pairs itself again. Or pair it with the PIN.
PAIR_LOCAL_NO_CONTEXT This server has no single shop and branch to pair the till into automatically. Pair it with the PIN.
INVALID_PRINTER One of the printers in this routing is missing, switched off, or not a receipt or kitchen printer.
PRINTER_HAS_HISTORY This printer has print history, so it can't be deleted. Deactivate it instead.
PRINTER_INACTIVE Printer … is deactivated. Reactivate it before a test print.
SERVER_TILL_NOT_FOUND That till is not the one on the server's PC, so the server's printers cannot be moved to it.
PRINTER_IS_DEFAULT The default printer can't be deleted. Make another printer the default first.
ROUTING_BRANCH_REQUIRED Category routing is saved per branch, and this session has no branch. Sign in as a user with a branch and try again.
ROUTING_DUPLICATE_PRINTER ‹…› is routed to more than one kitchen printer. The kitchen ticket prints on one printer only — choose one.
ROUTING_PRINTER_UNUSABLE ‹…› is not connected — no printer name is set for it, so nothing sent to it can print. Choose another printer or set it up under Printers.
STATION_HAS_ACTIVE_TICKETS This station still has active kitchen tickets and can't be deleted.
KDS_ROUTING_CONFLICT This item is already routed to the … station. Remove it there first.
TEMPLATE_IS_DEFAULT The default template can't be deleted. Make another template the default first.
TERMINAL_NAME_REQUIRED Enter the till name.
TERMINAL_NAME_TAKEN A till called … already exists.
PRINTER_NAME_TAKEN There is already a printer called "…" — pick another name.
TERMINAL_PRINTER_NOT_RECEIPT "…" is not a receipt printer. Pick a receipt printer for this till.
TERMINAL_REVOKED This till has been revoked and can no longer be edited.
INVALID_REGISTRATION_TOKEN This till's pairing is not valid. Pair the till again.
TERMINAL_VERSION_INVALID The till version isn't valid.
TERMINAL_DRAWER_INVALID A till without a drawer must use the drawer of another active till in the same branch that has its own.
TERMINAL_HAS_OPEN_SHIFT This till's drawer has an open shift. Close it before removing the drawer.
TERMINAL_IS_A_DRAWER Other tills put their cash in this till's drawer. Point them to another drawer first.

Sign-in, staff and roles

Code Message
FORBIDDEN You don't have permission for this action
UNAUTHORIZED Your session has expired. Sign in again.
USER_CAP_EXCEEDED You've reached your plan's active-user limit. Deactivate a user or upgrade your plan to add more.
INVALID_CREDENTIALS Invalid email or password.
ACCOUNT_DISABLED This account is disabled.
EMAIL_TAKEN A user with this email already exists.
STARTUP_SCREEN_NOT_AUTHORIZED This user cannot open that startup screen. Pick another, or give them the permission it needs.
UNKNOWN_STARTUP_SCREEN That startup screen no longer exists. Pick another.
EMAIL_EMPTY Enter an email address.
EMAIL_EXISTS This email is already registered.
EMAIL_INVALID That isn't a valid email address.
INVALID_PASSWORD The current password is wrong.
NO_ACTIVE_TENANTS This account has no active business.
NO_PENDING_OWNER There is no pending owner account to claim.
OWNER_ALREADY_EXISTS An owner account already exists.
SETUP_CODE_REQUIRED This step needs the setup code from the server computer, or a signed-in owner.
SETUP_CODE_INVALID The setup code is not correct.
ROLE_IN_USE This role is still assigned to users. Remove it from them first.
ROLE_NAME_TAKEN A role called … already exists.
SAME_PASSWORD The new password has to differ from the current one.
SYSTEM_ROLE_IMMUTABLE The Admin role can't be deleted.
TENANT_NAME_EMPTY Enter the business name.
USER_ALREADY_DEACTIVATED This user is already deactivated.

Settings, rules and tables

Code Message
DEPARTMENT_MOVE_REQUIRES_RELEASE_CONFIRMATION This ticket is seated at …. Confirm releasing it before moving it.
ENTITY_LINK_NOT_FOUND That link is no longer on this ticket.
NUMERATOR_NOT_FOUND That numbering sequence no longer exists. Pick another one.
DEPARTMENT_INACTIVE That department has been deactivated.
DEPARTMENT_NAME_TAKEN Another department already uses this name. Two departments with the same name are two identical choices in the till's department list.
DEPARTMENT_NOT_FOUND This department no longer exists. It may have been deleted while this dialog was open.
DEPARTMENT_REQUIRES_ENTITY_SCREEN A department that opens on a floor plan needs at least one screen selected.
DEPARTMENT_SCREEN_NOT_FOUND One of the selected screens no longer exists. Reopen the dialog to see the current list.
DEPARTMENT_TICKET_TYPE_INACTIVE That ticket type is no longer active. Pick another one.
DEPARTMENT_TICKET_TYPE_REQUIRED Pick a ticket type for this department.
NUMERATOR_PAD_WIDTH_INVALID The padding width is out of range.
NUMERATOR_PREFIX_TOO_LONG The prefix is too long.
NUMERATOR_RESET_POLICY_LOCKED This numbering sequence has already issued numbers, so its reset policy can't change. Create a new one instead.
SELECT_AT_LEAST_ONE_SCREEN A department opens only this screen. Give it another screen before deleting this one.
ENTITY_TYPE_HAS_INSTANCES Cannot delete: this entity type has existing instances. Remove all instances first.
COMMAND_KEY_REQUIRED Choose the action this rule runs.
DEFAULT_STATE_EMPTY Choose a default state.
DROPDOWN_OPTIONS_REQUIRED A dropdown field needs at least one option.
ENTITY_NAME_EMPTY Enter a name.
ENTITY_SCREEN_BACKGROUND_EMPTY The background picture is empty.
ENTITY_SCREEN_BACKGROUND_INVALID The background picture isn't in a supported form.
ENTITY_SCREEN_BACKGROUND_TOO_LARGE The background picture has to be … KB or smaller.
ENTITY_SCREEN_BACKGROUND_TYPE_UNSUPPORTED Floor plan backgrounds have to be WebP, JPEG or PNG.
ENTITY_STATE_EMPTY Choose a state.
ENTITY_STATE_UNDECLARED This type has no state called ….
ENTITY_TYPE_MISMATCH That item belongs to a different type.
ENTITY_TYPE_NAME_AR_EMPTY Enter the Arabic name of the type.
ENTITY_TYPE_NOT_FOUND That entity type no longer exists.
RULE_NAME_TAKEN A rule called … already exists. Choose another name.
RULE_DEPARTMENT_SCOPE_UNSUPPORTED This event isn't about a ticket, so it can't be limited to departments.
RULE_ACTION_STATUS_INVALID This action names a status group or status that does not exist (group "…", status "…"). Choose an existing group and status.
RULE_NOT_FOUND That rule no longer exists.
SEED_WOULD_DESTROY_DEPARTMENTS This business already has departments the sample data would replace. Remove them first, or skip the sample data.
SEED_WOULD_DESTROY_RULE_SCOPES Some rules are limited to departments the sample data would replace. Clear those rules' departments first, or skip sample data.
SEED_WOULD_DESTROY_STATUS_GROUPS Status groups use ticket types the sample data would replace. Take those ticket types out of the status groups first, or skip the sample data.
SEED_WOULD_DESTROY_TICKET_TYPES This business already has ticket types the sample data would replace. Remove them first, or skip the sample data.
SETUP_ALREADY_COMPLETE Setup has already been completed.
SYSTEM_RULE A system rule can't be deleted.

Backups, database and updates

Code Message
BACKUP_CORRUPT The backup file is damaged and can't be restored.
BACKUP_DISK_FULL There isn't enough disk space for a backup.
BACKUP_NOT_FOUND That backup no longer exists.
BACKUP_UNAVAILABLE Backups aren't available on this server.
BACKUP_VERIFY_FAILED The backup was written but failed verification. Try again.
NOTHING_STAGED There is no update ready
STALE_RELEASE The ready release changed; try again
EXECUTOR_UNAVAILABLE The updater service is not running
RUN_IN_PROGRESS A check or an update is already running
RETRY_EXHAUSTED This release has run out of attempts
UPDATER_DISABLED Automatic updates are off
BACKUP_FAILED The backup failed; the update did not start
MIGRATION_ORPHAN_BRANCH_ROWS The database holds stock rows for branches that do not exist, so the upgrade stopped and nothing changed. Contact support.

General

Code Message
NOT_FOUND This record no longer exists. Refresh and try again.
VALIDATION_ERROR Some fields need attention. Check the highlighted fields and try again.
INTERNAL_ERROR Something went wrong on the server. Try again, and contact support if it keeps happening.
NETWORK_ERROR Couldn't reach the server. Check the connection and try again.
UNKNOWN_ERROR An unexpected error occurred.
CONCURRENCY_CONFLICT This record was changed elsewhere. Reload it and try again.
INVALID_REQUEST_BODY The request was incomplete or malformed. Check the fields and try again.
SCALE_BARCODE_CHECK_DIGIT Invalid barcode (check digit). Scan it again.
SCALE_BARCODE_UNREADABLE No scale layout reads this barcode.
SCALE_BARCODE_PRODUCT_MISMATCH The sticker carries scale code …, which is not this product's.
SCALE_BARCODE_WEIGHT_ON_PIECE This is a weight sticker for a product sold by the piece.
SCALE_BARCODE_COUNT_ON_MEASURE This is a count sticker for a product sold by weight or length.
SCALE_BARCODE_PRICE_UNPRICED The weight cannot be worked out from a price sticker: the product has no price.
SCALE_BARCODE_PRICE_ON_PIECE A price sticker is for a product sold by weight or length only.
SCALE_RULE_NAME_INVALID Enter a name for the layout.
SCALE_RULE_PREFIX_INVALID The prefix is one or two digits starting with 2.
SCALE_RULE_VALUE_KIND_INVALID Choose what the sticker carries: a weight, a price or a count.
SCALE_RULE_CODE_LENGTH_INVALID Code digits run from … to ….
SCALE_RULE_VALUE_LENGTH_INVALID Value digits run from … to ….
SCALE_RULE_DECIMALS_INVALID Decimals are 0 to 3 for a weight or a price, and 0 for a count.
SCALE_RULE_LENGTH_MISMATCH The digits add up to …; a sticker has ….
SCALE_RULE_PREFIX_TAKEN Another active layout already starts with ….
SCALE_CODE_INVALID A scale code is digits only, at most ….
SCALE_CODE_TAKEN Scale code … is used by another active product.
QUANTITY_MUST_BE_WHOLE This product is sold by the piece, so its quantity must be a whole number.
QUANTITY_TOO_PRECISE The most decimal places this product takes: ….
SALE_UNIT_MISMATCH That unit does not match how this product is sold.
QUANTITY_DECIMALS_INVALID The number of decimals is not allowed for this way of selling.
SOLD_BY_SERIAL_CONFLICT A product sold by weight or length cannot use a serial-tracked item.
INVALID_DATE_RANGE The start date has to be on or before the end date.
ALREADY_ACTIVE This calculation type is already active.
ALREADY_INACTIVE This calculation type is already inactive.
STATUS_BOOTSTRAP_KEY_INVALID A status group's template key must be lower-case letters, digits and underscores.
STATUS_CODE_DUPLICATE The code "…" is already used. Choose another.
STATUS_CODE_INVALID A status code must be lower-case letters, digits and underscores.
STATUS_COLOR_INVALID Choose a colour for the status.
STATUS_GROUP_NAME_REQUIRED Enter the group's Arabic and English names.
STATUS_GROUP_NAME_TOO_LONG A group name is at most … characters.
STATUS_GROUP_TICKET_TYPE_NOT_FOUND A ticket type in this group no longer exists. Reload and try again.
STATUS_STATE_NAME_REQUIRED Enter the status's Arabic and English names.
STATUS_STATE_NAME_TOO_LONG A status name is at most … characters.
STATUS_STATE_NOT_FOUND A status in this form no longer exists. Reload and try again.
STATUS_TRANSITION_PERMISSION_UNKNOWN A transition names an unknown permission.
STATUS_TRANSITION_STATE_UNKNOWN A transition names a status that is not in this group.