# NFT Purchase Flow & Wallets

## Feature Overview

PLAY's proprietary crypto wallet provides a mobile app store-compliant & casual user-friendly solution for leveraging Web3 strategies in your game.&#x20;

PLAY's wallet is non-custodial, which translates to players maintaining exclusive control of their wallet. This also keeps things simple and familiar for players, no prior knowledge of Web3 is required since creation is managed simply by setting a password.

Some existing Web3 games require a wallet at the moment the game is launched, but for certain platforms or audiences, this might be a bit offputting to players looking to try a game for the first time. PLAY's Wallet Module allows you to incorporate wallet creation at the time of your choosing, whether it's at launch or day 7.&#x20;

The only time the wallet is required is when players are purchasing or claiming an NFT virtual item for the first time - giving you the flexibility to determine why, how, and when to prompt players to create a wallet.&#x20;

### Key Benefits

1. **Mobile App Store Compliant:** PLAY's SDK allows you to integrate Web3 on iOS and Android! Check the In-Game Implementation section for an example of a compliant NFT purchasing flow. <br>
2. **Casual User Friendly:** It's not necessary for the player to be versed in Web3! They need only be versed in wanting to play your game or getting that awesome sword. <br>
3. **External Wallet Support:** Players of course have the option to move their NFTs out of PLAY's proprietary wallet, with Metamask being our initially supported option. More options will be added as players or developers request!<br>
4. **One-Time Setup:** The wallet is associated with a player's PLAY account. This means the player will only need to set up their wallet one time, in one game. After that, if they log in to another game in the ecosystem they will automatically have access to their wallet & be able to purchase or claim NFTs with no extra steps. &#x20;

### In-Game Implementation

Developers maintain the ability to determine the best place to trigger account & wallet creation - you know your player funnels best! However, platform-based regulations (in particular on Android and iOS) mean that in order to get your submission accepted you should follow an implementation like the flow shown below.&#x20;

The flow below illustrates how a player can purchase an NFT in your game on a mobile platform. If a player has *an account, a wallet, and enough currency*, they complete their purchase normally. Whether the player has enough currency and is logged in is handled in-game - whether or not the player has a wallet is handled in the oAUTH form.&#x20;

<figure><img src="/files/3QCbalXhLUtCeXp75ErR" alt=""><figcaption></figcaption></figure>

In order for players to create a wallet in your game they'll need to set a password. This is included as part of the oAUTH flow in the web form.&#x20;

{% hint style="info" %}
For Web2 titles migrating to Web3, we do recommend keeping it simple like the above example - there were no issues with player onboarding in previous integrations that triggered account and wallet creation on NFT purchase.

Depending on your audience you may choose to implement a bit more tutorialization, see the [NFT Merchandising](https://app.gitbook.com/o/4PlmL79S7tBnyghf6mp7/s/ZNfwIuW6WHuNp2IqjUvJ/~/changes/56/game-design-guides/store#merchandising-nft-virtual-items) section of the Store guide for an example.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://playnetwork.gitbook.io/play-sdk-documentation/game-design-guides/nft-purchase-flow-and-wallets.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
