Hello Square Developer Community,
I’m implementing Square card payments for an advertising platform built with Laravel 12. The integration uses the Square Web Payments SDK and the Payments API (POST /v2/payments).
Sandbox testing is successful:
-
Card tokenization works.
-
Payments are completed.
-
Our Laravel backend verifies the payment.
-
Advertising campaigns activate automatically after payment confirmation.
Production testing is failing:
We attempted a small live transaction for a $1.00 advertising package, with a total checkout amount of $1.34 including the displayed processing charge.
The customer-facing website displayed:
“Unable to complete your Square payment. Please check your payment status before retrying.”
Here is what we have verified:
-
The Production Square card form loads successfully. The card iframe comes from
https://web.squarecdn.com/. -
Our Laravel application is configured to select Production or Sandbox API endpoints based on the advertising environment setting.
-
No matching transaction appears in Square’s live Transactions dashboard.
-
The Production API Logs we checked show no matching request.
-
The same checkout workflow processes Sandbox payments successfully.
Our Laravel checkout controller catches backend exceptions and displays a generic error message, so the customer-facing message does not reveal the original failure.
The payment service is designed to create a pending checkout attempt before contacting Square and uses an idempotency key to protect against duplicate charges.
Questions:
-
What is the recommended way to diagnose a Production payment failure when no matching Payments API request appears in the Developer Console logs?
-
Could a mismatch between the Production application ID, merchant access token, and location ID cause this behavior?
-
Are there any additional requirements for enabling Production Payments API processing that do not apply in Sandbox?
-
Is there a recommended way to distinguish a card-tokenization problem from a backend API request that fails before reaching Square?
We have stopped retrying the transaction until the original attempt can be reconciled.
Any guidance on identifying the underlying issue would be appreciated.
Thank you!