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.

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 of the API!

Example (20% Discount Payment)

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)

Last updated