Square Web Payments SDK works in Sandbox but live Production payment fails — no transaction or API logs

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:

  1. The Production Square card form loads successfully. The card iframe comes from https://web.squarecdn.com/.

  2. Our Laravel application is configured to select Production or Sandbox API endpoints based on the advertising environment setting.

  3. No matching transaction appears in Square’s live Transactions dashboard.

  4. The Production API Logs we checked show no matching request.

  5. 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!

When switching environments, make sure you switch initiate the sdk with the production app id and production location id you are submitting payments to. Add the Web Payments SDK to the Web Client

If the payment api request doesn’t show up in the logs it likely went to the other environment. Check both the sandbox and production tabs. If it still didn’t show up, you can post here, but it is more likely something failed before it even hit Square’s servers.

Hello Zac,

Thank you for your response. We will verify the Production application ID, location ID, and both environments as you suggested.

I would also like to clarify our platform’s payment architecture, because we have two distinct payment flows and want to make sure we are configuring Square correctly.

1. Our existing creator payment system

Our platform allows creators to receive payments directly into their own Square accounts. For these transactions, we use a marketplace-style payment flow in which our platform’s application fee is deducted at the Square level, and the remaining funds are credited to the creator. Each creator authorizes our application to process payments on their behalf.

2. The new advertising payment system

We are now integrating an advertising feature that allows creators to purchase promotional packages to advertise themselves on our platform.

These advertising payments are different from creator transactions:

  • The creator is purchasing an advertising service from our platform.

  • The full advertising payment, less Square’s normal payment-processing fees, should go to our platform’s own Square account.

  • No creator receives any portion of these advertising payments.

  • We do not intend to collect an application fee on these transactions because the advertising revenue belongs entirely to our platform.

For example, when a creator purchases a $1.34 advertising package, the payment should be processed as a direct payment to our platform’s business, rather than as a payment to the creator with an application fee deducted.

Our main question is: Can we use our existing Square account and Production application for both payment flows, or do you recommend creating a separate Square account and/or a separate Square application for advertising payments?

If the same account and application can support both flows, what is the recommended configuration for distinguishing payments made directly to our platform from payments processed on behalf of creators? In particular, should we use the same Production application ID and access token while selecting the appropriate location and payment configuration for each flow, or should the advertising integration have its own application credentials?

We want to ensure that advertising payments are settled directly to our business, remain separate from creator payouts, and do not interfere with our existing marketplace payment integration.

We are also investigating why our Production advertising payment attempt does not appear in the Square API logs, even though the same checkout process works in Sandbox.

Thank you for helping us clarify the recommended architecture before we proceed further.