Can we pay for a Pickup Order in-location using Terminal at time of pickup?

Hi all,

I’d like to know if it’s possible to use Terminal to pay for an Order created via the Order API, so that the payment created through Terminal Checkout is automatically linked to the order.

This would be very useful for Pickup Orders where we want to give the customer the option to pay with card in-store for Orders created earlier.

1 Like

Unfortunately there’s no way to pass an order_id to the CreateTerminalCheckout endpoint. In theory, you could create the order, and pay for the amount of the order using the terminal, and then call UpdateOrder to mark it as completed, but even then it wouldn’t be linked within Square. I’ll update this to be a feature request, thank you!

+1 for this. On top of the pickup use-case, it would also be very useful in a kiosk environment where the customer uses the app interface to generate an order, which can then be paid for in situ via terminal.

The Terminal API is super-useful as it is, but the specific pain-point is not having a mechanism to associate a terminal-generated Payment with its corresponding Order - unless I’m missing something, terminal API payments are necessarily custom amounts, so you lose out on all the Order functionality like stock control.

Interestingly, if you run the terminal in “interactive mode” (in lieu of any better name) all the Order functionality you would expect to exist does, which suggests an “assign terminal Payment to Order” isn’t too far removed from what’s already going on under the hood?

In the meantime, will investigate the UpdateOrder approach, cheers for the idea :slight_smile:

Just following up for anyone else looking at this issue. Unfortunately, to utilize the UpdateOrder approach you have to apply a 100% discount to the Order before you can push it to COMPLETED (which in hindsight makes perfect sense that you cannot complete an Order with an outstanding balance).

For some, this might be a viable workaround, but be advised your reporting will be shot to pieces - quantities of items sold, stock control, and fulfillment will reflect correctly, but your gross and net sales figures will be zero (or, if you also use this approach in tandem with traditional POS, just entirely wrong.)

@sjosey is there a mechanism I’ve overlooked to circumvent that? (in lieu of CreateTerminalCheckout optionally accepting an order_id instead of a custom amount, which would be amaaazing :wink:)

Hi @sjosey, just wanted to reply and mention I’d be super interested in this as well! Not just for paying later via Terminal payments at time of pickup but via other in-person sources such as Reader SDK, Square POS, etc. Perhaps there’d be a way to mark Orders as unpaid so that a merchant can decide how they want to process it (start the order now, pay later, etc).

As emdienn mentioned, having the reporting broken in Square dashboard analysis isn’t ideal for the merchant’s end so a $0 order isn’t a great workaround.

1 Like