Dear Square Support Team,
I am integrating Square’s Terminal API for processing payments and have encountered a discrepancy in webhook behavior when using await_next_action: true. I would appreciate your clarification on the following questions:
Background:
Previously, I used the Create Terminal Checkout API for initiating payments. In this setup, I received both:
-
A terminal.checkout.updated webhook, which contained the checkout details.
-
A subsequent payment.updated webhook, which contained the final payment details.
Recently, I have modified the flow to first use the Create Terminal Action API (for tip selection) before calling Create Terminal Checkout.
In this new setup, I enabled await_next_action: true in the Terminal Action, and now I no longer receive a payment.updated webhook.
Questions:
- Is it expected behavior that the payment.updated webhook is no longer triggered when using await_next_action: true?
• If so, could you point me to any official documentation that explains this behavior?
- If this is normal, how should I determine the final payment status?
• I noticed that terminal.checkout.updated webhook contains a payment_id, but the payment status is APPROVED, not COMPLETED.
• Should I call the Complete Payment API to finalize the transaction?
- How does accept_partial_authorization: true affect this behavior?
• Since I have enabled accept_partial_authorization: true and autocomplete: false, what happens if the customer has insufficient funds?
• Will the terminal.checkout.updated webhook indicate this, or do I need to poll for partial payments manually?
Example Data:
Before Using Create Terminal Action API
• Received terminal.checkout.updated
• Received payment.updated
After Using Create Terminal Action API with await_next_action: true
• Received terminal.action.updated
• Received terminal.checkout.updated
• Did not receive payment.updated
Would appreciate any insights or documentation you can provide. Thank you for your time!
Best regards,