Outfit Shopping with the Bulk Purchase API

Hi Creators,

We are excited to announce that we are launching the Bulk Purchase API today!

The Bulk Purchase API will allow users to purchase multiple items in one transaction inside an experience. This will be especially useful for avatar shopping experience creators who like to merchandise entire outfits at once.

Please note that this API will only work for avatar items, such as curated outfits.


Purchase multiple items in your wardrobe in one transaction.

Who is this for?

Experience creators who want to sell avatar items inside their experience.

More Details

  • Prompts a user to purchase multiple avatar items with the given assetId/bundleIds. Note: This will not work for non-avatar items.

  • For Limiteds, items with a set quantity, the original copies are prompted until they run out, regardless of the price. Once original copies are out, resale copies are prompted.

  • A maximum of 20 items can be added to one bulk purchase prompt.

  • PromptBulkPurchase will only allow prompting from server scripts.

The technical documents for the API can be found here:

Additional Launches

  • Bringing Today’s Picks to Marketplace - This new sort features new, notable, and thematically relevant items created by the community each day!

  • New Shopping Experience Template - As we look towards making Marketplace more shopping-friendly, we want to make it easier for UGC creators to build their own shopping experiences, which can be surfaced to users in Marketplace in the new Recommended sort. This template will be free for all UGC creators in the Creator Store later this year and we’ll have more information to share in the coming months.

Thank you!

216 Likes

This topic was automatically opened after 10 minutes.

This Bulk Purchase API significantly is convenient for both creators and users by simplifying UGC creators to make their content sold! Will there be any future updates to expand the Bulk Purchase API’s functionality to include non-avatar items?

41 Likes

Incredible, this will undoubtedly facilitate the purchasing process by allowing us to move from the traditional purchase of individual items to a more efficient shopping cart option :smile:

28 Likes

Sweet! I’m hoping there’s plans soon for non-avatar items, like gamepasses and dev products.

Also hoping that big “Pay” button has the same cooldown as normal in-experience purchases and this is just a demo gif :sweat_smile:

37 Likes

This is already a great step forward, thank you so much for this interesting addition. What would be nice to see would be the possibility to use this for other purchasable items, such as dev products or gamepasses. For example, in a game where a store charges Robux for items, the user could select everything they’d like to buy, and purchase them all in one go. Same suggestion as @MagicalAnteater 's above.

22 Likes

Documentation for MarketplaceService:PromptBulkPurchase() mentions an options dictionary in parameter 3.

Despite being described as “not available”, the method errors if you call it without said dictionary.

image

I’m unsure what keys should be defined in the dictionary, but the method seems to work if you just pass an empty table for now.

image

19 Likes

I believe you just send a blank table through it for now. It was mentioned in the beta but they may have forgotten to update the docs

20 Likes

This is really cool but having to state the type of the asset is just a bit of an annoyance. As well as how would this work with a table list of Ids?

15 Likes

This is super efficient!! If this can possibly extend to game passes in the future, It can be very useful, instead of wasting time by just purchasing 1 thing at a time.

21 Likes

Indeed. An “Add to cart” button would be awesome for passes, dev products and whatnot

17 Likes

Only slightly on topic, but with all the updates to marketplace stuff, can we expect gifting items (avatar items and game items like game passes) to be a feature in the future? It’s probably one of the biggest marketplace feature we lack which a lot of games need to implement their own custom systems for currently.

22 Likes

This feature is amazing! I hope there will be more development updates just like this.

16 Likes

This is such very neat feature!
I would recommed to add the load button animation on the pay button that u get on any purchase normally on roblox so it doesnt confusse players so they dont accidentaly spend their robux, other than that love this!

17 Likes

This is great, I like that they are adding updates to existing services like MarketplaceService!

15 Likes

Hi! So glad people are excited by the possibilities of our new feature.

We’ve got extensions to this that we want to get in place long-term, but nothing to announce just yet!

25 Likes

My only issue with this is that you didn’t release this sooner so we didn’t have to do it ourselves for so long :smiling_face_with_tear:

15 Likes

A nice step in the right direction. Great update!

18 Likes

While this feature is great in-itself, I do have to question some API-design choices; more specifically the following:

MarketplaceProductType seems extremely similar to AvatarItemType; is there any reason why the latter Enum wouldn’t have worked? I can only assume there is a plan to extend this functionality to other asset types in the future but could the “Asset” EnumItem become confusing if this were to happen because nearly every item on Roblox in considered an “asset” of some form; whether it be a decal, mesh, etc. Given that most of these use the same ID system this shouldn’t be too much of an issue but quite a few asset types don’t follow this same ID system, perhaps causing some confusion?


PromptBulkPurchaseFinished is entirely trust-based from the client. I can only assume this was done for consistency with other MarketplaceService events (which are fired entirely by the client to the server) but this is in-fact one of the most annoying missteps with MarketplaceService today. Given that most of the ownership-checking APIs were made a long time ago, many employ caching behaviour which cannot be disabled or have the chance to internally error (which doesn’t get caught by a pcall). In fact, the recommended API “PlayerOwnsAsset” internally uses “GetProductInfo” and raises an error to the console if the call fails (regardless of if you wrap it in a pcall). This means that by using the API you are signing yourself up to possibly receiving pointless errors in your error log.


The PromptBulkPurchaseFinished event seems to treat purchases both as individual purchases and a big bulk purchase; what happens if a specific item is unavailable or a user doesn’t have enough Robux for all of the items but has enough for some of them. There doesn’t seems to be any documentation about whether the purchases are handled as a big “all-or-nothing block” or if specific purchases may fail. While the API design implies that it is the latter; there is no documentation on which cases this can happen for and what the non-nested result would be when this happens?


The fact that only avatar-items are supported is quite limiting for my personal use-cases, hope that this is just a temporary limitation and there are plans to expand to other asset types in the future!

15 Likes

Hey!
I keep getting this error every I click the after-purchase “Ok” button. (Prompt that shows: “You have successfully purchased # items. Find these items in your inventory.”)

12 Likes