Can I safely call inventory confirm for all merchants to avoid multiple payment flows?

I’m implementing a payment app and want to simplify my payment flow by using a single approach for all merchants.

According to the Shopify payments documentation ( About payment processing ), there are offsite payments and offsite payments with inventory confirmation.

My question is: Can I safely call the inventory confirm API for ALL merchants (including those who don’t manage inventory) to avoid implementing multiple payment scenarios?

I’d prefer to have a unified payment flow where I always call confirm, rather than:

  • Checking each merchant’s inventory management settings

  • Implementing separate flows for inventory-managed vs non-inventory-managed stores

Will calling confirm on stores that don’t manage inventory cause any issues, errors, or unexpected behavior? Or will it simply be ignored/no-op for those merchants?

Looking for guidance on whether this simplified approach is viable.

Thanks!

Hi @ddoddi

I can confirm that you certainly can call the paymentSessionConfirm mutation for all merchants, in fact, if your app supports Inventory Confirmation you are required to call this for all payment sessions for all merchants. More details on how to implement and work with Inventory Confirmation with your Offsite Payment Extension can be found in the following Shopify.dev documentation:

Per the documentation linked above:

If your app supports Inventory Confirmation you must use the paymentSessionConfirm mutation to confirm with Shopify whether to proceed with the payment request, according to Shopify’s business logic.

Additionally you wouldn’t be able to check the merchant’s inventory management settings with your Payment App Extension regardless, as Payment Apps are only allowed to use the Payment App API and can’t use the Admin API that would be needed to check their inventory policy. You also can’t require any side kick Admin API apps to workaround this restriction.

Payments extensions (including those using checkout UI extensions) aren’t permitted to do any of the following: