Verify the status of the order after payment

Hi! Is there an endpoint to check the payment status of an order? We want to provide our merchants with an additional integration to our payment app ( Tilopay ‑ Alternative Methods - Accept instalments and more on your store | Shopify App Store ), where we can verify the payment response was received successfully. With some alternative payments, it is not unusual that the customer does not return to the browser after confirming the payment, which in turn results in manual validation by the merchants to make sure an order with a pending payment was actually paid.

Do the webhooks orders/paid and order_transactions/create`meet your requirements?

Thanks Eric, I will check.

Hey @hnanne :waving_hand: Since Tilopay is the payment app processing the transaction, your backend should already know the payment outcome before Shopify does. When your PSP confirms a payment, your server-side callback handler should call paymentSessionResolve (or paymentSessionReject for failures) regardless of whether the customer returns to the browser.

For alternative payment methods where confirmation is delayed, you can call paymentSessionPending with a pendingExpiresAt value when the payment is initiated. Then when your PSP sends the async confirmation, call paymentSessionResolve to finalize. Even if pendingExpiresAt has passed, the partner can still resolve or reject the session.

To point you in the right direction, it would help to understand what’s happening on your end today. A few questions:

  1. Are you already calling paymentSessionResolve from a server-side PSP callback, or is the resolve currently triggered by the customer’s browser redirect?

  2. When merchants are doing “manual validation,” what are they checking against? Their PSP dashboard, the Shopify admin, or something else?

  3. Are there cases where your PSP confirms the payment but paymentSessionResolve fails or never fires? If so, are you seeing specific errors from the mutation?

The alternative payments extension guide covers the full session lifecycle for reference. Once I understand your current setup better I can give more targeted advice.

Thank you for the detailed information Donal, this actually works better than what we wanted to do.