For coffee shops and bubble tea shops, they want to print a label and stick it on the cup as part of their operation. However Square doesn't support label printer. We help them using Square API integration

What it does

Our solution captures Square orders from Square Register, Square POS and Online Store and send them to a controller, from which those orders are dispatched to different label printer stations based on their categories.

How I built it

For Register and POS orders, we use payment.update Webhook to capture transaction details. Then we use the retrieve_payment API with entity_id and location_id to get the payment itemization detail. Then we notify our controller with web sockets and the last step is printing the itemizations with the corresponding formats.

For Online Store orders, we use order.updated Webhook and then use batch_retrive_orders to get orders details. Then we use the same web socket notification method to notify our controllers.

Challenges I ran into

Square has v1 and v2 API and both of them have different limitations. For example v2 API cannot get cash payment from Register and POS. We have to use V1 API but it seems will be retire soon. In addition, we cannot get order/ticket number from any API so the solution have some tedious steps we cannot omit

Accomplishments that I'm proud of

Even with many limitations, our solution is loved by many of our clients and they are using it in daily operations and it indeed saved them a lot of time in operation.

What I learned

This is our first real project with Square API and we learned a lot in technical design with Square's object models and webhook events.

What's next for Square + Label Printer

We will keep optimize the solution with Square API updates and hopefully it can become more easy to use

Built With

Share this project: