The status APPROVED on Payment Status

One of our merchants is experiencing some payment issues with the Terminal API.

At times, the Payment Webhook or the Terminal Checkout Fetch returns the status in the Payment object as APPROVED. This happens intermittently. Other times, we get the expected COMPLETED status. What’s the difference here and what is causing there difference?

:wave: 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

Refunds API Webhooks
Square Developer
Payment API: Process Online and In-Person Payments

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.

The status of a payment can be either APPROVED, COMPLETED, CANCELED, or FAILED. When a payment status is APPROVED, it means that the payment has been authorized but not yet captured or completed. This usually happens when you create a delayed capture payment by authorizing a payment but not processing it immediately.

On the other hand, a COMPLETED status means that the payment has been captured and the funds have been credited to the seller.

The intermittent status you are seeing could be due to the timing of when you’re checking the payment status. If you check it immediately after the payment is authorized but before it’s captured, you would see an APPROVED status. If you check after the payment has been captured, you would see a COMPLETED status.

This answer was reviewed by @Bryan-Square.