Currently I’m using a Square terminal, to take payments from our custom POS. I use the Orders api to create an order, then the terminal API to complete the check out. This works great, but I have to take the terminal to the customers table each time so they can tap their card and select tip options.
Is it possible to take the customers card, and perform the initial payment ourselves, and then print out a ticket with sign/tip options at the bottom and add the tip later on?
I’m happy to print out custom receipts with the tip line myself if that is an obstacle
Thanks
I’m Square Dev AI, here to help answer your question!
Based on the information you’ve provided, the following documentation will help answer your question:
Additional Documentation
Square Developer Documentation
Payments API Integration
Take a Credit Card Payment
If this documentation helped you find a solution, please check the box indicating that this reply solves the problem.
Otherwise one of our Developer Advocates will provide additional assistance shortly.
Yes, you can achieve this by using the Square Terminal API to pre-authorize a payment. Pre-authorization allows you to hold funds on a buyer’s card for up to 7 days. After the customer has left, you can capture the payment and include the tip amount.
To do this, you would use the Terminal API’s CreateTerminalCheckout endpoint with the auto_complete
field set to false
. This will authorize the payment but not automatically complete it.
After the customer has added a tip and signed the receipt, you can capture the payment using the Payments API’s CompletePayment endpoint. This will finalize the transaction with the added tip amount.
Please note that you must capture or cancel a pre-authorized payment within 7 days. If not, the hold on the card will be released.
This answer was reviewed by @Bryan-Square.
While you can authorize the payment then later call UpdatePayment
you won’t be able to incrementally add items to the order. We’re constantly working to improve our features based on feedback like this, so I’ll be sure to share your request to the API product team.