App Subscription on Reinstallation Causing Errors/Blocking Release

Shopify Partner
1 0 0

I've made an app and submitted it for review. As part of the app, I have a monthly subscription. However, I keep getting denied because of this error where the billing api fails on reinstallation of my app. The reviewer keeps giving this message:


" The app must implement billing API so it can accept, decline, and request approval for charges again on reinstall. Resolve any errors occurring in the billing modal during the billing flow. To ensure these processes are executed correctly, review our billing API documentation. When we try to approve the test charge for the plan, we are being directed to an error page. See **this screencast** for more details."


These are the screencasts that showcase the error. However, I haven't been able to recreate them when testing my app. 

this screencast1

this screencast2


The way I understand it, all that's needed to implement recurring charges on the billing api, is to just create a mutation to create the subscription in graphql, and that Shopify handles the cancellation on uninstalls of the app. 


On my NodeJs app backend, this is the api call I use to create the subscription: 


  const data = await client.query({
      data: {
        "query": `mutation AppSubscriptionCreate($name: String!, $lineItems: [AppSubscriptionLineItemInput!]!, $returnUrl: URL!, $test: Boolean!) {
          appSubscriptionCreate(name: $name, returnUrl: $returnUrl, lineItems: $lineItems, test: $test) {
            userErrors {
            appSubscription {
        "variables": {
          "name": "Basic",
          "returnUrl": req.body.redirUrl,
          "lineItems": [
              "plan": {
                "appRecurringPricingDetails": {
                  "price": {
                    "amount": 10,
                    "currencyCode": "USD"
                  "interval": "EVERY_30_DAYS"
          "test": false


 The way I understand it, the redirect url is supposed to take the form of:


const redirUrl = `${bridge.hostOrigin}/store/${}/apps/${APP_NAME}`



Is there something I'm missing with regards to the billing API? Any help/feedback is greatly appreciated.

Replies 0 (0)