On one-time-purchase plan purchasing page the approve button is disabled

I was implementing One-time-puchase for my app, making a request using the

appPurchaseOneTimeCreate mutation and redirecting to the confirmationUrl I got in the response. On the plan purchasing page, It asks to fill the address (Add an address so you can get paid. You can always change this later), I don’t have clear idea of why it asks for the address when it doesn’t ask for it in Interval plan purchases. And the button to approve the plan is disabled. Any help on this will be appreciated, I need to complete this asap.

@RonakMayvent I have the exact same problem with appPurchaseOneTimeCreate mutation. I include the host and the shop parameters in the return URL. I don’t know what to do.

Did you manage to find a solution?

Hello @RRoussev

This is a common issue and it’s not a bug in your code or related to your returnUrl parameters.

That address prompt is for you, the developer, not the merchant. For one-time charges, Shopify is legally required to have your business address on file before they can process the payment and pay you out. The ‘Approve’ button is disabled until you provide it.

The immediate fix is in your Partner account:

  1. Log in to your Shopify Partner Dashboard.
  2. Go to Settings → Payouts.
  3. Fill out your required business and tax information.

Once that’s done, the prompt will disappear for all merchants, and the ‘Approve’ button will be enabled.

Hope this helps!

Hi @RonakMayvent

What you’re seeing is expected behavior for one-time purchases on Shopify. Unlike recurring subscription (interval) plans, one-time purchases require merchant payout details, which is why the checkout page is asking for an address. Shopify needs a valid address linked to your payments to process the one-time charge.

Regarding the disabled “Approve” button, it usually happens when the required address or payment info isn’t completed. Once you fill in the address details, the button should become active.

So, to move forward:

  1. Add the required address on the plan purchase page.

  2. Ensure all other required fields are filled.

  3. The “Approve” button should then be enabled.

Let me know if it still doesn’t work after that, and we can check if there’s a frontend or API issue blocking it.

Thanks

@PieLab @Dotsquares This worked as a charm.
Thank you very much!