When you'd use this
You're working a booth with someone else. They're ringing up a customer, the customer has a question only you can answer, and you don't want to step away from what you're doing. Instead of walking the customer back to you or restarting the sale on your device, the helper hands off the cart. You pick it up on your device, finish the conversation, take payment, complete the sale. The customer never has to walk anywhere.
It's also useful for the "I need to step away mid-sale" case: park the cart with a code, you pick it up where you are, finish when convenient.
Turn it on (one-time, opt-in)
Cart handoff is off by default. Solo vendors who never have a helper in the booth don't see the Hand off and Pick up controls. To enable it: open Settings โ Operations in the app, check Enable cross-device cart handoff, and tap Save. (Canonical key: CART_HANDOFF_ENABLED.)
The ๐ฒ Hand off button (alongside Park cart) and the ๐ฅ Pick up handoff link (top-right of the Cart header) will appear. Uncheck and save again to hide them. Each device has its own setting cache, but the next backend pull on any device that's been left alone will pick up the change.
Sending: hand off a cart
Build the cart normally
Add items, apply any discounts or tip, set tax-exempt if needed. Whatever shape the cart is in when you hit Hand off, that's the shape the other device receives. No need to pick a payment method first โ let the receiving device do that.
Tap "๐ฒ Hand off"
Below the Complete Sale button, in the same row as Park cart and Abandon. The button is disabled if the cart is empty (nothing to hand off).
Get the code
A modal appears with a 4-digit number, big and easy to read. Tell the other device's user the code (out loud, by text, whatever's easy at the booth).
Tap "Done โ clear cart"
The cart clears on your device so you can ring up the next customer. The handed-off copy lives on the backend until someone picks it up (or 4 hours pass).
Receiving: pick up a cart
Tap "๐ฅ Pick up a handoff from another device"
Near the top of the cart area on the Sale view. Always visible (you don't need an empty cart to pick up โ see below).
Type the 4-digit code
Tap Pick up. The cart loads on your device with all the same items, discount, and tip the other device had. You're now the active sale; take payment and complete normally.
What happens to your existing cart when you pick up
If your device has a cart in progress when you pick up a handoff, your cart gets parked locally first (not lost). You can come back to it via the "Parked" pills at the top of the cart area, same as any other parked cart. The picked-up cart becomes your active cart.
If your cart is empty, no parking happens; the pickup just becomes your active cart.
Limits and edge cases
- Codes expire after 4 hours. If nobody picks it up in that window, the code stops working and the cart is gone. Park the cart again from the source device to get a fresh code.
- Codes can only be used once. Once a code is picked up, it's claimed. If you need to hand off again, hand off again to get a new code.
- Both devices need internet. Handing off and picking up both require a quick round-trip to the backend. If either device is offline, the action errors clearly.
- Different events on each device: if the source device was on event A and the receiver is on event B, the cart still picks up fine but you'll see a note telling you to verify the event is right. Line prices in the cart don't change. Switch event in Settings if needed before completing the sale.
- Lost codes: if both devices forget the code, you can find it on the
ParkedCartssheet of your spreadsheet (auto-created the first time you use this feature). Look for the row with status "parked" and the time you handed off.
Park cart stashes a cart locally on the same device for "I need to ring up another customer first" pauses. Hand off stashes a cart on the backend with a code so a different device can pick it up. Same general idea (pause this cart, do something else, come back to it), different scope.