Skip to main content

Check NFT sales eligibility

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


A diagram showing the high level flow for interacting with the NFT sales eligibility API
  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

Anchor to Step 1: Query the APIStep 1: Query the API

Use the GraphQL Admin API to check whether or not a shop has completed the NFT sales eligibility form.

graphql

query {
nftSalesEligibility {
giftingApproved
sellApproved
reapplyDate
}
}

Anchor to Possible API responsesPossible 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

The API responses combine to create 5 possible outcomes for the merchant:

ResultgiftingApprovedsellApprovedreapplyDate
Application not yet completed by merchantfalsefalse{currentDate}
Approved for selling and giftingtruetruenull
Approved for gifting onlytruefalsenull
Not approved for salestruefalse{currentDate} or {futureDate}
Not on Shopify Paymentsfalsefalsenull

Anchor to Step 2: Block selling featuresStep 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 |

Anchor to Not approved for salesNot 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.

POST https://{shop}.myshopify.com/api/{api_version}/graphql.json

GraphQL query

query {
nftSalesEligibility {
giftingApproved
sellApproved
reapplyDate
}
}

JSON response

{
“data”: {
“nftSalesEligibilityStatus”: {
“giftingApproved”: true,
“sellApproved”: false,
“reapplyDate”: {currentDate or futureDate}
}
},
“extensions”: {
“cost”:{
“requestedQueryCost”: 1,
“actualQueryCost”: 1
}
}
}

Anchor to Step 3: Unblock selling features when sellApproved: trueStep 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.

Anchor to Approved for selling and giftingApproved for selling and gifting

POST https://{shop}.myshopify.com/api/{api_version}/graphql.json

GraphQL query

query {
nftSalesEligibility {
giftingApproved
sellApproved
reapplyDate
}
}

JSON response

{
“data”: {
“nftSalesEligibilityStatus”: {
“giftingApproved”: true,
“sellApproved”: true,
“reapplyDate”: null
}
},
“extensions”: {
“cost”:{
“requestedQueryCost”: 1,
“actualQueryCost”: 1
}
}
}

Anchor to Not on Shopify PaymentsNot 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.

POST https://{shop}.myshopify.com/api/{api_version}/graphql.json

GraphQL query

query {
nftSalesEligibility {
giftingApproved
sellApproved
reapplyDate
}
}

JSON response

{
“data”: {
“nftSalesEligibilityStatus”: {
“giftingApproved”: false,
“sellApproved”: false,
“reapplyDate”: null
}
},
“extensions”: {
“cost”:{
“requestedQueryCost”: 1,
“actualQueryCost”: 1
}
}
}

Make sure your app complies with all the requirements for an NFT distribution app


Was this page helpful?