When a code is required
FIRE POS V2 can request an authorization code for operations such as:- Closing a register with a cash shortage.
- Correcting a declared cash amount during register close.
- Performing a cash withdrawal.
- Cancelling a completed order from the POS.
- Unlocking or forcing administrative actions, depending on store policy.
Who generates the code
Only a manager with backoffice access and scope over the store can generate an authorization code. The manager generates the code from the backoffice:- POS → Authorization codes: the manager selects the purpose, writes the reason and sets the duration, then generates a 6-digit code.
The cashier should not choose the reason or amount for manager-controlled operations. The manager chooses the purpose in backoffice, enters the reason and generates the code.
1. The cashier starts the operation
At the POS, the cashier starts an operation that requires approval. For example, they try to close a register with a shortage. The POS asks for the cashier PIN again when the operation is sensitive. This confirms that the active cashier is still the person executing the action.2. The POS asks for a code
When manager approval is needed, the POS shows a screen asking for the manager code. The cashier informs the manager verbally or through the store’s normal communication channel.
3. The manager opens Authorization codes
In the backoffice, the manager opens POS → Authorization codes to generate the code. They select the purpose that matches the operation, write the reason and choose the code duration.
4. The manager enters the reason and generates the code
The manager completes the required fields, such as reason, amount or category depending on the request, and clicks Generate code. The backoffice shows a 6-digit code. The code is short-lived and bound to the request purpose and constraints.
5. The cashier enters the code in the POS
The manager dictates the code to the cashier. The cashier enters the 6 digits in the POS authorization-code field. If the code is valid, the POS completes the operation and the backend records the consumed code in the audit trail.
Close register with shortage
During blind register close, the cashier declares the counted cash without seeing the expected cash amount. If the declaration is lower than expected, the POS asks for a manager code. The manager opens Authorization codes, writes the reason and generates a code with purposepos:close_with_shortage bound to that register session.
The cashier enters the code and closes the register. The exact shortage is visible to the manager and audit records, not to the cashier during the flow.

Cash withdrawal
For a withdrawal, the cashier requests approval from the POS. The manager opens Authorization codes, enters the amount, reason and category, and generates a code with purposepos:withdrawal_approval.
The cashier enters the code in the POS. When the backend validates it, the withdrawal is recorded, the drawer opens and a digital voucher is created.

Cancel an order
A cashier can cancel a completed order from the POS within a 30-minute window. Cancellation issues a credit note, so it always needs manager authorization. The manager generates a code with purposepos:cancel_order_access. Unlike the codes above, this one unlocks a cancellation session: once the cashier enters a valid code, they can cancel more than one order without requesting a new code.

Security rules
Authorization codes in FIRE POS V2 follow these rules:- They have 6 digits.
- They are consumed once. For most actions a code authorizes a single operation; for order cancellation that one use opens a cancellation session in which the cashier can cancel more than one order.
- They expire quickly.
- They are generated for a specific purpose, such as
pos:close_with_shortage,pos:withdrawal_approvalorpos:cancel_order_access. - They can include constraints such as target register session, target cashier or maximum amount.
- They are recorded in audit logs when generated, failed or consumed.
A valid code only authorizes the action it was generated for. A withdrawal code cannot be reused to close a register, and a code for one register session cannot approve another session.
Troubleshooting
If the POS rejects the code, check the most common causes:- The code expired.
- The code was already used.
- The code was typed incorrectly.
- The manager generated it for a different purpose.
- The code was generated for another register session, cashier or amount.

