APIs for Square Register

We have a customer using our custom software to make Ski Rental Reservations Online and Square Register to take payment from the customer when they pick up their equipment.

When the Reservation is made online, that Rental Customer is matched to an existing Square Customer or added as a new Square Customer via the Customers API.

When the Ski Rental Customer arrives at the shop, equipment is fulfilled through our software.

Each billable ‘group’ of items is cross referenced with an Item Variation in the Square Catalog and its barcode is printed on a form for the Shop Owner to scan into the Register.

The Shop Owner uses the Square Register to create a cart for the Rental Customer.

Each barcode on the Rental form is scanned and populates the cart on the Square Register and the customer pays using the customer facing portion of the Square Register.

We would like to use the Square APIs to build this cart for the Shop Owner so the customer can use the Square Register to pay for the Rental.

What would be the best way to accomplish this?

@jdana instead of printing out barcodes, you could create the cart via the Orders API then have customers pay for the order via the Terminal API. Shop owners would no longer build out the cart on the Square Register and would stay in your application instead.

A couple things to call out:

  1. In this flow, you would not be able to use a Square Register, you’d need to use a handheld or terminal.
  2. Orders created through the API will not appear in the dashboard until they have been paid. You’ll still be able to find them via the API though to display in your app if needed.

If we use a handheld, will the Shop owner be able to see the cart on the handheld, add items to it and accept payment via the handheld?

@jdana no, they would not see the cart on the handheld, they would need to work out of your application instead. The only thing they would use the handheld for is collecting card payments.

Since they can’t see the cart on the handheld, is there any way to present the details through an API to display on the handheld, or will they only see a dollar amount to swipe/dip/tap to approve?

If you pass the order ID to the CreateTerminalCheckout endpoint you can also have the terminal show the itemized cart before paying by setting device_options.show_itemized_cart: true.

Thank you - To make sure - I can only send a CreateTerminalCheckout to the handheld or terminal.

Is there a way to send the CreateTerminalCheckout to the Customer Facing part of the Register where our client current accepts payment today?