> 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-discount-payments.md).

# Token Discount Payments

NFT & SFT Payment Discount enables the developer to accept payments and provide a discount if the user owns an NFT from a specified collection, otherwise, the full price is charged.&#x20;

### How it Works

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 is true, the purchase amount will be discounted (if they have the tokens)

Instructions for verification are only included in the transaction if the query finds NFT or SFT in the user's wallet. The payment amount is discounted by a set percentage agreed upon by the merchant and sent to the merchant's wallet. Then, the payment is carried out in the token type specified in the inputType parameter.

If the verification process fails, the transaction is successful, but there is no discount, and the user pays the full price.

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

### Example (20% Discount 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 
collection = 'DaNDvvjZ3gdhjxeA3jKLGPTF7kNU8HupKKEgVTuHQwLi' #collection pubkey needed
payerToken = 'usdc'
size = 100
discount = 0.2

#base URL
api_url = 'http://api.mtnapi.com/pay'
#query string parameters
params = {'wallet': wallet, 'size' : size, 'payerToken' : payerToken, 'collection' : collection, 'ref' : ref, 'discount' : discount}
#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-discount-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.
