Used Newie, our AI search tool in the docs? Take a 2-minute survey to rate your experience!

Troubleshooting and replacing APG cash drawers

Prev Next

When a cash drawer stops responding, Associate App cannot complete cash-related transactions. Use this guide to diagnose connectivity issues and, when the hardware is at fault, replace the cash drawer without disrupting the store's sales audit reconciliation.

Troubleshooting connectivity issues with APG cash drawers

Associate App communicates with APG cash drawers in three steps for each cash operation, such as a sale or daily open:

  1. Associate App sends a UDP broadcast that instructs cash drawers on the network to announce themselves.

  2. Associate App listens for UDP responses from each drawer. Each response contains the drawer's ID and IP address.

  3. After the user scans an ID that Associate App captured in step 2, Associate App issues TCP commands to the selected drawer, such as querying whether it is open or sending a command to open it.

Most connectivity problems occur in step 2, when Associate App does not hear back from any drawer. Either the drawers do not receive the broadcast, or Associate App does not receive a response from the drawers.

To diagnose the issue:

  • Check network segmentation. If the iPhones are on a separate VLAN from the cash drawers, broadcast traffic might not cross VLAN boundaries. Confirm that UDP broadcasts can reach both networks.

  • Check iOS local network permissions. If the issue is consistent on a single iPhone, verify that Associate App has permission to interact with devices on the local network in iOS settings.

  • Check for dropped UDP broadcasts. If the issue is sporadic, UDP packets might be dropped on the network. Use a packet capture tool such as Wireshark to confirm whether broadcasts reach the drawers and whether responses reach Associate App.

If debugging tools on the computer do not show any issues, focus on the iPhone network path and permissions.

Replacing a faulty APG cash drawer

When the retail network team confirms that a hardware failure caused the malfunction, replace the cash drawer in three stages:

  1. Deactivate and decommission the faulty drawer and reconcile its events with the sales audit.

  2. Activate a non-integrated cash drawer and transfer in funds from the faulty drawer.

  3. Replace the non-integrated drawer with a new integrated drawer and reconcile with the sales audit.

Communicate the impact and resolution to the retailer, and involve the team members needed to perform and validate each step.

This guide assumes the malfunction began in the middle of the day, after the daily open and after cash transactions have already been processed. At this point, the associate cannot connect to the cash drawer or perform any cash operations, and Associate App blocks cash-related tasks until the drawer is switched to integrated or non-integrated mode.

Stage A: Force-closing the faulty APG cash drawer

  1. Count the funds in the faulty cash drawer and record the following:

    • Total funds, including any sales on top of the float amount (for example, $573.20).

    • The float amount set for the day (for example, $400).

    • The bank deposit, calculated as total funds - float amount (for example, $173.20).

  2. Work with the NewStore team to deactivate the faulty drawer using the steps in Decommissioning an integrated cash drawer. Verify that the drawer is deactivated and decommissioned on the Cash management summary screen.

  3. As part of step 2, NewStore triggers the following events to the sales audit application:

    • cash_drawer.count_submitted (end-of-day balance)

    • cash_drawer.transaction_completed (reconciliation)

    • cash_drawer.transaction_completed (end-of-day withdrawal)

    • Deactivation and decommissioning

Stage B: Switching to a non-integrated APG cash drawer

  1. In Associate App, on the Cash management screen, deactivate the integrated drawer and switch to a non-integrated drawer. In the Name field, enter the store ID (for example, nyc_505).

  2. Perform a daily open and set the float amount to the value recorded in Stage A.

  3. Perform a transfer-in for the bank deposit amount recorded in Stage A. This triggers the events the sales audit application requires.

  4. Use the non-integrated drawer for all cash operations in the store.

  5. Close the non-integrated drawer at the end of the day using the same steps as for an integrated drawer.

Stage C: Installing a new integrated APG cash drawer

Replace the cash drawer when the store is not operational, either before the start of the day or after the non-integrated drawer is closed.

  1. Confirm the non-integrated drawer is closed and the funds are moved to the safe.

  2. Install the new integrated drawer, connect it to the network, and activate it in the store.

  3. Perform a daily open on the integrated drawer with the float amount.

  4. Use the integrated drawer for business.

Work with the sales audit team to confirm all transactions are reconciled and no funds are unaccounted for. Some manual reconciliation is required because the system still records funds in the faulty drawer that could not be transferred out. The sales audit application does not differentiate between integrated and non-integrated drawers, so the funds appear to remain in the faulty drawer rather than moving to the non-integrated drawer.

Decommissioning an integrated APG cash drawer

Important

If the cash drawer you are trying to remove is the last or only integrated cash drawer assigned to the store, ensure that you disable Cash management via Settings before you decommission the cash drawer. If you do not disable cash management, the drawer cannot be removed.

Use these cash drawer APIs to decommission an integrated cash drawer:

  1. List cash drawers for the store to confirm that the drawer ID is correct and currently active.

  2. Perform a cash count. Save the count ID returned by the API.

  3. Record the cash count and specify the total funds counted in the drawer. This triggers two events:

    • cash_drawer.count_submitted (end-of-day balance for the drawer)

    • cash_drawer.transaction_completed (reconciliation of transactions completed)

  4. Deactivate the cash drawer. This triggers two events:

    • cash_drawer.transaction_completed (end-of-day withdrawal of cash from the drawer)

    • Deactivation of the drawer.

  5. Decommission the cash drawer. This triggers cash_drawer.drawer_updated with decommissioned = true and marks the drawer as inactive.

The cash drawer can no longer process any cash transactions.