Is there a reason why i'm not being awarded the badge when i make a purchase?

hey, title pretty self-explanatory im guessing, it should award a badge when a player has made a purchase, but its not.

it’s not printing or warning me with anything btw.

I would check if its even running the function in the first place by putting a print above said call of the function.


Though it may be because you use “PlayerId” and not “UserId” but I’m unaware how you run you’re scripts and if that’s the case and not an error.

MarketplaceService.ProcessReceipt is only for developer products and not Badges. You can use UserOwnsBadgeAsync when the plr joins or PromptPurchaseFinished, depending on what you want to achieve.

Are you testing this in studio? Badges can’t be awarded in standard playtesting.

Badges can be awarded in team test, but team test has an issue where .ProcessReceipt won’t be invoked (see here)

If you aren’t testing in studio, are you assigning multiple functions to MarketplaceService.ProcessReceipt? Only one callback can be assigned at a time.


It’s .PlayerId in receiptInfo, not .UserId

You are able to award badges in .ProcessReceipt.