question

jonasstrehle avatar image
jonasstrehle asked

Upsell was blocked due to lack of purchase permission.

Hello. I'd like to add inskill purchases to my Alexa Skill. So, my skill is hosted on a node.js server and is 100% javascript based.

I have already implemented the initiation of the purchase-sequence by responding to an incoming intent with some similar JSON like you can find below:


directives = [{
  type: "Connections.SendRequest",
  name: "Buy",
  payload: {
    InSkillProduct: {
      productId: "amzn1.adg.product.$productid$"
    },
  },
  token: "{}"
}]

This purchase logic works great, just as it should but I got some problems implementing a Upsell-logic sending back this JSON:

directives = [{
  type: "Connections.SendRequest",
  name: "Upsell",
  payload: {
    InSkillProduct: {
      productId: "amzn1.adg.product.$productid$"
    },
    upsellMessage: "$upsellmessage$"
  },
  token: "{}"
}]

So every single time sending back the payload above I get the error message "not a valid request".


I found out that the Alexa response says "Upsell was blocked due to lack of purchase permission." - so to my question: How can I fix this issue and whats the reason for this at all?

"request": {
  ...
  "name": "Upsell",
  "payload": {
    "purchaseResult": "ERROR",
    "productId": "amzn1.adg.product.$productid$",
    "message": "Upsell was blocked due to lack of purchase permission."
  }
}
intentsnodejsalexa skills challengepurchasing
5 comments
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Are you sure that upsellMessage and product id in the response are valid? Other than that on what locale are you testing the isps?

0 Likes 0 ·

Thanks for your reply. Yeah - I'm sure that the product id is valid. So - upsellMessage must be a String like "This is a Test!" am I right?

The locale is en-us.

0 Likes 0 ·

Yeah, it has to be string, also token has to be a string, if you are putting object here, it might cause this issue too. Other than that I am not really sure, I suggest you yo share your skill id, so maybe someone from amazon could take a look at your issue.

0 Likes 0 ·
Show more comments

This same error shows when running the official skill purchase sample: https://github.com/alexa/skill-sample-nodejs-fact-in-skill-purchases

The problem appears to be only the Upsell.

Do you know what could be the problem?


0 Likes 0 ·
newuser-357874a4-1b7f-47e2-a19e-a56e11665916 avatar image
newuser-357874a4-1b7f-47e2-a19e-a56e11665916 answered

I think I have the answer. Go to this page: https://www.amazon.com/hz/mycd/myx#/home/settings/payment

In the Country/Region Settings be sure that the country is Set to United States (in my case). Or, I believe in a country where the skill purchase is available.

With that set, that error didn't show anymore and the Upsell intent worked fine.

10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Irina Sergienya avatar image
Irina Sergienya answered

I'll answer here so maybe someone will find it useful. I was adding an ISP on German-language skill from alexa.amazon.com account.

For me the correct solution was to put a price in the ISP product for the locale that my Alexa account is on: so if my alexa device is on alexa.amazon.com, then I need to add price for Amazon.com in dev console for "Pricing & Availability":

https://developer.amazon.com/en-US/docs/alexa/in-skill-purchase/create-isp-dev-console.html#pricing-availability-fields


10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.