The first rule is simple: if a Production payment is pending or uncertain, do
not send it again. Reconcile the existing checkout before changing settings,
stock, device, or Storefront configuration.
Start here
Five-minute operator triage
- Record the workspace, environment, location, Terminal name, order reference,
time, timezone, amount, currency, and visible status.
- Stop submitting new checkouts for the affected order.
- Compare Payments → Test & verify with the matching Square Dashboard.
- If Square shows a completed payment, treat it as paid and reconcile it.
- If Square proves no payment and the Terminal checkout is pending, cancel the
same checkout or allow it to expire.
- Verify the reservation and stock after the final event.
- Escalate with IDs, timestamps, and redacted screenshots if the systems still
disagree.
Connection and readiness
Production shows 0/5 or 'No Square token saved'
This is expected for an unconfigured environment. Select Production, enable
editing, save the Production application credentials, connect the real
seller through OAuth, add the Production webhook signature key, choose the
location, and pair the Terminal. Do not copy the Sandbox token.
Connect OAuth is unavailable or fails before Square opens
Save the Square Application ID and Application secret for the selected
environment first. Copy the OAuth redirect URL from Inventory into that
environment’s Square application settings. Confirm the URL matches exactly.
Square returns Unauthorized
The access token commonly belongs to the other environment, was revoked, or
lacks a required scope. Confirm the environment badge, seller, and
application. Re-authorize the intended seller instead of adding unrelated
manual tokens.
Locations are empty or the wrong business appears
Verify the OAuth seller and MERCHANT_PROFILE_READ permission. A location
cannot be borrowed from another seller or from Sandbox. Reconnect the
correct account, refresh locations, and ask the Square owner to confirm the
location name.
The connection was revoked
Square sends oauth.authorization.revoked, and Tuturuuu marks the
connection unavailable. Stop checkouts, ask the owner why access was
revoked, then re-authorize only if the owner approves it.
Webhooks
Square test delivery is rejected
Confirm the subscription environment, notification URL, signature key, and
event type. Copy the workspace webhook URL from Inventory; do not rebuild it
manually. The exact URL used by Square is part of signature verification.
Signature verification fails after a domain or tunnel change
Square signs the configured notification URL plus the raw body. Update the
Square subscription and Inventory’s advanced notification URL to the same
exact HTTPS value, then replace the matching environment’s signature key.
Square sent the same event more than once
Duplicate delivery is normal when an acknowledgement is delayed or Square
retries. Compare the event_id. Tuturuuu should keep one checkout, payment,
stock transition, and finance entry. Escalate only if business state is
duplicated.
Events arrive in an unexpected order
Square does not guarantee delivery order. Reconcile by provider object and
final payment status rather than arrival time. Do not edit checkout state
manually to match the first event you saw.
Inventory count webhook did not appear
Square may not emit inventory.count.updated when the written count equals
the existing value. In Sandbox, change the demo count to a distinct value,
verify the event, then restore it intentionally.
Terminal and pairing
A phone or tablet running Square POS with a connected Reader is not a
Terminal API device. It will not appear after Refresh terminals. Select
Phone or tablet with Reader, register the POS callback URL, and use the
Square POS app + Reader Storefront mode instead.
Square POS app and Reader
The Point of Sale API callback is not treated as payment proof by itself.
Tuturuuu uses the returned transaction ID as a Square Order ID, retrieves its
Payment, and verifies the exact reserved amount, currency, location, completed
status, and card tender. This is why cash and offline returns are not
automatically finalized.
Square Terminal cannot use browser-based captive-portal networks. Review
Square’s network requirements
and
Terminal network troubleshooting.
Checkout, payment, and stock
Keep the same order. Check Square Payments and the Terminal checkout. If no
payment completed, cancel that checkout from Inventory Commerce or let it
expire. Tuturuuu reservations expire after 15 minutes and release stock when
final reconciliation runs.
The buyer says they paid but Tuturuuu is not completed
Search Square by location, time, amount, and receipt. If Square shows a
completed payment, do not retry. Record the Square evidence and inspect the
payment.updated and terminal.checkout.updated webhook deliveries.
Tuturuuu says completed but Square evidence is missing
Confirm you are viewing the same Sandbox or Production seller and location.
Record all evidence and stop new attempts. This mismatch requires support
investigation; do not create a balancing payment or manual stock change.
Canceled or expired checkout still holds stock
Refresh the Commerce and Payments views after the final Square event. Allow
the scheduled expiry reconciliation to run. If the reservation remains,
escalate with the order reference, final Square status, timestamps, and
stock values. Do not compensate by increasing on-hand stock manually.
Stock or finance changed twice
Stop processing the item, preserve the rows, and compare Square event IDs
and provider IDs. Duplicate webhooks must be idempotent. Do not delete a
duplicate-looking record before support confirms which row is authoritative.
Confirm the payment is completed and inspect the Square payment directly.
Sandbox has receipt limitations, while Production receipt behavior depends
on Square and the seller’s receipt settings.
Catalog and stock sync
The summary says products synchronized, but I cannot see them
Open the Linked catalog records list, clear any UI filter, and verify the
environment. Metrics count item, variation, and stock operations, so the
total can exceed the number of unique products. One visible link row is the
reliable evidence for one Square variation relationship.
A price is 100 times too small or large
Stop all sync and checkout actions for that item. Record the human-readable
amount and currency on both sides. Do not manually multiply or divide and
sync again. Confirm the current Tuturuuu release, then correct the approved
source once and verify a one-way sync with a demo item first.
Two-way sync reports a conflict
This is protective behavior. Compare the Tuturuuu and Square values, get an
owner decision, and run one directional sync from the approved source. Do
not alternate directions or delete the Square item.
A Square deletion is preserved
Tuturuuu intentionally keeps the local product and link for review. Ask the
owner whether to republish the item or leave it disconnected. Synchronization
never deletes Square objects or local product data to resolve this status.
Read the row’s error, then check environment, token scopes, location,
currency, SKU, and Square object availability. Retry only the intended
direction after fixing the cause.
Storefront issues
Never do these during an incident
- Do not send the same Production order again while the first is pending or
uncertain.
- Do not create a second charge to cancel out an uncertain charge.
- Do not copy Sandbox tokens, IDs, device simulators, or webhook keys into
Production.
- Do not delete or archive Square catalog objects to force synchronization.
- Do not manually increase stock while an unresolved reservation exists.
- Do not paste secrets or customer personal data into an escalation message.
- Do not factory-reset a Terminal until the Square owner understands the impact
and the current checkout has been reconciled.
Escalate with evidence
Include the packet from the
operations guide
and check Square system status for provider-wide
incidents. Redact tokens, application secrets, signature keys, full card data,
and customer personal information.
For implementation-level failures, use the
Square Terminal engineering runbook.