Stock products and sell them at the locker kiosk

Set up the catalog and inventory, load the compartments, and follow a customer's purchase through collection and restocking.

Before you begin

  • Configure the kiosk in retail mode with the intended device, retail resources, and verified compartment-opening commands.
  • Use Console access for the correct project's vendors, products, and inventory; verify the kiosk account can perform its stock and order operations.
  • Keep the kiosk out of customer use while assigning and physically loading stock. Inventory records do not verify that products are inside or doors are closed.
  • Use one sale unit per compartment for this workflow. Each selected compartment creates one product order line; opening it exposes its contents.

Verified against integrate-nekospaze-app at 5d1abe32660e on 8 September 2026. Retail shopping and inventory tools exist; physical loading, payment integration, door outcomes, and staff access still need installation validation.

Step by step

  1. Create the vendor and product in Console

    Open Vendors in the correct project and save the vendor's name, code, and optional colour. In Products, choose that vendor and set the product name, SKU, description, price, media, and visibility. Use an image URL for the kiosk product picture; the kiosk does not render Console's icon alternative as a product image.

  2. Assign stock to a compartment

    Open Inventory and select Stock resource. Choose the intended compartment, product, and quantity, then save. Use quantity 1 for the one-unit sale described here. An existing stock row is edited from its row rather than added again. This action updates inventory only; it sends no door command.

  3. Load and verify the physical stock

    With the kiosk attended and unavailable to shoppers, enter the operator Restock workflow, choose the vendor and assigned compartment, and use Open & Restock. It opens the compartment and records quantity 1 of the already assigned product. Check the door, place the matching sale unit inside, close it, and verify the kiosk's product, price, and availability before allowing purchases.

  4. Let the customer choose products

    On the retail home screen, the customer taps stocked compartments to add or remove them from the cart. Review the selected products, compartments, and total. An eligible promotional code can be applied at checkout when one is available.

  5. Complete payment

    Choose PromptPay, Credit Card, TrueMoney, or AliPay and follow the displayed payment instructions. Keep the kiosk session available while paying. The kiosk proceeds to collection when the server reports the order as Completed; a scanned QR or a submitted payment alone is not that confirmation.

  6. Collect from the selected compartments

    The paid retail flow sends opening commands for the selected compartments. The customer checks the physical doors, removes the purchased goods, and closes the doors. If a door does not open, retain the order reference and ask the operator to inspect it: the current pickup screen can label a compartment open without surfacing the helper's returned failure.

  7. Reconcile the sale and restock

    Payment confirmation reduces stock by one for each product order line. The operator compares the order, remaining inventory, and physical contents before replenishing. Open & Restock restores quantity 1 of the existing product; use Console Inventory to change the product or stock quantity, then verify the physical loading again.

You’re ready when

A product is linked to a compartment, physically loaded and checked, sold through the retail checkout, and reconciled before replenishment.

Troubleshooting

The compartment is missing from Stock resource
Check the project and resource list. New assignments exclude resources that already have a stock row; edit the existing Inventory row when the compartment is already assigned.
The kiosk shows out of stock or the wrong product
Compare the Console Inventory product and quantity with the kiosk's resource and device mapping, retail mode, and mirrored data. Check whether the resource is in Maintenance. Confirm the physical contents before correcting availability.
A stock update or checkout is rejected
Check the returned error. Stock assignment requires the product and resource to belong to the same project, a positive quantity, a non-Maintenance resource, and permission. Checkout also checks Active status, the matching product assignment, and positive stock.
Payment was made but collection has not started
Ask the operator to inspect the same order reference, payment result, and kiosk connection before beginning another purchase. The kiosk waits for the server's Completed order state.
The order is paid but the door stays shut
Inspect the physical compartment and its command response. Payment completion, stock deduction, and door opening are separate results. Follow the site's recovery process for the paid order rather than treating the pickup screen as proof of collection.
Restock opens without asking for a staff credential
That is the current behavior. staffAuth is stored but not enforced by the route. Restrict operator access through site procedures until an authenticated staff path is implemented; cloud mutations still depend on the kiosk account's permissions.

Technical details

Operator: catalog setup
Console Vendors and Products define the merchandise. Inventory → Stock resource saves the compartment, product, and quantity. Editing retains the resource but can change its product and quantity.
Operator: physical replenishment
Restock filters compartments by vendor. Open & Restock uses the existing product and quantity 1; it does not wait for a sensor-confirmed load or door closure before writing stock.
Customer: checkout and collection
Each selected compartment becomes one Product order line. The paid order state triggers retail pickup; personal locker credentials are not requested in this flow.
Stock permission
assign_resource_stock accepts resource_id, product_id, and positive quantity. It requires project-matching or global projects:update or lockers:update and rejects a product from another project or a resource in Maintenance.
Stock lifecycle
The server checks a matching, stocked Active resource when creating a product order and decrements stock by one on payment confirmation. Inventory counts are software records, not measurements of physical contents.
Commissioning: correct product
Assign one product to one compartment, physically load it, then verify the kiosk image, name, price, location, and stock state before selling.
Commissioning: payment and door failure
Verify that a confirmed payment advances the intended order and compartments. Test a failed or unknown door acknowledgement and ensure the operator can reconcile payment, stock, and goods without assuming collection.
Commissioning: staff and replenishment
Verify the account's allowed project operations and physical operator-access procedure. After a sale, replenish the same product and confirm the one-unit stock record matches the contents.

Common questions

Can I pick a new product or quantity on the Restock screen?
No. Restock uses the compartment's existing product and writes quantity 1. Use Console Inventory to assign or change the product and quantity. Inventory assignment does not open or physically load the compartment.
Can one purchase release only one item from a compartment containing several?
The current mechanism opens the compartment; it does not verify or dispense a single item from its contents. A larger recorded quantity does not create that control. This guide uses one sale unit per compartment.
Does a retail customer use the booking Drop-off and Pick-up PINs?
No. Retail collection follows the paid kiosk order. It is a separate flow from parcel booking PIN access and has no personal NFC or PIN challenge at collection in the reviewed implementation.
Does the card payment option mean there is a physical card terminal?
The reviewed flow displays payment instructions and payment data on the kiosk. It does not establish a physical card-terminal integration; follow the payment experience configured for this installation.
Can the kiosk sell offline or guarantee stock cannot be oversold?
Neither guarantee is established by this review. Payment waits for the server, and stock validation plus deduction is not proof of inventory reservation across simultaneous purchases. Test the installation's failure and concurrency behavior before rollout.

Still stuck? Tell support what happened and which step you reached.

Email support