To comply with the Shopify Payments terms of service, a merchant must submit an application form to determine their eligibility to sell NFTs through Shopify Payments. If your existing app distributes NFTs or you're looking to build an NFT distribution app, you need to check this new API to confirm that the shop is approved to sell and/or gift NFTs, and if not, block the ability to mint, gift or list NFTs for sale.
This guide will explain:
- how to check the merchant approval status
- the different experiences you should provide based on the merchant's status
## Requirements
- Ability to make [authenticated requests](/docs/api/admin-graphql#authentication) to the GraphQL Admin API.
- Polling the NFT Sales Eligibility API at hourly intervals should be implemented to confirm eligibility.
- App developers are expected to continue to abide by the [blockchain app requirements](/docs/apps/launch/app-requirements-checklist#a-blockchain-app-requirements).
- Apps surface the application form as stated in the [requirements for NFT distribution](/docs/apps/build/blockchain/nft-distribution#developers-listing-and-minting-nfts-on-behalf-of-merchants)
## High-level flow
1. A merchant opens a NFT distribution app
2. The application queries the `nftSalesEligibility`
3. Depending on the responses, the 3rd party NFT distribution app blocks the selling and/or gifting features or permits the use of its selling and/or gifting features
4. The 3rd party NFT distribution app polls the NFT Sales Eligibility API at hourly intervals to confirm eligibility
5. As soon as the NFT Sales Eligibility API replies with a `reapplyDate` that is the current date or in the past, the merchant is eligible to re-apply
## Step 1: Query the API
Use the [GraphQL Admin API](/docs/api/admin-graphql) to check whether or not a shop has completed the NFT sales eligibility form.
### Possible API responses
When you ping the API, you'll get 3 possible responses:
- `nftSalesEligibilityStatus.sellApproved`: returns whether the shop is approved to list NFTs for sale with Shopify Payments enabled
- `nftSalesEligibilityStatus.reapplyDate`: returns with a `null` value or a date when the shop can apply for approval
- `null`: indicates that the shop is either approved for selling or gifting
- `{currentDate}`: indicates that the shop can complete the eligibility form
- `{futureDate}`: indicates that the shop is not approved. You can use this to display to the merchant when they can reapply
- `nftSalesEligibilityStatus.giftingpApproved`: returns whether the store is approved to gift NFTs. Approval from Shopify is not required in most cases to gift NFT
### Merchant outcomes
The API responses combine to create 5 possible outcomes for the merchant:
| Result | `giftingApproved` | `sellApproved` | `reapplyDate` |
|---|---|---|---|
| Application not yet completed by merchant | `false` | `false` | `{currentDate}` |
| Approved for selling and gifting | `true` | `true` | `null` |
| Approved for gifting only | `true` | `false` | `null` |
| Not approved for sales | `true` | `false` | `{currentDate}` or `{futureDate}` |
| Not on Shopify Payments | `false` | `false` | `null` |
## Step 2: Block selling features
If the merchant is not approved for sales, you should block the selling features in your app to prevent merchants listing NFTs for sale.
| Result | Block selling features? | Block gifting features? |
|---|---|---|---|---|
| Form not yet filled out | yes | yes |
| Approved for selling and gifting | no | no |
| Approved for gifting only (i.e. not approved for sales) | yes | no |
| Not on Shopify Payments | no | no |
### Not approved for sales
The following scenario indicates that the shop has not passed the application form and is not eligible to sell NFTs: The `giftingApproved` flag is true, but the `sellApproved` flag is false. The `reapplyDate` is also today or in the future, indicating when the merchant is eligible to reapply.
## Step 3: Unblock selling features when sellApproved: true
You should poll the NFT Sales Eligibility API hourly to get the most up-to-date approval data. As soon as a shop becomes `sellApproved`: true or they turn off Shopify Payments, they can list and sell NFTs using your app.
### Approved for selling and gifting
### Not on Shopify Payments
The following scenario indicates that the merchant is not required to complete the eligibility check: The `giftingApproved` flag and `sellApproved` flag are false and the `reapplyDate` is null.
## Next steps
Make sure your app complies with all the [requirements](/docs/apps/launch/app-requirements-checklist#b-nft-distribution-apps-requirements) for an NFT distribution app