Which is the source of truth: paymentSessionConfirm or confirmation callbacks (webhooks)?

Hi Everyone! can we get input on what would be the source of truth: paymentSessionConfirm or confirmation callbacks (webhooks)?

We have reports where there are status mismatches between our payment intent logs and Shopify’s order status, and we narrowed it down to the lack of clarity between which of those 2 should we treat as the truth when it comes to updating the order and payment statuses? Thank you!

1 Like

Hey @SteveS-Airwallex! To answer directly, the confirmation callback is the one you should act on. The paymentSessionConfirm mutation initiates the confirmation process, but the callback to your confirm session URL delivers the actual result you should use to decide whether to resolve or reject the payment.

The recommended flow is:

  1. Call paymentSessionConfirm after collecting payment credentials

  2. Wait for Shopify’s callback to your confirm session URL with confirmation_result

  3. Based on that callback result, call paymentSessionResolve (if true) or paymentSessionReject with CONFIRMATION_REJECTED (if false)

The payment processing docs have a diagram covering this in detail - particularly the section on inventory confirmation.

If you’re still seeing mismatches after confirming your implementation follows this flow, I’d suggest raising specific examples with Shopify Support if you haven’t already - they can look at the logs on our side to see what’s happening with the confirmation callbacks and mutations.

Thanks Donal! One follow-up question, what should we do if we never get confirmation callback?