> For the complete documentation index, see [llms.txt](https://mtnpay.gitbook.io/api-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mtnpay.gitbook.io/api-docs/reference/api-reference/pay/token-gated-payments.md).

# Token Gated Payments

Much like a token discounted payment, a token gated payment will cause the transaction to fail if the 'buyer' does not have an NFT from the specified collection or list.

### How it Works&#x20;

1. Developer specifies an NFT collection or an SPL mint address for an SFT as the verification target. mtnAPI uses the index API to query all the NFTs and SFTs in the user's wallet.
2. mtnAPI verifies whether an NFT belongs to a collection or  an SFT belongs to a specific SPL token address.
3. If mtnAPI validates the above, there is a program with instruction included in the transaction that verifies NFT or SFT collection on-chain to provide a trusted solution.
4. If verification returns true, the purchase amount will be allowed to proceed (if they have the tokens). Id the verification is false, the transaction will fail.&#x20;

Make sure you are following [the rules](/api-docs/reference/api-reference/pay.md) of the API!

### Example (Mint Gated Payment)

```python
import requests #make HTTP requests
import urllib.parse #encode the URL

#get a reference key
ref_url = 'http://api.mtnapi.com/ref'
r = requests.get(url = ref_url)
ref = r.json()['ref']

wallet='Ar7XrWtrGsB2xCnrTFLs9HyJ1bA62gXCAUZa8Fa7VMc5' #receiver
account = 'DaNDvvjZ3gdhjxeA3jKLGPTF7kNU8HupKKEgVTuHQwLi' #payer 
mint = 'DaNDvvjZ3gdhjxeA3jKLGPTF7kNU8HupKKEgVTuHQwLi'
payerToken = 'usdc'
gated = 'TRUE'
size = 1

#base URL
api_url = 'http://api.mtnapi.com/pay'
#query string parameters
params = {'wallet': wallet, 'size' : size, 'payerToken' : payerToken, 'gated' : gated, 'mint' : mint  , 'ref' : ref}
#request body
data = {'account': account}
#make the POST request
r = requests.post(url = api_url, params=params, json=data)

#encode the url
encoded_url = urllib.parse.quote(r.url)  
#append solana
solana_pay_url = 'solana:' + encoded_url

print(solana_pay_url)
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://mtnpay.gitbook.io/api-docs/reference/api-reference/pay/token-gated-payments.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
