Last week, I purchased a Square Terminal and followed the steps on these pages
to successfully pair my Square Terminal to my account and take payments. I called the Create Device Code API to generate a device code, signed in to the Square Terminal with that code, the Square Terminal showed the expected black background and static text, and I could call the Create Terminal Checkout API to present a charge on the Square Terminal.
On Tuesday afternoon, I signed out of the Square Terminal and followed the exact same steps (generating a device code, signing in with the code) but now I see a Square Point of Sale experience on the Terminal rather than the black background and static text. Furthermore, when I attempt to call the Create Terminal Checkout API, nothing appears on the Square terminal.
When I checked the web dashboard’s Device Management section, I suddenly saw a new “Modes” entry. I don’t remember seeing that before. It seems whenever I try to sign in to the device with a device code, it forces me to link the device to some sort of “mode”.
Did something change recently? Do Square Terminals no longer support the previous workflow?
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:
https://developer.squareup.com/docs/app-marketplace/requirements/terminal-api
Additional Documentation
Build on Mobile Web
Square Developer Documentation
Point of Sale API and POS Integration Tools
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.
It seems like your Square Terminal might have accidentally been set to Point of Sale mode instead of Terminal API mode. When a Square Terminal is in Point of Sale mode, it operates as a standalone device and doesn’t respond to Terminal API requests.
To switch your Square Terminal back to Terminal API mode, you need to sign out of the current account on the device and then sign back in using a device code generated by the Create Device Code API. This should return your Square Terminal to the expected state where it shows a black background and static text, and responds to Terminal API requests.
If you’re still experiencing issues after trying these steps, it might be a good idea to check if there have been any recent updates or changes to your system that could be affecting the Terminal’s operation.
This answer was reviewed by @Bryan-Square.
I do think the issue is that my Square Terminal was switched from Terminal API mode to Point of Sale mode. You mentioned how to switch the terminal back, and I’ve tried those steps multiple times and it has not worked.
I signed out of my Square Terminal and deleted the devices and device codes from the dashboard. I then used the API Explorer to generate a new device code via API call, used the code located in the response to sign in to my Square Terminal, but every time I do so, it takes me in to Point of Sale mode rather than Terminal API mode. I even tried factory resetting the device and it still always takes me in to Point of Sale mode when signing in with a device code generated via the Create device code API call.
Did you by chance login. with a device code created on the Dashboard instead of the API?
Nope, I’m aware that generating device codes in the Dashboard is different from generating device codes using the Device API. I am calling this API method from the Square documentation to generate the device codes, then using the code value in the response body to sign in to the Square terminal.
Okay, did you sign out and then sign back in with the device code from the API? Did you take you to the Terminal API screen or the Square app?
I’ve tried signing out of the Square terminal and signing back in with the same device code, I’ve tried generating new device codes via the API and signing in with those, and I’ve tried factory resetting the device, deleting all devices and device codes from the dashboard, calling the Create device code API method to generate a new device code and signing in to the Square terminal with that. No matter what I try, every time I sign in, I’m taken into the Square Point of Sale experience on the Square terminal. I don’t understand why following this guide last week worked perfectly and after signing in I was presented with the “Powered by Square” screen but starting yesterday when I sign in, I’m taken into the Point of Sale app.
Is the device code 6 digits or is it longer?
It is six characters long.
What’s your application ID?
sq0idp-A2fBNSCMNzpsOtO_uLTV9Q
Whats the ID of the device code? Also do you have an image or a video of the behavior?
The Device Code ID is Q70FJ7HZRB587 (here is the full API response):
{
"device_codes": [
{
"id": "Q70FJ7HZRB587",
"name": "Square Terminal",
"code": "S****C", // obfuscated
"device_id": "4**************5", // obfuscated
"product_type": "TERMINAL_API",
"location_id": "L***********0", // obfuscated
"created_at": "2024-12-11T19:40:54.000Z",
"status": "PAIRED",
"status_changed_at": "2024-12-11T19:41:07.000Z",
"paired_at": "2024-12-11T19:41:07.000Z"
}
]
}
Here is an image of the Square terminal after I enter the device code:
Thank you! I’ve reached out to the team about this.
Is the Terminal fully updated?
Yes, I just went to the About Square Terminal screen and pressed Check for updates and received the message Software Up To Date.
The team deployed a fix for this and the device code should be working as expected with the Terminal now.
Thanks, I tested it and it appears to be working properly again.