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

# 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&#x20;

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&#x20;

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](/api-docs/supported-tokens.md).

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

### Example (USDC --> SAMO Token Swap 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 
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)
```

### Powered by Jupiter Aggregator <img src="/files/txK9mN7qDYpOjZMqhbqM" alt="" data-size="line">


---

# 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-swapped-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.
