Supported way to open an externally created unpaid order on Square Register S252/S251?

We are integrating a custom iPad front desk application with our existing second-generation Square Register (S252) and original USB-connected customer display/card reader (S251). Our requirement is for staff to build a complete unpaid sale in the iPad app and tap once so that the same itemized sale becomes the active native Register checkout, ready for card or cash payment. A documented single scan of a whole-order QR code on the Register-connected scanner could also work. Staff must not create, search for, or manually open a ticket. We need the original customer reader, Register receipt, and cash-drawer workflow; a separate Square Terminal is a different workflow.

Please answer these separately for Square Register:

  1. C1 — payable unpaid order: Can an external application create a complete itemized unpaid order that this Register can actually collect payment against?
  2. C2 — active checkout: Can the application make that exact order active on the intended Register automatically, or through one supported whole-order QR scan, without staff creating/searching/opening a ticket?

For each, is the mechanism supported now, unsupported, or gated by partner/account access? If supported, please name the API/SDK/partner product, current eligibility, required POS mode/version/scopes, documentation and example. How does it select the intended Register, handle a busy checkout, repeat sends, cancellation and disconnects, and return the exact order/payment IDs needed to prevent duplicate collection? For QR, what payload and native whole-order action are supported? Does it preserve the original customer reader, receipt printer and cash drawer?

Our recorded test baseline is Square OS 7.51.0044 and Square POS 7.28.1 on the S252; S251 reader firmware 4.18.98. We will verify current versions at a device test. We can provide merchant/application identifiers and full serials privately if Square needs them.

We have seen Square’s documentation that POS-created orders cannot be updated through UpdateOrder and forum guidance that open-order access is limited. An API-created order appearing in a list, an IN_STORE fulfillment, an added catalog item, or an HTTP success response alone would not establish C2. Please identify a supported route for both capabilities or state which is unavailable. We would like a technical demonstration with a multi-line unpaid cart, quantity, discount, tax, busy-device handling, repeated handoff and cancellation on the original Register.

Welcome to the Developer Forum and thanks for your detailed questions.

C1 — payable unpaid order: An external app can create an itemized unpaid order (line items, quantities, discounts, taxes) with the Orders API CreateOrder. Square Register can’t collect payment against that order, though. Unpaid API-created orders don’t show up in Square POS, and we don’t support having staff collect payment on API-created unpaid orders. The IN_STORE fulfillment beta doesn’t change this: open-order workflows stay officially unsupported. The only supported way to collect payment on hardware for an API order is a Terminal API checkout that references the order_id, and that runs on Square Terminal or Square Handheld, not Register.

C2 — active checkout: Unsupported. No API, SDK or partner program can push an order to a specific Register or make it the active checkout there. The Devices and Terminal APIs only work with Square Terminal and Handheld. There’s also no documented QR payload that loads a whole order into Register checkout.

If you’re open to changing the checkout hardware, Terminal API can send the order to a Square Terminal or Handheld using order_id and device_options.show_itemized_cart: true. However, that is a separate checkout workflow and does not meet your requirement to use the existing Register/S251 reader, receipt, and cash-drawer workflow.