Token Swapped Payments

Token Swapped Payments enable transactions where a merchant wants to accept a different token as payment other than what the buyer wants to pay in (e.g. SOL --> USDC). The swap transaction occurs behind the scenes and uses Jupiter Aggregator to initiate the transaction.

How it Works

Both parties in the transactions specify their token of choice. Once the transaction is kicked off, mtnAPI leverages Jupiter to Aggregator to facilitate the swap by finding the best prices with minimal fees and completing the swap. The purchaser receives confirmation as a receipt.

Slippage

mtnAPI requires that the purchaser pay more than what the merchant requests as payment to account for token volatility. The user can specify their level of comfortability for slippage–the default is Β±0.5% of the total cost.

Slippage is an essential step to token swaps, ensuring the amount is not less than the price requested by the merchant. If the slippage results in an amount over what the merchant specified for payment, the purchaser keeps the change. It never leaves the purchaser's wallet.

Whitelisted tokens supported by this endpoint can be found here.

Make sure you are following the rules of the API!

Example (USDC --> SAMO Token Swap 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 
payerToken = 'usdc'
receiverToken = 'samo'
size = 0.1

#base URL
api_url = 'http://api.mtnapi.com/pay'
#query string parametes
params = {'wallet': wallet, 'size' : size, 'payerToken' : payerToken, 'receiverToken' : receiverToken, '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)

Last updated